+2012-05-18 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/53346
+ * tree-loop-distribution.c (ldist_gen): Make sure to apply
+ builtin transform even when only a single partition with
+ all reads/writes exists.
+
2012-05-18 Richard Guenther <rguenther@suse.de>
PR tree-optimization/53390
+2012-05-18 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/53346
+ * gcc.dg/tree-ssa/ldist-18.c: New testcase.
+ * gcc.target/i386/incoming-10.c: Adjust.
+ * gcc.target/i386/incoming-11.c: Likewise.
+ * gcc.target/i386/pr46295.c: Likewise.
+
2012-05-18 Richard Guenther <rguenther@suse.de>
* gcc.dg/pr53352.c: Return zero.
--- /dev/null
+/* { dg-do compile } */
+/* { dg-options "-O2 -ftree-loop-distribute-patterns -fdump-tree-ldist-details" } */
+
+void foo (int *p, int n)
+{
+ int i;
+ for (i = 0; i < n; ++i)
+ p[i] = 0;
+}
+
+/* { dg-final { scan-tree-dump "generated memset zero" "ldist" } } */
+/* { dg-final { cleanup-tree-dump "ldist" } } */
{
int i;
struct s s;
- for (i = 0; i < sizeof(s.x) / sizeof(*s.x); i++) s.x[i] = 0;
+ for (i = 0; i < sizeof(s.x) / sizeof(*s.x); i++) s.x[i] = 1;
g(&s);
}
void f()
{
int i;
- for (i = 0; i < 100; i++) p[i] = 0;
+ for (i = 0; i < 100; i++) p[i] = 1;
g();
- for (i = 0; i < 100; i++) q[i] = 0;
+ for (i = 0; i < 100; i++) q[i] = 1;
}
/* { dg-final { scan-assembler "andl\[\\t \]*\\$-16,\[\\t \]*%esp" } } */
EXPRESS Express;
int Terms;
for (Terms = 0; Terms < 5; Terms++)
- Express[Terms] = 0.0;
+ Express[Terms] = 1.0;
Parse_Rel_Factor(Express,&Terms);
}
BITMAP_FREE (processed);
nbp = VEC_length (bitmap, partitions);
- if (nbp <= 1
- || partition_contains_all_rw (rdg, partitions))
+ if (nbp == 0
+ || (nbp == 1
+ && !can_generate_builtin (rdg, VEC_index (bitmap, partitions, 0)))
+ || (nbp > 1
+ && partition_contains_all_rw (rdg, partitions)))
goto ldist_done;
if (dump_file && (dump_flags & TDF_DETAILS))