https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83368
Eric Botcazou <ebotcazou at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|REOPENED |RESOLVED Resolution|--- |WONTFIX --- Comment #4 from Eric Botcazou <ebotcazou at gcc dot gnu.org> --- > Therefore, I am of the view that this should be reopened as a bug in GCC. > GCC already spills local variables live across a setjmp to the stack (as it > can't use input or local registers due to the above note); it should be > doing the same for %l7. No, setjmp/longjmp must preserve the call-saved registers and it does in almost all cases, both on Linux and Solaris. But you're clobbering the stack pointer after calling setjmp and this cannot reasonably work on SPARC because of the way setjmp/longjmp is implemented for this architecture. Let's declare this as WONTFIX; you can use __builtin_setjmp/longjmp instead.