http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54980
--- Comment #9 from Dmitry G. Dyachenko <dimhen at gmail dot com> 2012-10-24 10:00:18 UTC --- (In reply to comment #7) > This does not seem to reproduce for me. The following patch should however fix > it. > Index: tree-ssa-loop-ivcanon.c > =================================================================== > --- tree-ssa-loop-ivcanon.c (revision 192711) > +++ tree-ssa-loop-ivcanon.c (working copy) > @@ -364,6 +364,10 @@ loop_edge_to_cancel (struct loop *loop) > else > edge_to_cancel = EDGE_SUCC (edge_to_cancel->src, 0); > > + /* We only can handle conditionals. */ > + if (!(edge_to_cancel->flags & (EDGE_TRUE_VALUE | EDGE_FALSE_VALUE))) > + continue; > + > /* We should never have conditionals in the loop latch. */ > gcc_assert (edge_to_cancel->dest != loop->header); i'll try patch. Thank You