73 lines · plain
1; RUN: llc -mtriple=x86_64-unknown-linux-gnu < %s | FileCheck %s --check-prefixes=CHECK,CHECK-LINUX2; RUN: llc -mtriple=x86_64-unknown-linux-gnu -relocation-model=pic < %s | FileCheck %s --check-prefixes=CHECK,CHECK-LINUX3; RUN: llc -mtriple=x86_64-darwin-unknown < %s | FileCheck %s --check-prefixes=CHECK,CHECK-MACOS4 5define i32 @foo() nounwind noinline uwtable "function-instrument"="xray-always" "xray-skip-entry" {6; CHECK-NOT: Lxray_sled_0:7 ret i32 08; CHECK: .p2align 19; CHECK-LABEL: Lxray_sled_0:10; CHECK: retq11; CHECK-NEXT: nopw %cs:512(%rax,%rax)12}13 14; CHECK-LINUX-LABEL: .section xray_instr_map,"ao",@progbits,foo{{$}}15; CHECK-LINUX-LABEL: .Lxray_sleds_start0:16; CHECK-LINUX: .quad .Lxray_sled_017; CHECK-LINUX-LABEL: .Lxray_sleds_end0:18; CHECK-LINUX-LABEL: .section xray_fn_idx,"ao",@progbits,foo{{$}}19; CHECK-LINUX: [[IDX:\.Lxray_fn_idx[0-9]+]]:20; CHECK-LINUX-NEXT: .quad .Lxray_sleds_start0-[[IDX]]21; CHECK-LINUX-NEXT: .quad 122 23; CHECK-MACOS-LABEL: .section __DATA,xray_instr_map,regular,live_support{{$}}24; CHECK-MACOS-LABEL: lxray_sleds_start0:25; CHECK-MACOS: .quad Lxray_sled_026; CHECK-MACOS-LABEL: Lxray_sleds_end0:27; CHECK-MACOS-LABEL: .section __DATA,xray_fn_idx,regular,live_support{{$}}28; CHECK-MACOS: [[IDX:lxray_fn_idx[0-9]+]]:29; CHECK-MACOS-NEXT: .quad lxray_sleds_start0-[[IDX]]30; CHECK-MACOS-NEXT: .quad 131 32 33; We test multiple returns in a single function to make sure we're getting all34; of them with XRay instrumentation.35define i32 @bar(i32 %i) nounwind noinline uwtable "function-instrument"="xray-always" "xray-skip-entry" {36; CHECK-NOT: Lxray_sled_1:37Test:38 %cond = icmp eq i32 %i, 039 br i1 %cond, label %IsEqual, label %NotEqual40IsEqual:41 ret i32 042; CHECK: .p2align 143; CHECK-LABEL: Lxray_sled_1:44; CHECK: retq45; CHECK-NEXT: nopw %cs:512(%rax,%rax)46NotEqual:47 ret i32 148; CHECK: .p2align 149; CHECK-LABEL: Lxray_sled_2:50; CHECK: retq51; CHECK-NEXT: nopw %cs:512(%rax,%rax)52}53 54; CHECK-LINUX-LABEL: .section xray_instr_map,"ao",@progbits,bar{{$}}55; CHECK-LINUX-LABEL: .Lxray_sleds_start1:56; CHECK-LINUX: .quad .Lxray_sled_157; CHECK-LINUX: .quad .Lxray_sled_258; CHECK-LINUX-LABEL: .Lxray_sleds_end1:59; CHECK-LINUX-LABEL: .section xray_fn_idx,"ao",@progbits,bar{{$}}60; CHECK-LINUX: [[IDX:\.Lxray_fn_idx[0-9]+]]:61; CHECK-LINUX-NEXT: .quad .Lxray_sleds_start1-[[IDX]]62; CHECK-LINUX-NEXT: .quad 263 64; CHECK-MACOS-LABEL: .section __DATA,xray_instr_map,regular,live_support{{$}}65; CHECK-MACOS-LABEL: lxray_sleds_start1:66; CHECK-MACOS: .quad Lxray_sled_167; CHECK-MACOS: .quad Lxray_sled_268; CHECK-MACOS-LABEL: Lxray_sleds_end1:69; CHECK-MACOS-LABEL: .section __DATA,xray_fn_idx,regular,live_support{{$}}70; CHECK-MACOS: [[IDX:lxray_fn_idx[0-9]+]]:71; CHECK-MACOS-NEXT: .quad lxray_sleds_start1-[[IDX]]72; CHECK-MACOS-NEXT: .quad 273