From 4b3bb213b2d21d862542cfe1965fbd4cab28f1a8 Mon Sep 17 00:00:00 2001 From: Derek Schuff Date: Tue, 23 Feb 2016 18:13:07 +0000 Subject: [WebAssembly] Implement red zone for user stack Implements a mostly-conventional redzone for the userspace stack. Because we have unsigned load/store offsets we continue to use a local SP subtracted from the incoming SP but do not write it back to memory. Differential Revision: http://reviews.llvm.org/D17525 llvm-svn: 261662 --- llvm/lib/Target/WebAssembly/WebAssemblyFrameLowering.h | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'llvm/lib/Target/WebAssembly/WebAssemblyFrameLowering.h') diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyFrameLowering.h b/llvm/lib/Target/WebAssembly/WebAssemblyFrameLowering.h index 39f3f04e68d..cb3b011aeb8 100644 --- a/llvm/lib/Target/WebAssembly/WebAssemblyFrameLowering.h +++ b/llvm/lib/Target/WebAssembly/WebAssemblyFrameLowering.h @@ -19,9 +19,12 @@ #include "llvm/Target/TargetFrameLowering.h" namespace llvm { +class MachineFrameInfo; class WebAssemblyFrameLowering final : public TargetFrameLowering { public: + static const size_t RedZoneSize = 128; + WebAssemblyFrameLowering() : TargetFrameLowering(StackGrowsDown, /*StackAlignment=*/16, /*LocalAreaOffset=*/0, @@ -38,6 +41,11 @@ class WebAssemblyFrameLowering final : public TargetFrameLowering { bool hasFP(const MachineFunction &MF) const override; bool hasReservedCallFrame(const MachineFunction &MF) const override; + + private: + bool needsSP(const MachineFunction &MF, const MachineFrameInfo &MFI) const; + bool needsSPWriteback(const MachineFunction &MF, + const MachineFrameInfo &MFI) const; }; } // end namespace llvm -- cgit v1.2.3