[Bug c/58626] [4.9 Regression] possible array wrong code bug
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Oct 11 11:36:00 GMT 2013
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58626
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
I have updated my do-proper-partition-dependencies patch and verified it fixes
this issue. We now generate
<bb 2>:
__builtin_memmove (&MEM[(void *)&a + 24B], &MEM[(void *)&a + 48B], 8);
<bb 3>:
# b.0_10 = PHI <b.1_12(4), 0(2)>
a[1][3] = 0;
_25 = a[3][b.0_10];
a[2][b.0_10] = _25;
b.1_12 = b.0_10 + 1;
if (b.1_12 <= 1)
goto <bb 4>;
else
goto <bb 5>;
<bb 4>:
goto <bb 3>;
<bb 5>:
b = 2;
_14 = a[1][1];
if (_14 != 1)
note the inner loop is completely peeled before loop distribution and we see
<bb 3>:
# b.0_10 = PHI <b.1_12(4), 0(2)>
a[1][3] = 0;
_19 = a[2][b.0_10];
a[1][b.0_10] = _19;
_25 = a[3][b.0_10];
a[2][b.0_10] = _25;
b.1_12 = b.0_10 + 1;
if (b.1_12 <= 1)
the patch still needs quite some TLC though.
More information about the Gcc-bugs
mailing list