https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100955
Xi Ruoyao <xry111 at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever confirmed|0 |1 Last reconfirmed| |2023-03-23 Version|12.0 |13.0 --- Comment #1 from Xi Ruoyao <xry111 at gcc dot gnu.org> --- This is happening on many ports (see https://godbolt.org/z/n1YqWq9c9) and it seems not trivial to fix. stdarg pass already checks if the va_list escapes, and if not we should avoid saving the register onto the stack if possible. But currently there seems no way to take this opportunity in target code (TARGET_SETUP_INCOMING_VARARGS mandates a store on stack and disallows to use registers instead of stack).