xref: /llvm-project/llvm/test/CodeGen/ARM/arm-returnaddr.ll (revision c5d712232d1bbef0c0d58ad99ff8256bf8d478ff)
1; RUN: llc < %s -mtriple=arm-apple-darwin | FileCheck %s
2; RUN: llc < %s -mtriple=thumbv6-apple-darwin | FileCheck %s
3; rdar://8015977
4; rdar://8020118
5
6define i8* @rt0(i32 %x) nounwind readnone {
7entry:
8; CHECK: rt0:
9; CHECK: {r7, lr}
10; CHECK: mov r0, lr
11  %0 = tail call i8* @llvm.returnaddress(i32 0)
12  ret i8* %0
13}
14
15define i8* @rt2() nounwind readnone {
16entry:
17; CHECK: rt2:
18; CHECK: {r7, lr}
19; CHECK: ldr r0, [r7]
20; CHECK: ldr r0, [r0]
21; CHECK: ldr r0, [r0, #4]
22  %0 = tail call i8* @llvm.returnaddress(i32 2)
23  ret i8* %0
24}
25
26declare i8* @llvm.returnaddress(i32) nounwind readnone
27