https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88936
--- Comment #13 from Richard Biener <rguenth at gcc dot gnu.org> --- Testcase using globals instead of parameters: static int *p; void bar(int cnt) { int i = 0; if (cnt == 0) { p = &i; bar (1); if (i != 1) __builtin_abort (); } else if (cnt == 1) *p = 1; } int main() { bar (0); return 0; }