https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123300
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|--- |14.4
CC| |pinskia at gcc dot gnu.org
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
loop_done removes the loop exit because the ranges say it is always true:
```
# RANGE [irange] int [0, 2147483645] MASK 0x7fffffff VALUE 0x0
i_6 = i_16 + -1;
if (i_6 != -1)
goto <bb 8>; [89.00%]
else
goto <bb 9>; [11.00%]
```
Which IVOPTs changes from:
```
# RANGE [irange] int [0, 2147483645] MASK 0x7fffffff VALUE 0x0
i_6 = i_16 + -1;
if (i_16 > 0)
```
Maybe it is the range which is wrong in the first place.