aboutsummaryrefslogtreecommitdiffstats
path: root/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99363.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99363.patch')
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99363.patch95
1 files changed, 95 insertions, 0 deletions
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99363.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99363.patch
new file mode 100644
index 0000000000..7003cf8376
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99363.patch
@@ -0,0 +1,95 @@
+2010-08-05 Jie Zhang <jie@codesourcery.com>
+
+ Issue #7257
+
+ Backport from mainline:
+
+ gcc/
+ 2010-08-05 Jie Zhang <jie@codesourcery.com>
+ PR tree-optimization/45144
+ * tree-sra.c (type_consists_of_records_p): Return false
+ if the record contains bit-field.
+
+ gcc/testsuite/
+ 2010-08-05 Jie Zhang <jie@codesourcery.com>
+ PR tree-optimization/45144
+ * gcc.dg/tree-ssa/pr45144.c: New test.
+
+ 2010-08-04 Mark Mitchell <mark@codesourcery.com>
+
+ Backport from mainline:
+
+=== added file 'gcc/testsuite/gcc.dg/tree-ssa/pr45144.c'
+--- old/gcc/testsuite/gcc.dg/tree-ssa/pr45144.c 1970-01-01 00:00:00 +0000
++++ new/gcc/testsuite/gcc.dg/tree-ssa/pr45144.c 2010-08-20 16:04:44 +0000
+@@ -0,0 +1,46 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -fdump-tree-optimized" } */
++
++void baz (unsigned);
++
++extern unsigned buf[];
++
++struct A
++{
++ unsigned a1:10;
++ unsigned a2:3;
++ unsigned:19;
++};
++
++union TMP
++{
++ struct A a;
++ unsigned int b;
++};
++
++static unsigned
++foo (struct A *p)
++{
++ union TMP t;
++ struct A x;
++
++ x = *p;
++ t.a = x;
++ return t.b;
++}
++
++void
++bar (unsigned orig, unsigned *new)
++{
++ struct A a;
++ union TMP s;
++
++ s.b = orig;
++ a = s.a;
++ if (a.a1)
++ baz (a.a2);
++ *new = foo (&a);
++}
++
++/* { dg-final { scan-tree-dump "x = a;" "optimized"} } */
++/* { dg-final { cleanup-tree-dump "optimized" } } */
+
+=== modified file 'gcc/tree-sra.c'
+--- old/gcc/tree-sra.c 2010-08-10 13:31:21 +0000
++++ new/gcc/tree-sra.c 2010-08-20 16:04:44 +0000
+@@ -805,7 +805,7 @@
+ /* Return true iff TYPE is a RECORD_TYPE with fields that are either of gimple
+ register types or (recursively) records with only these two kinds of fields.
+ It also returns false if any of these records has a zero-size field as its
+- last field. */
++ last field or has a bit-field. */
+
+ static bool
+ type_consists_of_records_p (tree type)
+@@ -821,6 +821,9 @@
+ {
+ tree ft = TREE_TYPE (fld);
+
++ if (DECL_BIT_FIELD (fld))
++ return false;
++
+ if (!is_gimple_reg_type (ft)
+ && !type_consists_of_records_p (ft))
+ return false;
+