http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55341
--- Comment #23 from Jakub Jelinek <jakub at gcc dot gnu.org> 2012-12-19 09:03:13 UTC --- Example testcase: void bar (char *, char *, char *, char *, char *, char *, char *, char *, char *, char *, char *, char *, char *, char *, char *, char *, char *, char *, char *, char *, char *, char *, char *, char *, char *, char *, char *, char *, char *, char *); int foo (void) { char c0, c1, c2, c3, c4, c5, c6, c7, c8, c9; char d0, d1, d2, d3, d4, d5, d6, d7, d8, d9; char e0, e1, e2, e3, e4, e5, e6, e7, e8, e9; bar (&c0, &c1, &c2, &c3, &c4, &c5, &c6, &c7, &c8, &c9, &d0, &d1, &d2, &d3, &d4, &d5, &d6, &d7, &d8, &d9, &e0, &e1, &e2, &e3, &e4, &e5, &e6, &e7, &e8, &e9); return 0; } on powerpc64-linux with -O2 -fsanitize=address, or on say x86_64-linux with -O2 -fsanitize=address -mstringop-strategy=libcall These want to clear 244 bytes of consecutive shadow memory upon return from the function.