LLVM 17.0.0git
|
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. More...
#include "llvm/CodeGen/GlobalISel/CallLowering.h"
Public Member Functions | |
ValueAssigner (bool IsIncoming, CCAssignFn *AssignFn_, CCAssignFn *AssignFnVarArg_=nullptr) | |
virtual | ~ValueAssigner ()=default |
bool | isIncomingArgumentHandler () const |
Returns true if the handler is dealing with incoming arguments, i.e. | |
virtual bool | assignArg (unsigned ValNo, EVT OrigVT, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, const ArgInfo &Info, ISD::ArgFlagsTy Flags, CCState &State) |
Wrap call to (typically tablegenerated CCAssignFn). | |
CCAssignFn * | getAssignFn (bool IsVarArg) const |
Select the appropriate assignment function depending on whether this is a variadic call. | |
Public Attributes | |
CCAssignFn * | AssignFn |
Assignment function to use for a general call. | |
CCAssignFn * | AssignFnVarArg |
Assignment function to use for a variadic call. | |
uint64_t | StackSize = 0 |
The size of the currently allocated portion of the stack. | |
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.
Definition at line 161 of file CallLowering.h.
|
inline |
Definition at line 162 of file CallLowering.h.
References AssignFn, and AssignFnVarArg.
|
virtualdefault |
|
inlinevirtual |
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.
Definition at line 185 of file CallLowering.h.
References Flags, getAssignFn(), llvm::CCState::getStackSize(), llvm::CCState::isVarArg(), and StackSize.
Referenced by llvm::CallLowering::determineAssignments().
|
inline |
Select the appropriate assignment function depending on whether this is a variadic call.
Definition at line 207 of file CallLowering.h.
References AssignFn, and AssignFnVarArg.
Referenced by assignArg().
|
inline |
Returns true if the handler is dealing with incoming arguments, i.e.
those that move values from some physical location to vregs.
Definition at line 177 of file CallLowering.h.
CCAssignFn* llvm::CallLowering::ValueAssigner::AssignFn |
Assignment function to use for a general call.
Definition at line 196 of file CallLowering.h.
Referenced by getAssignFn(), and ValueAssigner().
CCAssignFn* llvm::CallLowering::ValueAssigner::AssignFnVarArg |
Assignment function to use for a variadic call.
This is usually the same as AssignFn on most targets.
Definition at line 200 of file CallLowering.h.
Referenced by getAssignFn(), and ValueAssigner().
uint64_t llvm::CallLowering::ValueAssigner::StackSize = 0 |
The size of the currently allocated portion of the stack.
Definition at line 203 of file CallLowering.h.
Referenced by assignArg(), llvm::ARMCallLowering::lowerCall(), llvm::M68kCallLowering::lowerCall(), and llvm::AMDGPUCallLowering::lowerFormalArguments().