https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68955

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org

--- Comment #7 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
I believe this goes wrong during DSE2, at least before that pass we have always
6 sets of statements corresponding to
i[1][e][h] = i[h][k][e] >= l;
and then one corresponding to
i[e + 2][h + 3][e] = 6 & l;
and then one corresponding to
i[2][1][2] = a;
and all this 6 times.  But, after DSE2 all the
i[e + 2][h + 3][e] = 6 & l;
stores are removed, except the last one that is kept.
Sure, all the i[e + 2][h + 3][e] stores (in the same loop, i.e. same e and h)
are to the same address, and they don't alias with any other stores in the loop
(i[1][e][h] necessarily has smaller first index than any e + 2, and i[2][1][2]
has the second index smaller than any h + 3), but they might alias with the
i[h][k][e] loads.

Reply via email to