https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109213
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- In fact if you change main to: int main() { int p[10]; m(); if (!i()) { int *q = &p[0]; for (; g;) b(e == q); } } GCC 12 also does not do the inlining.