Go to the documentation of this file.
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;
174 return ROPProtectionHashSaveIndex;
177 ROPProtectionHashSaveIndex = Idx;
249 LiveInAttrs.push_back(std::make_pair(VReg, Flags));
279 #endif // LLVM_LIB_TARGET_POWERPC_PPCMACHINEFUNCTIONINFO_H
int getBasePointerSaveIndex() const
void addMustSaveCR(Register Reg)
int getCRSpillFrameIndex() const
This is an optimization pass for GlobalISel generic memory operations.
void appendParameterType(ParamType Type)
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
void setTailCallSPDelta(int size)
unsigned getMinReservedArea() const
int getVarArgsFrameIndex() const
This might compile to this xmm1 xorps xmm0 movss xmm0 ret Now consider if the code caused xmm1 to get spilled This might produce this xmm1 movaps xmm0 movaps xmm1 movss xmm0 ret since the reload is only used by these we could fold it into the uses
unsigned getFixedParmsNum() const
Reg
All possible values of the reg field in the ModR/M byte.
void addLiveInAttr(Register VReg, ISD::ArgFlagsTy Flags)
This function associates attributes for each live-in virtual register.
MachineFunctionInfo * clone(BumpPtrAllocator &Allocator, MachineFunction &DestMF, const DenseMap< MachineBasicBlock *, MachineBasicBlock * > &Src2DstMBB) const override
Make a functionally equivalent copy of this MachineFunctionInfo in MF.
The instances of the Type class are immutable: once they are created, they are never changed.
MCSymbol * getLocalEPSymbol(MachineFunction &MF) const
void setVarArgsNumGPR(unsigned Num)
PPCFunctionInfo - This class is derived from MachineFunction private PowerPC target-specific informat...
MCSymbol * getPICOffsetSymbol(MachineFunction &MF) const
void setMustSaveTOC(bool U)
void setROPProtectionHashSaveIndex(int Idx)
void setReturnAddrSaveIndex(int idx)
void setVarArgsNumFPR(unsigned Num)
int getPICBasePointerSaveIndex() const
void setCRSpillFrameIndex(int idx)
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...
bool isLRStoreRequired() const
MCSymbol * getTOCOffsetSymbol(MachineFunction &MF) const
bool hasVectorParms() const
Allocate memory in an ever growing pool, as if by bump-pointer.
bool hasNonRISpills() const
uint32_t getParmsType() const
unsigned getVarArgsNumFPR() const
void setVarArgsStackOffset(int Offset)
MCSymbol * getGlobalEPSymbol(MachineFunction &MF) const
bool isNonVolatileCRDisabled() const
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.
void setDisableNonVolatileCR()
int getVarArgsStackOffset() const
Wrapper class representing virtual and physical registers.
PPCFunctionInfo(const MachineFunction &MF)
void setBasePointerSaveIndex(int Idx)
void setUsesPICBase(bool uses)
int getTailCallSPDelta() const
unsigned getVarArgsNumGPR() const
bool isLiveInSExt(Register VReg) const
This function returns true if the specified vreg is a live-in register and sign-extended.
void setMustSaveLR(bool U)
MustSaveLR - This is set when the prolog/epilog inserter does its initial scan of the function.
bool shrinkWrapDisabled() const
unsigned getFloatingPointParmsNum() const
bool isLiveInZExt(Register VReg) const
This function returns true if the specified vreg is a live-in register and zero-extended.
const SmallVectorImpl< Register > & getMustSaveCRs() const
int getFramePointerSaveIndex() const
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
void setLRStoreRequired()
void setFramePointerSaveIndex(int Idx)
uint32_t getVecExtParmsType() const
unsigned getVectorParmsNum() const
void setVarArgsFrameIndex(int Index)
bool usesTOCBasePtr() const
MachineFunctionInfo - This class can be derived from and used by targets to hold private target-speci...
int getROPProtectionHashSaveIndex() const
int getReturnAddrSaveIndex() const
void setMinReservedArea(unsigned size)
void setPICBasePointerSaveIndex(int Idx)