14 #ifndef LLVM_LIB_TARGET_ARM_ARMMACHINEFUNCTIONINFO_H 15 #define LLVM_LIB_TARGET_ARM_ARMMACHINEFUNCTIONINFO_H 28 virtual void anchor();
37 bool hasThumb2 =
false;
44 unsigned StByValParamsPadding = 0;
48 unsigned ArgRegsSaveSize = 0;
51 unsigned ReturnRegsCount = 0;
55 bool HasStackFrame =
false;
59 bool RestoreSPFromFP =
false;
63 bool LRSpilledForFarJump =
false;
67 unsigned FramePtrSpillOffset = 0;
80 unsigned GPRCS1Offset = 0;
81 unsigned GPRCS2Offset = 0;
82 unsigned DPRCSOffset = 0;
86 unsigned GPRCS1Size = 0;
87 unsigned GPRCS2Size = 0;
88 unsigned DPRCSAlignGapSize = 0;
89 unsigned DPRCSSize = 0;
98 unsigned NumAlignedDPRCS2Regs = 0;
100 unsigned PICLabelUId = 0;
103 int VarArgsFrameIndex = 0;
106 bool HasITBlocks =
false;
114 unsigned ArgumentStackSize = 0;
122 bool IsSplitCSR =
false;
128 int PromotedGlobalsIncrease = 0;
193 return PICLabelUId++;
206 if (!CPEClones.
insert(std::make_pair(CPCloneIdx, CPIdx)).second)
212 if (I != CPEClones.
end())
220 auto It = CoalescedWeights.
find(MBB);
221 if (It == CoalescedWeights.
end()) {
222 It = CoalescedWeights.
insert(std::make_pair(MBB, 0)).first;
231 PromotedGlobals.
insert(GV);
234 return PromotedGlobals;
237 return PromotedGlobalsIncrease;
240 PromotedGlobalsIncrease = Sz;
246 #endif // LLVM_LIB_TARGET_ARM_ARMMACHINEFUNCTIONINFO_H void markGlobalAsPromotedToConstantPool(const GlobalVariable *GV)
Indicate to the backend that GV has had its storage changed to inside a constant pool.
This class represents lattice values for constants.
void setGPRCalleeSavedArea2Offset(unsigned o)
unsigned createPICLabelUId()
MachineFunctionInfo - This class can be derived from and used by targets to hold private target-speci...
std::pair< iterator, bool > insert(const std::pair< KeyT, ValueT > &KV)
void setDPRCalleeSavedAreaOffset(unsigned o)
unsigned getArgRegsSaveSize() const
void setFramePtrSpillOffset(unsigned o)
unsigned getDPRCalleeSavedAreaSize() const
void setDPRCalleeSavedGapSize(unsigned s)
void setShouldRestoreSPFromFP(bool s)
unsigned getNumAlignedDPRCS2Regs() const
bool isLRSpilledForFarJump() const
void setLRIsSpilledForFarJump(bool s)
bool isThumb2Function() const
void setIsSplitCSR(bool s)
bool shouldRestoreSPFromFP() const
int getPromotedConstpoolIncrease() const
iterator find(const_arg_type_t< KeyT > Val)
void setReturnRegsCount(unsigned s)
int getVarArgsFrameIndex() const
ARMFunctionInfo()=default
std::pair< iterator, bool > insert(PtrType Ptr)
Inserts Ptr if and only if there is no element in the container equal to Ptr.
unsigned getGPRCalleeSavedArea1Size() const
void setGPRCalleeSavedArea2Size(unsigned s)
void initPICLabelUId(unsigned UId)
unsigned getReturnRegsCount() const
bool isThumb1OnlyFunction() const
SmallPtrSet< const GlobalVariable *, 2 > & getGlobalsPromotedToConstantPool()
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
unsigned getDPRCalleeSavedGapSize() const
void setPromotedConstpoolIncrease(int Sz)
SmallPtrSet - This class implements a set which is optimized for holding SmallSize or less elements...
auto size(R &&Range, typename std::enable_if< std::is_same< typename std::iterator_traits< decltype(Range.begin())>::iterator_category, std::random_access_iterator_tag >::value, void >::type *=nullptr) -> decltype(std::distance(Range.begin(), Range.end()))
Get the size of a range.
void setGPRCalleeSavedArea1Size(unsigned s)
void setHasITBlocks(bool h)
void setNumAlignedDPRCS2Regs(unsigned n)
unsigned getOriginalCPIdx(unsigned CloneIdx) const
unsigned getGPRCalleeSavedArea2Offset() const
unsigned getStoredByValParamsPadding() const
unsigned getGPRCalleeSavedArea1Offset() const
void setArgumentStackSize(unsigned size)
unsigned getArgumentStackSize() const
void recordCPEClone(unsigned CPIdx, unsigned CPCloneIdx)
void setVarArgsFrameIndex(int Index)
void setHasStackFrame(bool s)
unsigned getGPRCalleeSavedArea2Size() const
void setGPRCalleeSavedArea1Offset(unsigned o)
void setStoredByValParamsPadding(unsigned p)
unsigned getNumPICLabels() const
ARMFunctionInfo - This class is derived from MachineFunctionInfo and contains private ARM-specific in...
void setArgRegsSaveSize(unsigned s)
void setDPRCalleeSavedAreaSize(unsigned s)
bool hasStackFrame() const
unsigned getFramePtrSpillOffset() const
DenseMap< const MachineBasicBlock *, unsigned >::iterator getCoalescedWeight(MachineBasicBlock *MBB)
bool isThumbFunction() const
unsigned getDPRCalleeSavedAreaOffset() const