https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110941

--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
GCC 13:
Global Exported: _6 = [irange] unsigned int [0, 24] NONZERO 0x1e

trunk:
Global Exported: _6 = [irange] unsigned int [0, 24][+INF, +INF] MASK 0x1c VALUE
0x0


And then:
Folding predicate _6 > 24 to 0

does not happen.
But what is interesting is with
https://gcc.gnu.org/pipermail/gcc-patches/2023-September/629128.html ,
We get:
```
Simplified relational if (_6 > 24)
 into if (_6 == 4294967295)

Folded into: if (_6 == 4294967295)
```

And then during cfgcleanup the match pattern:
/* X == C (or X & Z == Y | C) is impossible if ~nonzero(X) & C != 0.  */
Hits which is totally funny because that means the range and nonzero
information are out of sync ...

Reply via email to