[gcc] 4.8.0-0.11

Jakub Jelinek jakub at fedoraproject.org
Mon Feb 11 21:40:49 UTC 2013


commit b4711962194a2a9982f01563c573e71f5fe4e8c8
Author: Jakub Jelinek <jakub at redhat.com>
Date:   Mon Feb 11 22:40:42 2013 +0100

    4.8.0-0.11

 .gitignore          |    1 +
 gcc.spec            |   22 +++++++++------
 gcc48-pr53948.patch |   72 --------------------------------------------------
 gcc48-pr56151.patch |   73 +++++++++++++++++++++++++++++++++++++++++++++++++++
 gcc48-pr56245.patch |   47 --------------------------------
 gcc48-pr56256.patch |   36 -------------------------
 sources             |    2 +-
 7 files changed, 88 insertions(+), 165 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index cea4278..e48c1d4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -59,3 +59,4 @@
 /gcc-4.8.0-20130131.tar.bz2
 /gcc-4.8.0-20130206.tar.bz2
 /gcc-4.8.0-20130208.tar.bz2
+/gcc-4.8.0-20130211.tar.bz2
diff --git a/gcc.spec b/gcc.spec
index ab4d70a..945c3c0 100644
--- a/gcc.spec
+++ b/gcc.spec
@@ -1,9 +1,9 @@
-%global DATE 20130208
-%global SVNREV 195894
+%global DATE 20130211
+%global SVNREV 195954
 %global gcc_version 4.8.0
 # 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 0.10
+%global gcc_release 0.11
 %global _unpackaged_files_terminate_build 0
 %global multilib_64_archs sparc64 ppc64 s390x x86_64
 %ifarch %{ix86} x86_64 ia64 ppc ppc64 alpha
@@ -194,9 +194,7 @@ Patch10: gcc48-pr38757.patch
 Patch11: gcc48-libstdc++-docs.patch
 Patch12: gcc48-no-add-needed.patch
 Patch13: gcc48-pr55608.patch
-Patch14: gcc48-pr56256.patch
-Patch15: gcc48-pr53948.patch
-Patch16: gcc48-pr56245.patch
+Patch14: gcc48-pr56151.patch
 
 Patch1000: fastjar-0.97-segfault.patch
 Patch1001: fastjar-0.97-len1.patch
@@ -749,9 +747,7 @@ package or when debugging this package.
 %endif
 %patch12 -p0 -b .no-add-needed~
 %patch13 -p0 -b .pr55608~
-%patch14 -p0 -b .pr56256~
-%patch15 -p0 -b .pr53948~
-%patch16 -p0 -b .pr56245~
+%patch14 -p0 -b .pr56151~
 
 %if 0%{?_enable_debug_packages}
 cat > split-debuginfo.sh <<\EOF
@@ -2975,6 +2971,14 @@ fi
 %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/plugin
 
 %changelog
+* Mon Feb 11 2013 Jakub Jelinek <jakub at redhat.com> 4.8.0-0.11
+- updated from trunk
+  - PRs c++/56238, c++/56247, c++/56268, fortran/55362, libstdc++/56267,
+	libstdc++/56278, libstdc++/56282, rtl-optimization/56246,
+	rtl-optimization/56275, target/56043, tree-optimization/56264,
+	tree-optimization/56273
+- improve expansion of mem1 op= mem2 (PR rtl-optimization/56151)
+
 * Fri Feb  8 2013 Jakub Jelinek <jakub at redhat.com> 4.8.0-0.10
 - updated from trunk
   - PRs bootstrap/56227, c++/56235, c++/56237, c++/56239, c++/56241,
diff --git a/gcc48-pr56151.patch b/gcc48-pr56151.patch
new file mode 100644
index 0000000..f3c2dc2
--- /dev/null
+++ b/gcc48-pr56151.patch
@@ -0,0 +1,73 @@
+2013-02-11  Jakub Jelinek  <jakub at redhat.com>
+	    Steven Bosscher   <steven at gcc.gnu.org>
+
+	PR rtl-optimization/56151
+	* optabs.c (add_equal_note): Don't return 0 if target is a MEM,
+	equal to op0 or op1, and last_insn pattern is CODE operation
+	with MEM dest and one of the operands matches that MEM.
+
+	* gcc.target/i386/pr56151.c: New test.
+
+--- gcc/optabs.c.jj	2013-01-16 08:30:10.000000000 +0100
++++ gcc/optabs.c	2013-02-11 15:28:16.543839881 +0100
+@@ -190,17 +190,34 @@ add_equal_note (rtx insns, rtx target, e
+   if (GET_CODE (target) == ZERO_EXTRACT)
+     return 1;
+ 
+-  /* If TARGET is in OP0 or OP1, punt.  We'd end up with a note referencing
+-     a value changing in the insn, so the note would be invalid for CSE.  */
+-  if (reg_overlap_mentioned_p (target, op0)
+-      || (op1 && reg_overlap_mentioned_p (target, op1)))
+-    return 0;
+-
+   for (last_insn = insns;
+        NEXT_INSN (last_insn) != NULL_RTX;
+        last_insn = NEXT_INSN (last_insn))
+     ;
+ 
++  /* If TARGET is in OP0 or OP1, punt.  We'd end up with a note referencing
++     a value changing in the insn, so the note would be invalid for CSE.  */
++  if (reg_overlap_mentioned_p (target, op0)
++      || (op1 && reg_overlap_mentioned_p (target, op1)))
++    {
++      if (MEM_P (target)
++	  && (rtx_equal_p (target, op0)
++	      || (op1 && rtx_equal_p (target, op1))))
++	{
++	  /* For MEM target, with MEM = MEM op X, prefer no REG_EQUAL note
++	     over expanding it as temp = MEM op X, MEM = temp.  See PR56151. */
++	  set = single_set (last_insn);
++	  if (set
++	      && GET_CODE (SET_SRC (set)) == code
++	      && MEM_P (SET_DEST (set))
++	      && (rtx_equal_p (SET_DEST (set), XEXP (SET_SRC (set), 0))
++		  || (op1 && rtx_equal_p (SET_DEST (set),
++					  XEXP (SET_SRC (set), 1)))))
++	    return 1;
++	}
++      return 0;
++    }
++
+   set = single_set (last_insn);
+   if (set == NULL_RTX)
+     return 1;
+--- gcc/testsuite/gcc.target/i386/pr56151.c.jj	2013-02-11 16:20:51.459752951 +0100
++++ gcc/testsuite/gcc.target/i386/pr56151.c	2013-02-11 16:23:10.590964710 +0100
+@@ -0,0 +1,17 @@
++/* PR rtl-optimization/56151 */
++/* { dg-do compile } */
++/* { dg-options "-O2" } */
++
++int vara, varb;
++
++void
++foo (int i, int j)
++{
++  vara = varb | vara;
++}
++
++/* Verify the above is compiled into movl varb, %reg; orl %reg, vara instead
++   of longer movl vara, %reg; orl varb, %reg; movl %reg, vara.  */
++/* { dg-final { scan-assembler-not "mov\[^\n\r]*vara" { target nonpic } } } */
++/* { dg-final { scan-assembler-times "mov\[^\n\r]*varb" 1 { target nonpic } } } */
++/* { dg-final { scan-assembler-times "or\[^\n\r]*vara" 1 { target nonpic } } } */
diff --git a/sources b/sources
index 53d82cb..ff69942 100644
--- a/sources
+++ b/sources
@@ -1,4 +1,4 @@
 be78a47bd82523250eb3e91646db5b3d  cloog-0.18.0.tar.gz
 2659f09c2e43ef8b7d4406321753f1b2  fastjar-0.97.tar.gz
 bce1586384d8635a76d2f017fb067cd2  isl-0.11.1.tar.bz2
-94f2b1c221e6f1561a93525c6679080c  gcc-4.8.0-20130208.tar.bz2
+ab39481e50bd55b5efdf8bbcdfda63e3  gcc-4.8.0-20130211.tar.bz2


More information about the scm-commits mailing list