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.

Reply via email to