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.

Reply via email to