aboutsummaryrefslogtreecommitdiffstats
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
parent79af25c3f45f57c1dd44db2ef4011a3e768badd6 (diff)
downloadopenembedded-core-8ab1d16b6c6d946b625b6872e5d0f155206f4bad.tar.gz
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>
-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;
++}