https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69526
--- Comment #9 from Richard Biener <rguenth at gcc dot gnu.org> --- Note that VRP figures out that _15 = n_18 + 4294967295; Found new range for _15: [0, 4294967294] (so no underflow) _2 = (sizetype) _15; Found new range for _2: [0, 4294967294] _1 = _2 + 1; Found new range for _1: [1, 4294967295] but VRP doesn't have any transform that would take advantage of this (like computing _2 + 1 in unsigned int and only then casting to sizetype).