http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60073
--- Comment #8 from Eric Botcazou <ebotcazou at gcc dot gnu.org> --- > Note that powerpc64-gcc passes fp arguments corresponding to the ellipsis > part of variadic functions in both the parameter save area and fp registers, > contrary to the ABI which says they just go in the parameter save area if > the function has a prototype. I think this was in part to satisfy libffi, > where without variadic support you don't know whether a function call is > normal or variadic and thus the powerpc libffi support had to pull fp values > from fp registers. So we broke gcc (a little) to satisfy libffi.. Same issue on SPARC64: the FP arguments are normally passed in FP registers, except for the ellipsis part where they are passed in integer registers and GCC strictly conforms to the calling convention. This works for libffi calls because libffi passes them in both types of registers, but not for closures because libffi wrongly expects them in FP registers at the moment.