[LLVMdev] A question about LegalizeDAG.cpp and VAARG

Duncan Sands baldrick at free.fr
Sun Oct 12 07:34:53 PDT 2008


Hi,

> I tracked the problem down to this:
> In the beginning of SelectionDAGLegalize::ExpandOp there is a call to
> getTypeToTransformTo to get the type of the expanded parts.
> In the case of i64, it returns i32 (as expected).
> In the case of f64, it returns i64. The i64 causes the assert later in 
> LegalizeOP(Hi).

looks like there is no softfloat support for VAARG yet.

> Looking at getTypeToTransformTo it seems that it is doing what it is
> supposed to do, at least according to the comments.
> 
> My question is this: What is the correct way to fix this? I can call
> getTypeToTransformTo twice and get the correct result, but that seems
> wrong.
> Should the Hi and Lo values generated in VAARG should be expanded? If
> so, how?

Probably the best thing to do is to get it working when compiling with
-enable-legalize-types (since this infrastructure is much cleaner) and
persuade me to finish LegalizeTypes so that it can be turned on by
default! :)

Ciao,

Duncan.



More information about the llvm-dev mailing list