https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111683
--- Comment #16 from Richard Biener <rguenth at gcc dot gnu.org> --- Created attachment 57766 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=57766&action=edit patch Oddly enough the following patch doesn't fix it but it correctly prevents us from recording the access functions and data dependence analysis now says (Data Dep: #(Data Ref: # bb: 3 # stmt: _2 = MEM[(U * {ref-all})_1]; # ref: MEM[(U * {ref-all})_1]; # base_object: MEM[(U * {ref-all})_1]; #) #(Data Ref: # bb: 3 # stmt: _7 = MEM[(U * {ref-all})_6]; # ref: MEM[(U * {ref-all})_6]; # base_object: MEM[(U * {ref-all})_6]; #) (don't know) but predictive commoning still does Store-loads chain 0x48229b0 max distance 2, may reuse first inits MEM[(U * {ref-all})&c] MEM[(U * {ref-all})&c + 8B] references: MEM[(U * {ref-all})_6] (id 3, write) offset -2 distance 0 MEM[(U * {ref-all})_1] (id 0) offset 0 distance 2 Executing predictive commoning without unrolling. predcom has its own analysis it seems and it makes a similar mistake.