https://gcc.gnu.org/bugzilla/show_bug.cgi?id=128517
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |rdapp at gcc dot gnu.org
Keywords| |needs-bisection
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
OK, so GCC 16 has
exit condition [d_91(D) + 4294967294, + , 4294967290] != 0
bounds on difference of bases: -4294967295 ... 0
result:
under assumptions (d_91(D) & 1) == 0
# of iterations ((d_91(D) + 4294967294) /[ex] 2) * 715827883 & 2147483647,
bounded by 2147483647
...
exit condition [d_91(D) + 4294967295, + , 4294967290] != 0
bounds on difference of bases: -4294967293 ... 0
result:
under assumptions (d_91(D) + 4294967295 & 1) == 0
# of iterations ((d_91(D) + 4294967295) /[ex] 2) * 715827883 & 2147483647,
bounded by 2147483647
but on trunk we are able to have the same assumption:
exit condition [d_91(D) + 4294967294, + , 4294967290] != 0
bounds on difference of bases: -4294967295 ... 0
result:
under assumptions (d_91(D) & 1) == 0
# of iterations ((d_91(D) + 4294967294) /[ex] 2) * 715827883 & 2147483647,
bounded by 2147483647
...
exit condition [d_91(D) + 4294967295, + , 4294967290] != 0
bounds on difference of bases: -4294967293 ... 0
result:
under assumptions (d_91(D) & 1) != 0
# of iterations ((d_91(D) + 4294967295) /[ex] 2) * 715827883 & 2147483647,
bounded by 2147483647
it would be interesting what changed this. ISTR we also wanted to get
away from using LOOP_C_FINITE - Robin? The simplest fix might be to
simply not set LOOP_C_FINITE for early-break loops.