diff options
Diffstat (limited to 'llvm/lib/Target/SystemZ/SystemZFrameInfo.h')
-rw-r--r-- | llvm/lib/Target/SystemZ/SystemZFrameInfo.h | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/llvm/lib/Target/SystemZ/SystemZFrameInfo.h b/llvm/lib/Target/SystemZ/SystemZFrameInfo.h index 85782f86f05..a977502d65b 100644 --- a/llvm/lib/Target/SystemZ/SystemZFrameInfo.h +++ b/llvm/lib/Target/SystemZ/SystemZFrameInfo.h @@ -17,24 +17,33 @@ #include "SystemZ.h" #include "SystemZSubtarget.h" #include "llvm/Target/TargetFrameInfo.h" +#include "llvm/ADT/IndexedMap.h" namespace llvm { class SystemZSubtarget; class SystemZFrameInfo : public TargetFrameInfo { + IndexedMap<unsigned> RegSpillOffsets; protected: const SystemZSubtarget &STI; public: - explicit SystemZFrameInfo(const SystemZSubtarget &sti) - : TargetFrameInfo(TargetFrameInfo::StackGrowsDown, 8, -160), STI(sti) { - } + explicit SystemZFrameInfo(const SystemZSubtarget &sti); /// emitProlog/emitEpilog - These methods insert prolog and epilog code into /// the function. void emitPrologue(MachineFunction &MF) const; void emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const; + bool spillCalleeSavedRegisters(MachineBasicBlock &MBB, + MachineBasicBlock::iterator MI, + const std::vector<CalleeSavedInfo> &CSI, + const TargetRegisterInfo *TRI) const; + bool restoreCalleeSavedRegisters(MachineBasicBlock &MBB, + MachineBasicBlock::iterator MI, + const std::vector<CalleeSavedInfo> &CSI, + const TargetRegisterInfo *TRI) const; + bool hasReservedCallFrame(const MachineFunction &MF) const { return true; } bool hasFP(const MachineFunction &MF) const; int getFrameIndexOffset(const MachineFunction &MF, int FI) const; |