[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