LLVM API Documentation
#include <CallingConvLower.h>
Protected Attributes | |
ParmContext | CallOrPrologue |
CCState - This class holds information needed while lowering arguments and return values. It captures which registers are already assigned and which stack slots are used. It provides accessors to allocate these values.
Definition at line 154 of file CallingConvLower.h.
CCState::CCState | ( | CallingConv::ID | CC, |
bool | isVarArg, | ||
MachineFunction & | MF, | ||
const TargetMachine & | TM, | ||
SmallVectorImpl< CCValAssign > & | locs, | ||
LLVMContext & | C | ||
) |
Definition at line 26 of file CallingConvLower.cpp.
References clearByValRegsInfo(), llvm::MCRegisterInfo::getNumRegs(), and llvm::SmallVectorImpl< T >::resize().
Definition at line 377 of file CallingConvLower.h.
References llvm::SmallVectorTemplateBase< T, isPodLike >::push_back().
|
inline |
Definition at line 225 of file CallingConvLower.h.
Referenced by allocateStack(), AnalyzeArguments(), CC_Hexagon(), CC_Hexagon32(), CC_Hexagon64(), CC_Hexagon_VarArg(), CC_MipsO32(), CC_Sparc64_Full(), CC_Sparc64_Half(), CC_Sparc_Assign_f64(), CC_Sparc_Assign_SRet(), llvm::f64AssignAAPCS(), llvm::f64AssignAPCS(), llvm::f64RetAssign(), HandleByVal(), RetCC_Hexagon32(), and RetCC_Hexagon64().
AllocateReg - Attempt to allocate one register. If it is not available, return zero. Otherwise, return the register, marking it and any aliases as allocated.
Definition at line 291 of file CallingConvLower.h.
References isAllocated().
Referenced by AnalyzeArguments(), CC_AArch64NoMoreRegs(), CC_Hexagon32(), CC_Hexagon64(), CC_MipsO32(), llvm::CC_PPC32_SVR4_Custom_AlignArgRegs(), llvm::CC_PPC32_SVR4_Custom_AlignFPArgRegs(), CC_Sparc_Assign_f64(), llvm::f64AssignAAPCS(), llvm::f64AssignAPCS(), llvm::f64RetAssign(), RetCC_Hexagon32(), and RetCC_Hexagon64().
Version of AllocateReg with extra register to be shadowed.
Definition at line 298 of file CallingConvLower.h.
References isAllocated().
AllocateReg - Attempt to allocate one of the specified registers. If none are available, return zero. Otherwise, return the first one available, marking it and any aliases as allocated.
Definition at line 308 of file CallingConvLower.h.
References getFirstUnallocated().
|
inline |
Version of AllocateReg with list of registers to be shadowed.
Definition at line 320 of file CallingConvLower.h.
References getFirstUnallocated().
AllocateStack - Allocate a chunk of stack space with the specified size and alignment.
Definition at line 335 of file CallingConvLower.h.
References llvm::MachineFrameInfo::ensureMaxAlignment(), and llvm::MachineFunction::getFrameInfo().
Referenced by allocateStack(), AllocateStack(), CC_Hexagon(), CC_Hexagon32(), CC_Hexagon64(), CC_Hexagon_VarArg(), CC_MipsO32(), CC_Sparc64_Full(), CC_Sparc64_Half(), CC_Sparc_Assign_f64(), llvm::f64AssignAAPCS(), llvm::f64AssignAPCS(), HandleByVal(), llvm::MipsTargetLowering::MipsCC::MipsCC(), RetCC_Hexagon32(), and RetCC_Hexagon64().
Version of AllocateStack with extra register to be shadowed.
Definition at line 345 of file CallingConvLower.h.
References AllocateStack().
void CCState::AnalyzeCallOperands | ( | const SmallVectorImpl< ISD::OutputArg > & | Outs, |
CCAssignFn | Fn | ||
) |
AnalyzeCallOperands - Analyze the outgoing arguments to a call, incorporating info about the passed values into this state.
Definition at line 118 of file CallingConvLower.cpp.
References llvm::dbgs(), llvm::CCValAssign::Full, llvm::EVT::getEVTString(), llvm_unreachable, and llvm::SmallVectorTemplateCommon< T, typename >::size().
Referenced by AnalyzeVarArgs(), llvm::AArch64TargetLowering::IsEligibleForTailCallOptimization(), llvm::AArch64TargetLowering::LowerCall(), llvm::SystemZTargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_32(), and llvm::SparcTargetLowering::LowerCall_64().
void CCState::AnalyzeCallOperands | ( | SmallVectorImpl< MVT > & | ArgVTs, |
SmallVectorImpl< ISD::ArgFlagsTy > & | Flags, | ||
CCAssignFn | Fn | ||
) |
AnalyzeCallOperands - Same as above except it takes vectors of types and argument flags.
Definition at line 136 of file CallingConvLower.cpp.
References llvm::dbgs(), llvm::CCValAssign::Full, llvm::EVT::getEVTString(), llvm_unreachable, and llvm::SmallVectorTemplateCommon< T >::size().
void CCState::AnalyzeCallResult | ( | const SmallVectorImpl< ISD::InputArg > & | Ins, |
CCAssignFn | Fn | ||
) |
AnalyzeCallResult - Analyze the return values of a call, incorporating info about the passed values into this state.
Definition at line 155 of file CallingConvLower.cpp.
References llvm::dbgs(), llvm::CCValAssign::Full, llvm::EVT::getEVTString(), llvm_unreachable, and llvm::SmallVectorTemplateCommon< T, typename >::size().
Referenced by AnalyzeRetResult(), llvm::AArch64TargetLowering::IsEligibleForTailCallOptimization(), llvm::SystemZTargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_32(), llvm::SparcTargetLowering::LowerCall_64(), llvm::HexagonTargetLowering::LowerCallResult(), and llvm::AArch64TargetLowering::LowerCallResult().
void CCState::AnalyzeCallResult | ( | MVT | VT, |
CCAssignFn | Fn | ||
) |
AnalyzeCallResult - Same as above except it's specialized for calls which produce a single value.
Definition at line 172 of file CallingConvLower.cpp.
References llvm::dbgs(), llvm::CCValAssign::Full, llvm::EVT::getEVTString(), and llvm_unreachable.
void CCState::AnalyzeFormalArguments | ( | const SmallVectorImpl< ISD::InputArg > & | Ins, |
CCAssignFn | Fn | ||
) |
AnalyzeFormalArguments - Analyze an array of argument values, incorporating info about the formals into this state.
Definition at line 67 of file CallingConvLower.cpp.
References llvm::dbgs(), llvm::CCValAssign::Full, llvm::EVT::getEVTString(), llvm_unreachable, and llvm::SmallVectorTemplateCommon< T, typename >::size().
Referenced by llvm::AMDGPUTargetLowering::AnalyzeFormalArguments(), AnalyzeVarArgs(), llvm::HexagonTargetLowering::LowerFormalArguments(), llvm::AArch64TargetLowering::LowerFormalArguments(), llvm::SystemZTargetLowering::LowerFormalArguments(), llvm::SparcTargetLowering::LowerFormalArguments_32(), and llvm::SparcTargetLowering::LowerFormalArguments_64().
void CCState::AnalyzeReturn | ( | const SmallVectorImpl< ISD::OutputArg > & | Outs, |
CCAssignFn | Fn | ||
) |
AnalyzeReturn - Analyze the returned values of a return, incorporating info about the result values into this state.
Definition at line 100 of file CallingConvLower.cpp.
References llvm::dbgs(), llvm::CCValAssign::Full, llvm::EVT::getEVTString(), llvm_unreachable, and llvm::SmallVectorTemplateCommon< T, typename >::size().
Referenced by AnalyzeRetResult(), llvm::HexagonTargetLowering::LowerReturn(), llvm::AArch64TargetLowering::LowerReturn(), llvm::SystemZTargetLowering::LowerReturn(), llvm::SparcTargetLowering::LowerReturn_32(), and llvm::SparcTargetLowering::LowerReturn_64().
bool CCState::CheckReturn | ( | const SmallVectorImpl< ISD::OutputArg > & | Outs, |
CCAssignFn | Fn | ||
) |
CheckReturn - Analyze the return values of a function, returning true if the return can be performed without sret-demotion, and false otherwise.
Definition at line 86 of file CallingConvLower.cpp.
References llvm::CCValAssign::Full, and llvm::SmallVectorTemplateCommon< T, typename >::size().
|
inline |
Definition at line 392 of file CallingConvLower.h.
References llvm::SmallVectorImpl< T >::clear().
Referenced by CCState().
|
inline |
Definition at line 232 of file CallingConvLower.h.
|
inline |
Definition at line 397 of file CallingConvLower.h.
References CallOrPrologue.
|
inline |
Definition at line 229 of file CallingConvLower.h.
|
inline |
getFirstUnallocated - Return the first unallocated register in the set, or NumRegs if they are all allocated.
Definition at line 281 of file CallingConvLower.h.
References isAllocated().
Referenced by AllocateReg(), CC_MipsO32(), llvm::CC_PPC32_SVR4_Custom_AlignArgRegs(), llvm::CC_PPC32_SVR4_Custom_AlignFPArgRegs(), and llvm::AArch64TargetLowering::SaveVarArgRegisters().
|
inline |
Definition at line 366 of file CallingConvLower.h.
References info, and llvm::SmallVectorTemplateCommon< T, typename >::size().
|
inline |
Definition at line 359 of file CallingConvLower.h.
References llvm::SmallVectorTemplateCommon< T, typename >::size().
|
inline |
Definition at line 362 of file CallingConvLower.h.
|
inline |
Definition at line 231 of file CallingConvLower.h.
|
inline |
Definition at line 235 of file CallingConvLower.h.
Referenced by llvm::AArch64TargetLowering::SaveVarArgRegisters().
|
inline |
Definition at line 230 of file CallingConvLower.h.
void CCState::HandleByVal | ( | unsigned | ValNo, |
MVT | ValVT, | ||
MVT | LocVT, | ||
CCValAssign::LocInfo | LocInfo, | ||
int | MinSize, | ||
int | MinAlign, | ||
ISD::ArgFlagsTy | ArgFlags | ||
) |
Definition at line 42 of file CallingConvLower.cpp.
References addLoc(), Align(), AllocateStack(), llvm::MachineFrameInfo::ensureMaxAlignment(), llvm::ISD::ArgFlagsTy::getByValAlign(), llvm::ISD::ArgFlagsTy::getByValSize(), llvm::MachineFunction::getFrameInfo(), llvm::CCValAssign::getMem(), llvm::TargetMachine::getTargetLowering(), llvm::TargetLowering::HandleByVal(), and llvm::MinAlign().
Referenced by AnalyzeArguments().
isAllocated - Return true if the specified register (or an alias) is allocated.
Definition at line 239 of file CallingConvLower.h.
Referenced by AllocateReg(), and getFirstUnallocated().
|
inline |
Definition at line 233 of file CallingConvLower.h.
Referenced by AnalyzeArguments(), and CC_MipsO32().
|
inline |
Definition at line 384 of file CallingConvLower.h.
References llvm::SmallVectorTemplateCommon< T, typename >::size().
|
protected |
Definition at line 218 of file CallingConvLower.h.
Referenced by getCallOrPrologue().