Date: Saturday, May 10, 2014 @ 11:33:56
Author: lcarlier
Revision: 110942
upgpkg: gcc-multilib 4.9.0-2
gcc-4.9.0-2
Added:
gcc-multilib/trunk/gcc-4.9-tree-ssa-threadedge.patch
Modified:
gcc-multilib/trunk/PKGBUILD
---+
PKGBUILD | 24 +++---
gcc-4.9-tree-ssa-threadedge.patch | 38
2 files changed, 54 insertions(+), 8 deletions(-)
Modified: PKGBUILD
===
--- PKGBUILD2014-05-10 09:27:38 UTC (rev 110941)
+++ PKGBUILD2014-05-10 09:33:56 UTC (rev 110942)
@@ -8,8 +8,8 @@
pkgname=('gcc-multilib' 'gcc-libs-multilib' 'lib32-gcc-libs'
'gcc-fortran-multilib' 'gcc-objc-multilib' 'gcc-ada-multilib' 'gcc-go-multilib')
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 for multilib"
arch=('x86_64')
license=('GPL' 'LGPL' 'FDL' 'custom')
@@ -18,11 +18,13 @@
'lib32-glibc>=2.19')
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
@@ -50,6 +52,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
}
@@ -228,7 +233,10 @@
make -C $CHOST/32/libsanitizer/asan DESTDIR=${pkgdir}
install-nodist_toolexeclibHEADERS
make -C libiberty DESTDIR=${pkgdir} install
+ # install PIC version of libiberty
+ install -m644 ${srcdir}/gcc-build/libiberty/pic/libiberty.a ${pkgdir}/usr/lib
+
make -C gcc DESTDIR=${pkgdir} install-man install-info
rm ${pkgdir}/usr/share/man/man1/{gccgo,gfortran}.1
rm ${pkgdir}/usr/share/info/{gccgo,gfortran,gnat-style,gnat_rm,gnat_ugn}.info
@@ -236,7 +244,7 @@
make -C libcpp DESTDIR=${pkgdir} install
make -C gcc DESTDIR=${pkgdir} install-po
- # many packages expect this symlinks
+ # many packages expect this symlink
ln -s gcc ${pkgdir}/usr/bin/cc
# POSIX conformance launcher scripts for c89 and c99
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-10 09:33:56 UTC (rev 110942)
@@ -0,0 +1,38 @@
+--- trunk/gcc/tree-ssa-threadedge.c2014/04/23 17:53:56 209715
trunk/gcc/tree-ssa-threadedge.c2014/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