13#ifndef LLVM_LIB_TARGET_POWERPC_PPCMACHINEFUNCTIONINFO_H
14#define LLVM_LIB_TARGET_POWERPC_PPCMACHINEFUNCTIONINFO_H
37 virtual void anchor();
42 int FramePointerSaveIndex = 0;
46 int ReturnAddrSaveIndex = 0;
49 int BasePointerSaveIndex = 0;
52 int PICBasePointerSaveIndex = 0;
55 int ROPProtectionHashSaveIndex = 0;
60 bool MustSaveLR =
false;
66 bool MustSaveTOC =
false;
71 bool ShrinkWrapDisabled =
false;
74 bool HasSpills =
false;
78 bool HasNonRISpills =
false;
81 bool SpillsCR =
false;
85 bool DisableNonVolatileCR =
false;
91 bool LRStoreRequired =
false;
94 bool UsesTOCBasePtr =
false;
98 unsigned MinReservedArea = 0;
103 int TailCallSPDelta = 0;
107 bool HasFastCall =
false;
110 int VarArgsFrameIndex = 0;
115 int VarArgsStackOffset = 0;
119 unsigned VarArgsNumGPR = 0;
123 unsigned VarArgsNumFPR = 0;
126 unsigned FixedParmsNum = 0;
129 unsigned FloatingParmsNum = 0;
132 unsigned VectorParmsNum = 0;
139 int CRSpillFrameIndex = 0;
147 bool UsesPICBase =
false;
151 std::vector<std::pair<Register, ISD::ArgFlagsTy>> LiveInAttrs;
155 bool AIXFuncUseTLSIEForLD =
false;
156 bool AIXFuncTLSModelOptInitDone =
false;
179 return ROPProtectionHashSaveIndex;
182 ROPProtectionHashSaveIndex =
Idx;
231 return AIXFuncTLSModelOptInitDone;
261 LiveInAttrs.push_back(std::make_pair(VReg, Flags));
Returns the sub type a function will return at a given Idx Should correspond to the result type of an ExtractValue instruction executed with just that one unsigned Idx
Given that RA is a live propagate it s liveness to any other values it uses(according to Uses). void DeadArgumentEliminationPass
This file defines the SmallVector class.
Allocate memory in an ever growing pool, as if by bump-pointer.
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
PPCFunctionInfo - This class is derived from MachineFunction private PowerPC target-specific informat...
int getTailCallSPDelta() const
void setVarArgsNumFPR(unsigned Num)
uint32_t getParmsType() const
MCSymbol * getPICOffsetSymbol(MachineFunction &MF) const
const SmallVectorImpl< Register > & getMustSaveCRs() const
void setReturnAddrSaveIndex(int idx)
void setMustSaveTOC(bool U)
unsigned getFloatingPointParmsNum() const
bool isAIXFuncUseTLSIEForLD() const
bool isLiveInSExt(Register VReg) const
This function returns true if the specified vreg is a live-in register and sign-extended.
MCSymbol * getGlobalEPSymbol(MachineFunction &MF) const
int getPICBasePointerSaveIndex() const
MCSymbol * getLocalEPSymbol(MachineFunction &MF) const
bool shrinkWrapDisabled() const
int getReturnAddrSaveIndex() const
unsigned getVarArgsNumFPR() const
void setAIXFuncUseTLSIEForLD()
int getFramePointerSaveIndex() const
bool isLiveInZExt(Register VReg) const
This function returns true if the specified vreg is a live-in register and zero-extended.
void setShrinkWrapDisabled(bool U)
We certainly don't want to shrink wrap functions if we've emitted a MovePCtoLR8 as that has to go int...
unsigned getVectorParmsNum() const
void setVarArgsNumGPR(unsigned Num)
void setUsesPICBase(bool uses)
void appendParameterType(ParamType Type)
bool isNonVolatileCRDisabled() const
int getVarArgsFrameIndex() const
void addMustSaveCR(Register Reg)
void setLRStoreRequired()
bool usesTOCBasePtr() const
void setBasePointerSaveIndex(int Idx)
bool isAIXFuncTLSModelOptInitDone() const
bool hasVectorParms() const
void setTailCallSPDelta(int size)
uint32_t getVecExtParmsType() const
void setAIXFuncTLSModelOptInitDone()
int getCRSpillFrameIndex() const
bool hasNonRISpills() const
bool isLRStoreRequired() const
void setMinReservedArea(unsigned size)
void setPICBasePointerSaveIndex(int Idx)
MCSymbol * getTOCOffsetSymbol(MachineFunction &MF) const
int getROPProtectionHashSaveIndex() const
unsigned getVarArgsNumGPR() const
unsigned getMinReservedArea() const
void setMustSaveLR(bool U)
MustSaveLR - This is set when the prolog/epilog inserter does its initial scan of the function.
void setDisableNonVolatileCR()
void setVarArgsStackOffset(int Offset)
void setCRSpillFrameIndex(int idx)
unsigned getFixedParmsNum() const
void setVarArgsFrameIndex(int Index)
int getBasePointerSaveIndex() const
void addLiveInAttr(Register VReg, ISD::ArgFlagsTy Flags)
This function associates attributes for each live-in virtual register.
void setROPProtectionHashSaveIndex(int Idx)
MachineFunctionInfo * clone(BumpPtrAllocator &Allocator, MachineFunction &DestMF, const DenseMap< MachineBasicBlock *, MachineBasicBlock * > &Src2DstMBB) const override
Make a functionally equivalent copy of this MachineFunctionInfo in MF.
int getVarArgsStackOffset() const
void setFramePointerSaveIndex(int Idx)
Wrapper class representing virtual and physical registers.
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
void push_back(const T &Elt)
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
TargetSubtargetInfo - Generic base class for all target subtargets.
The instances of the Type class are immutable: once they are created, they are never changed.
This is an optimization pass for GlobalISel generic memory operations.
auto size(R &&Range, std::enable_if_t< std::is_base_of< std::random_access_iterator_tag, typename std::iterator_traits< decltype(Range.begin())>::iterator_category >::value, void > *=nullptr)
Get the size of a range.
MachineFunctionInfo - This class can be derived from and used by targets to hold private target-speci...