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).