+2016-02-28 Jeff Law <law@redhat.com>
+
+ PR tree-optimization/69999
+ * gimple-ssa-split-paths.c (split_paths): When duplicating a block
+ with an outgoing edge marked with EDGE_IRREDUCIBLE_LOOP, schedule
+ loop cleanups.
+
2016-02-29 Richard Biener <rguenther@suse.de>
PR tree-optimization/69994
basic_block pred0 = EDGE_PRED (bb, 0)->src;
transform_duplicate (pred0, bb);
changed = true;
+
+ /* If BB has an outgoing edge marked as IRREDUCIBLE, then
+ duplicating BB may result in an irreducible region turning
+ into a natural loop.
+
+ Long term we might want to hook this into the block
+ duplication code, but as we've seen with similar changes
+ for edge removal, that can be somewhat risky. */
+ if (EDGE_SUCC (bb, 0)->flags & EDGE_IRREDUCIBLE_LOOP
+ || EDGE_SUCC (bb, 1)->flags & EDGE_IRREDUCIBLE_LOOP)
+ {
+ if (dump_file && (dump_flags & TDF_DETAILS))
+ fprintf (dump_file,
+ "Join block %d has EDGE_IRREDUCIBLE_LOOP set. "
+ "Scheduling loop fixups.\n",
+ bb->index);
+ loops_state_set (LOOPS_NEED_FIXUP);
+ }
}
}
+2016-02-29 Jeff Law <law@redhat.com>
+
+ PR tree-optimization/69999
+ * gcc.c-torture/compile/pr69999.c: New test.
+
2016-02-29 Yuri Rumyantsev <ysrumyan@gmail.com>
PR tree-optimization/69652