summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/ARM/interrupt-attr.ll
diff options
context:
space:
mode:
authorTim Northover <tnorthover@apple.com>2014-05-30 13:23:06 +0000
committerTim Northover <tnorthover@apple.com>2014-05-30 13:23:06 +0000
commit86f60b7266f915c2e1b937fee9bfa874bc8909ce (patch)
treedaf3d7296859330decc1d64480fe9271cac144d8 /llvm/test/CodeGen/ARM/interrupt-attr.ll
parenteaef074d45b25e6d91a44fba7f9756ae1ad1175a (diff)
downloadbcm5719-llvm-86f60b7266f915c2e1b937fee9bfa874bc8909ce.tar.gz
bcm5719-llvm-86f60b7266f915c2e1b937fee9bfa874bc8909ce.zip
ARM: use AAPCS-style prologues for embedded MachO.
Darwin prologues save their GPRs in two stages: a narrow push of r0-r7 & lr, followed by a wide push of the remaining registers if there are any. AAPCS uses a single push.w instruction. It turns out that, on average, enough registers get pushed that code is smaller in the AAPCS prologue, which is a nice property for M-class programmers. They also have other options available for back-traces, so can hopefully deal with the fact that FP & LR aren't adjacent in memory. rdar://problem/15909583 llvm-svn: 209895
Diffstat (limited to 'llvm/test/CodeGen/ARM/interrupt-attr.ll')
-rw-r--r--llvm/test/CodeGen/ARM/interrupt-attr.ll8
1 files changed, 4 insertions, 4 deletions
diff --git a/llvm/test/CodeGen/ARM/interrupt-attr.ll b/llvm/test/CodeGen/ARM/interrupt-attr.ll
index c5be6674da1..cb67dd929f4 100644
--- a/llvm/test/CodeGen/ARM/interrupt-attr.ll
+++ b/llvm/test/CodeGen/ARM/interrupt-attr.ll
@@ -35,15 +35,15 @@ define arm_aapcscc void @irq_fn() alignstack(8) "interrupt"="IRQ" {
; Normal AAPCS function (r0-r3 pushed onto stack by hardware, lr set to
; appropriate sentinel so no special return needed).
; CHECK-M-LABEL: irq_fn:
-; CHECK-M: push {r4, r6, r7, lr}
-; CHECK-M: add r7, sp, #8
+; CHECK-M: push.w {r4, r10, r11, lr}
+; CHECK-M: add.w r11, sp, #8
; CHECK-M: mov r4, sp
; CHECK-M: bic r4, r4, #7
; CHECK-M: mov sp, r4
; CHECK-M: blx _bar
-; CHECK-M: sub.w r4, r7, #8
+; CHECK-M: sub.w r4, r11, #8
; CHECK-M: mov sp, r4
-; CHECK-M: pop {r4, r6, r7, pc}
+; CHECK-M: pop.w {r4, r10, r11, pc}
call arm_aapcscc void @bar()
ret void
OpenPOWER on IntegriCloud