2016-01-27 Martin Jambor <mjambor@suse.cz>
PR tree-optimization/69355
* tree-sra.c (analyze_access_subtree): Correct hole detection when
total_scalarization fails.
testsuite/
* gcc.dg/tree-ssa/pr69355.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@232877
138bc75d-0d04-0410-961f-
82ee72b054a4
+2016-01-27 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimization/69355
+ * tree-sra.c (analyze_access_subtree): Correct hole detection when
+ total_scalarization fails.
+
2016-01-27 David Edelsohn <dje.gcc@gmail.com>
* config/rs6000/driver-rs6000.c (detect_processor_aix): Add
+2016-01-27 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimization/69355
+ * gcc.dg/tree-ssa/pr69355.c: New test.
+
2016-01-27 Marek Polacek <polacek@redhat.com>
PR c++/69496
--- /dev/null
+/* { dg-do run } */
+/* { dg-options "-O -fno-strict-aliasing" } */
+
+struct S
+{
+ void *a;
+ long double b;
+};
+
+struct Z
+{
+ long long l;
+ short s;
+} __attribute__((packed));
+
+struct S __attribute__((noclone, noinline))
+foo (void *v, struct Z *z)
+{
+ struct S t;
+ t.a = v;
+ *(struct Z *) &t.b = *z;
+ return t;
+}
+
+struct Z gz;
+
+int
+main (int argc, char **argv)
+{
+ struct S s;
+
+ if (sizeof (long double) < sizeof (struct Z))
+ return 0;
+
+ gz.l = 0xbeef;
+ gz.s = 0xab;
+
+ s = foo ((void *) 0, &gz);
+
+ if ((((struct Z *) &s.b)->l != gz.l)
+ || (((struct Z *) &s.b)->s != gz.s))
+ __builtin_abort ();
+ return 0;
+}
if (covered_to < limit)
hole = true;
- if (scalar)
+ if (scalar || !allow_replacements)
root->grp_total_scalarization = 0;
}