https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110228
--- Comment #9 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
That is these exports:
2->3 (T) c.5_7 : [irange] int [1334323000, +INF] NONZERO 0x7fffffff
2->3 (T) _8 : [irange] long unsigned int [1334323000, 2147483647] NONZERO
0x7fffffff
2->3 (T) b.6_9 : [irange] int [1334323000, +INF] NONZERO 0x7fffffff
2->3 (T) _10 : [irange] long unsigned int [1334323000, 2147483647]
NONZERO 0x7fffffff
2->3 (T) _11 : [irange] long unsigned int [3481806647, 3481806649]
NONZERO 0xcf88273f
2->3 (T) _12 : [irange] long unsigned int [0, 2] NONZERO 0x3
seems wrong.
We originally had:
c.5_7 = c;
_8 = (long unsigned int) c.5_7;
b.6_9 = b;
_10 = (long unsigned int) b.6_9;
_11 = _8 + _10;
_12 = _11 + 18446744070227744969;
if (_12 <= 2)
so _11 export seems correct but _8 and _10 added together needs to be make _11.
Since it is unsigned, the whole range for both numbers can make _11's range;
that is we can't say anything about _8 or _10. Even if _11 is signed, I don't
see how _8 and _10 could be described at all ... since _8 could be 0 and _10
could be 3481806647 and the range that is exported for _8 does not even include
0.
Unless I am missing something obvious here.