diff options
author | Reid Kleckner <rnk@google.com> | 2019-01-15 01:24:18 +0000 |
---|---|---|
committer | Reid Kleckner <rnk@google.com> | 2019-01-15 01:24:18 +0000 |
commit | fe5e5dcab0c09ca4567611ba680c7a603bf6b89d (patch) | |
tree | d470b016a32d2d8222b8eebca50f40716b4176ea /llvm/lib/Target/X86/X86FrameLowering.cpp | |
parent | 649af77b9e3e111b2a8e7cbfff1209a0b1450554 (diff) | |
download | bcm5719-llvm-fe5e5dcab0c09ca4567611ba680c7a603bf6b89d.tar.gz bcm5719-llvm-fe5e5dcab0c09ca4567611ba680c7a603bf6b89d.zip |
[X86] Avoid clobbering ESP/RSP in the epilogue.
Summary:
In r345197 ESP and RSP were added to GR32_TC/GR64_TC, allowing them to
be used for tail calls, but this also caused `findDeadCallerSavedReg` to
think they were acceptable targets for clobbering. Filter them out.
Fixes PR40289.
Patch by Geoffry Song!
Reviewed By: rnk
Differential Revision: https://reviews.llvm.org/D56617
llvm-svn: 351146
Diffstat (limited to 'llvm/lib/Target/X86/X86FrameLowering.cpp')
-rw-r--r-- | llvm/lib/Target/X86/X86FrameLowering.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/llvm/lib/Target/X86/X86FrameLowering.cpp b/llvm/lib/Target/X86/X86FrameLowering.cpp index d722c75c4f0..984db12201e 100644 --- a/llvm/lib/Target/X86/X86FrameLowering.cpp +++ b/llvm/lib/Target/X86/X86FrameLowering.cpp @@ -185,7 +185,8 @@ static unsigned findDeadCallerSavedReg(MachineBasicBlock &MBB, } for (auto CS : AvailableRegs) - if (!Uses.count(CS) && CS != X86::RIP) + if (!Uses.count(CS) && CS != X86::RIP && CS != X86::RSP && + CS != X86::ESP) return CS; } } |