diff options
author | Tim Northover <tnorthover@apple.com> | 2013-12-01 14:16:24 +0000 |
---|---|---|
committer | Tim Northover <tnorthover@apple.com> | 2013-12-01 14:16:24 +0000 |
commit | e54f6dca5074fe99d913ae1ce9bc43cf7a856b10 (patch) | |
tree | 874fc05933cc4f5332e8cc92989524a7002933f3 /test | |
parent | e1139818e835bbb3e7a5a377ee129d2ebb88a77d (diff) | |
download | llvm-e54f6dca5074fe99d913ae1ce9bc43cf7a856b10.tar.gz llvm-e54f6dca5074fe99d913ae1ce9bc43cf7a856b10.tar.bz2 llvm-e54f6dca5074fe99d913ae1ce9bc43cf7a856b10.tar.xz |
ARM: fix bug in -Oz stack adjustment folding
Previously, we clobbered callee-saved registers when folding an "add
sp, #N" into a "pop {rD, ...}" instruction. This change checks whether
a register we're going to add to the "pop" could actually be live
outside the function before doing so and should fix the issue.
This should fix PR18081.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196046 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r-- | test/CodeGen/ARM/fold-stack-adjust.ll | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/test/CodeGen/ARM/fold-stack-adjust.ll b/test/CodeGen/ARM/fold-stack-adjust.ll index c8c48faffb..8bda7683f9 100644 --- a/test/CodeGen/ARM/fold-stack-adjust.ll +++ b/test/CodeGen/ARM/fold-stack-adjust.ll @@ -15,7 +15,7 @@ define void @check_simple() minsize { ; CHECK-NOT: sub sp, sp, ; ... ; CHECK-NOT: add sp, sp, -; CHECK: pop.w {r7, r8, r9, r10, r11, pc} +; CHECK: pop.w {r0, r1, r2, r3, r11, pc} ; CHECK-T1-LABEL: check_simple: ; CHECK-T1: push {r3, r4, r5, r6, r7, lr} @@ -23,7 +23,7 @@ define void @check_simple() minsize { ; CHECK-T1-NOT: sub sp, sp, ; ... ; CHECK-T1-NOT: add sp, sp, -; CHECK-T1: pop {r3, r4, r5, r6, r7, pc} +; CHECK-T1: pop {r0, r1, r2, r3, r7, pc} ; iOS always has a frame pointer and messing with the push affects ; how it's set in the prologue. Make sure we get that right. |