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

--- Comment #1 from Marc Glisse <glisse at gcc dot gnu.org> ---
Yes, it is a known issue, (E)VRP is too conservative.

pushing new range for x_2(D): [2147483647, +INF]  EQUIVALENCES: { x_2(D) } (1
elements)
Visiting stmt _4 = x_2(D) + 1;

Visiting statement:
_4 = x_2(D) + 1;
Match-and-simplified x_2(D) + 1 to -2147483648

Nope, there is an overflow, it should give __builtin_unreachable() instead of a
constant value, or to be more conservative produce an empty range whose meet
with [42, 42] would be just [42, 42].

Reply via email to