[kaffe] HAVE_move_float_const

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


Ciao Gerlando, konichiwa Kiyo,

--- Gerlando Falauto <iurly@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.

cheers,
dalibor topic

__________________________________
Do you Yahoo!?
SBC Yahoo! DSL - Now only $29.95 per month!
http://sbc.yahoo.com