https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92555
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- t.c:8:9: note: === vect_update_vf_for_slp === t.c:8:9: note: Loop contains only SLP stmts t.c:8:9: note: Updating vectorization factor to 8. that's not true. There is the inner loop induction that is live. t.c:8:9: note: init: phi relevant? x8_15 = PHI <x8_23(5)> t.c:8:9: note: vec_stmt_relevant_p: used out of loop. t.c:8:9: note: vec_stmt_relevant_p: stmt live but not relevant. t.c:8:9: note: mark relevant 1, live 1: x8_15 = PHI <x8_23(5)> ... t.c:8:9: note: worklist: examine stmt: x8_15 = PHI <x8_23(5)> t.c:8:9: note: vect_is_simple_use: operand x8_23 = PHI <0(4), x8_18(10)>, type of def: induction t.c:8:9: note: inner-loop def-stmt defining outer-loop stmt. t.c:8:9: note: mark relevant 2, live 0: x8_23 = PHI <0(4), x8_18(10)> t.c:8:9: note: worklist: examine stmt: x8_23 = PHI <0(4), x8_18(10)> t.c:8:9: note: vect_is_simple_use: operand 0, type of def: constant t.c:8:9: note: vect_is_simple_use: operand x8_23 + 2, type of def: internal t.c:8:9: note: induction value on backedge. I have a fix (I think).