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.

Reply via email to