//
//===----------------------------------------------------------------------===//
-#ifndef XCOREMACHINEFUNCTIONINFO_H
-#define XCOREMACHINEFUNCTIONINFO_H
+#ifndef LLVM_LIB_TARGET_XCORE_XCOREMACHINEFUNCTIONINFO_H
+#define LLVM_LIB_TARGET_XCORE_XCOREMACHINEFUNCTIONINFO_H
#include "llvm/CodeGen/MachineFrameInfo.h"
#include "llvm/CodeGen/MachineFunction.h"
int FPSpillSlot;
bool EHSpillSlotSet;
int EHSpillSlot[2];
+ unsigned ReturnStackOffset;
+ bool ReturnStackOffsetSet;
int VarArgsFrameIndex;
mutable int CachedEStackSize;
- std::vector<std::pair<MCSymbol*, CalleeSavedInfo> > SpillLabels;
+ std::vector<std::pair<MachineBasicBlock::iterator, CalleeSavedInfo>>
+ SpillLabels;
public:
XCoreFunctionInfo() :
LRSpillSlotSet(false),
FPSpillSlotSet(false),
EHSpillSlotSet(false),
+ ReturnStackOffsetSet(false),
VarArgsFrameIndex(0),
CachedEStackSize(-1) {}
LRSpillSlotSet(false),
FPSpillSlotSet(false),
EHSpillSlotSet(false),
+ ReturnStackOffsetSet(false),
VarArgsFrameIndex(0),
CachedEStackSize(-1) {}
return EHSpillSlot;
}
+ void setReturnStackOffset(unsigned value) {
+ assert(!ReturnStackOffsetSet && "Return stack offset set twice");
+ ReturnStackOffset = value;
+ ReturnStackOffsetSet = true;
+ }
+
+ unsigned getReturnStackOffset() const {
+ assert(ReturnStackOffsetSet && "Return stack offset not set");
+ return ReturnStackOffset;
+ }
+
bool isLargeFrame(const MachineFunction &MF) const;
- std::vector<std::pair<MCSymbol*, CalleeSavedInfo> > &getSpillLabels() {
+ std::vector<std::pair<MachineBasicBlock::iterator, CalleeSavedInfo>> &
+ getSpillLabels() {
return SpillLabels;
}
};
} // End llvm namespace
-#endif // XCOREMACHINEFUNCTIONINFO_H
+#endif