https://gcc.gnu.org/bugzilla/show_bug.cgi?id=128517
--- Comment #3 from Tamar Christina <tnfchris at gcc dot gnu.org> --- (In reply to Richard Biener from comment #2) > 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. Bisect says r17-2951-g1c71996e6e0
