https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96146
--- Comment #2 from rsandifo at gcc dot gnu.org <rsandifo at gcc dot gnu.org>
---
FWIW, it doesn't look like this is specific to POLY_INT_CST.
A gimple reproducer shows a similar thing:
void __GIMPLE (ssa, startwith("vrp2"))
foo (volatile int *x)
{
int i;
__BB(2):
goto __BB3;
__BB(3):
i_1 = __PHI (__BB2: 0, __BB4: i_2);
*x = i_1;
i_2 = i_1 + 1;
if (i_2 != 2)
goto __BB4;
else
goto __BB5;
__BB(4):
goto __BB3;
__BB(5):
return;
}
It works with a bound of 3 rather than 2.