[Bug rtl-optimization/68955] [6 Regression] wrong code at -O3 on x86-64-linux-gnu in 32-bit mode
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Jan 12 13:17:00 GMT 2016
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.
More information about the Gcc-bugs
mailing list