http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57511
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |spop at gcc dot gnu.org
Blocks| |55555
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
analyze_scalar_evolution_in_loop fails for a_4 in
<bb 4>:
# i_11 = PHI <i_5(3), 0(2)>
# a_12 = PHI <a_4(3), 0(2)>
_3 = i_11 + 16711935;
a_4 = _3 + a_12;
i_5 = i_11 + 1;
if (i_5 != 10)
goto <bb 3>;
else
goto <bb 5>;
<bb 5>:
# a_6 = PHI <a_4(4)>
return a_6;
the evolution is {16711935, +, _3 + 1}_1 but the evolution of _3
is { 16711935, +, 1 }_1 and { 16711935, +, { 16711935, +, 1 }_1 + 1}_1
isn't a valid evolution. Even though 4.7 computed:
(chrec_apply
(varying_loop = 1
)
(chrec = {16711935, +, {16711936, +, 1}_1}_1)
(x = 9)
(res = 167119395))
this is probably caused by the fix for PR55555.
I will experiment with relaxing it a bit tomorrow. But the question
remains(?), is
{ 16711935, +, { 16711935, +, 1 }_1 + 1}_1
a valid scalar evolution?