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.

Reply via email to