> > + l = e->src->loop_father; > > + while (l && loop_outer (l)) > > + { > > + while (loop_outer (loop_outer (l)) > > + && dominated_by_p (CDI_DOMINATORS, > > + loop_outer (l)->latch, e->dest)) > > + unloop (loop_outer (l), &irred_invalidated); > > + l = loop_outer (l); > > + } > > It must be possible to merge the two loops, no? And it asks for a > comment.
The problem is that unloop can cascade, so looking up loop_father for the innermost loop and looking at loop_outer pointer elsewhere is the only up to date way to get to the next unlooping candidate, so I did not see any natural way to really merge the loops. The comment before the two loops is still correct, just implementation was buggy. Honza > > > /* Identify the path. */ > > nrem = find_path (e, &rem_bbs);