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