Hi,

> Just a nit, can't you break out of the loop when irred_invalidated is set to
> true as well?  There is no need to look through any further edges.  I.e.
> perhaps:
>   if (!irred_invalidated)
>     FOR_EACH_EDGE (ae, ei, e->src->succs)
>       if (ae != e
>         && ae->dest != EXIT_BLOCK_PTR
>         && (ae->flags & EDGE_IRREDUCIBLE_LOOP)
>         && !TEST_BIT (seen, ae->dest->index))
>       {
>         irred_invalidated = true;
>         break;
>       }
> Thanks for looking into this, I'll defer the review to somebody familiar
> with cfgloopmanip.c though.

the change looks fine to me.

> Sure, though we do have horrible time complexity in case irreducible
> regions are including recomputing the whole CFG flags after every path
> removal.

Yeah, though trying to keep it up-to-date locally was a nightmare.  We actually
do not use the information about irreducible regions all that much, so maybe
the right approach would be to just compute it when needed,

Zdenek

Reply via email to