https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68910
--- Comment #14 from Sebastian Huber <sebastian.hu...@embedded-brains.de> --- (In reply to Eric Botcazou from comment #13) > Thanks for reporting the problem. Thanks for the quick fix. The stack frame is still larger than necessary at least on the -mcpu=cypress and -mcpu=leon3 targets. However, the range is similar to GCC 4.3.2, so this looks like an old problem. sparc-rtems4.12-gcc -S -O2 sha512c.i -mcpu=leon3 .file "sha512c.i" .section ".text" .align 4 .global SHA512_Transform .type SHA512_Transform, #function .proc 020 SHA512_Transform: save %sp, -2760, %sp mov 128, %o2 mov %i1, %o1 add %fp, -640, %o0 call memcpy, 0 st %i0, [%fp+68] add %fp, -640, %g4 add %fp, -128, %o4 ld [%g4+116], %i1 .LL8: [...] bne .LL7 add %fp, -704, %o3 jmp %i7+8 restore .size SHA512_Transform, .-SHA512_Transform .ident "GCC: (GNU) 6.0.0 20151221 (experimental) Your reduced test case gcc.target/sparc/20151219-1.c doesn't show this large stack frame.