diff options
Diffstat (limited to 'llvm/lib/Target/RISCV/RISCVFrameLowering.h')
-rw-r--r-- | llvm/lib/Target/RISCV/RISCVFrameLowering.h | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/llvm/lib/Target/RISCV/RISCVFrameLowering.h b/llvm/lib/Target/RISCV/RISCVFrameLowering.h index ba093bb83f0..d92bb70c76d 100644 --- a/llvm/lib/Target/RISCV/RISCVFrameLowering.h +++ b/llvm/lib/Target/RISCV/RISCVFrameLowering.h @@ -24,7 +24,8 @@ public: explicit RISCVFrameLowering(const RISCVSubtarget &STI) : TargetFrameLowering(StackGrowsDown, /*StackAlignment=*/16, - /*LocalAreaOffset=*/0) {} + /*LocalAreaOffset=*/0), + STI(STI) {} void emitPrologue(MachineFunction &MF, MachineBasicBlock &MBB) const override; void emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const override; @@ -32,6 +33,9 @@ public: int getFrameIndexReference(const MachineFunction &MF, int FI, unsigned &FrameReg) const override; + void determineCalleeSaves(MachineFunction &MF, BitVector &SavedRegs, + RegScavenger *RS) const override; + bool hasFP(const MachineFunction &MF) const override; MachineBasicBlock::iterator @@ -39,6 +43,15 @@ public: MachineBasicBlock::iterator MI) const override { return MBB.erase(MI); } + +protected: + const RISCVSubtarget &STI; + +private: + void determineFrameLayout(MachineFunction &MF) const; + void adjustReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI, + const DebugLoc &DL, unsigned DestReg, unsigned SrcReg, + int64_t Val, MachineInstr::MIFlag Flag) const; }; } #endif |