14 #ifndef ARMMACHINEFUNCTIONINFO_H
15 #define ARMMACHINEFUNCTIONINFO_H
28 virtual void anchor();
44 unsigned StByValParamsPadding;
48 unsigned ArgRegsSaveSize;
60 bool LRSpilledForFarJump;
64 unsigned FramePtrSpillOffset;
77 unsigned GPRCS1Offset;
78 unsigned GPRCS2Offset;
94 unsigned NumAlignedDPRCS2Regs;
98 unsigned JumpTableUId;
100 unsigned PICLabelUId;
103 int VarArgsFrameIndex;
115 unsigned GlobalBaseReg;
121 ArgRegsSaveSize(0), HasStackFrame(
false), RestoreSPFromFP(
false),
122 LRSpilledForFarJump(
false),
123 FramePtrSpillOffset(0), GPRCS1Offset(0), GPRCS2Offset(0), DPRCSOffset(0),
124 GPRCS1Size(0), GPRCS2Size(0), DPRCSSize(0),
125 NumAlignedDPRCS2Regs(0),
126 JumpTableUId(0), PICLabelUId(0),
127 VarArgsFrameIndex(0), HasITBlocks(
false), GlobalBaseReg(0) {}
130 isThumb(MF.getTarget().getSubtarget<
ARMSubtarget>().isThumb()),
131 hasThumb2(MF.getTarget().getSubtarget<
ARMSubtarget>().hasThumb2()),
132 StByValParamsPadding(0),
133 ArgRegsSaveSize(0), HasStackFrame(
false), RestoreSPFromFP(
false),
134 LRSpilledForFarJump(
false),
135 FramePtrSpillOffset(0), GPRCS1Offset(0), GPRCS2Offset(0), DPRCSOffset(0),
136 GPRCS1Size(0), GPRCS2Size(0), DPRCSSize(0),
137 JumpTableUId(0), PICLabelUId(0),
138 VarArgsFrameIndex(0), HasITBlocks(
false), GlobalBaseReg(0) {}
149 return ArgRegsSaveSize;
150 return (ArgRegsSaveSize +
Align - 1) & ~(
Align - 1);
186 return JumpTableUId++;
202 return PICLabelUId++;
215 if (!CPEClones.
insert(std::make_pair(CPCloneIdx, CPIdx)).second)
216 assert(0 &&
"Duplicate entries!");
221 if (I != CPEClones.
end())
229 #endif // ARMMACHINEFUNCTIONINFO_H
bool isThumbFunction() const
ARMFunctionInfo(MachineFunction &MF)
void setGPRCalleeSavedArea2Offset(unsigned o)
unsigned createPICLabelUId()
unsigned getDPRCalleeSavedAreaSize() const
bool isLRSpilledForFarJump() const
unsigned getNumAlignedDPRCS2Regs() const
void setDPRCalleeSavedAreaOffset(unsigned o)
void setFramePtrSpillOffset(unsigned o)
void setShouldRestoreSPFromFP(bool s)
void setLRIsSpilledForFarJump(bool s)
bool isThumb1OnlyFunction() const
unsigned getStoredByValParamsPadding() const
unsigned createJumpTableUId()
unsigned getGPRCalleeSavedArea2Offset() const
bool hasStackFrame() const
unsigned getNumPICLabels() const
unsigned getGlobalBaseReg() const
unsigned getDPRCalleeSavedAreaOffset() const
unsigned getFramePtrSpillOffset() const
void setGPRCalleeSavedArea2Size(unsigned s)
void initPICLabelUId(unsigned UId)
std::pair< iterator, bool > insert(const std::pair< KeyT, ValueT > &KV)
void setGPRCalleeSavedArea1Size(unsigned s)
void setHasITBlocks(bool h)
void setNumAlignedDPRCS2Regs(unsigned n)
unsigned getGPRCalleeSavedArea1Offset() const
static cl::opt< AlignMode > Align(cl::desc("Load/store alignment support"), cl::Hidden, cl::init(DefaultAlign), cl::values(clEnumValN(DefaultAlign,"arm-default-align","Generate unaligned accesses only on hardware/OS ""combinations that are known to support them"), clEnumValN(StrictAlign,"arm-strict-align","Disallow all unaligned memory accesses"), clEnumValN(NoStrictAlign,"arm-no-strict-align","Allow unaligned memory accesses"), clEnumValEnd))
void recordCPEClone(unsigned CPIdx, unsigned CPCloneIdx)
void setVarArgsFrameIndex(int Index)
void setHasStackFrame(bool s)
void setGPRCalleeSavedArea1Offset(unsigned o)
void setStoredByValParamsPadding(unsigned p)
void setArgRegsSaveSize(unsigned s)
void setDPRCalleeSavedAreaSize(unsigned s)
unsigned getNumJumpTables() const
int getVarArgsFrameIndex() const
unsigned getGPRCalleeSavedArea1Size() const
unsigned getGPRCalleeSavedArea2Size() const
unsigned getArgRegsSaveSize(unsigned Align=0) const
unsigned getOriginalCPIdx(unsigned CloneIdx) const
void setGlobalBaseReg(unsigned Reg)
bool isThumb2Function() const
iterator find(const KeyT &Val)
bool shouldRestoreSPFromFP() const