diff options
author | Jim Grosbach <grosbach@apple.com> | 2010-12-10 18:41:15 +0000 |
---|---|---|
committer | Jim Grosbach <grosbach@apple.com> | 2010-12-10 18:41:15 +0000 |
commit | 568f528c997505706d3d02a31517338ef7dc2d17 (patch) | |
tree | a3769ca3f5b80b45577ccef5a864634fd0fe30fd /lib/Target/ARM/ARMFrameInfo.cpp | |
parent | c9672cb8bea13fcbcbdb1cf26708d831c034c089 (diff) |
Teach isCSRestore() that ARM/Thumb2 functions will use post-modify LDR
instructions to restore a single register rather than an LDM instruction.
rdar://8754999
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121498 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/ARM/ARMFrameInfo.cpp')
-rw-r--r-- | lib/Target/ARM/ARMFrameInfo.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/lib/Target/ARM/ARMFrameInfo.cpp b/lib/Target/ARM/ARMFrameInfo.cpp index 71b60794f3..e2efbd61fc 100644 --- a/lib/Target/ARM/ARMFrameInfo.cpp +++ b/lib/Target/ARM/ARMFrameInfo.cpp @@ -92,6 +92,11 @@ static bool isCSRestore(MachineInstr *MI, return false; return true; } + if ((MI->getOpcode() == ARM::LDR_POST || + MI->getOpcode() == ARM::t2LDR_POST) && + isCalleeSavedRegister(MI->getOperand(0).getReg(), CSRegs) && + MI->getOperand(1).getReg() == ARM::SP) + return true; return false; } |