1; RUN: llc -filetype=asm -relocation-model=pic -o - -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s 2 3define i32 @callee() nounwind noinline uwtable "function-instrument"="xray-always" { 4; CHECK-LABEL: .Ltmp0: 5; CHECK: b .Ltmp1 6; CHECK-NEXT: nop 7; CHECK-NEXT: std 0, -8(1) 8; CHECK-NEXT: mflr 0 9; CHECK-NEXT: bl __xray_FunctionEntry 10; CHECK-NEXT: nop 11; CHECK-NEXT: mtlr 0 12; CHECK-LABEL: .Ltmp1: 13 ret i32 0 14; CHECK-LABEL: .Ltmp2: 15; CHECK: blr 16; CHECK-NEXT: nop 17; CHECK-NEXT: std 0, -8(1) 18; CHECK-NEXT: mflr 0 19; CHECK-NEXT: bl __xray_FunctionExit 20; CHECK-NEXT: nop 21; CHECK-NEXT: mtlr 0 22} 23 24define i32 @caller() nounwind noinline uwtable "function-instrument"="xray-always" { 25; CHECK-LABEL: .Ltmp5: 26; CHECK-NEXT: b .Ltmp6 27; CHECK-NEXT: nop 28; CHECK-NEXT: std 0, -8(1) 29; CHECK-NEXT: mflr 0 30; CHECK-NEXT: bl __xray_FunctionEntry 31; CHECK-NEXT: nop 32; CHECK-NEXT: mtlr 0 33; CHECK-LABEL: .Ltmp6: 34 %retval = tail call i32 @callee() 35 ret i32 %retval 36; CHECK-LABEL: .Ltmp7: 37; CHECK: blr 38; CHECK-NEXT: nop 39; CHECK-NEXT: std 0, -8(1) 40; CHECK-NEXT: mflr 0 41; CHECK-NEXT: bl __xray_FunctionExit 42; CHECK-NEXT: nop 43; CHECK-NEXT: mtlr 0 44} 45