xref: /llvm-project/llvm/test/CodeGen/PowerPC/xray-tail-call-sled.ll (revision 49b61ead47c111171c324f94e849534798f69dc2)
1; RUN: llc -relocation-model=pic -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s
2
3define i32 @callee() nounwind noinline uwtable "function-instrument"="xray-always" {
4; CHECK-LABEL: callee:
5; CHECK:       .Ltmp[[#l:]]:
6; CHECK-NEXT:         b .Ltmp[[#l+1]]
7; CHECK-NEXT:         nop
8; CHECK-NEXT:         std 0, -8(1)
9; CHECK-NEXT:         mflr 0
10; CHECK-NEXT:         bl __xray_FunctionEntry
11; CHECK-NEXT:         nop
12; CHECK-NEXT:         mtlr 0
13; CHECK-NEXT:  .Ltmp[[#l+1]]:
14  ret i32 0
15; CHECK:       .Ltmp[[#]]:
16; CHECK:              blr
17; CHECK-NEXT:         nop
18; CHECK-NEXT:         std 0, -8(1)
19; CHECK-NEXT:         mflr 0
20; CHECK-NEXT:         bl __xray_FunctionExit
21; CHECK-NEXT:         nop
22; CHECK-NEXT:         mtlr 0
23}
24
25define i32 @caller() nounwind noinline uwtable "function-instrument"="xray-always" {
26; CHECK-LABEL: caller:
27; CHECK:       .Ltmp[[#l:]]:
28; CHECK-NEXT:         b .Ltmp[[#l+1]]
29; CHECK-NEXT:         nop
30; CHECK-NEXT:         std 0, -8(1)
31; CHECK-NEXT:         mflr 0
32; CHECK-NEXT:         bl __xray_FunctionEntry
33; CHECK-NEXT:         nop
34; CHECK-NEXT:         mtlr 0
35; CHECK-NEXT:  .Ltmp[[#l+1]]:
36  %retval = tail call i32 @callee()
37  ret i32 %retval
38; CHECK:       .Ltmp[[#l+2]]:
39; CHECK-NEXT:         blr
40; CHECK-NEXT:         nop
41; CHECK-NEXT:         std 0, -8(1)
42; CHECK-NEXT:         mflr 0
43; CHECK-NEXT:         bl __xray_FunctionExit
44; CHECK-NEXT:         nop
45; CHECK-NEXT:         mtlr 0
46}
47