On Dec 12, 2006, at 11:42 AM, David Edelsohn wrote:
Joslwah writes:
Joslwah> Looking at the Linux 32bit PowerPC ABI spec, it appears to
me that
Joslwah> floats in excess of those that are passed in registers are
supposed to
Joslwah> be promoted to doubles and passed on the stack. Examing
the resulting
Joslwah> stack from a gcc generated C call it appears they are
passed as
Joslwah> floats.
Joslwah> Can someone confirm/refute this, or else point me to an
ABI that says
Joslwah> that they should be passed as floats.
I have not been able to find any motivation for promoting floats
passed ont the stack. Does this provide some form of compatibility
with
SPARC?
It may have been intended to allow the callee to be a K&R-style or
varargs function, where all float args get promoted to double.
In particular, printf was often called without being declared in K&R-
era code. This is one way to make that code work in a C90 environment.