[llvm] c72dea8 - [AArch64][ARM][X86] Split XRay tests for Linux/macOS

Fangrui Song via llvm-commits llvm-commits at lists.llvm.org
Sun Jun 11 12:53:35 PDT 2023


Author: Oleksii Lozovskyi
Date: 2023-06-11T12:53:29-07:00
New Revision: c72dea88b635bfd7856fa22bcaf388fa72c9fe86

URL: https://github.com/llvm/llvm-project/commit/c72dea88b635bfd7856fa22bcaf388fa72c9fe86
DIFF: https://github.com/llvm/llvm-project/commit/c72dea88b635bfd7856fa22bcaf388fa72c9fe86.diff

LOG: [AArch64][ARM][X86] Split XRay tests for Linux/macOS

XRay instrumentation works for macOS running on Apple Silicon, but
codegen is untested there. I'm going to make changes affecting this
target, get the XRay tests running on AArch64.

Data sections are going to become slightly different on x86_64 soon.
I do want the tests to be specific about symbol names, so instead of
having test check the common step, bifurcate tests a bit and check
the full symbol names.

As for ARM, XRay is not really supported on iOS at the moment, though
ARM is also really used there with modern phones. Nevertheless, codegen
tests exist and the output is going to change a little, make it easier
to write the special case for iOS.

Reviewed By: MaskRay

Differential Revision: https://reviews.llvm.org/D145291

Added: 
    

Modified: 
    llvm/test/CodeGen/AArch64/xray-attribute-instrumentation.ll
    llvm/test/CodeGen/AArch64/xray-omit-function-index.ll
    llvm/test/CodeGen/AArch64/xray-partial-instrumentation-skip-entry.ll
    llvm/test/CodeGen/AArch64/xray-partial-instrumentation-skip-exit.ll
    llvm/test/CodeGen/AArch64/xray-tail-call-sled.ll
    llvm/test/CodeGen/ARM/xray-armv6-attribute-instrumentation.ll
    llvm/test/CodeGen/ARM/xray-armv7-attribute-instrumentation.ll
    llvm/test/CodeGen/X86/xray-attribute-instrumentation.ll
    llvm/test/CodeGen/X86/xray-log-args.ll
    llvm/test/CodeGen/X86/xray-partial-instrumentation-skip-entry.ll
    llvm/test/CodeGen/X86/xray-partial-instrumentation-skip-exit.ll
    llvm/test/CodeGen/X86/xray-tail-call-sled.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/CodeGen/AArch64/xray-attribute-instrumentation.ll b/llvm/test/CodeGen/AArch64/xray-attribute-instrumentation.ll
index 5ca170ac0a2b9..1835b3c2e87ac 100644
--- a/llvm/test/CodeGen/AArch64/xray-attribute-instrumentation.ll
+++ b/llvm/test/CodeGen/AArch64/xray-attribute-instrumentation.ll
@@ -1,4 +1,5 @@
-; RUN: llc -mtriple=aarch64-unknown-linux-gnu < %s | FileCheck %s
+; RUN: llc -mtriple=aarch64-unknown-linux-gnu < %s | FileCheck %s -check-prefixes=CHECK,CHECK-LINUX
+; RUN: llc -mtriple=aarch64-apple-darwin      < %s | FileCheck %s -check-prefixes=CHECK,CHECK-MACOS
 
 define i32 @foo() nounwind noinline uwtable "function-instrument"="xray-always" {
 ; CHECK-LABEL: foo:
@@ -26,11 +27,17 @@ define i32 @foo() nounwind noinline uwtable "function-instrument"="xray-always"
 ; CHECK-NEXT:  ret
 }
 
-; CHECK-LABEL: xray_instr_map
-; CHECK-LABEL: Lxray_sleds_start0
-; CHECK:       .xword .Lxray_sled_0
-; CHECK:       .xword .Lxray_sled_1
-; CHECK-LABEL: Lxray_sleds_end0
+; CHECK-LINUX-LABEL: .section xray_instr_map,"ao", at progbits,foo{{$}}
+; CHECK-LINUX-LABEL: Lxray_sleds_start0:
+; CHECK-LINUX:         .xword .Lxray_sled_0
+; CHECK-LINUX:         .xword .Lxray_sled_1
+; CHECK-LINUX-LABEL: Lxray_sleds_end0:
+
+; CHECK-MACOS-LABEL: .section __DATA,xray_instr_map{{$}}
+; CHECK-MACOS-LABEL: Lxray_sleds_start0:
+; CHECK-MACOS:         .quad Lxray_sled_0
+; CHECK-MACOS:         .quad Lxray_sled_1
+; CHECK-MACOS-LABEL: Lxray_sleds_end0:
 
 define i32 @bar() nounwind noinline uwtable "function-instrument"="xray-never" "function-instrument"="xray-always" {
 ; CHECK-LABEL: bar:
@@ -58,11 +65,17 @@ define i32 @bar() nounwind noinline uwtable "function-instrument"="xray-never" "
 ; CHECK-NEXT:  ret
 }
 
-; CHECK-LABEL: xray_instr_map
-; CHECK-LABEL: Lxray_sleds_start1
-; CHECK:       .xword .Lxray_sled_2
-; CHECK:       .xword .Lxray_sled_3
-; CHECK-LABEL: Lxray_sleds_end1
+; CHECK-LINUX-LABEL: .section xray_instr_map,"ao", at progbits,bar{{$}}
+; CHECK-LINUX-LABEL: Lxray_sleds_start1:
+; CHECK-LINUX:         .xword .Lxray_sled_2
+; CHECK-LINUX:         .xword .Lxray_sled_3
+; CHECK-LINUX-LABEL: Lxray_sleds_end1:
+
+; CHECK-MACOS-LABEL: .section __DATA,xray_instr_map{{$}}
+; CHECK-MACOS-LABEL: Lxray_sleds_start1:
+; CHECK-MACOS:         .quad Lxray_sled_2
+; CHECK-MACOS:         .quad Lxray_sled_3
+; CHECK-MACOS-LABEL: Lxray_sleds_end1:
 
 define i32 @instrumented() nounwind noinline uwtable "xray-instruction-threshold"="1" {
 ; CHECK-LABEL: instrumented:
@@ -90,15 +103,21 @@ define i32 @instrumented() nounwind noinline uwtable "xray-instruction-threshold
 ; CHECK-NEXT:  ret
 }
 
-; CHECK-LABEL: xray_instr_map
-; CHECK-LABEL: Lxray_sleds_start2
-; CHECK:       .xword .Lxray_sled_4
-; CHECK:       .xword .Lxray_sled_5
-; CHECK-LABEL: Lxray_sleds_end2
+; CHECK-LINUX-LABEL: .section xray_instr_map,"ao", at progbits,instrumented{{$}}
+; CHECK-LINUX-LABEL: Lxray_sleds_start2:
+; CHECK-LINUX:         .xword .Lxray_sled_4
+; CHECK-LINUX:         .xword .Lxray_sled_5
+; CHECK-LINUX-LABEL: Lxray_sleds_end2:
+
+; CHECK-MACOS-LABEL: .section __DATA,xray_instr_map{{$}}
+; CHECK-MACOS-LABEL: Lxray_sleds_start2:
+; CHECK-MACOS:         .quad Lxray_sled_4
+; CHECK-MACOS:         .quad Lxray_sled_5
+; CHECK-MACOS-LABEL: Lxray_sleds_end2:
 
 define i32 @not_instrumented() nounwind noinline uwtable "xray-instruction-threshold"="1" "function-instrument"="xray-never" {
 ; CHECK-LABEL: not_instrumented
-; CHECK-NOT: .Lxray_sled_6
+; CHECK-NOT: Lxray_sled_6
   ret i32 0
 ; CHECK:  ret
 }

diff  --git a/llvm/test/CodeGen/AArch64/xray-omit-function-index.ll b/llvm/test/CodeGen/AArch64/xray-omit-function-index.ll
index 4b2e6b72c02f2..5adf502af2afa 100644
--- a/llvm/test/CodeGen/AArch64/xray-omit-function-index.ll
+++ b/llvm/test/CodeGen/AArch64/xray-omit-function-index.ll
@@ -1,4 +1,5 @@
-; RUN: llc -no-xray-index -mtriple=aarch64-unknown-linux-gnu < %s | FileCheck %s
+; RUN: llc -no-xray-index -mtriple=aarch64-unknown-linux-gnu < %s | FileCheck %s --check-prefixes=CHECK,CHECK-LINUX
+; RUN: llc -no-xray-index -mtriple=aarch64-apple-darwin      < %s | FileCheck %s --check-prefixes=CHECK,CHECK-MACOS
 
 define i32 @foo() nounwind noinline uwtable "function-instrument"="xray-always" {
 ; CHECK-LABEL: Lxray_sled_0:
@@ -24,10 +25,16 @@ define i32 @foo() nounwind noinline uwtable "function-instrument"="xray-always"
 ; CHECK-LABEL: Ltmp1:
 ; CHECK-NEXT:  ret
 }
-; CHECK-LABEL: xray_instr_map
-; CHECK-LABEL: Lxray_sleds_start0
-; CHECK:       .xword .Lxray_sled_0
-; CHECK:       .xword .Lxray_sled_1
-; CHECK-LABEL: Lxray_sleds_end0
+; CHECK-LINUX-LABEL: .section xray_instr_map,"ao", at progbits,foo{{$}}
+; CHECK-LINUX-LABEL: Lxray_sleds_start0:
+; CHECK-LINUX:         .xword .Lxray_sled_0
+; CHECK-LINUX:         .xword .Lxray_sled_1
+; CHECK-LINUX-LABEL: Lxray_sleds_end0:
+
+; CHECK-MACOS-LABEL: .section __DATA,xray_instr_map{{$}}
+; CHECK-MACOS-LABEL: Lxray_sleds_start0:
+; CHECK-MACOS:         .quad Lxray_sled_0
+; CHECK-MACOS:         .quad Lxray_sled_1
+; CHECK-MACOS-LABEL: Lxray_sleds_end0:
 
 ; CHECK-NOT: xray_fn_idx

diff  --git a/llvm/test/CodeGen/AArch64/xray-partial-instrumentation-skip-entry.ll b/llvm/test/CodeGen/AArch64/xray-partial-instrumentation-skip-entry.ll
index a28d780bf4975..00055b5f439ed 100644
--- a/llvm/test/CodeGen/AArch64/xray-partial-instrumentation-skip-entry.ll
+++ b/llvm/test/CodeGen/AArch64/xray-partial-instrumentation-skip-entry.ll
@@ -1,4 +1,5 @@
-; RUN: llc -mtriple=aarch64-unknown-linux-gnu < %s | FileCheck %s
+; RUN: llc -mtriple=aarch64-unknown-linux-gnu < %s | FileCheck %s --check-prefixes=CHECK,CHECK-LINUX
+; RUN: llc -mtriple=aarch64-apple-darwin      < %s | FileCheck %s --check-prefixes=CHECK,CHECK-MACOS
 
 define i32 @foo() nounwind noinline uwtable "function-instrument"="xray-always" "xray-skip-entry" {
 ; CHECK-NOT: Lxray_sled_0:
@@ -15,7 +16,13 @@ define i32 @foo() nounwind noinline uwtable "function-instrument"="xray-always"
 ; CHECK-LABEL: Ltmp0:
 ; CHECK-NEXT:  ret
 }
-; CHECK-LABEL: xray_instr_map
-; CHECK-LABEL: Lxray_sleds_start0
-; CHECK:       .xword .Lxray_sled_0
-; CHECK-LABEL: Lxray_sleds_end0
+
+; CHECK-LINUX-LABEL: .section xray_instr_map,"ao", at progbits,foo{{$}}
+; CHECK-LINUX-LABEL: Lxray_sleds_start0:
+; CHECK-LINUX:         .xword .Lxray_sled_0
+; CHECK-LINUX-LABEL: Lxray_sleds_end0:
+
+; CHECK-MACOS-LABEL: .section __DATA,xray_instr_map{{$}}
+; CHECK-MACOS-LABEL: Lxray_sleds_start0:
+; CHECK-MACOS:         .quad Lxray_sled_0
+; CHECK-MACOS-LABEL: Lxray_sleds_end0:

diff  --git a/llvm/test/CodeGen/AArch64/xray-partial-instrumentation-skip-exit.ll b/llvm/test/CodeGen/AArch64/xray-partial-instrumentation-skip-exit.ll
index ecfa6ac29f62b..2097be44d16b6 100644
--- a/llvm/test/CodeGen/AArch64/xray-partial-instrumentation-skip-exit.ll
+++ b/llvm/test/CodeGen/AArch64/xray-partial-instrumentation-skip-exit.ll
@@ -1,4 +1,5 @@
-; RUN: llc -mtriple=aarch64-unknown-linux-gnu < %s | FileCheck %s
+; RUN: llc -mtriple=aarch64-unknown-linux-gnu < %s | FileCheck %s --check-prefixes=CHECK,CHECK-LINUX
+; RUN: llc -mtriple=aarch64-apple-darwin      < %s | FileCheck %s --check-prefixes=CHECK,CHECK-MACOS
 
 define i32 @foo() nounwind noinline uwtable "function-instrument"="xray-always" "xray-skip-exit" {
 ; CHECK-LABEL: Lxray_sled_0:
@@ -15,7 +16,13 @@ define i32 @foo() nounwind noinline uwtable "function-instrument"="xray-always"
 ; CHECK-NOT: Lxray_sled_1:
 ; CHECK:  ret
 }
-; CHECK-LABEL: xray_instr_map
-; CHECK-LABEL: Lxray_sleds_start0
-; CHECK:       .xword .Lxray_sled_0
-; CHECK-LABEL: Lxray_sleds_end0
+
+; CHECK-LINUX-LABEL: .section xray_instr_map,"ao", at progbits,foo{{$}}
+; CHECK-LINUX-LABEL: Lxray_sleds_start0:
+; CHECK-LINUX:         .xword .Lxray_sled_0
+; CHECK-LINUX-LABEL: Lxray_sleds_end0:
+
+; CHECK-MACOS-LABEL: .section __DATA,xray_instr_map{{$}}
+; CHECK-MACOS-LABEL: Lxray_sleds_start0:
+; CHECK-MACOS:         .quad Lxray_sled_0
+; CHECK-MACOS-LABEL: Lxray_sleds_end0:

diff  --git a/llvm/test/CodeGen/AArch64/xray-tail-call-sled.ll b/llvm/test/CodeGen/AArch64/xray-tail-call-sled.ll
index b4a541bca3284..d81496ce667f7 100644
--- a/llvm/test/CodeGen/AArch64/xray-tail-call-sled.ll
+++ b/llvm/test/CodeGen/AArch64/xray-tail-call-sled.ll
@@ -1,75 +1,99 @@
-; RUN: llc -mtriple=aarch64-linux-gnu < %s | FileCheck %s
-
-define i32 @callee() nounwind noinline uwtable "function-instrument"="xray-always" {
-; CHECK:       .p2align	2
-; CHECK-LABEL: .Lxray_sled_0:
-; CHECK-NEXT:  b	#32
-; CHECK-NEXT:  nop
-; CHECK-NEXT:  nop
-; CHECK-NEXT:  nop
-; CHECK-NEXT:  nop
-; CHECK-NEXT:  nop
-; CHECK-NEXT:  nop
-; CHECK-NEXT:  nop
-; CHECK-LABEL: .Ltmp0:
-  ret i32 0
-; CHECK-NEXT:  mov	w0, wzr
-; CHECK-NEXT:  .p2align	2
-; CHECK-LABEL: .Lxray_sled_1:
-; CHECK-NEXT:  b	#32
-; CHECK-NEXT:  nop
-; CHECK-NEXT:  nop
-; CHECK-NEXT:  nop
-; CHECK-NEXT:  nop
-; CHECK-NEXT:  nop
-; CHECK-NEXT:  nop
-; CHECK-NEXT:  nop
-; CHECK-LABEL: .Ltmp1:
-; CHECK-NEXT:  ret
-}
-; CHECK-LABEL: xray_instr_map
-; CHECK-LABEL: .Lxray_sleds_start0:
-; CHECK-NEXT:  .Ltmp2:
-; CHECK:       .xword .Lxray_sled_0-.Ltmp2
-; CHECK:       .Ltmp3:
-; CHECK-NEXT:  .xword .Lxray_sled_1-.Ltmp3
-; CHECK-LABEL: Lxray_sleds_end0:
-; CHECK-LABEL: xray_fn_idx
-; CHECK:       .xword .Lxray_sleds_start0
-; CHECK-NEXT:  .xword .Lxray_sleds_end0
-
-define i32 @caller() nounwind noinline uwtable "function-instrument"="xray-always" {
-; CHECK:       .p2align	2
-; CHECK-LABEL: Lxray_sled_2:
-; CHECK-NEXT:  b	#32
-; CHECK-NEXT:  nop
-; CHECK-NEXT:  nop
-; CHECK-NEXT:  nop
-; CHECK-NEXT:  nop
-; CHECK-NEXT:  nop
-; CHECK-NEXT:  nop
-; CHECK-NEXT:  nop
-; CHECK-LABEL: .Ltmp4:
-; CHECK:       .p2align	2
-; CHECK-LABEL: Lxray_sled_3:
-; CHECK-NEXT:  b	#32
-; CHECK-NEXT:  nop
-; CHECK-NEXT:  nop
-; CHECK-NEXT:  nop
-; CHECK-NEXT:  nop
-; CHECK-NEXT:  nop
-; CHECK-NEXT:  nop
-; CHECK-NEXT:  nop
-; CHECK-LABEL: .Ltmp5:
-  %retval = tail call i32 @callee()
-; CHECK:       b	callee
-  ret i32 %retval
-}
-; CHECK-LABEL: xray_instr_map
-; CHECK-LABEL: Lxray_sleds_start1:
-; CHECK:       .xword .Lxray_sled_2
-; CHECK:       .xword .Lxray_sled_3
-; CHECK-LABEL: Lxray_sleds_end1:
-; CHECK:       .section xray_fn_idx,{{.*}}
-; CHECK:       .xword .Lxray_sleds_start1
-; CHECK-NEXT:  .xword .Lxray_sleds_end1
+; RUN: llc -mtriple=aarch64-linux-gnu    < %s | FileCheck %s --check-prefixes=CHECK,CHECK-LINUX
+; RUN: llc -mtriple=aarch64-apple-darwin < %s | FileCheck %s --check-prefixes=CHECK,CHECK-MACOS
+
+define i32 @callee() nounwind noinline uwtable "function-instrument"="xray-always" {
+; CHECK:       .p2align	2
+; CHECK-LABEL: Lxray_sled_0:
+; CHECK-NEXT:  b	#32
+; CHECK-NEXT:  nop
+; CHECK-NEXT:  nop
+; CHECK-NEXT:  nop
+; CHECK-NEXT:  nop
+; CHECK-NEXT:  nop
+; CHECK-NEXT:  nop
+; CHECK-NEXT:  nop
+; CHECK-LABEL: Ltmp0:
+  ret i32 0
+; CHECK-NEXT:  mov	w0, wzr
+; CHECK-NEXT:  .p2align	2
+; CHECK-LABEL: Lxray_sled_1:
+; CHECK-NEXT:  b	#32
+; CHECK-NEXT:  nop
+; CHECK-NEXT:  nop
+; CHECK-NEXT:  nop
+; CHECK-NEXT:  nop
+; CHECK-NEXT:  nop
+; CHECK-NEXT:  nop
+; CHECK-NEXT:  nop
+; CHECK-LABEL: Ltmp1:
+; CHECK-NEXT:  ret
+}
+
+; CHECK-LINUX-LABEL: .section xray_instr_map,"ao", at progbits,callee{{$}}
+; CHECK-LINUX-LABEL: .Lxray_sleds_start0:
+; CHECK-LINUX-NEXT:  .Ltmp2:
+; CHECK-LINUX:         .xword .Lxray_sled_0-.Ltmp2
+; CHECK-LINUX:       .Ltmp3:
+; CHECK-LINUX-NEXT:    .xword .Lxray_sled_1-.Ltmp3
+; CHECK-LINUX-LABEL: Lxray_sleds_end0:
+; CHECK-LINUX-LABEL: .section xray_fn_idx,"awo", at progbits,callee{{$}}
+; CHECK-LINUX:         .xword .Lxray_sleds_start0
+; CHECK-LINUX-NEXT:    .xword .Lxray_sleds_end0
+
+; CHECK-MACOS-LABEL: .section __DATA,xray_instr_map{{$}}
+; CHECK-MACOS-LABEL: Lxray_sleds_start0:
+; CHECK-MACOS-NEXT:  Ltmp2:
+; CHECK-MACOS:         .quad Lxray_sled_0-Ltmp2
+; CHECK-MACOS:       Ltmp3:
+; CHECK-MACOS-NEXT:    .quad Lxray_sled_1-Ltmp3
+; CHECK-MACOS-LABEL: Lxray_sleds_end0:
+; CHECK-MACOS-LABEL: .section __DATA,xray_fn_idx{{$}}
+; CHECK-MACOS:         .quad Lxray_sleds_start0
+; CHECK-MACOS-NEXT:    .quad Lxray_sleds_end0
+
+define i32 @caller() nounwind noinline uwtable "function-instrument"="xray-always" {
+; CHECK:       .p2align	2
+; CHECK-LABEL: Lxray_sled_2:
+; CHECK-NEXT:  b	#32
+; CHECK-NEXT:  nop
+; CHECK-NEXT:  nop
+; CHECK-NEXT:  nop
+; CHECK-NEXT:  nop
+; CHECK-NEXT:  nop
+; CHECK-NEXT:  nop
+; CHECK-NEXT:  nop
+; CHECK-LABEL: Ltmp4:
+; CHECK:       .p2align	2
+; CHECK-LABEL: Lxray_sled_3:
+; CHECK-NEXT:  b	#32
+; CHECK-NEXT:  nop
+; CHECK-NEXT:  nop
+; CHECK-NEXT:  nop
+; CHECK-NEXT:  nop
+; CHECK-NEXT:  nop
+; CHECK-NEXT:  nop
+; CHECK-NEXT:  nop
+; CHECK-LABEL: Ltmp5:
+  %retval = tail call i32 @callee()
+; CHECK-LINUX: b	callee
+; CHECK-MACOS: b	_callee
+  ret i32 %retval
+}
+
+; CHECK-LINUX-LABEL: .section xray_instr_map,"ao", at progbits,caller{{$}}
+; CHECK-LINUX-LABEL: Lxray_sleds_start1:
+; CHECK-LINUX:         .xword .Lxray_sled_2
+; CHECK-LINUX:         .xword .Lxray_sled_3
+; CHECK-LINUX-LABEL: Lxray_sleds_end1:
+; CHECK-LINUX-LABEL: .section xray_fn_idx,"awo", at progbits,caller{{$}}
+; CHECK-LINUX:         .xword .Lxray_sleds_start1
+; CHECK-LINUX-NEXT:    .xword .Lxray_sleds_end1
+
+; CHECK-MACOS-LABEL: .section __DATA,xray_instr_map{{$}}
+; CHECK-MACOS-LABEL: Lxray_sleds_start1:
+; CHECK-MACOS:         .quad Lxray_sled_2
+; CHECK-MACOS:         .quad Lxray_sled_3
+; CHECK-MACOS-LABEL: Lxray_sleds_end1:
+; CHECK-MACOS-LABEL: .section __DATA,xray_fn_idx{{$}}
+; CHECK-MACOS:         .quad Lxray_sleds_start1
+; CHECK-MACOS-NEXT:    .quad Lxray_sleds_end1

diff  --git a/llvm/test/CodeGen/ARM/xray-armv6-attribute-instrumentation.ll b/llvm/test/CodeGen/ARM/xray-armv6-attribute-instrumentation.ll
index 53bc8d62fd833..ef81971c249c2 100644
--- a/llvm/test/CodeGen/ARM/xray-armv6-attribute-instrumentation.ll
+++ b/llvm/test/CodeGen/ARM/xray-armv6-attribute-instrumentation.ll
@@ -1,5 +1,5 @@
-; RUN: llc -mtriple=armv6-unknown-linux-gnu < %s | FileCheck %s
-; RUN: llc -mtriple=armv6-apple-ios6.0.0  < %s | FileCheck %s
+; RUN: llc -mtriple=armv6-unknown-linux-gnu < %s | FileCheck %s --check-prefixes=CHECK,CHECK-LINUX
+; RUN: llc -mtriple=armv6-apple-ios6.0.0    < %s | FileCheck %s --check-prefixes=CHECK,CHECK-IOS
 
 define i32 @foo() nounwind noinline uwtable "function-instrument"="xray-always" {
 ; CHECK-LABEL: Lxray_sled_0:
@@ -23,11 +23,21 @@ define i32 @foo() nounwind noinline uwtable "function-instrument"="xray-always"
 ; CHECK-LABEL: Ltmp1:
 ; CHECK-NEXT:  bx	lr
 }
-; CHECK-LABEL: xray_instr_map
-; CHECK-LABEL: Lxray_sleds_start0:
-; CHECK:       .long {{.*}}Lxray_sled_0
-; CHECK:       .long {{.*}}Lxray_sled_1
-; CHECK-LABEL: Lxray_sleds_end0:
-; CHECK-LABEL: xray_fn_idx
-; CHECK:       .long {{.*}}Lxray_sleds_start0
-; CHECK-NEXT:  .long {{.*}}Lxray_sleds_end0
+
+; CHECK-LINUX-LABEL: .section xray_instr_map,"ao",%progbits,foo{{$}}
+; CHECK-LINUX-LABEL: .Lxray_sleds_start0:
+; CHECK-LINUX:         .long .Lxray_sled_0
+; CHECK-LINUX:         .long .Lxray_sled_1
+; CHECK-LINUX-LABEL: .Lxray_sleds_end0:
+; CHECK-LINUX-LABEL: .section xray_fn_idx,"awo",%progbits,foo{{$}}
+; CHECK-LINUX:         .long .Lxray_sleds_start0
+; CHECK-LINUX-NEXT:    .long .Lxray_sleds_end0
+
+; CHECK-IOS-LABEL: .section __DATA,xray_instr_map{{$}}
+; CHECK-IOS-LABEL: Lxray_sleds_start0:
+; CHECK-IOS:         .long Lxray_sled_0
+; CHECK-IOS:         .long Lxray_sled_1
+; CHECK-IOS-LABEL: Lxray_sleds_end0:
+; CHECK-IOS-LABEL: .section __DATA,xray_fn_idx{{$}}
+; CHECK-IOS:         .long Lxray_sleds_start0
+; CHECK-IOS-NEXT:    .long Lxray_sleds_end0

diff  --git a/llvm/test/CodeGen/ARM/xray-armv7-attribute-instrumentation.ll b/llvm/test/CodeGen/ARM/xray-armv7-attribute-instrumentation.ll
index 98dbabcb6aba6..2acf066a6f96c 100644
--- a/llvm/test/CodeGen/ARM/xray-armv7-attribute-instrumentation.ll
+++ b/llvm/test/CodeGen/ARM/xray-armv7-attribute-instrumentation.ll
@@ -1,5 +1,5 @@
-; RUN: llc -mtriple=armv7-unknown-linux-gnu < %s | FileCheck %s
-; RUN: llc -mtriple=armv7-apple-ios6.0.0  < %s | FileCheck %s
+; RUN: llc -mtriple=armv7-unknown-linux-gnu < %s | FileCheck %s --check-prefixes=CHECK,CHECK-LINUX
+; RUN: llc -mtriple=armv7-apple-ios6.0.0    < %s | FileCheck %s --check-prefixes=CHECK,CHECK-IOS
 
 define i32 @foo() nounwind noinline uwtable "function-instrument"="xray-always" {
 ; CHECK-LABEL: Lxray_sled_0:
@@ -23,12 +23,21 @@ define i32 @foo() nounwind noinline uwtable "function-instrument"="xray-always"
 ; CHECK-LABEL: Ltmp1:
 ; CHECK-NEXT:  bx lr
 }
-; CHECK-LABEL: xray_instr_map
-; CHECK-LABEL: Lxray_sleds_start0:
-; CHECK:       .long {{.*}}Lxray_sled_0
-; CHECK:       .long {{.*}}Lxray_sled_1
-; CHECK-LABEL: Lxray_sleds_end0:
-; CHECK-LABEL: xray_fn_idx
-; CHECK:       .long {{.*}}xray_sleds_start0
-; CHECK-NEXT:  .long {{.*}}xray_sleds_end0
 
+; CHECK-LINUX-LABEL: .section xray_instr_map,"ao",%progbits,foo{{$}}
+; CHECK-LINUX-LABEL: .Lxray_sleds_start0:
+; CHECK-LINUX:         .long .Lxray_sled_0
+; CHECK-LINUX:         .long .Lxray_sled_1
+; CHECK-LINUX-LABEL: .Lxray_sleds_end0:
+; CHECK-LINUX-LABEL: .section xray_fn_idx,"awo",%progbits,foo{{$}}
+; CHECK-LINUX:         .long .Lxray_sleds_start0
+; CHECK-LINUX-NEXT:    .long .Lxray_sleds_end0
+
+; CHECK-IOS-LABEL: .section __DATA,xray_instr_map{{$}}
+; CHECK-IOS-LABEL: Lxray_sleds_start0:
+; CHECK-IOS:         .long Lxray_sled_0
+; CHECK-IOS:         .long Lxray_sled_1
+; CHECK-IOS-LABEL: Lxray_sleds_end0:
+; CHECK-IOS-LABEL: .section __DATA,xray_fn_idx{{$}}
+; CHECK-IOS:         .long Lxray_sleds_start0
+; CHECK-IOS-NEXT:    .long Lxray_sleds_end0

diff  --git a/llvm/test/CodeGen/X86/xray-attribute-instrumentation.ll b/llvm/test/CodeGen/X86/xray-attribute-instrumentation.ll
index 585c28ea12549..d62bb250620c2 100644
--- a/llvm/test/CodeGen/X86/xray-attribute-instrumentation.ll
+++ b/llvm/test/CodeGen/X86/xray-attribute-instrumentation.ll
@@ -1,6 +1,6 @@
-; RUN: llc -mtriple=x86_64-unknown-linux-gnu < %s | FileCheck %s
-; RUN: llc -mtriple=x86_64-unknown-linux-gnu -relocation-model=pic < %s | FileCheck %s
-; RUN: llc -mtriple=x86_64-darwin-unknown    < %s | FileCheck %s
+; RUN: llc -mtriple=x86_64-unknown-linux-gnu                       < %s | FileCheck %s --check-prefixes=CHECK,CHECK-LINUX
+; RUN: llc -mtriple=x86_64-unknown-linux-gnu -relocation-model=pic < %s | FileCheck %s --check-prefixes=CHECK,CHECK-LINUX
+; RUN: llc -mtriple=x86_64-darwin-unknown                          < %s | FileCheck %s --check-prefixes=CHECK,CHECK-MACOS
 
 define i32 @foo() nounwind noinline uwtable "function-instrument"="xray-always" {
 ; CHECK:       .p2align 1, 0x90
@@ -13,14 +13,24 @@ define i32 @foo() nounwind noinline uwtable "function-instrument"="xray-always"
 ; CHECK:       retq
 ; CHECK-NEXT:  nopw %cs:512(%rax,%rax)
 }
-; CHECK-LABEL: xray_instr_map
-; CHECK-LABEL: Lxray_sleds_start0:
-; CHECK:       .quad {{.*}}xray_sled_0
-; CHECK:       .quad {{.*}}xray_sled_1
-; CHECK-LABEL: Lxray_sleds_end0:
-; CHECK-LABEL: xray_fn_idx
-; CHECK:       .quad {{.*}}xray_sleds_start0
-; CHECK-NEXT:  .quad {{.*}}xray_sleds_end0
+
+; CHECK-LINUX-LABEL: .section xray_instr_map,"ao", at progbits,foo{{$}}
+; CHECK-LINUX-LABEL: .Lxray_sleds_start0:
+; CHECK-LINUX:         .quad .Lxray_sled_0
+; CHECK-LINUX:         .quad .Lxray_sled_1
+; CHECK-LINUX-LABEL: .Lxray_sleds_end0:
+; CHECK-LINUX-LABEL: .section xray_fn_idx,"awo", at progbits,foo{{$}}
+; CHECK-LINUX:         .quad .Lxray_sleds_start0
+; CHECK-LINUX-NEXT:    .quad .Lxray_sleds_end0
+
+; CHECK-MACOS-LABEL: .section __DATA,xray_instr_map{{$}}
+; CHECK-MACOS-LABEL: Lxray_sleds_start0:
+; CHECK-MACOS:         .quad Lxray_sled_0
+; CHECK-MACOS:         .quad Lxray_sled_1
+; CHECK-MACOS-LABEL: Lxray_sleds_end0:
+; CHECK-MACOS-LABEL: .section __DATA,xray_fn_idx{{$}}
+; CHECK-MACOS:         .quad Lxray_sleds_start0
+; CHECK-MACOS-NEXT:    .quad Lxray_sleds_end0
 
 
 ; We test multiple returns in a single function to make sure we're getting all
@@ -46,15 +56,29 @@ NotEqual:
 ; CHECK:       retq
 ; CHECK-NEXT:  nopw %cs:512(%rax,%rax)
 }
-; CHECK-LABEL: xray_instr_map
-; CHECK-LABEL: Lxray_sleds_start1:
-; CHECK:       Ltmp2:
-; CHECK-NEXT:   .quad {{.*}}xray_sled_2-{{\.?}}Ltmp2
-; CHECK:       Ltmp3:
-; CHECK-NEXT:   .quad {{.*}}xray_sled_3-{{\.?}}Ltmp3
-; CHECK:       Ltmp4:
-; CHECK-NEXT:   .quad {{.*}}xray_sled_4-{{\.?}}Ltmp4
-; CHECK-LABEL: Lxray_sleds_end1:
-; CHECK-LABEL: xray_fn_idx
-; CHECK:       .quad {{.*}}xray_sleds_start1
-; CHECK-NEXT:  .quad {{.*}}xray_sleds_end1
+
+; CHECK-LINUX-LABEL: .section xray_instr_map,"ao", at progbits,bar{{$}}
+; CHECK-LINUX-LABEL: .Lxray_sleds_start1:
+; CHECK-LINUX:       .Ltmp2:
+; CHECK-LINUX-NEXT:    .quad .Lxray_sled_2-.Ltmp2
+; CHECK-LINUX:       .Ltmp3:
+; CHECK-LINUX-NEXT:    .quad .Lxray_sled_3-.Ltmp3
+; CHECK-LINUX:       .Ltmp4:
+; CHECK-LINUX-NEXT:    .quad .Lxray_sled_4-.Ltmp4
+; CHECK-LINUX-LABEL: .Lxray_sleds_end1:
+; CHECK-LINUX-LABEL: .section xray_fn_idx,"awo", at progbits,bar{{$}}
+; CHECK-LINUX:         .quad .Lxray_sleds_start1
+; CHECK-LINUX-NEXT:    .quad .Lxray_sleds_end1
+
+; CHECK-MACOS-LABEL: .section __DATA,xray_instr_map{{$}}
+; CHECK-MACOS-LABEL: Lxray_sleds_start1:
+; CHECK-MACOS:       Ltmp2:
+; CHECK-MACOS-NEXT:    .quad Lxray_sled_2-Ltmp2
+; CHECK-MACOS:       Ltmp3:
+; CHECK-MACOS-NEXT:    .quad Lxray_sled_3-Ltmp3
+; CHECK-MACOS:       Ltmp4:
+; CHECK-MACOS-NEXT:    .quad Lxray_sled_4-Ltmp4
+; CHECK-MACOS-LABEL: Lxray_sleds_end1:
+; CHECK-MACOS-LABEL: .section __DATA,xray_fn_idx{{$}}
+; CHECK-MACOS:         .quad Lxray_sleds_start1
+; CHECK-MACOS-NEXT:    .quad Lxray_sleds_end1

diff  --git a/llvm/test/CodeGen/X86/xray-log-args.ll b/llvm/test/CodeGen/X86/xray-log-args.ll
index 1aac51f42c75a..a6a4ddc958896 100644
--- a/llvm/test/CodeGen/X86/xray-log-args.ll
+++ b/llvm/test/CodeGen/X86/xray-log-args.ll
@@ -1,7 +1,7 @@
 ; When logging arguments is specified, emit the entry sled accordingly.
 
-; RUN: llc -mtriple=x86_64-unknown-linux-gnu < %s | FileCheck %s
-; RUN: llc -mtriple=x86_64-darwin-unknown < %s | FileCheck %s
+; RUN: llc -mtriple=x86_64-unknown-linux-gnu < %s | FileCheck %s --check-prefixes=CHECK,CHECK-LINUX
+; RUN: llc -mtriple=x86_64-darwin-unknown    < %s | FileCheck %s --check-prefixes=CHECK,CHECK-MACOS
 
 define i32 @callee(i32 %arg) nounwind noinline uwtable "function-instrument"="xray-always" "xray-log-args"="1" {
   ret i32 %arg
@@ -9,38 +9,71 @@ define i32 @callee(i32 %arg) nounwind noinline uwtable "function-instrument"="xr
 ; CHECK-LABEL: callee:
 ; CHECK-NEXT:  Lfunc_begin0:
 
-; CHECK-LABEL: Lxray_sleds_start0:
-; CHECK-NEXT:  Ltmp0:
-; CHECK-NEXT:   .quad {{\.?}}Lxray_sled_0-{{\.?}}Ltmp0
-; CHECK-NEXT:   .quad {{\.?}}Lfunc_begin0-({{\.?}}Ltmp0+8)
-; CHECK-NEXT:   .byte 0x03
-; CHECK-NEXT:   .byte 0x01
-; CHECK-NEXT:   .byte 0x02
-; CHECK:        .{{(zero|space)}}  13
-; CHECK:       Ltmp1:
-; CHECK-NEXT:   .quad {{\.?}}Lxray_sled_1-{{\.?}}Ltmp1
-; CHECK-NEXT:   .quad {{\.?}}Lfunc_begin0-({{\.?}}Ltmp1+8)
-; CHECK-NEXT:   .byte 0x01
-; CHECK-NEXT:   .byte 0x01
-; CHECK-NEXT:   .byte 0x02
-; CHECK:  .{{(zero|space)}}  13
+; CHECK-LINUX-LABEL: .Lxray_sleds_start0:
+; CHECK-LINUX-NEXT:  .Ltmp0:
+; CHECK-LINUX-NEXT:    .quad .Lxray_sled_0-.Ltmp0
+; CHECK-LINUX-NEXT:    .quad .Lfunc_begin0-(.Ltmp0+8)
+; CHECK-LINUX-NEXT:    .byte 0x03
+; CHECK-LINUX-NEXT:    .byte 0x01
+; CHECK-LINUX-NEXT:    .byte 0x02
+; CHECK-LINUX:         .zero 13
+; CHECK-LINUX:       .Ltmp1:
+; CHECK-LINUX-NEXT:    .quad .Lxray_sled_1-.Ltmp1
+; CHECK-LINUX-NEXT:    .quad .Lfunc_begin0-(.Ltmp1+8)
+; CHECK-LINUX-NEXT:    .byte 0x01
+; CHECK-LINUX-NEXT:    .byte 0x01
+; CHECK-LINUX-NEXT:    .byte 0x02
+; CHECK-LINUX:         .zero 13
+
+; CHECK-MACOS-LABEL: Lxray_sleds_start0:
+; CHECK-MACOS-NEXT:  Ltmp0:
+; CHECK-MACOS-NEXT:    .quad Lxray_sled_0-Ltmp0
+; CHECK-MACOS-NEXT:    .quad Lfunc_begin0-(Ltmp0+8)
+; CHECK-MACOS-NEXT:    .byte 0x03
+; CHECK-MACOS-NEXT:    .byte 0x01
+; CHECK-MACOS-NEXT:    .byte 0x02
+; CHECK-MACOS:         .space 13
+; CHECK-MACOS:       Ltmp1:
+; CHECK-MACOS-NEXT:    .quad Lxray_sled_1-Ltmp1
+; CHECK-MACOS-NEXT:    .quad Lfunc_begin0-(Ltmp1+8)
+; CHECK-MACOS-NEXT:    .byte 0x01
+; CHECK-MACOS-NEXT:    .byte 0x01
+; CHECK-MACOS-NEXT:    .byte 0x02
+; CHECK-MACOS:         .space 13
 
 define i32 @caller(i32 %arg) nounwind noinline uwtable "function-instrument"="xray-always" "xray-log-args"="1" {
   %retval = tail call i32 @callee(i32 %arg)
   ret i32 %retval
 }
-; CHECK-LABEL: Lxray_sleds_start1:
-; CHECK-NEXT:  Ltmp3:
-; CHECK-NEXT:   .quad {{\.?}}Lxray_sled_2-{{\.?}}Ltmp3
-; CHECK-NEXT:   .quad {{\.?}}Lfunc_begin1-({{\.?}}Ltmp3+8)
-; CHECK-NEXT:   .byte 0x03
-; CHECK-NEXT:   .byte 0x01
-; CHECK-NEXT:   .byte 0x02
-; CHECK:  .{{(zero|space)}}  13
-; CHECK:       Ltmp4:
-; CHECK-NEXT:   .quad {{\.?}}Lxray_sled_3-{{\.?}}Ltmp4
-; CHECK-NEXT:   .quad {{\.?}}Lfunc_begin1-({{\.?}}Ltmp4+8)
-; CHECK-NEXT:   .byte 0x02
-; CHECK-NEXT:   .byte 0x01
-; CHECK-NEXT:   .byte 0x02
-; CHECK:  .{{(zero|space)}}  13
+
+; CHECK-LINUX-LABEL: .Lxray_sleds_start1:
+; CHECK-LINUX-NEXT:  .Ltmp3:
+; CHECK-LINUX-NEXT:    .quad .Lxray_sled_2-.Ltmp3
+; CHECK-LINUX-NEXT:    .quad .Lfunc_begin1-(.Ltmp3+8)
+; CHECK-LINUX-NEXT:    .byte 0x03
+; CHECK-LINUX-NEXT:    .byte 0x01
+; CHECK-LINUX-NEXT:    .byte 0x02
+; CHECK-LINUX:         .zero 13
+; CHECK-LINUX:       .Ltmp4:
+; CHECK-LINUX-NEXT:    .quad .Lxray_sled_3-.Ltmp4
+; CHECK-LINUX-NEXT:    .quad .Lfunc_begin1-(.Ltmp4+8)
+; CHECK-LINUX-NEXT:    .byte 0x02
+; CHECK-LINUX-NEXT:    .byte 0x01
+; CHECK-LINUX-NEXT:    .byte 0x02
+; CHECK-LINUX:         .zero 13
+
+; CHECK-MACOS-LABEL: Lxray_sleds_start1:
+; CHECK-MACOS-NEXT:  Ltmp3:
+; CHECK-MACOS-NEXT:    .quad Lxray_sled_2-Ltmp3
+; CHECK-MACOS-NEXT:    .quad Lfunc_begin1-(Ltmp3+8)
+; CHECK-MACOS-NEXT:    .byte 0x03
+; CHECK-MACOS-NEXT:    .byte 0x01
+; CHECK-MACOS-NEXT:    .byte 0x02
+; CHECK-MACOS:         .space 13
+; CHECK-MACOS:       Ltmp4:
+; CHECK-MACOS-NEXT:    .quad Lxray_sled_3-Ltmp4
+; CHECK-MACOS-NEXT:    .quad Lfunc_begin1-(Ltmp4+8)
+; CHECK-MACOS-NEXT:    .byte 0x02
+; CHECK-MACOS-NEXT:    .byte 0x01
+; CHECK-MACOS-NEXT:    .byte 0x02
+; CHECK-MACOS:         .space 13

diff  --git a/llvm/test/CodeGen/X86/xray-partial-instrumentation-skip-entry.ll b/llvm/test/CodeGen/X86/xray-partial-instrumentation-skip-entry.ll
index 83c254a0d8877..465aab3e32b34 100644
--- a/llvm/test/CodeGen/X86/xray-partial-instrumentation-skip-entry.ll
+++ b/llvm/test/CodeGen/X86/xray-partial-instrumentation-skip-entry.ll
@@ -1,6 +1,6 @@
-; RUN: llc -mtriple=x86_64-unknown-linux-gnu < %s | FileCheck %s
-; RUN: llc -mtriple=x86_64-unknown-linux-gnu -relocation-model=pic < %s | FileCheck %s
-; RUN: llc -mtriple=x86_64-darwin-unknown    < %s | FileCheck %s
+; RUN: llc -mtriple=x86_64-unknown-linux-gnu                       < %s | FileCheck %s --check-prefixes=CHECK,CHECK-LINUX
+; RUN: llc -mtriple=x86_64-unknown-linux-gnu -relocation-model=pic < %s | FileCheck %s --check-prefixes=CHECK,CHECK-LINUX
+; RUN: llc -mtriple=x86_64-darwin-unknown                          < %s | FileCheck %s --check-prefixes=CHECK,CHECK-MACOS
 
 define i32 @foo() nounwind noinline uwtable "function-instrument"="xray-always" "xray-skip-entry" {
 ; CHECK-NOT: Lxray_sled_0:
@@ -10,13 +10,22 @@ define i32 @foo() nounwind noinline uwtable "function-instrument"="xray-always"
 ; CHECK:       retq
 ; CHECK-NEXT:  nopw %cs:512(%rax,%rax)
 }
-; CHECK-LABEL: xray_instr_map
-; CHECK-LABEL: Lxray_sleds_start0:
-; CHECK:       .quad {{.*}}xray_sled_0
-; CHECK-LABEL: Lxray_sleds_end0:
-; CHECK-LABEL: xray_fn_idx
-; CHECK:       .quad {{.*}}xray_sleds_start0
-; CHECK-NEXT:  .quad {{.*}}xray_sleds_end0
+
+; CHECK-LINUX-LABEL: .section xray_instr_map,"ao", at progbits,foo{{$}}
+; CHECK-LINUX-LABEL: .Lxray_sleds_start0:
+; CHECK-LINUX:         .quad .Lxray_sled_0
+; CHECK-LINUX-LABEL: .Lxray_sleds_end0:
+; CHECK-LINUX-LABEL: .section xray_fn_idx,"awo", at progbits,foo{{$}}
+; CHECK-LINUX:         .quad .Lxray_sleds_start0
+; CHECK-LINUX-NEXT:    .quad .Lxray_sleds_end0
+
+; CHECK-MACOS-LABEL: .section __DATA,xray_instr_map{{$}}
+; CHECK-MACOS-LABEL: Lxray_sleds_start0:
+; CHECK-MACOS:         .quad Lxray_sled_0
+; CHECK-MACOS-LABEL: Lxray_sleds_end0:
+; CHECK-MACOS-LABEL: .section __DATA,xray_fn_idx{{$}}
+; CHECK-MACOS:         .quad Lxray_sleds_start0
+; CHECK-MACOS-NEXT:    .quad Lxray_sleds_end0
 
 
 ; We test multiple returns in a single function to make sure we're getting all
@@ -39,11 +48,21 @@ NotEqual:
 ; CHECK:       retq
 ; CHECK-NEXT:  nopw %cs:512(%rax,%rax)
 }
-; CHECK-LABEL: xray_instr_map
-; CHECK-LABEL: Lxray_sleds_start1:
-; CHECK:       .quad {{.*}}xray_sled_1
-; CHECK:       .quad {{.*}}xray_sled_2
-; CHECK-LABEL: Lxray_sleds_end1:
-; CHECK-LABEL: xray_fn_idx
-; CHECK:       .quad {{.*}}xray_sleds_start1
-; CHECK-NEXT:  .quad {{.*}}xray_sleds_end1
+
+; CHECK-LINUX-LABEL: .section xray_instr_map,"ao", at progbits,bar{{$}}
+; CHECK-LINUX-LABEL: .Lxray_sleds_start1:
+; CHECK-LINUX:         .quad .Lxray_sled_1
+; CHECK-LINUX:         .quad .Lxray_sled_2
+; CHECK-LINUX-LABEL: .Lxray_sleds_end1:
+; CHECK-LINUX-LABEL: .section xray_fn_idx,"awo", at progbits,bar{{$}}
+; CHECK-LINUX:         .quad .Lxray_sleds_start1
+; CHECK-LINUX-NEXT:    .quad .Lxray_sleds_end1
+
+; CHECK-MACOS-LABEL: .section __DATA,xray_instr_map{{$}}
+; CHECK-MACOS-LABEL: Lxray_sleds_start1:
+; CHECK-MACOS:         .quad Lxray_sled_1
+; CHECK-MACOS:         .quad Lxray_sled_2
+; CHECK-MACOS-LABEL: Lxray_sleds_end1:
+; CHECK-MACOS-LABEL: .section __DATA,xray_fn_idx{{$}}
+; CHECK-MACOS:         .quad Lxray_sleds_start1
+; CHECK-MACOS-NEXT:    .quad Lxray_sleds_end1

diff  --git a/llvm/test/CodeGen/X86/xray-partial-instrumentation-skip-exit.ll b/llvm/test/CodeGen/X86/xray-partial-instrumentation-skip-exit.ll
index a7afad5980196..7d9ec92d770e0 100644
--- a/llvm/test/CodeGen/X86/xray-partial-instrumentation-skip-exit.ll
+++ b/llvm/test/CodeGen/X86/xray-partial-instrumentation-skip-exit.ll
@@ -12,13 +12,22 @@ define i32 @foo() nounwind noinline uwtable "function-instrument"="xray-always"
 ; CHECK-NOT: Lxray_sled_1:
 ; CHECK:       retq
 }
-; CHECK-LABEL: xray_instr_map
-; CHECK-LABEL: Lxray_sleds_start0:
-; CHECK:       .quad {{.*}}xray_sled_0
-; CHECK-LABEL: Lxray_sleds_end0:
-; CHECK-LABEL: xray_fn_idx
-; CHECK:       .quad {{.*}}xray_sleds_start0
-; CHECK-NEXT:  .quad {{.*}}xray_sleds_end0
+
+; CHECK-LINUX-LABEL: .section xray_instr_map,"ao", at progbits,foo{{$}}
+; CHECK-LINUX-LABEL: .Lxray_sleds_start0:
+; CHECK-LINUX:         .quad .Lxray_sled_0
+; CHECK-LINUX-LABEL: .Lxray_sleds_end0:
+; CHECK-LINUX-LABEL: .section xray_fn_idx,"awo", at progbits,foo{{$}}
+; CHECK-LINUX:         .quad .Lxray_sleds_start0
+; CHECK-LINUX-NEXT:    .quad .Lxray_sleds_end0
+
+; CHECK-MACOS-LABEL: .section __DATA,xray_instr_map{{$}}
+; CHECK-MACOS-LABEL: Lxray_sleds_start0:
+; CHECK-MACOS:         .quad Lxray_sled_0
+; CHECK-MACOS-LABEL: Lxray_sleds_end0:
+; CHECK-MACOS-LABEL: .section __DATA,xray_fn_idx{{$}}
+; CHECK-MACOS:         .quad Lxray_sleds_start0
+; CHECK-MACOS-NEXT:    .quad Lxray_sleds_end0
 
 
 ; We test multiple returns in a single function to make sure we're skipping all
@@ -40,10 +49,19 @@ NotEqual:
 ; CHECK-NOT: Lxray_sled_{{.*}}:
 ; CHECK:       retq
 }
-; CHECK-LABEL: xray_instr_map
-; CHECK-LABEL: Lxray_sleds_start1:
-; CHECK:       .quad {{.*}}xray_sled_1
-; CHECK-LABEL: Lxray_sleds_end1:
-; CHECK-LABEL: xray_fn_idx
-; CHECK:       .quad {{.*}}xray_sleds_start1
-; CHECK-NEXT:  .quad {{.*}}xray_sleds_end1
+
+; CHECK-LINUX-LABEL: .section xray_instr_map,"ao", at progbits,bar{{$}}
+; CHECK-LINUX-LABEL: .Lxray_sleds_start1:
+; CHECK-LINUX:         .quad .Lxray_sled_1
+; CHECK-LINUX-LABEL: .Lxray_sleds_end1:
+; CHECK-LINUX-LABEL: .section xray_fn_idx,"awo", at progbits,bar{[$}}
+; CHECK-LINUX:         .quad .Lxray_sleds_start1
+; CHECK-LINUX-NEXT:    .quad .Lxray_sleds_end1
+
+; CHECK-MACOS-LABEL: .section __DATA,xray_instr_map{{$}}
+; CHECK-MACOS-LABEL: Lxray_sleds_start1:
+; CHECK-MACOS:         .quad Lxray_sled_1
+; CHECK-MACOS-LABEL: Lxray_sleds_end1:
+; CHECK-MACOS-LABEL: .section __DATA,xray_fn_idx{{$}}
+; CHECK-MACOS:         .quad Lxray_sleds_start1
+; CHECK-MACOS-NEXT:    .quad Lxray_sleds_end1

diff  --git a/llvm/test/CodeGen/X86/xray-tail-call-sled.ll b/llvm/test/CodeGen/X86/xray-tail-call-sled.ll
index b89f833abb3b8..d63102696a6ca 100644
--- a/llvm/test/CodeGen/X86/xray-tail-call-sled.ll
+++ b/llvm/test/CodeGen/X86/xray-tail-call-sled.ll
@@ -1,5 +1,5 @@
-; RUN: llc -mtriple=x86_64-unknown-linux-gnu < %s | FileCheck %s
-; RUN: llc -mtriple=x86_64-darwin-unknown    < %s | FileCheck %s
+; RUN: llc -mtriple=x86_64-unknown-linux-gnu < %s | FileCheck %s --check-prefixes=CHECK,CHECK-LINUX
+; RUN: llc -mtriple=x86_64-darwin-unknown    < %s | FileCheck %s --check-prefixes=CHECK,CHECK-MACOS
 
 define dso_local i32 @callee() nounwind noinline uwtable "function-instrument"="xray-always" {
 ; CHECK:       .p2align 1, 0x90
@@ -12,14 +12,24 @@ define dso_local i32 @callee() nounwind noinline uwtable "function-instrument"="
 ; CHECK:       retq
 ; CHECK-NEXT:  nopw %cs:512(%rax,%rax)
 }
-; CHECK-LABEL: xray_instr_map
-; CHECK-LABEL: Lxray_sleds_start0:
-; CHECK:       .quad {{.*}}xray_sled_0
-; CHECK:       .quad {{.*}}xray_sled_1
-; CHECK-LABEL: Lxray_sleds_end0:
-; CHECK-LABEL: xray_fn_idx
-; CHECK:       .quad {{.*}}xray_sleds_start0
-; CHECK-NEXT:  .quad {{.*}}xray_sleds_end0
+
+; CHECK-LINUX-LABEL: .section xray_instr_map,"ao", at progbits,callee{{$}}
+; CHECK-LINUX-LABEL: .Lxray_sleds_start0:
+; CHECK-LINUX:         .quad .Lxray_sled_0
+; CHECK-LINUX:         .quad .Lxray_sled_1
+; CHECK-LINUX-LABEL: .Lxray_sleds_end0:
+; CHECK-LINUX-LABEL: .section xray_fn_idx,"awo", at progbits,callee{{$}}
+; CHECK-LINUX:         .quad .Lxray_sleds_start0
+; CHECK-LINUX-NEXT:    .quad .Lxray_sleds_end0
+
+; CHECK-MACOS-LABEL: .section __DATA,xray_instr_map{{$}}
+; CHECK-MACOS-LABEL: Lxray_sleds_start0:
+; CHECK-MACOS:         .quad Lxray_sled_0
+; CHECK-MACOS:         .quad Lxray_sled_1
+; CHECK-MACOS-LABEL: Lxray_sleds_end0:
+; CHECK-MACOS-LABEL: .section __DATA,xray_fn_idx{{$}}
+; CHECK-MACOS:         .quad Lxray_sleds_start0
+; CHECK-MACOS-NEXT:    .quad Lxray_sleds_end0
 
 define dso_local i32 @caller() nounwind noinline uwtable "function-instrument"="xray-always" {
 ; CHECK:       .p2align 1, 0x90
@@ -34,11 +44,21 @@ define dso_local i32 @caller() nounwind noinline uwtable "function-instrument"="
 ; CHECK:       jmp {{.*}}callee {{.*}}# TAILCALL
   ret i32 %retval
 }
-; CHECK-LABEL: xray_instr_map
-; CHECK-LABEL: Lxray_sleds_start1:
-; CHECK:       .quad {{.*}}xray_sled_2
-; CHECK:       .quad {{.*}}xray_sled_3
-; CHECK-LABEL: Lxray_sleds_end1:
-; CHECK-LABEL: xray_fn_idx
-; CHECK:       .quad {{.*}}xray_sleds_start1
-; CHECK:       .quad {{.*}}xray_sleds_end1
+
+; CHECK-LINUX-LABEL: .section xray_instr_map,"ao", at progbits,caller{{$}}
+; CHECK-LINUX-LABEL: .Lxray_sleds_start1:
+; CHECK-LINUX:         .quad .Lxray_sled_2
+; CHECK-LINUX:         .quad .Lxray_sled_3
+; CHECK-LINUX-LABEL: .Lxray_sleds_end1:
+; CHECK-LINUX-LABEL: .section xray_fn_idx,"awo", at progbits,caller{{$}}
+; CHECK-LINUX:         .quad .Lxray_sleds_start1
+; CHECK-LINUX:         .quad .Lxray_sleds_end1
+
+; CHECK-MACOS-LABEL: .section __DATA,xray_instr_map{{$}}
+; CHECK-MACOS-LABEL: Lxray_sleds_start1:
+; CHECK-MACOS:         .quad Lxray_sled_2
+; CHECK-MACOS:         .quad Lxray_sled_3
+; CHECK-MACOS-LABEL: Lxray_sleds_end1:
+; CHECK-MACOS-LABEL: .section __DATA,xray_fn_idx{{$}}
+; CHECK-MACOS:         .quad Lxray_sleds_start1
+; CHECK-MACOS:         .quad Lxray_sleds_end1


        


More information about the llvm-commits mailing list