summaryrefslogtreecommitdiff
path: root/core/gcc
diff options
context:
space:
mode:
authorroot <root@rshg054.dnsready.net>2011-12-09 23:14:52 +0000
committerroot <root@rshg054.dnsready.net>2011-12-09 23:14:52 +0000
commitd22b68a6758c4f29a8e50a7be467374a53c68415 (patch)
tree019c8b74603792b4b8f08d6815438654a64d0e38 /core/gcc
parent707457876743e969be9eb163c36928978df245cd (diff)
Fri Dec 9 23:14:52 UTC 2011
Diffstat (limited to 'core/gcc')
-rw-r--r--core/gcc/PKGBUILD25
-rw-r--r--core/gcc/gcc-pr49720.patch26
2 files changed, 41 insertions, 10 deletions
diff --git a/core/gcc/PKGBUILD b/core/gcc/PKGBUILD
index 9d324aff9..409794f25 100644
--- a/core/gcc/PKGBUILD
+++ b/core/gcc/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 141368 2011-10-30 06:46:42Z allan $
+# $Id: PKGBUILD 144846 2011-12-08 12:16:58Z allan $
# Maintainer: Allan McRae <allan@archlinux.org>
# toolchain build order: linux-api-headers->glibc->binutils->gcc->binutils->glibc
@@ -6,25 +6,27 @@
pkgname=('gcc' 'gcc-libs' 'gcc-fortran' 'gcc-objc' 'gcc-ada' 'gcc-go')
pkgver=4.6.2
-pkgrel=1
-#_snapshot=4.6-20110819
+pkgrel=3
+_snapshot=4.6-20111125
_libstdcppmanver=20110814 # Note: check source directory name when updating this
pkgdesc="The GNU Compiler Collection"
arch=('i686' 'x86_64')
license=('GPL' 'LGPL' 'FDL' 'custom')
url="http://gcc.gnu.org"
-makedepends=('binutils>=2.21-9' 'libmpc' 'cloog' 'ppl' 'gcc-ada')
+makedepends=('binutils>=2.22' 'libmpc' 'cloog' 'ppl' 'gcc-ada')
checkdepends=('dejagnu')
options=('!libtool' '!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
+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)
-md5sums=('028115c4fbfb6cfd75d6369f4a90d87e'
+ 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}
@@ -113,7 +118,7 @@ package_gcc-libs()
package_gcc()
{
pkgdesc="The GNU Compiler Collection - C and C++ frontends"
- depends=("gcc-libs=$pkgver-$pkgrel" 'binutils>=2.21.1' 'libmpc' 'cloog' 'ppl')
+ depends=("gcc-libs=$pkgver-$pkgrel" 'binutils>=2.22' 'libmpc' 'cloog' 'ppl')
groups=('base-devel')
install=gcc.install
diff --git a/core/gcc/gcc-pr49720.patch b/core/gcc/gcc-pr49720.patch
new file mode 100644
index 000000000..8f50c4120
--- /dev/null
+++ b/core/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