+2012-04-11 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/52912
+ * tree-ssa-threadupdate.c (thread_block): Tell the cfg
+ manipulation code we are threading through a loop header
+ to an exit destination.
+
2012-04-10 Manuel López-Ibáñez <manu@gcc.gnu.org>
* tree.h (warn_if_unused_value): Move declaration from here.
+2012-04-11 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/52912
+ * gcc.dg/torture/pr52912.c: New testcase.
+
2010-04-10 Michael Matz <matz@suse.de>
* gcc.dg/vect/vect-outer-1-big-array.c: Adjust.
/* We do not update dominance info. */
free_dominance_info (CDI_DOMINATORS);
+ /* We know we only thread through the loop header to loop exits.
+ Let the basic block duplication hook know we are not creating
+ a multiple entry loop. */
+ if (noloop_only
+ && bb == bb->loop_father->header)
+ set_loop_copy (bb->loop_father, loop_outer (bb->loop_father));
+
/* Now create duplicates of BB.
Note that for a block with a high outgoing degree we can waste
htab_delete (redirection_data);
redirection_data = NULL;
+ if (noloop_only
+ && bb == bb->loop_father->header)
+ set_loop_copy (bb->loop_father, NULL);
+
/* Indicate to our caller whether or not any jumps were threaded. */
return local_info.jumps_threaded;
}