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