From 7a21f07687aa398690cd580111b9cc81d6e76695 Mon Sep 17 00:00:00 2001 From: jinge90 Date: Tue, 5 Mar 2024 17:00:44 +0800 Subject: [PATCH] [SYCL][ASAN] apply only-needed when link asan libdevice (#12849) This patch removes some unused code in sanitizer libdevice and also appied 'only-needed' option when linking libsycl-santizer libdevice. --------- Signed-off-by: jinge90 --- clang/lib/Driver/ToolChains/SYCL.cpp | 2 ++ clang/test/Driver/sycl-device-lib.cpp | 2 ++ libdevice/include/spir_global_var.hpp | 9 --------- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/clang/lib/Driver/ToolChains/SYCL.cpp b/clang/lib/Driver/ToolChains/SYCL.cpp index a9e60fe347126..03a88b9e89cf1 100644 --- a/clang/lib/Driver/ToolChains/SYCL.cpp +++ b/clang/lib/Driver/ToolChains/SYCL.cpp @@ -371,6 +371,8 @@ static llvm::SmallVector SYCLDeviceLibList { "bfloat16", "crt", "cmath", "cmath-fp64", "complex", "complex-fp64", #if defined(_WIN32) "msvc-math", +#else + "sanitizer", #endif "imf", "imf-fp64", "itt-compiler-wrappers", "itt-stubs", "itt-user-wrappers", "fallback-cassert", "fallback-cstring", diff --git a/clang/test/Driver/sycl-device-lib.cpp b/clang/test/Driver/sycl-device-lib.cpp index 325505bad4556..c4b95e9477c0c 100644 --- a/clang/test/Driver/sycl-device-lib.cpp +++ b/clang/test/Driver/sycl-device-lib.cpp @@ -36,6 +36,7 @@ // SYCL_DEVICE_LIB_UNBUNDLE_DEFAULT-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-imf.o" "-output={{.*}}libsycl-fallback-imf-{{.*}}.o" "-unbundle" // SYCL_DEVICE_LIB_UNBUNDLE_DEFAULT-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-imf-fp64.o" "-output={{.*}}libsycl-fallback-imf-fp64-{{.*}}.o" "-unbundle" // SYCL_DEVICE_LIB_UNBUNDLE_DEFAULT-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-fallback-imf-bf16.o" "-output={{.*}}libsycl-fallback-imf-bf16-{{.*}}.o" "-unbundle" + /// ########################################################################### /// test sycl fallback device libraries are not linked by default // RUN: %clangxx -fsycl -fsycl-device-lib-jit-link %s --sysroot=%S/Inputs/SYCL -### 2>&1 \ @@ -251,3 +252,4 @@ // SYCL_DEVICE_ASAN_MACRO-SAME: "USE_SYCL_DEVICE_ASAN" // SYCL_DEVICE_ASAN_MACRO-NEXT: llvm-link{{.*}} // SYCL_DEVICE_ASAN_MACRO: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-sanitizer.o" "-output={{.*}}libsycl-sanitizer-{{.*}}.o" "-unbundle" +// SYCL_DEVICE_ASAN_MACRO: llvm-link{{.*}} "-only-needed" "{{.*}}" "-o" "{{.*}}.bc" "--suppress-warnings" diff --git a/libdevice/include/spir_global_var.hpp b/libdevice/include/spir_global_var.hpp index 4bf1cb8daefae..ed757480ae8d4 100644 --- a/libdevice/include/spir_global_var.hpp +++ b/libdevice/include/spir_global_var.hpp @@ -11,15 +11,6 @@ // Treat this header as system one to workaround frontend's restriction #pragma clang system_header -#ifndef SPIR_GLOBAL_VAR -#ifdef __SYCL_DEVICE_ONLY__ -#define SPIR_GLOBAL_VAR __attribute__((sycl_global_var)) -#else -#warning "SPIR_GLOBAL_VAR not defined in host mode. Defining as empty macro." -#define SPIR_GLOBAL_VAR -#endif -#endif - #define __SYCL_GLOBAL__ __attribute__((opencl_global)) #define __SYCL_LOCAL__ __attribute__((opencl_local)) #define __SYCL_PRIVATE__ __attribute__((opencl_private))