]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/CodeGen/ARM/xray-tail-call-sled.ll
Vendor import of llvm trunk r351319 (just before the release_80 branch
[FreeBSD/FreeBSD.git] / test / CodeGen / ARM / xray-tail-call-sled.ll
1 ; RUN: llc -filetype=asm -o - -mtriple=armv7-unknown-linux-gnu < %s | FileCheck %s
2 ; RUN: llc -filetype=asm -o - -mtriple=armv7-apple-ios6.0.0    < %s | FileCheck %s
3
4 define i32 @callee() nounwind noinline uwtable "function-instrument"="xray-always" {
5 ; CHECK:       .p2align 2
6 ; CHECK-LABEL: Lxray_sled_0:
7 ; CHECK-NEXT:  b        #20
8 ; CHECK-NEXT:  nop
9 ; CHECK-NEXT:  nop
10 ; CHECK-NEXT:  nop
11 ; CHECK-NEXT:  nop
12 ; CHECK-NEXT:  nop
13 ; CHECK-NEXT:  nop
14 ; CHECK-LABEL: Ltmp0:
15   ret i32 0
16 ; CHECK-NEXT:  mov      r0, #0
17 ; CHECK-NEXT:  .p2align 2
18 ; CHECK-LABEL: Lxray_sled_1:
19 ; CHECK-NEXT:  b        #20
20 ; CHECK-NEXT:  nop
21 ; CHECK-NEXT:  nop
22 ; CHECK-NEXT:  nop
23 ; CHECK-NEXT:  nop
24 ; CHECK-NEXT:  nop
25 ; CHECK-NEXT:  nop
26 ; CHECK-LABEL: Ltmp1:
27 ; CHECK-NEXT:  bx       lr
28 }
29
30 define i32 @caller() nounwind noinline uwtable "function-instrument"="xray-always" {
31 ; CHECK:       .p2align 2
32 ; CHECK-LABEL: Lxray_sled_2:
33 ; CHECK-NEXT:  b        #20
34 ; CHECK-NEXT:  nop
35 ; CHECK-NEXT:  nop
36 ; CHECK-NEXT:  nop
37 ; CHECK-NEXT:  nop
38 ; CHECK-NEXT:  nop
39 ; CHECK-NEXT:  nop
40 ; CHECK-LABEL: Ltmp2:
41 ; CHECK:       .p2align 2
42 ; CHECK-LABEL: Lxray_sled_3:
43 ; CHECK-NEXT:  b        #20
44 ; CHECK-NEXT:  nop
45 ; CHECK-NEXT:  nop
46 ; CHECK-NEXT:  nop
47 ; CHECK-NEXT:  nop
48 ; CHECK-NEXT:  nop
49 ; CHECK-NEXT:  nop
50 ; CHECK-LABEL: Ltmp3:
51   %retval = tail call i32 @callee()
52 ; CHECK:       b        {{.*}}callee
53   ret i32 %retval
54 }