From 568f528c997505706d3d02a31517338ef7dc2d17 Mon Sep 17 00:00:00 2001 From: Jim Grosbach Date: Fri, 10 Dec 2010 18:41:15 +0000 Subject: [PATCH] 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 --- lib/Target/ARM/ARMFrameInfo.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/Target/ARM/ARMFrameInfo.cpp b/lib/Target/ARM/ARMFrameInfo.cpp index 71b60794f32..e2efbd61fcd 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; }