diff options
author | Derek Schuff <dschuff@google.com> | 2016-02-23 18:13:07 +0000 |
---|---|---|
committer | Derek Schuff <dschuff@google.com> | 2016-02-23 18:13:07 +0000 |
commit | 4b3bb213b2d21d862542cfe1965fbd4cab28f1a8 (patch) | |
tree | d52642210677862f16aa2797f371911c258dbc71 /llvm/lib/Target/WebAssembly/WebAssemblyFrameLowering.h | |
parent | 1b9fae5a40a92e2bb6c35286b2b9f2a58809423b (diff) | |
download | bcm5719-llvm-4b3bb213b2d21d862542cfe1965fbd4cab28f1a8.tar.gz bcm5719-llvm-4b3bb213b2d21d862542cfe1965fbd4cab28f1a8.zip |
[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
Diffstat (limited to 'llvm/lib/Target/WebAssembly/WebAssemblyFrameLowering.h')
-rw-r--r-- | llvm/lib/Target/WebAssembly/WebAssemblyFrameLowering.h | 8 |
1 files changed, 8 insertions, 0 deletions
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 |