> __builtin_apply* and __builtin_return accesses the floating point registers > on SPARC even when compiling with -msoft-float.
Ouch. The fix is OK for all active branches but... > 2015-06-26 Daniel Cederman <ceder...@gaisler.com> > > * config/sparc/sparc.c (sparc_function_value_regno_p): Floating > point registers cannot be used when compiling for a target > without FPU. > * config/sparc/sparc.md: A function cannot return a value in a > floating point register when compiled without floating point > support. ChangeLog must just describe the what, nothing more. If the rationale is not obvious, then a comment must be added _in the code_ itself. * config/sparc/sparc.c (sparc_function_value_regno_p): Do not return true on %f0 for a target without FPU. * config/sparc/sparc.md (untyped_call): Do not save %f0 for a target without FPU. (untyped_return): Do not load %f0 for a target without FPU. > + > + if ( TARGET_FPU ) > + { > + rtx valreg2 = gen_rtx_REG (TARGET_ARCH64 ? TFmode : DFmode, 32); > + emit_move_insn (valreg2, > + adjust_address (result, TARGET_ARCH64 ? TFmode : > DFmode, 8)); + emit_use (valreg2); > + } Superfluous spaces around TARGET_FPU here. -- Eric Botcazou