diff options
author | Lauro Ramos Venancio <lauro.venancio@gmail.com> | 2007-01-12 20:52:27 +0000 |
---|---|---|
committer | Lauro Ramos Venancio <lauro.venancio@gmail.com> | 2007-01-12 20:52:27 +0000 |
commit | 901d9e65f68207c7aea0e829228870c4f70ec497 (patch) | |
tree | 55f620851850725dc59a9980d984526a2fb9915e | |
parent | c4235e55212e0a17105373645e616e2eb47f76cb (diff) | |
download | bcm5719-llvm-901d9e65f68207c7aea0e829228870c4f70ec497.tar.gz bcm5719-llvm-901d9e65f68207c7aea0e829228870c4f70ec497.zip |
Don't add or sub zero to sp.
llvm-svn: 33142
-rw-r--r-- | llvm/lib/Target/ARM/ARMRegisterInfo.cpp | 16 | ||||
-rw-r--r-- | llvm/test/Regression/CodeGen/ARM/spaddsub.ll | 10 |
2 files changed, 20 insertions, 6 deletions
diff --git a/llvm/lib/Target/ARM/ARMRegisterInfo.cpp b/llvm/lib/Target/ARM/ARMRegisterInfo.cpp index 4890e3094fe..16a1a29660e 100644 --- a/llvm/lib/Target/ARM/ARMRegisterInfo.cpp +++ b/llvm/lib/Target/ARM/ARMRegisterInfo.cpp @@ -206,9 +206,11 @@ void ARMRegisterInfo::emitPrologue(MachineFunction &MF) const { MFI->setStackSize(NumBytes); - //sub sp, sp, #NumBytes - splitInstructionWithImmediate(MBB, MBBI, TII.get(ARM::SUB), ARM::R13, - ARM::R13, NumBytes); + if (NumBytes) { + //sub sp, sp, #NumBytes + splitInstructionWithImmediate(MBB, MBBI, TII.get(ARM::SUB), ARM::R13, + ARM::R13, NumBytes); + } if (HasFP) { @@ -234,9 +236,11 @@ void ARMRegisterInfo::emitEpilogue(MachineFunction &MF, BuildMI(MBB, MBBI, TII.get(ARM::LDR), ARM::R11).addReg(ARM::R13).addImm(0); } - //add sp, sp, #NumBytes - splitInstructionWithImmediate(MBB, MBBI, TII.get(ARM::ADD), ARM::R13, - ARM::R13, NumBytes); + if (NumBytes){ + //add sp, sp, #NumBytes + splitInstructionWithImmediate(MBB, MBBI, TII.get(ARM::ADD), ARM::R13, + ARM::R13, NumBytes); + } } diff --git a/llvm/test/Regression/CodeGen/ARM/spaddsub.ll b/llvm/test/Regression/CodeGen/ARM/spaddsub.ll new file mode 100644 index 00000000000..ef3b9b7c1d1 --- /dev/null +++ b/llvm/test/Regression/CodeGen/ARM/spaddsub.ll @@ -0,0 +1,10 @@ +; RUN: llvm-upgrade < %s | llvm-as | llc -f -march=arm -o %t.s && +; RUN: not grep "add r13, r13, #0" < %t.s && +; RUN: not grep "sub r13, r13, #0" < %t.s + +int %f() { +entry: + ret int 1 +} + + |