https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97006
--- Comment #1 from Tom de Vries <vries at gcc dot gnu.org> --- Minimal example: ... void __attribute__ ((noclone, noinline)) checkv (char *dst, const char *fmt, __builtin_va_list va) { int n = __builtin_vsprintf (dst, fmt, va); if (n != 3) __builtin_abort (); } void __attribute__ ((noclone, noinline)) check (char *dst, const char *fmt, ...) { __builtin_va_list va; __builtin_va_start (va, fmt); checkv (dst, fmt, va); __builtin_va_end (va); } char buffer[4100]; int main (void) { int i = 0xdeadbeef; check (buffer, "%hhi", i); return 0; } ...