https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118527
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |hubicka at gcc dot gnu.org, | |rguenth at gcc dot gnu.org --- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- I think this should be done in the CFG cleanup stage - the whole point of defering CFG updates is so that passes need not worry about such things as profile updates. I see how it's convenient to be able to use the EDGE_EXECUTABLE flag from within FRE/PRE to see whether the loop still iterates, but as you figured when FRE doesn't run in 'iterate' mode we do not have loops arranged to have only a single latch. You definitely want to guard the update with && !do_region since otherwise you do O(function-size) work (in practice we don't support iteration in region mode).