Hi, Ping!
Siddhesh On Thu, 15 Nov 2012 19:05:38 +0530, Siddhesh wrote: > Hi, > > Here's an updated version of the patch which warns the user if the > removing of redundant exits results in an infinite loop. I have added > an additional flag in struct loop called external_exits to record if > an exit edge is moved outside the loop body. This currently happens > in the loop-unswitch pass and was the root cause of the regression in > torture/pr49518.c that I talked about earlier. The patch now passes > all regression tests except a mudflap case (fail37-frag). The test is > already broken due to removal of all exits so I haven't attempted to > fix it as part of this patch. How does this version look? > > Regards, > Siddhesh > > gcc/ChangeLog: > > * cfgloop.h (struct loop): New member EXTERNAL_EXITS. > * tree-ssa-loop-ivcanon.c (remove_redundant_iv_tests) Warn > when loop is left without any exits. > * tree-ssa-loop-unswitch.c (tree_unswitch_single_loop): Set > EXTERNAL_EXITS when moving a statement with an exit edge out > of the loop body.