diff --git a/.gitignore b/.gitignore index 247ca7b..9b11d33 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,4 @@ /gcc-4.9.1-20140807.tar.bz2 /gcc-4.9.1-20140813.tar.bz2 /gcc-4.9.1-20140815.tar.bz2 +/gcc-4.9.1-20140912.tar.bz2 diff --git a/gcc.spec b/gcc.spec index d614517..87110dc 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,9 +1,9 @@ -%global DATE 20140815 -%global SVNREV 214009 +%global DATE 20140912 +%global SVNREV 215204 %global gcc_version 4.9.1 # Note, gcc_release must be integer, if you want to add suffixes to # %{release}, append them after %{gcc_release} on Release: line. -%global gcc_release 8 +%global gcc_release 9 %global _unpackaged_files_terminate_build 0 %global _performance_build 1 %global multilib_64_archs sparc64 ppc64 ppc64p7 s390x x86_64 @@ -203,6 +203,7 @@ Patch18: gcc49-aarch64-unwind-opt.patch Patch19: gcc49-pr62098.patch Patch20: gcc49-pr62025.patch Patch21: gcc49-pr62131.patch +Patch22: gcc49-pr62662.patch Patch1100: cloog-%{cloog_version}-ppc64le-config.patch @@ -734,6 +735,7 @@ rm -f libgo/go/crypto/elliptic/p224{,_test}.go %patch19 -p0 -b .pr62098~ %patch20 -p0 -b .pr62025~ %patch21 -p0 -b .pr62131~ +%patch22 -p0 -b .pr62662~ %if 0%{?_enable_debug_packages} cat > split-debuginfo.sh <<\EOF @@ -2806,6 +2808,23 @@ fi %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/plugin %changelog +* Fri Sep 12 2014 Jakub Jelinek 4.9.1-9 +- update from the 4.9 branch + - PRs c++/58624, c++/61214, c++/61659, c++/62129, c++/62224, c++/62659, + c++/63139, c/61271, c/62294, fortran/62106, fortran/62142, + fortran/62214, fortran/62215, fortran/62270, ipa/60449, ipa/61986, + ipa/62015, libgfortran/62188, libstdc++/62264, libstdc++/63219, + middle-end/61776, other/62008, other/62248, rtl-optimization/61672, + rtl-optimization/62004, rtl-optimization/62030, + rtl-optimization/62079, rtl-optimization/62146, target/61641, + target/61996, target/62011, target/62038, target/62040, target/62111, + target/62195, target/62261, target/62262, target/62312, target/63209, + target/63223, target/63228, testsuite/56194, tree-optimization/60196, + tree-optimization/62075, tree-optimization/62091, + tree-optimization/62175, tree-optimization/63189 +- fix s390{,x} return address handling in epilogues (#1131899, + PR target/62662) + * Fri Aug 15 2014 Jakub Jelinek 4.9.1-8 - update from the 4.9 branch - PRs fortran/62076, fortran/62107, lto/62032, middle-end/62092, diff --git a/gcc49-pr62662.patch b/gcc49-pr62662.patch new file mode 100644 index 0000000..588e1e8 --- /dev/null +++ b/gcc49-pr62662.patch @@ -0,0 +1,44 @@ +2014-09-10 Andreas Krebbel + + PR target/62662 + * config/s390/s390.c (s390_emit_epilogue): When doing the return + address load optimization force s390_optimize_prologue to leave it + that way. Only do the optimization if we already decided to push + r14 into a stack slot. + +--- gcc/config/s390/s390.c ++++ gcc/config/s390/s390.c +@@ -9082,11 +9082,14 @@ s390_emit_epilogue (bool sibcall) + if (! sibcall) + { + /* Fetch return address from stack before load multiple, +- this will do good for scheduling. */ +- +- if (cfun_frame_layout.save_return_addr_p +- || (cfun_frame_layout.first_restore_gpr < BASE_REGNUM +- && cfun_frame_layout.last_restore_gpr > RETURN_REGNUM)) ++ this will do good for scheduling. ++ ++ Only do this if we already decided that r14 needs to be ++ saved to a stack slot. (And not just because r14 happens to ++ be in between two GPRs which need saving.) Otherwise it ++ would be difficult to take that decision back in ++ s390_optimize_prologue. */ ++ if (cfun_gpr_save_slot (RETURN_REGNUM) == -1) + { + int return_regnum = find_unused_clobbered_reg(); + if (!return_regnum) +@@ -9101,6 +9104,13 @@ s390_emit_epilogue (bool sibcall) + addr = gen_rtx_MEM (Pmode, addr); + set_mem_alias_set (addr, get_frame_alias_set ()); + emit_move_insn (return_reg, addr); ++ ++ /* Once we did that optimization we have to make sure ++ s390_optimize_prologue does not try to remove the ++ store of r14 since we will not be able to find the ++ load issued here. */ ++ cfun_frame_layout.save_return_addr_p = true; ++ cfun_gpr_save_slot (RETURN_REGNUM) = -1; + } + } + diff --git a/sources b/sources index ae9ee93..efe539e 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ e34fca0540d840e5d0f6427e98c92252 cloog-0.18.1.tar.gz -dff0aab44d2b28c124b53322678be13b gcc-4.9.1-20140815.tar.bz2 +c7ea3e348924af6932bc3cfb32e2ea54 gcc-4.9.1-20140912.tar.bz2 e039bfcfb6c2ab039b8ee69bf883e824 isl-0.12.2.tar.bz2