struct CallLowering::ValueAssigner
Declaration
struct CallLowering::ValueAssigner { /* full declaration omitted */ };
Description
Argument handling is mostly uniform between the four places that make these decisions: function formal arguments, call instruction args, call instruction returns and function returns. However, once a decision has been made on where an argument should go, exactly what happens can vary slightly. This class abstracts the differences. ValueAssigner should not depend on any specific function state, and only determine the types and locations for arguments.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/CallLowering.h:158
Member Variables
- public llvm::CCAssignFn* AssignFn
- Assignment function to use for a general call.
- public llvm::CCAssignFn* AssignFnVarArg
- Assignment function to use for a variadic call. This is usually the same as AssignFn on most targets.
- public uint64_t StackOffset = 0
- Stack offset for next argument. At the end of argument evaluation, this is typically the total stack size.
- private const bool IsIncomingArgumentHandler
Method Overview
- public ValueAssigner(bool IsIncoming, llvm::CCAssignFn * AssignFn_, llvm::CCAssignFn * AssignFnVarArg_ = nullptr)
- private virtual void anchor()
- public virtual bool assignArg(unsigned int ValNo, llvm::EVT OrigVT, llvm::MVT ValVT, llvm::MVT LocVT, CCValAssign::LocInfo LocInfo, const llvm::CallLowering::ArgInfo & Info, ISD::ArgFlagsTy Flags, llvm::CCState & State)
- public llvm::CCAssignFn * getAssignFn(bool IsVarArg) const
- public bool isIncomingArgumentHandler() const
- public virtual ~ValueAssigner()
Methods
¶ValueAssigner(
bool IsIncoming,
llvm::CCAssignFn* AssignFn_,
llvm::CCAssignFn* AssignFnVarArg_ = nullptr)
ValueAssigner(
bool IsIncoming,
llvm::CCAssignFn* AssignFn_,
llvm::CCAssignFn* AssignFnVarArg_ = nullptr)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/CallLowering.h:159
Parameters
- bool IsIncoming
- llvm::CCAssignFn* AssignFn_
- llvm::CCAssignFn* AssignFnVarArg_ = nullptr
¶virtual void anchor()
virtual void anchor()
Declared at: llvm/include/llvm/CodeGen/GlobalISel/CallLowering.h:211
¶virtual bool assignArg(
unsigned int ValNo,
llvm::EVT OrigVT,
llvm::MVT ValVT,
llvm::MVT LocVT,
CCValAssign::LocInfo LocInfo,
const llvm::CallLowering::ArgInfo& Info,
ISD::ArgFlagsTy Flags,
llvm::CCState& State)
virtual bool assignArg(
unsigned int ValNo,
llvm::EVT OrigVT,
llvm::MVT ValVT,
llvm::MVT LocVT,
CCValAssign::LocInfo LocInfo,
const llvm::CallLowering::ArgInfo& Info,
ISD::ArgFlagsTy Flags,
llvm::CCState& State)
Description
Wrap call to (typically tablegenerated CCAssignFn). This may be overridden to track additional state information as arguments are assigned or apply target specific hacks around the legacy infrastructure.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/CallLowering.h:182
Parameters
- unsigned int ValNo
- llvm::EVT OrigVT
- llvm::MVT ValVT
- llvm::MVT LocVT
- CCValAssign::LocInfo LocInfo
- const llvm::CallLowering::ArgInfo& Info
- ISD::ArgFlagsTy Flags
- llvm::CCState& State
¶llvm::CCAssignFn* getAssignFn(bool IsVarArg) const
llvm::CCAssignFn* getAssignFn(bool IsVarArg) const
Description
Select the appropriate assignment function depending on whether this is a variadic call.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/CallLowering.h:205
Parameters
- bool IsVarArg
¶bool isIncomingArgumentHandler() const
bool isIncomingArgumentHandler() const
Description
Returns true if the handler is dealing with incoming arguments, i.e. those that move values from some physical location to vregs.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/CallLowering.h:174
¶virtual ~ValueAssigner()
virtual ~ValueAssigner()
Declared at: llvm/include/llvm/CodeGen/GlobalISel/CallLowering.h:170