diff options
author | Tim Northover <tnorthover@apple.com> | 2016-04-11 22:27:40 +0000 |
---|---|---|
committer | Tim Northover <tnorthover@apple.com> | 2016-04-11 22:27:40 +0000 |
commit | a6dea06fe3d74eb75ab58f14d7b87f068f043de0 (patch) | |
tree | f92addbc968226da13e9eea6cc174817ef1023f2 /llvm/test | |
parent | b91d38c5feb41dee1005cb295590459cd4363173 (diff) | |
download | bcm5719-llvm-a6dea06fe3d74eb75ab58f14d7b87f068f043de0.tar.gz bcm5719-llvm-a6dea06fe3d74eb75ab58f14d7b87f068f043de0.zip |
ARM: use r7 as the frame-pointer on all MachO targets.
This is better for a few reasons:
+ It matches the other tooling for iOS.
+ It matches EABI in more cases (i.e. Thumb-mode, and in practice we don't
use ARM mode).
+ It leads to infinitesimally smaller code (0.2%, yay!).
rdar://25369506
llvm-svn: 266003
Diffstat (limited to 'llvm/test')
-rw-r--r-- | llvm/test/CodeGen/ARM/interrupt-attr.ll | 8 | ||||
-rw-r--r-- | llvm/test/CodeGen/ARM/none-macho.ll | 10 | ||||
-rw-r--r-- | llvm/test/CodeGen/Thumb2/emit-unwinding.ll | 2 |
3 files changed, 11 insertions, 9 deletions
diff --git a/llvm/test/CodeGen/ARM/interrupt-attr.ll b/llvm/test/CodeGen/ARM/interrupt-attr.ll index 43bd5815a55..794f672534d 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.w {r4, r7, r11, lr} -; CHECK-M: add.w r11, sp, #8 +; CHECK-M: push {r4, r6, r7, lr} +; CHECK-M: add r7, sp, #8 ; CHECK-M: mov r4, sp ; CHECK-M: bfc r4, #0, #3 ; CHECK-M: mov sp, r4 ; CHECK-M: bl _bar -; CHECK-M: sub.w r4, r11, #8 +; CHECK-M: sub.w r4, r7, #8 ; CHECK-M: mov sp, r4 -; CHECK-M: pop.w {r4, r7, r11, pc} +; CHECK-M: pop {r4, r6, r7, pc} call arm_aapcscc void @bar() ret void diff --git a/llvm/test/CodeGen/ARM/none-macho.ll b/llvm/test/CodeGen/ARM/none-macho.ll index 733ba4ba2d2..fee459f4f5e 100644 --- a/llvm/test/CodeGen/ARM/none-macho.ll +++ b/llvm/test/CodeGen/ARM/none-macho.ll @@ -43,8 +43,8 @@ define i32 @test_frame_ptr() { ; CHECK-LABEL: test_frame_ptr: call void @test_trap() - ; Frame pointer is r11. -; CHECK: mov r11, sp + ; Frame pointer is r7. +; CHECK: mov r7, sp ret i32 42 } @@ -58,9 +58,11 @@ define void @test_two_areas(%big_arr* %addr) { ; This goes with the choice of r7 as FP (largely). FP and LR have to be stored ; consecutively on the stack for the frame record to be valid, which means we ; need the 2 register-save areas employed by iOS. -; CHECK-NON-FAST: push.w {r4, r5, r6, r7, r8, r9, r10, r11, lr} +; CHECK-NON-FAST: push {r4, r5, r6, r7, lr} +; CHECK-NON-FAST: push.w {r8, r9, r10, r11} ; ... -; CHECK-NON-FAST: pop.w {r4, r5, r6, r7, r8, r9, r10, r11, pc} +; CHECK-NON-FAST: pop.w {r8, r9, r10, r11} +; CHECK-NON-FAST: pop {r4, r5, r6, r7, pc} ret void } diff --git a/llvm/test/CodeGen/Thumb2/emit-unwinding.ll b/llvm/test/CodeGen/Thumb2/emit-unwinding.ll index 1f1ea1b48af..b77bb9e6b13 100644 --- a/llvm/test/CodeGen/Thumb2/emit-unwinding.ll +++ b/llvm/test/CodeGen/Thumb2/emit-unwinding.ll @@ -1,6 +1,6 @@ ; RUN: llc -mtriple thumbv7em-apple-unknown-eabi-macho %s -o - -O0 | FileCheck %s -; CHECK: add.w r11, sp, #{{[1-9]+}} +; CHECK: add r7, sp, #{{[1-9]+}} define void @foo1() { call void asm sideeffect "", "~{r4}"() |