]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/CodeGen/ARM/arm-returnaddr.ll
Vendor import of llvm release_34 branch r197841 (effectively, 3.4 RC3):
[FreeBSD/FreeBSD.git] / test / CodeGen / ARM / arm-returnaddr.ll
1 ; RUN: llc < %s -mtriple=arm-apple-ios | FileCheck %s
2 ; RUN: llc < %s -mtriple=thumbv6-apple-ios | FileCheck %s
3 ; RUN: llc < %s -mtriple=arm-apple-ios -regalloc=basic | FileCheck %s
4 ; RUN: llc < %s -mtriple=thumbv6-apple-ios -regalloc=basic | FileCheck %s
5 ; rdar://8015977
6 ; rdar://8020118
7
8 define i8* @rt0(i32 %x) nounwind readnone {
9 entry:
10 ; CHECK-LABEL: rt0:
11 ; CHECK: {r7, lr}
12 ; CHECK: mov r0, lr
13   %0 = tail call i8* @llvm.returnaddress(i32 0)
14   ret i8* %0
15 }
16
17 define i8* @rt2() nounwind readnone {
18 entry:
19 ; CHECK-LABEL: rt2:
20 ; CHECK: {r7, lr}
21 ; CHECK: ldr r[[R0:[0-9]+]], [r7]
22 ; CHECK: ldr r0, [r0]
23 ; CHECK: ldr r0, [r0, #4]
24   %0 = tail call i8* @llvm.returnaddress(i32 2)
25   ret i8* %0
26 }
27
28 declare i8* @llvm.returnaddress(i32) nounwind readnone