https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100511
--- Comment #5 from Jiangning Liu <jiangning.liu at amperecomputing dot com> --- If we change "c3 = a" to "c3 = x->b", GCC can optimize it without IPA. It seems VRP is working for this case. $ cat tt7.c #include <stdio.h> int a; typedef struct { int b; int count; } XX; int g; __attribute__((noinline)) void f(XX *x) { int c1 = 0; int c3 = x->b; if (x) c1 = x->count; for (int i=0; i<c1; i++) { if (c3 == x->count) { if (i > c3) { printf("Unreachable!"); break; } else g = 2; } else g = i; } } void main(void) { XX x; x.count = 100; a = 100; f(&x); }