[llvm-dev] Understanding TargetLowering::LowerCall (original) (raw)
Tim Northover via llvm-dev llvm-dev at lists.llvm.org
Mon Mar 22 02:57:15 PDT 2021
- Previous message: [llvm-dev] Understanding TargetLowering::LowerCall
- Next message: [llvm-dev] Understanding TargetLowering::LowerCall
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Mon, 22 Mar 2021 at 07:36, Zhang via llvm-dev <llvm-dev at lists.llvm.org> wrote:
For CallSites that contains a GlobalValue as one of the arguments, where exactly does the lowering from GlobalAddress to iPTR took place?.
It's generally no different for a callsite than any other GlobalValue user. The generic SelectionDAGBuilder code will create a GlobalAddress SDNode with iPTR type because the type of a GlobalValue is actually a pointer to the type of the underlying object.
The call lowering code will get this iPTR node, and may well decide to pass it to the callee in a register.
As for the GlobalAddress node, that goes through normal lowering to a
target-specific instruction sequence to materialize the address of the
global object. Often this is via custom C++ in LegalizeDAG (i.e.
setOperationAction(ISD::GlobalValue, MVT::i64, Custom)
).
Cheers.
Tim.
- Previous message: [llvm-dev] Understanding TargetLowering::LowerCall
- Next message: [llvm-dev] Understanding TargetLowering::LowerCall
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]