https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120143
--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> --- So the issue is that in vect_analyze_early_break_dependences we do stmt_vec_info stmt_vinfo = vect_stmt_to_vectorize (loop_vinfo->lookup_stmt (stmt)); and look at virtual operands of that stmt, but for the store # .MEM_22 = VDEF <.MEM_28> b[y_25][y_25] = _9; the pattern stmt is VIEW_CONVERT_EXPR<unsigned char>(b[y_25][y_25]) = patt_1; note the lack of virtual operands here. But we need to move the original stmt in the end, not the pattern (which isn't in the IL anyway), and w/o a vdef we're not queueing the stmt. I think it's easiest to work with the original stmt throughout the function but have stmt_info be the stmt to vectorize.