https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116990
--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> --- Hum. The following should have prevented that, but ... /* Check if we have any control flow that doesn't leave the loop. */ class loop *v_loop = loop->inner ? loop->inner : loop; ... not sure why we only look at the inner loop body?! basic_block *bbs = get_loop_body (v_loop); for (unsigned i = 0; i < v_loop->num_nodes; i++) if (EDGE_COUNT (bbs[i]->succs) != 1 && (EDGE_COUNT (bbs[i]->succs) != 2 || !loop_exits_from_bb_p (bbs[i]->loop_father, bbs[i]))) { free (bbs); return opt_result::failure_at (vect_location, "not vectorized:" " unsupported control flow in loop.\n"); }