[LLVMdev] 64bit MRV problem: { float, float, float} -> { double, float }

Duncan Sands baldrick at free.fr
Mon Jan 25 03:13:24 PST 2010


Hi Ralf,

> The problem is, that I require the function to preserve the number and
> type of its arguments, but some optimization on 64bit breaks up some of
> the struct parameters (I suppose only those that are just loaded and/or
> stored somewhere) and inserts a double and a float.

this is almost certainly *not* an optimization - the llvm-g++ front-end
generates this because the x86-64 ABI requires it.  There's not much that
can be done about it if you want your functions to be callable from code
compiled with a different compiler, such as gcc.

Ciao,

Duncan.



More information about the llvm-dev mailing list