[Bug tree-optimization/60183] [4.7/4.8/4.9 Regression] phiprop creates invalid code
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Feb 14 09:18:00 GMT 2014
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60183
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |ASSIGNED
Last reconfirmed| |2014-02-14
Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot gnu.org
Ever confirmed|0 |1
--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
Doesn't abort for me. phiprop does
Inserting PHI for result of load _6 = *y_5;
for edge defining &c inserting load _19 = MEM[(long unsigned int *)&c];
for edge defining y_13 inserting load _20 = *y_13;
_6 = PHI <_19(2), _20(3)>
on
<bb 2>:
w_4 = *x_2(D);
goto <bb 4>;
<bb 3>:
_6 = *y_5;
w_8 = _6 ^ w_7;
_9 = MEM[(long unsigned int *)y_5 + 8B];
w_10 = w_8 + _9;
_11 = MEM[(long unsigned int *)y_5 + 16B];
w_12 = w_10 ^ _11;
y_13 = &MEM[(void *)y_5 + 32B];
_14 = MEM[(long unsigned int *)y_5 + 24B];
w_15 = w_12 + _14;
i_17 = i_16 + 1;
<bb 4>:
# y_5 = PHI <&c(2), y_13(3)>
which results in
<bb 2>:
w_4 = *x_2(D);
_19 = MEM[(long unsigned int *)&c];
goto <bb 4>;
<bb 3>:
w_8 = _6 ^ w_7;
_9 = MEM[(long unsigned int *)y_5 + 8B];
w_10 = w_8 + _9;
_11 = MEM[(long unsigned int *)y_5 + 16B];
w_12 = w_10 ^ _11;
y_13 = &MEM[(void *)y_5 + 32B];
_14 = MEM[(long unsigned int *)y_5 + 24B];
w_15 = w_12 + _14;
i_17 = i_16 + 1;
_20 = *y_13;
<bb 4>:
# y_5 = PHI <&c(2), y_13(3)>
# _6 = PHI <_19(2), _20(3)>
I see nothing wrong with that. Ah, but the load is conditional on i <= 7,
so we effectively speculate it.
Mine.
More information about the Gcc-bugs
mailing list