https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71031
--- Comment #4 from Marek Polacek <mpolacek at gcc dot gnu.org> --- Here, we have [1, od_5] + UINT_MAX on type unsigned, which wraps, so we try to turn this into an anti-range [*]. But that is not possible, the anti-range doesn't exist (is empty) so we should drop to varying, I think. [*] Same as e.g. if we have unsigned i with range [2,4], then for i - 4 we have an anti-range ~[1, UINT_MAX - 2].