diff options
author | Tim Northover <tnorthover@apple.com> | 2014-05-22 13:03:43 +0000 |
---|---|---|
committer | Tim Northover <tnorthover@apple.com> | 2014-05-22 13:03:43 +0000 |
commit | de70176f5ff5465cb32828ffcd70797c6ccb1f81 (patch) | |
tree | 8e436a0c0ea4adcdfe767692d569529e4e8970cc /lib/Target/ARM/ARMFrameLowering.cpp | |
parent | 65ea1ad2086954740678842d1b877f817003f727 (diff) | |
download | llvm-de70176f5ff5465cb32828ffcd70797c6ccb1f81.tar.gz llvm-de70176f5ff5465cb32828ffcd70797c6ccb1f81.tar.bz2 llvm-de70176f5ff5465cb32828ffcd70797c6ccb1f81.tar.xz |
Segmented stacks: omit __morestack call when there's no frame.
Patch by Florian Zeitz
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209436 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/ARM/ARMFrameLowering.cpp')
-rw-r--r-- | lib/Target/ARM/ARMFrameLowering.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/Target/ARM/ARMFrameLowering.cpp b/lib/Target/ARM/ARMFrameLowering.cpp index c0f8a8d902..0caf4bfd77 100644 --- a/lib/Target/ARM/ARMFrameLowering.cpp +++ b/lib/Target/ARM/ARMFrameLowering.cpp @@ -1746,6 +1746,12 @@ void ARMFrameLowering::adjustForSegmentedStacks(MachineFunction &MF) const { ARMFunctionInfo *ARMFI = MF.getInfo<ARMFunctionInfo>(); DebugLoc DL; + uint64_t StackSize = MFI->getStackSize(); + + // Do not generate a prologue for functions with a stack of size zero + if (StackSize == 0) + return; + // Use R4 and R5 as scratch registers. // We save R4 and R5 before use and restore them before leaving the function. unsigned ScratchReg0 = ARM::R4; @@ -1775,8 +1781,6 @@ void ARMFrameLowering::adjustForSegmentedStacks(MachineFunction &MF) const { MF.push_front(PrevStackMBB); // The required stack size that is aligned to ARM constant criterion. - uint64_t StackSize = MFI->getStackSize(); - AlignedStackSize = alignToARMConstant(StackSize); // When the frame size is less than 256 we just compare the stack |