> > 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 ;)
You wanna write one? ;-) Be my guest! Seriously, it's a sort of top-secret platform, and this compiler is the best I could ever get. > > 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 ;) Nope, it's perfectly clear but still I don't get your point. If you wanna be safe, shouldn't you just be CONSISTENT? Declare it as a float, and let the compiler decide what casts are appropriate. At this level, so long as I get what was meant to be passed (which is a *float*), I shouldn't really care what the compiler does. The point here is, I want a float constant (which is 32-bit wide) exactly as it was written in the classfile, so I can move it to a register (as a 32-bit chunk). If the compiler wants to promote it as an internal optimization, that is none of my business! If I get it as a double, I have to cast it back to a float. Apart from the waste of time, is that guaranteed to be non-destructive? later, Gerlando _______________________________________________ kaffe mailing list [EMAIL PROTECTED] http://kaffe.org/cgi-bin/mailman/listinfo/kaffe