https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106860
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot gnu.org Ever confirmed|0 |1 Last reconfirmed| |2022-09-07 Target Milestone|--- |12.3 Status|UNCONFIRMED |ASSIGNED --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- Confirmed. static bool split_loop (class loop *loop1) { ... /* Fix first loop's exit probability after scaling. */ edge exit_to_latch1 = single_pred_edge (loop1->latch); I think it's a misconception that latches are guaranteed to have a single predecessor. With LOOPS_HAVE_SIMPLE_LATCHES we have a single _successor_. The CFG is also very different than expected, with a lot of code on the "latch" (a whole subloop is there).