From d2af8ccea6af7fea72012a4f4ae10ed6d6486eff Mon Sep 17 00:00:00 2001 From: srividya sundaram Date: Wed, 14 Oct 2026 12:18:42 -0700 Subject: [PATCH 1/3] [SYCL][Driver] Select the device sanitizer library for all intel_gpu_* aliases The device sanitizer library was selected by comparing the -fsycl-targets value with the exact strings intel_gpu_pvc and intel_gpu_dg2*, so aliases of the same devices, e.g. intel_gpu_12_60_7 for PVC or intel_gpu_12_55_8 and intel_gpu_acm_g10 for DG2, got the generic library. Resolve the alias to the device first, as done for -device with spir64_gen. --- clang/lib/Driver/ToolChains/SYCL.cpp | 8 ++++++-- clang/test/Driver/sycl-device-lib.cpp | 10 ++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/clang/lib/Driver/ToolChains/SYCL.cpp b/clang/lib/Driver/ToolChains/SYCL.cpp index 355dc16a9ab96..f348c6ec2a8b4 100644 --- a/clang/lib/Driver/ToolChains/SYCL.cpp +++ b/clang/lib/Driver/ToolChains/SYCL.cpp @@ -553,10 +553,14 @@ static void addSYCLDeviceSanitizerLibs( if (SYCLTargetStr.starts_with("spir64_x86_64")) return AOT_CPU; - if (SYCLTargetStr == "intel_gpu_pvc") + // Resolve intel_gpu_* so that every alias of a device (e.g. + // intel_gpu_12_60_7 for pvc) selects the same library. + StringRef GenDevice = SYCL::gen::resolveGenDevice(SYCLTargetStr); + std::string Temp; + if (!GenDevice.empty() && checkPVCDevice(GenDevice.str(), Temp)) return AOT_PVC; - if (SYCLTargetStr.starts_with("intel_gpu_dg2")) + if (GenDevice == "dg2" || GenDevice.starts_with("acm_g")) return AOT_DG2; if (SYCLTargetStr.starts_with("spir64_gen")) { diff --git a/clang/test/Driver/sycl-device-lib.cpp b/clang/test/Driver/sycl-device-lib.cpp index bdeeb8e868323..4b4f08ee96e30 100644 --- a/clang/test/Driver/sycl-device-lib.cpp +++ b/clang/test/Driver/sycl-device-lib.cpp @@ -49,6 +49,8 @@ /// test behavior of linking libsycl-asan-pvc for PVC target AOT compilation when asan flag is applied. // RUN: %clangxx -fsycl -fsycl-targets=intel_gpu_pvc --offload-new-driver %s --sysroot=%S/Inputs/SYCL \ // RUN: -Xarch_device -fsanitize=address -### 2>&1 | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_ASAN_PVC +// RUN: %clangxx -fsycl -fsycl-targets=intel_gpu_12_60_7 --offload-new-driver %s --sysroot=%S/Inputs/SYCL \ +// RUN: -Xarch_device -fsanitize=address -### 2>&1 | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_ASAN_PVC // RUN: %clangxx -fsycl -fsycl-targets=spir64_gen --offload-new-driver %s --sysroot=%S/Inputs/SYCL \ // RUN: -Xarch_device -fsanitize=address -Xsycl-target-backend "-device pvc" -### 2>&1 \ // RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_ASAN_PVC @@ -98,6 +100,10 @@ /// test behavior of linking libsycl-asan-dg2 for DG2 target AOT compilation when asan flag is applied. // RUN: %clangxx -fsycl -fsycl-targets=intel_gpu_dg2_g10 --offload-new-driver %s --sysroot=%S/Inputs/SYCL \ // RUN: -Xarch_device -fsanitize=address -### 2>&1 | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_ASAN_DG2 +// RUN: %clangxx -fsycl -fsycl-targets=intel_gpu_12_55_8 --offload-new-driver %s --sysroot=%S/Inputs/SYCL \ +// RUN: -Xarch_device -fsanitize=address -### 2>&1 | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_ASAN_DG2 +// RUN: %clangxx -fsycl -fsycl-targets=intel_gpu_acm_g10 --offload-new-driver %s --sysroot=%S/Inputs/SYCL \ +// RUN: -Xarch_device -fsanitize=address -### 2>&1 | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_ASAN_DG2 // RUN: %clangxx -fsycl -fsycl-targets=spir64_gen --offload-new-driver %s --sysroot=%S/Inputs/SYCL \ // RUN: -Xarch_device -fsanitize=address -Xsycl-target-backend "-device dg2" -### 2>&1 \ // RUN: | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_ASAN_DG2 @@ -151,6 +157,8 @@ /// test behavior of msan libdevice linking when -fsanitize=memory is available for AOT targets // RUN: %clangxx -fsycl -fsycl-targets=intel_gpu_pvc --offload-new-driver %s --sysroot=%S/Inputs/SYCL \ // RUN: -fsanitize=memory -### 2>&1 | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_MSAN_PVC +// RUN: %clangxx -fsycl -fsycl-targets=intel_gpu_12_60_7 --offload-new-driver %s --sysroot=%S/Inputs/SYCL \ +// RUN: -fsanitize=memory -### 2>&1 | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_MSAN_PVC // SYCL_DEVICE_LIB_MSAN_PVC: clang{{.*}} "-mlink-bitcode-file" "{{.*}}libsycl-msan-pvc.bc" /// test behavior of msan libdevice linking when -fsanitize=memory is available for AOT targets @@ -183,6 +191,8 @@ /// test behavior of tsan libdevice linking when -fsanitize=thread is available for AOT targets // RUN: %clangxx -fsycl -fsycl-targets=intel_gpu_pvc --offload-new-driver %s --sysroot=%S/Inputs/SYCL \ // RUN: -fsanitize=thread -### 2>&1 | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_TSAN_PVC +// RUN: %clangxx -fsycl -fsycl-targets=intel_gpu_12_60_7 --offload-new-driver %s --sysroot=%S/Inputs/SYCL \ +// RUN: -fsanitize=thread -### 2>&1 | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_TSAN_PVC // SYCL_DEVICE_LIB_TSAN_PVC: clang{{.*}} "-mlink-bitcode-file" "{{.*}}libsycl-tsan-pvc.bc" /// test behavior of tsan libdevice linking when -fsanitize=thread is available for AOT targets From d454268fb90d01240dc0ecca5a9885ee5e9ae666 Mon Sep 17 00:00:00 2001 From: srividya sundaram Date: Wed, 14 Oct 2026 14:06:48 -0700 Subject: [PATCH 2/3] Trigger CI with the new-offload-model label From 98aaffdeb45232be4de353360a64b5547ab58cb3 Mon Sep 17 00:00:00 2001 From: srividya sundaram Date: Wed, 14 Oct 2026 15:30:32 -0700 Subject: [PATCH 3/3] Compare the resolved device with pvc directly --- clang/lib/Driver/ToolChains/SYCL.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/clang/lib/Driver/ToolChains/SYCL.cpp b/clang/lib/Driver/ToolChains/SYCL.cpp index f348c6ec2a8b4..f00a39aa8238a 100644 --- a/clang/lib/Driver/ToolChains/SYCL.cpp +++ b/clang/lib/Driver/ToolChains/SYCL.cpp @@ -556,8 +556,7 @@ static void addSYCLDeviceSanitizerLibs( // Resolve intel_gpu_* so that every alias of a device (e.g. // intel_gpu_12_60_7 for pvc) selects the same library. StringRef GenDevice = SYCL::gen::resolveGenDevice(SYCLTargetStr); - std::string Temp; - if (!GenDevice.empty() && checkPVCDevice(GenDevice.str(), Temp)) + if (GenDevice == "pvc") return AOT_PVC; if (GenDevice == "dg2" || GenDevice.starts_with("acm_g"))