From 8ab1d16b6c6d946b625b6872e5d0f155206f4bad Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Thu, 1 Aug 2013 15:07:55 -0700 Subject: 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 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 CC: Otavio Salvador Signed-off-by: Saul Wold --- meta/recipes-devtools/gcc/gcc-4.8.inc | 1 + .../gcc/gcc-4.8/0042-pr57748.patch | 78 ++++++++++++++++++++++ 2 files changed, 79 insertions(+) create mode 100644 meta/recipes-devtools/gcc/gcc-4.8/0042-pr57748.patch (limited to 'meta/recipes-devtools') 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 + + 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 ++ ++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; ++} -- cgit 1.2.3-korg