[Bug middle-end/42006] [4.5 Regression] Termination problem with -O2 and -O3
rguenth at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Fri Nov 27 14:18:00 GMT 2009
------- Comment #3 from rguenth at gcc dot gnu dot org 2009-11-27 14:18 -------
This is early IPA-SRA which transforms
<bb 2>:
goto <bb 9>;
<bb 3>:
p_6.0_3 = (int) p_6_1;
if (p_6.0_3 <= 100)
goto <bb 4>;
else
goto <bb 5>;
<bb 4>:
p_6_6 = p_6_1 >> p_6.0_3;
<bb 5>:
# p_6_7 = PHI <p_6_1(3), p_6_6(4)>
if (p_6_7 != 0)
goto <bb 10>;
else
goto <bb 6>;
<bb 6>:
if (p_6_1 <= 49)
goto <bb 7>;
else
goto <bb 8>;
<bb 7>:
p_6_9 = p_6_1 + 1;
<bb 8>:
# p_6_10 = PHI <p_6_1(6), p_6_9(7)>
<bb 9>:
# p_6_1 = PHI <1(2), p_6_10(8)>
if (p_6_1 <= 2)
goto <bb 3>;
else
goto <bb 10>;
to
<bb 2>:
goto <bb 9>;
<bb 3>:
p_6.0_3 = (int) p_6_2;
if (p_6.0_3 <= 100)
goto <bb 4>;
else
goto <bb 5>;
<bb 4>:
p_6_5 = p_6_2 >> p_6.0_3;
<bb 5>:
# p_6_12 = PHI <p_6_2(3), p_6_5(4)>
if (p_6_12 != 0)
goto <bb 10>;
else
goto <bb 6>;
<bb 6>:
if (p_6_12 <= 49)
goto <bb 7>;
else
goto <bb 8>;
<bb 7>:
p_6_11 = p_6_12 + 1;
<bb 8>:
# p_6_4 = PHI <p_6_12(6), p_6_11(7)>
<bb 9>:
# p_6_2 = PHI <1(2), p_6_4(8)>
if (p_6_2 <= 2)
goto <bb 3>;
else
goto <bb 10>;
see how p_6_9 = p_6_1 + 1 is changed to p_6_11 = p_6_12 + 1 forming an
endless loop - it shuld have been p_6_11 = p_6_2 + 1 instead.
Martin?
--
rguenth at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jamborm at gcc dot gnu dot
| |org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42006
More information about the Gcc-bugs
mailing list