[kaffe] HAVE_move_float_const

Dalibor Topic robilad at yahoo.com
Mon Jun 30 05:36:01 PDT 2003

Ciao Gerlando, konichiwa Kiyo,

--- Gerlando Falauto <iurly at writeme.com> wrote:
> Hi Kiyo,
> On Mon, 30 Jun 2003, Kiyo Inaba wrote:
> > Hi Gerlando,
> >
> > >void _slot_slot_fconst(SlotInfo*, SlotInfo*, double, ifunc, int)
> > >shouldn't there be a float instead?
> >
> > I am hesitate to reply for this, but if old story is still true, any
> > c function arguments are converted to double from float. See, pp.137
> > of "C a reference manual".
> Don't have that manual at hand, but I think that very much depends on the
> compiler and/or the runtime architecture. I can assure you my (old, ugly,
> buggy, horrible, non-standard, fp-less, whatever) compiler and

You could consider using a better compiler ;)

> architecture do not make such a conversion. If a parameter is a float,
> it's passed in one register (or memory slot), if it's a double, it takes
> two registers/slots.

This really depends on what version of the C the compiler implements. In K&R C
(i.e. pre-ANSI), float function parameters are always promoted to double. In
post-ANSI C (i.e. C89, C99) float function parameters are only promoted to
double, if the function declaration is written in K&R style. 

Confusing? Sure it is, so just use double and you're on the safe side ;)

See http://www.eskimo.com/~scs/C-faq/q11.3.html for a detailed explanation.

dalibor topic

Do you Yahoo!?
SBC Yahoo! DSL - Now only $29.95 per month!

More information about the kaffe mailing list