summaryrefslogtreecommitdiff
path: root/meta/recipes-devtools/gcc
diff options
context:
space:
mode:
authorKhem Raj <raj.khem@gmail.com>2013-08-01 15:07:55 -0700
committerSaul Wold <sgw@linux.intel.com>2013-08-02 08:21:17 -0700
commit8ab1d16b6c6d946b625b6872e5d0f155206f4bad (patch)
tree82518a7ee85e258b4301c8040a6d9202d4f1572f /meta/recipes-devtools/gcc
parent79af25c3f45f57c1dd44db2ef4011a3e768badd6 (diff)
downloadopenembedded-core-8ab1d16b6c6d946b625b6872e5d0f155206f4bad.tar.gz
openembedded-core-8ab1d16b6c6d946b625b6872e5d0f155206f4bad.tar.bz2
openembedded-core-8ab1d16b6c6d946b625b6872e5d0f155206f4bad.zip
gcc-4.8: Fix meta-fsl-arm iperf build issue
This should fix the problem seen where gcc ICE was happening when compiling iperf with older 2.6.x kernel Test this patch by reverting below commit in meta-fsl-arm commit daf582c93a7283fb0af3b25fe2ada48f4c9985c4 Author: Otavio Salvador <otavio@ossystems.com.br> Date: Tue Jul 2 11:52:51 2013 -0300 perf: Disable FPU tune for i.MX5 SoCs to workaround GCC ICE Signed-off-by: Khem Raj <raj.khem@gmail.com> CC: Otavio Salvador <otavio@ossystems.com.br> Signed-off-by: Saul Wold <sgw@linux.intel.com>
Diffstat (limited to 'meta/recipes-devtools/gcc')
-rw-r--r--meta/recipes-devtools/gcc/gcc-4.8.inc1
-rw-r--r--meta/recipes-devtools/gcc/gcc-4.8/0042-pr57748.patch78
2 files changed, 79 insertions, 0 deletions
diff --git a/meta/recipes-devtools/gcc/gcc-4.8.inc b/meta/recipes-devtools/gcc/gcc-4.8.inc
index 42355f2102..9d92edabc3 100644
--- a/meta/recipes-devtools/gcc/gcc-4.8.inc
+++ b/meta/recipes-devtools/gcc/gcc-4.8.inc
@@ -71,6 +71,7 @@ SRC_URI = "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.bz2 \
file://0039-gcc-4.8-PR57717.patch \
file://0040-fix-g++-sysroot.patch \
file://0041-libtool-avoid-libdir.patch \
+ file://0042-pr57748.patch \
"
SRC_URI[md5sum] = "3b2386c114cd74185aa3754b58a79304"
SRC_URI[sha256sum] = "545b44be3ad9f2c4e90e6880f5c9d4f0a8f0e5f67e1ffb0d45da9fa01bb05813"
diff --git a/meta/recipes-devtools/gcc/gcc-4.8/0042-pr57748.patch b/meta/recipes-devtools/gcc/gcc-4.8/0042-pr57748.patch
new file mode 100644
index 0000000000..5356f722d9
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-4.8/0042-pr57748.patch
@@ -0,0 +1,78 @@
+Upstream-Status: Backport
+Signed-off-by: Khem Raj
+
+2013-08-01 Martin Jambor <mjambor@suse.cz>
+
+ PR middle-end/57748
+ * stor-layout.c (compute_record_mode): Treat zero-sized array fields
+ like incomplete types.
+
+testsuite/
+ * gcc.dg/torture/pr57748.c: New test.
+
+
+Index: gcc-4.8.1/gcc/stor-layout.c
+===================================================================
+--- gcc-4.8.1.orig/gcc/stor-layout.c 2013-04-28 10:29:18.000000000 -0700
++++ gcc-4.8.1/gcc/stor-layout.c 2013-08-01 15:02:08.018006125 -0700
+@@ -1618,7 +1618,9 @@
+ && integer_zerop (TYPE_SIZE (TREE_TYPE (field)))))
+ || ! host_integerp (bit_position (field), 1)
+ || DECL_SIZE (field) == 0
+- || ! host_integerp (DECL_SIZE (field), 1))
++ || ! host_integerp (DECL_SIZE (field), 1)
++ || (TREE_CODE (TREE_TYPE (field)) == ARRAY_TYPE
++ && tree_low_cst (DECL_SIZE (field), 1) == 0))
+ return;
+
+ /* If this field is the whole struct, remember its mode so
+Index: gcc-4.8.1/gcc/testsuite/gcc.dg/torture/pr57748.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gcc-4.8.1/gcc/testsuite/gcc.dg/torture/pr57748.c 2013-08-01 15:02:08.062006126 -0700
+@@ -0,0 +1,45 @@
++/* PR middle-end/57748 */
++/* { dg-do run } */
++
++#include <stdlib.h>
++
++extern void abort (void);
++
++typedef long long V
++ __attribute__ ((vector_size (2 * sizeof (long long)), may_alias));
++
++typedef struct S { V a; V b[0]; } P __attribute__((aligned (1)));
++
++struct __attribute__((packed)) T { char c; P s; };
++
++void __attribute__((noinline, noclone))
++check (struct T *t)
++{
++ if (t->s.b[0][0] != 3 || t->s.b[0][1] != 4)
++ abort ();
++}
++
++int __attribute__((noinline, noclone))
++get_i (void)
++{
++ return 0;
++}
++
++void __attribute__((noinline, noclone))
++foo (P *p)
++{
++ V a = { 3, 4 };
++ int i = get_i();
++ p->b[i] = a;
++}
++
++int
++main ()
++{
++ struct T *t = (struct T *) malloc (128);
++
++ foo (&t->s);
++ check (t);
++
++ return 0;
++}