Teach isCSRestore() that ARM/Thumb2 functions will use post-modify LDR
instructions to restore a single register rather than an LDM instruction.
rdar://8754999
llvm-svn: 121498
diff --git a/llvm/lib/Target/ARM/ARMFrameInfo.cpp b/llvm/lib/Target/ARM/ARMFrameInfo.cpp
index 71b6079..e2efbd6 100644
--- a/llvm/lib/Target/ARM/ARMFrameInfo.cpp
+++ b/llvm/lib/Target/ARM/ARMFrameInfo.cpp
@@ -92,6 +92,11 @@
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;
}