[arch-commits] Commit in gcc/trunk (PKGBUILD gcc-4.9-tree-ssa-threadedge.patch)

Allan McRae allan at nymeria.archlinux.org
Thu May 8 10:28:23 UTC 2014


    Date: Thursday, May 8, 2014 @ 12:28:23
  Author: allan
Revision: 212122

upgpkg: gcc 4.9.0-2

new upstream snapshot plus patch

Added:
  gcc/trunk/gcc-4.9-tree-ssa-threadedge.patch
Modified:
  gcc/trunk/PKGBUILD

-----------------------------------+
 PKGBUILD                          |   19 +++++++++++-------
 gcc-4.9-tree-ssa-threadedge.patch |   38 ++++++++++++++++++++++++++++++++++++
 2 files changed, 50 insertions(+), 7 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2014-05-08 08:56:17 UTC (rev 212121)
+++ PKGBUILD	2014-05-08 10:28:23 UTC (rev 212122)
@@ -7,8 +7,8 @@
 pkgname=('gcc' 'gcc-libs' 'gcc-fortran' 'gcc-objc' 'gcc-ada' 'gcc-go')
 pkgver=4.9.0
 _pkgver=4.9
-pkgrel=1
-#_snapshot=4.9.0-RC-20140411
+pkgrel=2
+_snapshot=4.9-20140507
 pkgdesc="The GNU Compiler Collection"
 arch=('i686' 'x86_64')
 license=('GPL' 'LGPL' 'FDL' 'custom')
@@ -16,11 +16,13 @@
 makedepends=('binutils>=2.24' 'libmpc' 'cloog' 'gcc-ada' 'doxygen')
 checkdepends=('dejagnu' 'inetutils')
 options=('!emptydirs')
-source=(ftp://gcc.gnu.org/pub/gcc/releases/gcc-${pkgver}/gcc-${pkgver}.tar.bz2
-        #ftp://gcc.gnu.org/pub/gcc/snapshots/${_snapshot}/gcc-${_snapshot}.tar.bz2
-        gcc-4.8-filename-output.patch)
-md5sums=('9709b49ae0e904cbb0a6a1b62853b556'
-         '40cb437805e2f7a006aa0d0c3098ab0f')
+source=(#ftp://gcc.gnu.org/pub/gcc/releases/gcc-${pkgver}/gcc-${pkgver}.tar.bz2
+        ftp://gcc.gnu.org/pub/gcc/snapshots/${_snapshot}/gcc-${_snapshot}.tar.bz2
+        gcc-4.8-filename-output.patch
+	gcc-4.9-tree-ssa-threadedge.patch)
+md5sums=('47dc2b91d2876daff53c20c30164c38f'
+         '40cb437805e2f7a006aa0d0c3098ab0f'
+         '311ece7f5446d550e84e28692d2fb823')
 
 if [ -n "${_snapshot}" ]; then
   _basedir=gcc-${_snapshot}
@@ -47,6 +49,9 @@
   # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57653
   patch -p0 -i ${srcdir}/gcc-4.8-filename-output.patch
 
+  # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60902
+  patch -p1 -i ${srcdir}/gcc-4.9-tree-ssa-threadedge.patch
+
   mkdir ${srcdir}/gcc-build
 }
 

Added: gcc-4.9-tree-ssa-threadedge.patch
===================================================================
--- gcc-4.9-tree-ssa-threadedge.patch	                        (rev 0)
+++ gcc-4.9-tree-ssa-threadedge.patch	2014-05-08 10:28:23 UTC (rev 212122)
@@ -0,0 +1,38 @@
+--- trunk/gcc/tree-ssa-threadedge.c	2014/04/23 17:53:56	209715
++++ trunk/gcc/tree-ssa-threadedge.c	2014/04/23 18:04:46	209716
+@@ -387,7 +387,34 @@
+           && (gimple_code (stmt) != GIMPLE_CALL
+               || gimple_call_lhs (stmt) == NULL_TREE
+               || TREE_CODE (gimple_call_lhs (stmt)) != SSA_NAME))
+-	continue;
++	{
++	  /* STMT might still have DEFS and we need to invalidate any known
++	     equivalences for them.
++
++	     Consider if STMT is a GIMPLE_ASM with one or more outputs that
++	     feeds a conditional inside a loop.  We might derive an equivalence
++	     due to the conditional.  */
++	  tree op;
++	  ssa_op_iter iter;
++
++	  if (backedge_seen)
++	    FOR_EACH_SSA_TREE_OPERAND (op, stmt, iter, SSA_OP_DEF)
++	      {
++		/* This call only invalidates equivalences created by
++		   PHI nodes.  This is by design to keep the cost of
++		   of invalidation reasonable.  */
++		invalidate_equivalences (op, stack, src_map, dst_map);
++
++		/* However, conditionals can imply values for real
++		   operands as well.  And those won't be recorded in the
++		   maps.  In fact, those equivalences may be recorded totally
++		   outside the threading code.  We can just create a new
++		   temporary NULL equivalence here.  */
++	        record_temporary_equivalence (op, NULL_TREE, stack);
++	      }
++
++	  continue;
++	}
+ 
+       /* The result of __builtin_object_size depends on all the arguments
+ 	 of a phi node. Temporarily using only one edge produces invalid




More information about the arch-commits mailing list