https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103986
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Last reconfirmed| |2022-01-12 Status|UNCONFIRMED |NEW Ever confirmed|0 |1 --- Comment #7 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Those come from dom3. Here is a testcase which runs in finite time to test this (plus it is not a C testcase also): #define assume(Expression) do { if((Expression)) (void)0; else __builtin_unreachable(); } while(0) struct GridZYXIterator { short x; short y; short z; }; static inline void f(struct GridZYXIterator *t) { t->x++; if(t->x == 3) { t->x = 0; t->y++; if(t->y == 3) { t->y = 0; t->z++; } } } static int t = 0; static void g() __attribute__((noipa)); static void g(){t++; if (t > 27) __builtin_abort();}; int main() { struct GridZYXIterator it = {0,0,0}; while(it.z != 3) { assume(it.y < 3 && it.z < 3); g(); f(&it); } } Confirmed.