+2015-02-18 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/62217
+ * tree-ssa-dom.c (cprop_operand): Avoid propagating copies
+ into BIVs.
+
2015-02-18 Marek Polacek <polacek@redhat.com>
PR sanitizer/65081
+2015-02-18 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/62217
+ * gcc.dg/tree-ssa/cunroll-11.c: New testcase.
+
2015-02-18 Marek Polacek <polacek@redhat.com>
PR sanitizer/65081
--- /dev/null
+/* { dg-do compile } */
+/* { dg-options "-O3 -Warray-bounds -fdump-tree-cunroll-details" } */
+
+typedef struct { unsigned data; } s1;
+s1 g_x[4];
+
+extern void foo (s1 *x1, s1 *x2, int a, int b)
+{
+ int i;
+ for(i = 0; i < a; i++)
+ if(i == b)
+ g_x[i] = *x1;
+ else
+ g_x[i] = *x2;
+}
+
+/* { dg-final { scan-tree-dump "Loop 1 iterates at most 3 times" "cunroll" } } */
+/* { dg-final { cleanup-tree-dump "cunroll" } } */
if (!may_propagate_copy (op, val))
return;
- /* Do not propagate copies into simple IV increment statements.
- See PR23821 for how this can disturb IV analysis. */
- if (TREE_CODE (val) != INTEGER_CST
- && simple_iv_increment_p (stmt))
- return;
+ /* Do not propagate copies into BIVs.
+ See PR23821 and PR62217 for how this can disturb IV and
+ number of iteration analysis. */
+ if (TREE_CODE (val) != INTEGER_CST)
+ {
+ gimple def = SSA_NAME_DEF_STMT (op);
+ if (gimple_code (def) == GIMPLE_PHI
+ && gimple_bb (def)->loop_father->header == gimple_bb (def))
+ return;
+ }
/* Dump details. */
if (dump_file && (dump_flags & TDF_DETAILS))