diff options
Diffstat (limited to 'llvm/lib/Target/VE/VEFrameLowering.h')
-rw-r--r-- | llvm/lib/Target/VE/VEFrameLowering.h | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/llvm/lib/Target/VE/VEFrameLowering.h b/llvm/lib/Target/VE/VEFrameLowering.h index 97e31d21aa43..b548d663c504 100644 --- a/llvm/lib/Target/VE/VEFrameLowering.h +++ b/llvm/lib/Target/VE/VEFrameLowering.h @@ -28,23 +28,28 @@ public: void emitPrologue(MachineFunction &MF, MachineBasicBlock &MBB) const override; void emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const override; void emitPrologueInsns(MachineFunction &MF, MachineBasicBlock &MBB, - MachineBasicBlock::iterator MBBI, int NumBytes, + MachineBasicBlock::iterator MBBI, uint64_t NumBytes, bool RequireFPUpdate) const; void emitEpilogueInsns(MachineFunction &MF, MachineBasicBlock &MBB, - MachineBasicBlock::iterator MBBI, int NumBytes, + MachineBasicBlock::iterator MBBI, uint64_t NumBytes, bool RequireFPUpdate) const; MachineBasicBlock::iterator eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB, MachineBasicBlock::iterator I) const override; - bool hasReservedCallFrame(const MachineFunction &MF) const override; + bool hasBP(const MachineFunction &MF) const; bool hasFP(const MachineFunction &MF) const override; + // VE reserves argument space always for call sites in the function + // immediately on entry of the current function. + bool hasReservedCallFrame(const MachineFunction &MF) const override { + return true; + } void determineCalleeSaves(MachineFunction &MF, BitVector &SavedRegs, RegScavenger *RS = nullptr) const override; int getFrameIndexReference(const MachineFunction &MF, int FI, - unsigned &FrameReg) const override; + Register &FrameReg) const override; const SpillSlot * getCalleeSavedSpillSlots(unsigned &NumEntries) const override { @@ -58,10 +63,8 @@ public: return Offsets; } - /// targetHandlesStackFrameRounding - Returns true if the target is - /// responsible for rounding up the stack frame (probably at emitPrologue - /// time). - bool targetHandlesStackFrameRounding() const override { return true; } +protected: + const VESubtarget &STI; private: // Returns true if MF is a leaf procedure. @@ -69,11 +72,12 @@ private: // Emits code for adjusting SP in function prologue/epilogue. void emitSPAdjustment(MachineFunction &MF, MachineBasicBlock &MBB, - MachineBasicBlock::iterator MBBI, int NumBytes) const; + MachineBasicBlock::iterator MBBI, int64_t NumBytes, + MaybeAlign MayAlign = MaybeAlign()) const; // Emits code for extending SP in function prologue/epilogue. void emitSPExtend(MachineFunction &MF, MachineBasicBlock &MBB, - MachineBasicBlock::iterator MBBI, int NumBytes) const; + MachineBasicBlock::iterator MBBI) const; }; } // namespace llvm |