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