Author: Nathan Gauër Date: 2025-06-02T11:51:53-04:00 New Revision: df5f65d22a697ec67725bac3660d4540769af8b2
URL: https://github.com/llvm/llvm-project/commit/df5f65d22a697ec67725bac3660d4540769af8b2 DIFF: https://github.com/llvm/llvm-project/commit/df5f65d22a697ec67725bac3660d4540769af8b2.diff LOG: [SPIR-V] Only emit __spirv__ when targeting HLSL (#142401) OpenCL translator has a `__spirv` namespace, and defining the `__spirv__` macro causes issues downstream on the OpenCL side. This macro is needed to keep compatibility with HLSL/DXC, but can be avoided for other targets/languages. Added: Modified: clang/lib/Basic/Targets/SPIR.cpp clang/test/Preprocessor/predefined-macros.c Removed: ################################################################################ diff --git a/clang/lib/Basic/Targets/SPIR.cpp b/clang/lib/Basic/Targets/SPIR.cpp index 7ab5014a06647..2336fb3ef0495 100644 --- a/clang/lib/Basic/Targets/SPIR.cpp +++ b/clang/lib/Basic/Targets/SPIR.cpp @@ -87,7 +87,8 @@ void SPIR64TargetInfo::getTargetDefines(const LangOptions &Opts, void BaseSPIRVTargetInfo::getTargetDefines(const LangOptions &Opts, MacroBuilder &Builder) const { DefineStd(Builder, "SPIRV", Opts); - DefineStd(Builder, "spirv", Opts); + if (Opts.HLSL) + DefineStd(Builder, "spirv", Opts); } void SPIRVTargetInfo::getTargetDefines(const LangOptions &Opts, diff --git a/clang/test/Preprocessor/predefined-macros.c b/clang/test/Preprocessor/predefined-macros.c index b7765bfa2fb14..da25b1efa3984 100644 --- a/clang/test/Preprocessor/predefined-macros.c +++ b/clang/test/Preprocessor/predefined-macros.c @@ -228,6 +228,7 @@ // CHECK-SPIRV32-DAG: #define __SPIRV__ 1 // CHECK-SPIRV32-DAG: #define __SPIRV32__ 1 // CHECK-SPIRV32-NOT: #define __SPIRV64__ 1 +// CHECK-SPIRV32-NOT: #define __spirv__ 1 // RUN: %clang_cc1 %s -E -dM -o - -x cl -triple spirv64-unknown-unknown \ // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-SPIRV64 @@ -235,6 +236,7 @@ // CHECK-SPIRV64-DAG: #define __SPIRV__ 1 // CHECK-SPIRV64-DAG: #define __SPIRV64__ 1 // CHECK-SPIRV64-NOT: #define __SPIRV32__ 1 +// CHECK-SPIRV64-NOT: #define __spirv__ 1 // RUN: %clang_cc1 %s -E -dM -o - -x cl -triple spirv64-amd-amdhsa \ // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-SPIRV64-AMDGCN @@ -245,6 +247,7 @@ // CHECK-SPIRV64-AMDGCN-DAG: #define __AMDGCN__ 1 // CHECK-SPIRV64-AMDGCN-DAG: #define __AMDGPU__ 1 // CHECK-SPIRV64-AMDGCN-NOT: #define __SPIRV32__ 1 +// CHECK-SPIRV64-AMDGCN-NOT: #define __spirv__ 1 // RUN: %clang_cc1 %s -E -dM -o - -x hip -triple x86_64-unknown-linux-gnu \ // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-HIP _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
