+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.
+
2010-08-04 Richard Henderson <rth@redhat.com>
* config/i386/i386.c (struct ix86_frame): Remove padding and
+2010-08-05 Jie Zhang <jie@codesourcery.com>
+
+ PR tree-optimization/45144
+ * gcc.dg/tree-ssa/pr45144.c: New test.
+
2010-08-04 Janus Weil <janus@gcc.gnu.org>
PR fortran/42207
--- /dev/null
+/* { 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" } } */
/* 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)
{
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;