summaryrefslogtreecommitdiff
path: root/testing/gcc
diff options
context:
space:
mode:
authorroot <root@rshg054.dnsready.net>2011-12-04 23:14:51 +0000
committerroot <root@rshg054.dnsready.net>2011-12-04 23:14:51 +0000
commit392d2d86b3657d90c3954a44dd6e3e5a4d12d455 (patch)
treea88c28d4a6652dd77a3557f0dab9f6c6bdda037e /testing/gcc
parent851376cd7720e1f9b35e0a7c26bfd66399f0c4d3 (diff)
Sun Dec 4 23:14:51 UTC 2011
Diffstat (limited to 'testing/gcc')
-rw-r--r--testing/gcc/PKGBUILD13
-rw-r--r--testing/gcc/gcc-pr49720.patch26
2 files changed, 35 insertions, 4 deletions
diff --git a/testing/gcc/PKGBUILD b/testing/gcc/PKGBUILD
index 4c4cec15d..d57464ec6 100644
--- a/testing/gcc/PKGBUILD
+++ b/testing/gcc/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 144071 2011-12-02 21:13:00Z allan $
+# $Id: PKGBUILD 144107 2011-12-04 02:41:48Z allan $
# Maintainer: Allan McRae <allan@archlinux.org>
# toolchain build order: linux-api-headers->glibc->binutils->gcc->binutils->glibc
@@ -6,7 +6,7 @@
pkgname=('gcc' 'gcc-libs' 'gcc-fortran' 'gcc-objc' 'gcc-ada' 'gcc-go')
pkgver=4.6.2
-pkgrel=2
+pkgrel=3
_snapshot=4.6-20111125
_libstdcppmanver=20110814 # Note: check source directory name when updating this
pkgdesc="The GNU Compiler Collection"
@@ -20,11 +20,13 @@ 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
ftp://gcc.gnu.org/pub/gcc/libstdc++/doxygen/libstdc++-api.${_libstdcppmanver}.man.tar.bz2
gcc_pure64.patch
- gcc-hash-style-both.patch)
+ gcc-hash-style-both.patch
+ gcc-pr49720.patch)
md5sums=('922b0ee688669c188d237bbd21d42d07'
'ce920d2550ff7e042b9f091d27764d8f'
'4030ee1c08dd1e843c0225b772360e76'
- '4df25b623799b148a0703eaeec8fdf3f')
+ '4df25b623799b148a0703eaeec8fdf3f'
+ 'f9d7e5b792c59175f3da3f8421447512')
if [ -n "${_snapshot}" ]; then
_basedir="${srcdir}/gcc-${_snapshot}"
@@ -46,6 +48,9 @@ build() {
fi
patch -Np0 -i ${srcdir}/gcc-hash-style-both.patch
+ # fix compiler segfault in binutils testsuite
+ patch -Np1 -i ${srcdir}/gcc-pr49720.patch
+
echo ${pkgver} > gcc/BASE-VER
cd ${srcdir}
diff --git a/testing/gcc/gcc-pr49720.patch b/testing/gcc/gcc-pr49720.patch
new file mode 100644
index 000000000..8f50c4120
--- /dev/null
+++ b/testing/gcc/gcc-pr49720.patch
@@ -0,0 +1,26 @@
+--- trunk/gcc/simplify-rtx.c 2011/10/28 05:55:10 180603
++++ trunk/gcc/simplify-rtx.c 2011/10/28 06:35:31 180604
+@@ -4352,10 +4352,20 @@
+ {
+ rtx x = XEXP (op0, 0);
+ rtx c = XEXP (op0, 1);
++ enum rtx_code invcode = op0code == PLUS ? MINUS : PLUS;
++ rtx tem = simplify_gen_binary (invcode, cmp_mode, op1, c);
+
+- c = simplify_gen_binary (op0code == PLUS ? MINUS : PLUS,
+- cmp_mode, op1, c);
+- return simplify_gen_relational (code, mode, cmp_mode, x, c);
++ /* Detect an infinite recursive condition, where we oscillate at this
++ simplification case between:
++ A + B == C <---> C - B == A,
++ where A, B, and C are all constants with non-simplifiable expressions,
++ usually SYMBOL_REFs. */
++ if (GET_CODE (tem) == invcode
++ && CONSTANT_P (x)
++ && rtx_equal_p (c, XEXP (tem, 1)))
++ return NULL_RTX;
++
++ return simplify_gen_relational (code, mode, cmp_mode, x, tem);
+ }
+
+ /* (ne:SI (zero_extract:SI FOO (const_int 1) BAR) (const_int 0))) is