+2016-07-15 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/71881
+ * tree-loop-distribution.c (destroy_loop): Remove blocks in
+ reverse DOM order to make debug temp generation happy.
+
2016-07-15 Richard Biener <rguenther@suse.de>
PR tree-optimization/71887
+2016-07-15 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/71881
+ * gcc.dg/torture/pr71881.c: New testcase.
+
2016-07-15 Richard Biener <rguenther@suse.de>
PR tree-optimization/71887
--- /dev/null
+/* { dg-do compile } */
+/* { dg-additional-options "-g" } */
+
+int a, b, c, d, *e, f, g;
+
+int fn1 ()
+{
+ char h[2];
+ int i = 0;
+ for (; i < 2; i++)
+ {
+ if (c)
+ for (*e = 0; *e;)
+ {
+ int j[f];
+ i = *e;
+ }
+ h[i] = 0;
+ }
+ for (; a;)
+ return h[0];
+ for (b = 0; b;)
+ i = g = (1 & i) < d;
+ return 0;
+}
cancel_loop_tree (loop);
rescan_loop_exit (exit, false, true);
- for (i = 0; i < nbbs; i++)
+ i = nbbs;
+ do
{
/* We have made sure to not leave any dangling uses of SSA
names defined in the loop. With the exception of virtuals.
Make sure we replace all uses of virtual defs that will remain
outside of the loop with the bare symbol as delete_basic_block
will release them. */
+ --i;
for (gphi_iterator gsi = gsi_start_phis (bbs[i]); !gsi_end_p (gsi);
gsi_next (&gsi))
{
}
delete_basic_block (bbs[i]);
}
+ while (i != 0);
+
free (bbs);
set_immediate_dominator (CDI_DOMINATORS, dest,