90 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" {6; CHECK: .p2align 17; CHECK-LABEL: Lxray_sled_0:8; CHECK: .ascii "\353\t"9; CHECK-NEXT: nopw 512(%rax,%rax)10 ret i32 011; CHECK: .p2align 112; CHECK-LABEL: Lxray_sled_1:13; CHECK: retq14; CHECK-NEXT: nopw %cs:512(%rax,%rax)15}16 17; CHECK-LINUX-LABEL: .section xray_instr_map,"ao",@progbits,foo{{$}}18; CHECK-LINUX-LABEL: .Lxray_sleds_start0:19; CHECK-LINUX: .quad .Lxray_sled_020; CHECK-LINUX: .quad .Lxray_sled_121; CHECK-LINUX-LABEL: .Lxray_sleds_end0:22; CHECK-LINUX-LABEL: .section xray_fn_idx,"ao",@progbits,foo{{$}}23; CHECK-LINUX-NEXT: .p2align 3, 0x024; CHECK-LINUX-NEXT: [[IDX:\.Lxray_fn_idx[0-9]+]]:25; CHECK-LINUX-NEXT: .quad .Lxray_sleds_start0-[[IDX]]26; CHECK-LINUX-NEXT: .quad 227 28; CHECK-MACOS-LABEL: .section __DATA,xray_instr_map,regular,live_support{{$}}29; CHECK-MACOS-LABEL: lxray_sleds_start0:30; CHECK-MACOS: .quad Lxray_sled_031; CHECK-MACOS: .quad Lxray_sled_132; CHECK-MACOS-LABEL: Lxray_sleds_end0:33; CHECK-MACOS-LABEL: .section __DATA,xray_fn_idx,regular,live_support{{$}}34; CHECK-MACOS: [[IDX:lxray_fn_idx[0-9]+]]:35; CHECK-MACOS-NEXT: .quad lxray_sleds_start0-[[IDX]]36; CHECK-MACOS-NEXT: .quad 237 38 39; We test multiple returns in a single function to make sure we're getting all40; of them with XRay instrumentation.41define i32 @bar(i32 %i) nounwind noinline uwtable "function-instrument"="xray-always" {42; CHECK: .p2align 143; CHECK-LABEL: Lxray_sled_2:44; CHECK: .ascii "\353\t"45; CHECK-NEXT: nopw 512(%rax,%rax)46Test:47 %cond = icmp eq i32 %i, 048 br i1 %cond, label %IsEqual, label %NotEqual49IsEqual:50 ret i32 051; CHECK: .p2align 152; CHECK-LABEL: Lxray_sled_3:53; CHECK: retq54; CHECK-NEXT: nopw %cs:512(%rax,%rax)55NotEqual:56 ret i32 157; CHECK: .p2align 158; CHECK-LABEL: Lxray_sled_4:59; CHECK: retq60; CHECK-NEXT: nopw %cs:512(%rax,%rax)61}62 63; CHECK-LINUX-LABEL: .section xray_instr_map,"ao",@progbits,bar{{$}}64; CHECK-LINUX-LABEL: .Lxray_sleds_start1:65; CHECK-LINUX: [[TMP:.Ltmp[0-9]+]]:66; CHECK-LINUX-NEXT: .quad .Lxray_sled_2-[[TMP]]67; CHECK-LINUX: [[TMP:.Ltmp[0-9]+]]:68; CHECK-LINUX-NEXT: .quad .Lxray_sled_3-[[TMP]]69; CHECK-LINUX: [[TMP:.Ltmp[0-9]+]]:70; CHECK-LINUX-NEXT: .quad .Lxray_sled_4-[[TMP]]71; CHECK-LINUX-LABEL: .Lxray_sleds_end1:72; CHECK-LINUX-LABEL: .section xray_fn_idx,"ao",@progbits,bar{{$}}73; CHECK-LINUX: [[IDX:\.Lxray_fn_idx[0-9]+]]:74; CHECK-LINUX-NEXT: .quad .Lxray_sleds_start1-[[IDX]]75; CHECK-LINUX-NEXT: .quad 376 77; CHECK-MACOS-LABEL: .section __DATA,xray_instr_map,regular,live_support{{$}}78; CHECK-MACOS-LABEL: lxray_sleds_start1:79; CHECK-MACOS: [[TMP:Ltmp[0-9]+]]:80; CHECK-MACOS-NEXT: .quad Lxray_sled_2-[[TMP]]81; CHECK-MACOS: [[TMP:Ltmp[0-9]+]]:82; CHECK-MACOS-NEXT: .quad Lxray_sled_3-[[TMP]]83; CHECK-MACOS: [[TMP:Ltmp[0-9]+]]:84; CHECK-MACOS-NEXT: .quad Lxray_sled_4-[[TMP]]85; CHECK-MACOS-LABEL: Lxray_sleds_end1:86; CHECK-MACOS-LABEL: .section __DATA,xray_fn_idx,regular,live_support{{$}}87; CHECK-MACOS: [[IDX:lxray_fn_idx[0-9]+]]:88; CHECK-MACOS-NEXT: .quad lxray_sleds_start1-[[IDX]]89; CHECK-MACOS-NEXT: .quad 390