https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101105
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- So what happens is that vect_compile_time_alias fails to perform the offset adjustment for the negative step DR #(Data Ref: # bb: 3 # stmt: b[g_40][0] = 0; # ref: b[g_40][0]; # base_object: b; # Access function 0: 0 # Access function 1: {3, +, -1}_1 which is done via /* For negative step, we need to adjust address range by TYPE_SIZE_UNIT bytes, e.g., int a[3] -> a[1] range is [a+4, a+16) instead of [a, a+12) */ if (tree_int_cst_compare (DR_STEP (a->dr), size_zero_node) < 0) { const_length_a = (-wi::to_poly_wide (segment_length_a)).force_uhwi (); offset_a -= const_length_a; } since we zero segment_length_a because of ignore_step_p. But that adjustment cannot be ignored. I suppose we need to track a separate "offset segment length" for this purpose?