[gcc/f21] 4.9.1-9

Jakub Jelinek jakub at fedoraproject.org
Fri Sep 12 09:10:28 UTC 2014


commit 9834bb7938575be967cc1600ecd3c52e221b45ee
Author: Jakub Jelinek <jakub at redhat.com>
Date:   Fri Sep 12 11:08:32 2014 +0200

    4.9.1-9

 .gitignore          |    1 +
 gcc.spec            |   25 ++++++++++++++++++++++---
 gcc49-pr62662.patch |   44 ++++++++++++++++++++++++++++++++++++++++++++
 sources             |    2 +-
 4 files changed, 68 insertions(+), 4 deletions(-)
---
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 <jakub at redhat.com> 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 <jakub at redhat.com> 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  <Andreas.Krebbel at de.ibm.com>
+
+	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


More information about the scm-commits mailing list