[LLVMdev] [INCOMPLETE] [GC] Support wrapping vararg functions in statepoint

Ramkumar Ramachandra artagnon at gmail.com
Tue Jan 20 11:28:19 PST 2015


Philip Reames wrote:
> I think I'm missing something here.  What leads you to believe that
> visitCall doesn't handle vararg functions?
>
> Also, I see calls in both visitInvoke and visitCall.  I would assume these
> are the primary entry points...

I'm probably more confused about this than you are.

The callchain is approximately SelectionDAGBuilder::LowerCallTo ->
SelectionDAGBuilder::lowerInvokable -> TargetLowering::LowerCallTo ->
X86TargetLowering::LowerCall. Now, the isVarArg information needs to
be conveyed to LowerCall, and that happens via CLI.IsVarArg, which
TargetLowering::LowerCallTo accepts as a parameter.
SelectionDAGBuilder::LowerCallTo isn't passed that information, and
doesn't compute it to send to lowerInvokable (which builds the CLI for
TargetLowering::LowerCallTo).

How could SelectionDAGBuilder::LowerCallTo possibly handle vararg?



More information about the llvm-dev mailing list