LLVM API Documentation

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Public Member Functions | Protected Attributes | List of all members
llvm::CCState Class Reference

#include <CallingConvLower.h>

Collaboration diagram for llvm::CCState:
Collaboration graph
[legend]

Public Member Functions

 CCState (CallingConv::ID CC, bool isVarArg, MachineFunction &MF, const TargetMachine &TM, SmallVectorImpl< CCValAssign > &locs, LLVMContext &C)
 
void addLoc (const CCValAssign &V)
 
LLVMContextgetContext () const
 
const TargetMachinegetTarget () const
 
MachineFunctiongetMachineFunction () const
 
CallingConv::ID getCallingConv () const
 
bool isVarArg () const
 
unsigned getNextStackOffset () const
 
bool isAllocated (unsigned Reg) const
 
void AnalyzeFormalArguments (const SmallVectorImpl< ISD::InputArg > &Ins, CCAssignFn Fn)
 
void AnalyzeReturn (const SmallVectorImpl< ISD::OutputArg > &Outs, CCAssignFn Fn)
 
bool CheckReturn (const SmallVectorImpl< ISD::OutputArg > &ArgsFlags, CCAssignFn Fn)
 
void AnalyzeCallOperands (const SmallVectorImpl< ISD::OutputArg > &Outs, CCAssignFn Fn)
 
void AnalyzeCallOperands (SmallVectorImpl< MVT > &ArgVTs, SmallVectorImpl< ISD::ArgFlagsTy > &Flags, CCAssignFn Fn)
 
void AnalyzeCallResult (const SmallVectorImpl< ISD::InputArg > &Ins, CCAssignFn Fn)
 
void AnalyzeCallResult (MVT VT, CCAssignFn Fn)
 
unsigned getFirstUnallocated (const uint16_t *Regs, unsigned NumRegs) const
 
unsigned AllocateReg (unsigned Reg)
 
unsigned AllocateReg (unsigned Reg, unsigned ShadowReg)
 Version of AllocateReg with extra register to be shadowed. More...
 
unsigned AllocateReg (const uint16_t *Regs, unsigned NumRegs)
 
unsigned AllocateReg (const uint16_t *Regs, const uint16_t *ShadowRegs, unsigned NumRegs)
 Version of AllocateReg with list of registers to be shadowed. More...
 
unsigned AllocateStack (unsigned Size, unsigned Align)
 
unsigned AllocateStack (unsigned Size, unsigned Align, unsigned ShadowReg)
 Version of AllocateStack with extra register to be shadowed. More...
 
void HandleByVal (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, int MinSize, int MinAlign, ISD::ArgFlagsTy ArgFlags)
 
unsigned getInRegsParamsCount () const
 
unsigned getInRegsParamsProceed () const
 
void getInRegsParamInfo (unsigned InRegsParamRecordIndex, unsigned &BeginReg, unsigned &EndReg) const
 
void addInRegsParamInfo (unsigned RegBegin, unsigned RegEnd)
 
bool nextInRegsParam ()
 
void clearByValRegsInfo ()
 
ParmContext getCallOrPrologue () const
 

Protected Attributes

ParmContext CallOrPrologue
 

Detailed Description

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.

Constructor & Destructor Documentation

CCState::CCState ( CallingConv::ID  CC,
bool  isVarArg,
MachineFunction MF,
const TargetMachine TM,
SmallVectorImpl< CCValAssign > &  locs,
LLVMContext C 
)

Member Function Documentation

void llvm::CCState::addInRegsParamInfo ( unsigned  RegBegin,
unsigned  RegEnd 
)
inline
void llvm::CCState::addLoc ( const CCValAssign V)
inline
unsigned llvm::CCState::AllocateReg ( unsigned  Reg)
inline

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().

unsigned llvm::CCState::AllocateReg ( unsigned  Reg,
unsigned  ShadowReg 
)
inline

Version of AllocateReg with extra register to be shadowed.

Definition at line 298 of file CallingConvLower.h.

References isAllocated().

unsigned llvm::CCState::AllocateReg ( const uint16_t *  Regs,
unsigned  NumRegs 
)
inline

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().

unsigned llvm::CCState::AllocateReg ( const uint16_t *  Regs,
const uint16_t *  ShadowRegs,
unsigned  NumRegs 
)
inline

Version of AllocateReg with list of registers to be shadowed.

Definition at line 320 of file CallingConvLower.h.

References getFirstUnallocated().

unsigned llvm::CCState::AllocateStack ( unsigned  Size,
unsigned  Align 
)
inline
unsigned llvm::CCState::AllocateStack ( unsigned  Size,
unsigned  Align,
unsigned  ShadowReg 
)
inline

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 
)
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 
)
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 
)
void CCState::AnalyzeReturn ( const SmallVectorImpl< ISD::OutputArg > &  Outs,
CCAssignFn  Fn 
)
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().

void llvm::CCState::clearByValRegsInfo ( )
inline

Definition at line 392 of file CallingConvLower.h.

References llvm::SmallVectorImpl< T >::clear().

Referenced by CCState().

CallingConv::ID llvm::CCState::getCallingConv ( ) const
inline

Definition at line 232 of file CallingConvLower.h.

ParmContext llvm::CCState::getCallOrPrologue ( ) const
inline

Definition at line 397 of file CallingConvLower.h.

References CallOrPrologue.

LLVMContext& llvm::CCState::getContext ( ) const
inline

Definition at line 229 of file CallingConvLower.h.

unsigned llvm::CCState::getFirstUnallocated ( const uint16_t *  Regs,
unsigned  NumRegs 
) const
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().

void llvm::CCState::getInRegsParamInfo ( unsigned  InRegsParamRecordIndex,
unsigned BeginReg,
unsigned EndReg 
) const
inline
unsigned llvm::CCState::getInRegsParamsCount ( ) const
inline
unsigned llvm::CCState::getInRegsParamsProceed ( ) const
inline

Definition at line 362 of file CallingConvLower.h.

MachineFunction& llvm::CCState::getMachineFunction ( ) const
inline

Definition at line 231 of file CallingConvLower.h.

unsigned llvm::CCState::getNextStackOffset ( ) const
inline
const TargetMachine& llvm::CCState::getTarget ( ) const
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 
)
bool llvm::CCState::isAllocated ( unsigned  Reg) const
inline

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().

bool llvm::CCState::isVarArg ( ) const
inline

Definition at line 233 of file CallingConvLower.h.

Referenced by AnalyzeArguments(), and CC_MipsO32().

bool llvm::CCState::nextInRegsParam ( )
inline

Member Data Documentation

ParmContext llvm::CCState::CallOrPrologue
protected

Definition at line 218 of file CallingConvLower.h.

Referenced by getCallOrPrologue().


The documentation for this class was generated from the following files: