https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78468
--- Comment #16 from Dominik Vogt <vogt at linux dot vnet.ibm.com> --- In emit-rtl.c:init_emit(), the alignment of the virtual_stack_dynamic pointer is hard coded to STACK_BOUNDARY: REGNO_POINTER_ALIGN (VIRTUAL_STACK_DYNAMIC_REGNUM) = STACK_BOUNDARY; The backend must make sure that this promise is kept. If that's what's happening the Sparc backend then needs a fix similar to this Aix patch: https://gcc.gnu.org/ml/gcc-patches/2016-11/msg01036.html (r242589) The idea (on AIX) is to round up the allocation size of the parameters area if the function does dynamic allocation (calls_alloca is true). This logic had to be replicated in some macros in aix.h. A solution for sparc probably looks similar.