https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88301
--- Comment #3 from Marc Glisse ---
(In reply to Marc Glisse from comment #2)
> Not sure where this [0, 0] range is coming from...
Well, I guess it is EVRP trying to encode __builtin_unreachable for _3!=0 in
the range information of _3, but not
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88301
--- Comment #2 from Marc Glisse ---
In the EVRP dump, I see:
_2: unsigned int [0, 1]
_3: _Bool [0, 1]
[...]
_1 = REALPART_EXPR <_6>;
# RANGE [0, 1] NONZERO 1
_2 = IMAGPART_EXPR <_6>;
# RANGE [0, 0] NONZERO 0
_3 = (_BoolD.1896) _2;
N
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88301
--- Comment #1 from Andrew Pinski ---
Unsigned addition never overflows. It wraps.