https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68317
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|--- |6.0 --- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- (gdb) p debug_generic_expr (max) 4294443008(OVF) We have OVF in the IL before VRP: fn1 () { unsigned int ivtmp.8; int i; int _5; <bb 2>: <bb 3>: # ivtmp.8_8 = PHI <4294443008(OVF)(2), ivtmp.8_11(3)> _5 = (int) ivtmp.8_8; fn2 (_5); ivtmp.8_11 = ivtmp.8_8 - 524288; goto <bb 3>; introduced by IVOPTs which does fn1 () { + unsigned int ivtmp.8; int i; - int _4; int _5; <bb 2>: <bb 3>: - # i_1 = PHI <7(2), i_7(4)> - _4 = i_1 + 8184; - _5 = _4 * 524288; + # ivtmp.8_8 = PHI <4294443008(OVF)(2), ivtmp.8_11(4)> + _5 = (int) ivtmp.8_8; fn2 (_5); - i_7 = i_1 + -1; <bb 4>: + ivtmp.8_11 = ivtmp.8_8 - 524288; goto <bb 3>; } note that the infinite loop contains undefined overflow. IVOPTs should simply strip the overflow flag (using drop_tree_overflow).