[oe-commits] Khem Raj : gcc-4.8: Fix meta-fsl-arm iperf build issue
git at git.openembedded.org
git at git.openembedded.org
Sat Aug 3 09:23:54 UTC 2013
Module: openembedded-core.git
Branch: master
Commit: 8ab1d16b6c6d946b625b6872e5d0f155206f4bad
URL: http://git.openembedded.org/?p=openembedded-core.git&a=commit;h=8ab1d16b6c6d946b625b6872e5d0f155206f4bad
Author: Khem Raj <raj.khem at gmail.com>
Date: Thu Aug 1 15:07:55 2013 -0700
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 at 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 at gmail.com>
CC: Otavio Salvador <otavio at ossystems.com.br>
Signed-off-by: Saul Wold <sgw at linux.intel.com>
---
meta/recipes-devtools/gcc/gcc-4.8.inc | 1 +
.../gcc/gcc-4.8/0042-pr57748.patch | 78 ++++++++++++++++++++
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 42355f2..9d92eda 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 0000000..5356f72
--- /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 at 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;
++}
More information about the Openembedded-commits
mailing list