eliminate unnecessary reset of SP in epilog on darwin
authorDale Johannesen <dalej@apple.com>
Fri, 2 Mar 2007 01:17:17 +0000 (01:17 +0000)
committerDale Johannesen <dalej@apple.com>
Fri, 2 Mar 2007 01:17:17 +0000 (01:17 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34824 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/ARMRegisterInfo.cpp

index 503d560403c9607d20b201e9a356434c5cf886bb..dc7e82b86ce4c31cb77e30108e9ffde913d7deb2 100644 (file)
@@ -1290,7 +1290,7 @@ void ARMRegisterInfo::emitEpilogue(MachineFunction &MF,
     } else {
       // Darwin ABI requires FP to point to the stack slot that contains the
       // previous FP.
-      if (STI.isTargetDarwin() || hasFP(MF)) {
+      if ((STI.isTargetDarwin() && NumBytes) || hasFP(MF)) {
         NumBytes = AFI->getFramePtrSpillOffset() - NumBytes;
         // Reset SP based on frame pointer only if the stack frame extends beyond
         // frame pointer stack slot or target is ELF and the function has FP.