https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79977
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot gnu.org --- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- The region in question is not single-exit. merge_sese has basic_block pdom = nearest_common_dominator (CDI_POST_DOMINATORS, get_exit_bb (first), get_exit_bb (second)); pdom = nearest_common_dominator (CDI_POST_DOMINATORS, dom, pdom); edge exit = get_nearest_pdom_with_single_exit (pdom); if (!exit || (exit->flags & EDGE_IRREDUCIBLE_LOOP)) return invalid_sese; but that doesn't catch the case where we have a loop exit to an outer loop latch. I have a patch.