mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-22 10:24:26 +00:00
XCore target: Make handling of large frames not dependent upon an FP.
eliminateFrameIndex() has been reworked to handle both small & large frames with either a FP or SP. An additional Slot is required for Scavenging spills when not using FP for large frames. Reworked the handling of Register Scavenging. Whether we are using an FP or not, whether it is a large frame or not, and whether we are using a large code model or not are now independent. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196091 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -31,6 +31,7 @@ class XCoreFunctionInfo : public MachineFunctionInfo {
|
||||
int LRSpillSlot;
|
||||
int FPSpillSlot;
|
||||
int VarArgsFrameIndex;
|
||||
mutable int CachedEStackSize;
|
||||
std::vector<std::pair<MCSymbol*, CalleeSavedInfo> > SpillLabels;
|
||||
|
||||
public:
|
||||
@ -38,13 +39,15 @@ public:
|
||||
UsesLR(false),
|
||||
LRSpillSlot(0),
|
||||
FPSpillSlot(0),
|
||||
VarArgsFrameIndex(0) {}
|
||||
VarArgsFrameIndex(0),
|
||||
CachedEStackSize(-1) {}
|
||||
|
||||
explicit XCoreFunctionInfo(MachineFunction &MF) :
|
||||
UsesLR(false),
|
||||
LRSpillSlot(0),
|
||||
FPSpillSlot(0),
|
||||
VarArgsFrameIndex(0) {}
|
||||
VarArgsFrameIndex(0),
|
||||
CachedEStackSize(-1) {}
|
||||
|
||||
~XCoreFunctionInfo() {}
|
||||
|
||||
@ -60,6 +63,8 @@ public:
|
||||
void setFPSpillSlot(int off) { FPSpillSlot = off; }
|
||||
int getFPSpillSlot() const { return FPSpillSlot; }
|
||||
|
||||
bool isLargeFrame(const MachineFunction &MF) const;
|
||||
|
||||
std::vector<std::pair<MCSymbol*, CalleeSavedInfo> > &getSpillLabels() {
|
||||
return SpillLabels;
|
||||
}
|
||||
|
Reference in New Issue
Block a user