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.

Reply via email to