diff options
author | Weiming Zhao <weimingz@codeaurora.org> | 2016-01-08 18:37:43 +0000 |
---|---|---|
committer | Weiming Zhao <weimingz@codeaurora.org> | 2016-01-08 18:37:43 +0000 |
commit | 48c033e021b8b9682ce87becae75b13934d5f84a (patch) | |
tree | 822deddcde6f653a559eadc0efd1baff419ef105 | |
parent | 6788b62f0901bc80c4fb6cb2df27e059c6f9d5dc (diff) | |
download | bcm5719-llvm-48c033e021b8b9682ce87becae75b13934d5f84a.tar.gz bcm5719-llvm-48c033e021b8b9682ce87becae75b13934d5f84a.zip |
Disable shrink-wrap for Thumb1
Summary: In ARMConstantIslandPass, which runs after Shrink Wrap pass, long jumps will be fixed up as BL (tBfar) which depends on spilling LR in epilogue. However, shrink-wrap may remove the LR, which causes issues when the function returns.
Reviewers: qcolombet, rengolin
Subscribers: aemerson, rengolin
Differential Revision: http://reviews.llvm.org/D15984
llvm-svn: 257187
-rw-r--r-- | llvm/lib/Target/ARM/Thumb1FrameLowering.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/Thumb1FrameLowering.h b/llvm/lib/Target/ARM/Thumb1FrameLowering.h index 812f9830824..27faac63683 100644 --- a/llvm/lib/Target/ARM/Thumb1FrameLowering.h +++ b/llvm/lib/Target/ARM/Thumb1FrameLowering.h @@ -53,6 +53,11 @@ public: /// \p MBB will be correctly handled by the target. bool canUseAsEpilogue(const MachineBasicBlock &MBB) const override; + /// Disable shrink wrap as tBfar/BL will be used to adjust for long jumps. + bool enableShrinkWrapping(const MachineFunction &MF) const override { + return false; + } + private: /// Check if the frame lowering of \p MF needs a special fixup /// code sequence for the epilogue. |