https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81715
--- Comment #9 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Unless -fsanitize-user-after-scope (default for -fsanitize=address, but not for -fsanitize=kernel-address), GCC does reuse stack slots. Just try say: void foo (int *, int *, int *, int *, int *, int *); void bar () { { int a, b, c, d, e, f; foo (&a, &b, &c, &d, &e, &f); } { int g, b, c, d, e, f; foo (&g, &b, &c, &d, &e, &f); } { int h, b, c, d, e, f; foo (&h, &b, &c, &d, &e, &f); } { int i, b, c, d, e, f; foo (&i, &b, &c, &d, &e, &f); } { int a, b, c, d, e, f; foo (&a, &b, &c, &d, &e, &f); } { int a, b, c, d, e, f; foo (&a, &b, &c, &d, &e, &f); } { int a, b, c, d, e, f; foo (&a, &b, &c, &d, &e, &f); } { int a, b, c, d, e, f; foo (&a, &b, &c, &d, &e, &f); } } int baz (int *p) { return *p; }