120 lines · plain
1; RUN: llc -mtriple=x86_64-unknown-linux-gnu < %s | FileCheck %s --check-prefixes=CHECK,CHECK-LINUX2; RUN: llc -mtriple=x86_64-darwin-unknown < %s | FileCheck %s --check-prefixes=CHECK,CHECK-MACOS3 4define dso_local i32 @callee() nounwind noinline uwtable "function-instrument"="xray-always" {5; CHECK: .p2align 16; CHECK-LABEL: Lxray_sled_0:7; CHECK: .ascii "\353\t"8; CHECK-NEXT: nopw 512(%rax,%rax)9 ret i32 010; CHECK: .p2align 111; CHECK-LABEL: Lxray_sled_1:12; CHECK: retq13; CHECK-NEXT: nopw %cs:512(%rax,%rax)14}15 16; CHECK-LINUX-LABEL: .section xray_instr_map,"ao",@progbits,callee{{$}}17; CHECK-LINUX-LABEL: .Lxray_sleds_start0:18; CHECK-LINUX: .quad .Lxray_sled_019; CHECK-LINUX: .quad .Lxray_sled_120; CHECK-LINUX-LABEL: .Lxray_sleds_end0:21; CHECK-LINUX-LABEL: .section xray_fn_idx,"ao",@progbits,callee{{$}}22; CHECK-LINUX: [[IDX:\.Lxray_fn_idx[0-9]+]]:23; CHECK-LINUX-NEXT: .quad .Lxray_sleds_start0-[[IDX]]24; CHECK-LINUX-NEXT: .quad 225 26; CHECK-MACOS-LABEL: .section __DATA,xray_instr_map,regular,live_support{{$}}27; CHECK-MACOS-LABEL: lxray_sleds_start0:28; CHECK-MACOS: .quad Lxray_sled_029; CHECK-MACOS: .quad Lxray_sled_130; CHECK-MACOS-LABEL: Lxray_sleds_end0:31; CHECK-MACOS-LABEL: .section __DATA,xray_fn_idx,regular,live_support{{$}}32; CHECK-MACOS: [[IDX:lxray_fn_idx[0-9]+]]:33; CHECK-MACOS-NEXT: .quad lxray_sleds_start0-[[IDX]]34; CHECK-MACOS-NEXT: .quad 235 36define dso_local i32 @caller() nounwind noinline uwtable "function-instrument"="xray-always" {37; CHECK: .p2align 138; CHECK-LABEL: Lxray_sled_2:39; CHECK: .ascii "\353\t"40; CHECK-NEXT: nopw 512(%rax,%rax)41; CHECK: .p2align 142; CHECK-LABEL: Lxray_sled_3:43; CHECK-NEXT: .ascii "\353\t"44; CHECK-NEXT: nopw 512(%rax,%rax)45 %retval = tail call i32 @callee()46; CHECK: jmp {{.*}}callee {{.*}}# TAILCALL47 ret i32 %retval48}49 50; CHECK-LINUX-LABEL: .section xray_instr_map,"ao",@progbits,caller{{$}}51; CHECK-LINUX-LABEL: .Lxray_sleds_start1:52; CHECK-LINUX: .quad .Lxray_sled_253; CHECK-LINUX: .quad .Lxray_sled_354; CHECK-LINUX-LABEL: .Lxray_sleds_end1:55; CHECK-LINUX-LABEL: .section xray_fn_idx,"ao",@progbits,caller{{$}}56; CHECK-LINUX: [[IDX:\.Lxray_fn_idx[0-9]+]]:57; CHECK-LINUX-NEXT: .quad .Lxray_sleds_start1-[[IDX]]58; CHECK-LINUX-NEXT: .quad 259 60; CHECK-MACOS-LABEL: .section __DATA,xray_instr_map,regular,live_support{{$}}61; CHECK-MACOS-LABEL: lxray_sleds_start1:62; CHECK-MACOS: .quad Lxray_sled_263; CHECK-MACOS: .quad Lxray_sled_364; CHECK-MACOS-LABEL: Lxray_sleds_end1:65; CHECK-MACOS-LABEL: .section __DATA,xray_fn_idx,regular,live_support{{$}}66; CHECK-MACOS: [[IDX:lxray_fn_idx[0-9]+]]:67; CHECK-MACOS-NEXT: .quad lxray_sleds_start1-[[IDX]]68; CHECK-MACOS-NEXT: .quad 269 70define dso_local i32 @conditional_tail_call(i32 %cond) nounwind noinline uwtable "function-instrument"="xray-always" {71; CHECK-LABEL: conditional_tail_call:72; CHECK: .p2align 173; CHECK-LABEL: Lxray_sled_4:74; CHECK: .ascii "\353\t"75; CHECK-NEXT: nopw 512(%rax,%rax)76; CHECK-NEXT: testl %edi, %edi77; CHECK-NEXT: je {{\.?Ltmp5}}78; CHECK: .p2align 179; CHECK-LABEL: Lxray_sled_5:80; CHECK-NEXT: .ascii "\353\t"81; CHECK-NEXT: nopw 512(%rax,%rax)82; CHECK-LABEL: Ltmp6:83; CHECK-NEXT: jmp {{.*}}callee {{.*}}# TAILCALL84; CHECK-LABEL: Ltmp5:85; CHECK: xorl %eax, %eax86; CHECK-NEXT: .p2align 187; CHECK-LABEL: Lxray_sled_6:88; CHECK-NEXT: retq89; CHECK-NEXT: nopw %cs:512(%rax,%rax)90 %cmp = icmp ne i32 %cond, 091 br i1 %cmp, label %docall, label %ret92docall:93 %retval = tail call i32 @callee()94 ret i32 %retval95ret:96 ret i32 097}98 99; CHECK-LINUX-LABEL: .section xray_instr_map,"ao",@progbits,conditional_tail_call{{$}}100; CHECK-LINUX-LABEL: .Lxray_sleds_start2:101; CHECK-LINUX: .quad .Lxray_sled_4102; CHECK-LINUX: .quad .Lxray_sled_5103; CHECK-LINUX: .quad .Lxray_sled_6104; CHECK-LINUX-LABEL: .Lxray_sleds_end2:105; CHECK-LINUX-LABEL: .section xray_fn_idx,"ao",@progbits,conditional_tail_call{{$}}106; CHECK-LINUX: [[IDX:\.Lxray_fn_idx[0-9]+]]:107; CHECK-LINUX-NEXT: .quad .Lxray_sleds_start2-[[IDX]]108; CHECK-LINUX-NEXT: .quad 3109 110; CHECK-MACOS-LABEL: .section __DATA,xray_instr_map,regular,live_support{{$}}111; CHECK-MACOS-LABEL: lxray_sleds_start2:112; CHECK-MACOS: .quad Lxray_sled_4113; CHECK-MACOS: .quad Lxray_sled_5114; CHECK-MACOS: .quad Lxray_sled_6115; CHECK-MACOS-LABEL: Lxray_sleds_end2:116; CHECK-MACOS-LABEL: .section __DATA,xray_fn_idx,regular,live_support{{$}}117; CHECK-MACOS: [[IDX:lxray_fn_idx[0-9]+]]:118; CHECK-MACOS-NEXT: .quad lxray_sleds_start2-[[IDX]]119; CHECK-MACOS-NEXT: .quad 3120