Fix ARM tests to be register allocator independent.
[oota-llvm.git] / test / CodeGen / ARM / arm-returnaddr.ll
1 ; RUN: llc < %s -mtriple=arm-apple-darwin -regalloc=linearscan | FileCheck %s
2 ; RUN: llc < %s -mtriple=thumbv6-apple-darwin -regalloc=linearscan | FileCheck %s
3 ; rdar://8015977
4 ; rdar://8020118
5
6 ; This test needs the reserved register r7 to be coalesced into the ldr.
7 ; So far, only linear scan can do that.
8
9 define i8* @rt0(i32 %x) nounwind readnone {
10 entry:
11 ; CHECK: rt0:
12 ; CHECK: {r7, lr}
13 ; CHECK: mov r0, lr
14   %0 = tail call i8* @llvm.returnaddress(i32 0)
15   ret i8* %0
16 }
17
18 define i8* @rt2() nounwind readnone {
19 entry:
20 ; CHECK: rt2:
21 ; CHECK: {r7, lr}
22 ; CHECK: ldr r[[R0:[0-9]+]], [r7]
23 ; CHECK: ldr r0, [r0]
24 ; CHECK: ldr r0, [r0, #4]
25   %0 = tail call i8* @llvm.returnaddress(i32 2)
26   ret i8* %0
27 }
28
29 declare i8* @llvm.returnaddress(i32) nounwind readnone