llvmorg-github-actions[bot] wrote:

<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-clang-driver

Author: Wenju He (wenju-he)

<details>
<summary>Changes</summary>

Fix libclc spirv-unknown-vulkan target build error: `SPIR-V target requires a 
valid shader stage environment`.

libclc clspv triple was canonicalized to `spirv-unknown-vulkan` in 6ef9671. 
Relax the restriction for libclc which is an OpenCL library that a specific 
shader stage is not made yet.

---
Full diff: https://github.com/llvm/llvm-project/pull/197144.diff


5 Files Affected:

- (modified) clang/include/clang/Basic/DiagnosticFrontendKinds.td (+2-2) 
- (modified) clang/lib/Basic/Targets/SPIR.h (+4-3) 
- (modified) clang/test/CodeGen/target-data.c (+8) 
- (modified) clang/test/Driver/spirv-toolchain.cl (+8) 
- (modified) clang/test/Frontend/spirv-target-validation.c (+1-1) 


``````````diff
diff --git a/clang/include/clang/Basic/DiagnosticFrontendKinds.td 
b/clang/include/clang/Basic/DiagnosticFrontendKinds.td
index f384a97b6825e..23886c5c13ecd 100644
--- a/clang/include/clang/Basic/DiagnosticFrontendKinds.td
+++ b/clang/include/clang/Basic/DiagnosticFrontendKinds.td
@@ -45,8 +45,8 @@ def note_fe_backend_plugin: Note<"%0">, BackendInfo;
 
 def err_target_spirv_requires_vulkan : Error<
     "SPIR-V target requires a Vulkan environment">;
-def err_target_spirv_requires_shader_stage : Error<
-    "SPIR-V target requires a valid shader stage environment">;
+def err_target_spirv_invalid_shader_stage : Error<
+    "SPIR-V target requires a valid shader stage or no environment">;
 
 def warn_fe_override_module : Warning<
     "overriding the module target triple with %0">,
diff --git a/clang/lib/Basic/Targets/SPIR.h b/clang/lib/Basic/Targets/SPIR.h
index 399904e8a3286..389cc075a3a0b 100644
--- a/clang/lib/Basic/Targets/SPIR.h
+++ b/clang/lib/Basic/Targets/SPIR.h
@@ -360,9 +360,10 @@ class LLVM_LIBRARY_VISIBILITY SPIRVTargetInfo : public 
BaseSPIRVTargetInfo {
       Diags.Report(diag::err_target_spirv_requires_vulkan);
       return false;
     }
-    if (getTriple().getEnvironment() < llvm::Triple::Pixel ||
-        getTriple().getEnvironment() > llvm::Triple::Amplification) {
-      Diags.Report(diag::err_target_spirv_requires_shader_stage);
+    if (getTriple().getEnvironment() != llvm::Triple::UnknownEnvironment &&
+        (getTriple().getEnvironment() < llvm::Triple::Pixel ||
+         getTriple().getEnvironment() > llvm::Triple::Amplification)) {
+      Diags.Report(diag::err_target_spirv_invalid_shader_stage);
       return false;
     }
     return true;
diff --git a/clang/test/CodeGen/target-data.c b/clang/test/CodeGen/target-data.c
index 3912c22cc8814..a5e0b814c7042 100644
--- a/clang/test/CodeGen/target-data.c
+++ b/clang/test/CodeGen/target-data.c
@@ -261,6 +261,14 @@
 // RUN: FileCheck %s -check-prefix=AMDGPUSPIRV64
 // AMDGPUSPIRV64: target datalayout = 
"e-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-n32:64-S32-G1-P4-A0"
 
+// RUN: %clang_cc1 -triple spirv-unknown-vulkan -o - -emit-llvm %s | \
+// RUN: FileCheck %s -check-prefix=SPIRVVULKAN
+// SPIRVVULKAN: target datalayout = "e-ve-i64:64-n8:16:32:64-G10"
+
+// RUN: %clang_cc1 -triple spirv32-unknown-vulkan -o - -emit-llvm %s | \
+// RUN: FileCheck %s -check-prefix=SPIRV32VULKAN
+// SPIRV32VULKAN: target datalayout = 
"e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-n8:16:32:64-G1"
+
 // RUN: %clang_cc1 -triple spirv64-unknown-vulkan -o - -emit-llvm %s | \
 // RUN: FileCheck %s -check-prefix=SPIRV64VULKAN
 // SPIRV64VULKAN: target datalayout = 
"e-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-n8:16:32:64-G1"
diff --git a/clang/test/Driver/spirv-toolchain.cl 
b/clang/test/Driver/spirv-toolchain.cl
index c67d0fefd01bc..6fd71caf2fddb 100644
--- a/clang/test/Driver/spirv-toolchain.cl
+++ b/clang/test/Driver/spirv-toolchain.cl
@@ -4,12 +4,20 @@
 // RUN: %clang -### --target=spirv64 -x ir -c %s 2>&1 | FileCheck 
--check-prefix=SPV64 %s
 // RUN: %clang -### --target=spirv64 -x clcpp -c %s 2>&1 | FileCheck 
--check-prefix=SPV64 %s
 // RUN: %clang -### --target=spirv64 -x c -c %s 2>&1 | FileCheck 
--check-prefix=SPV64 %s
+// RUN: %clang -### --target=spirv-unknown-vulkan -x c -c %s 2>&1 | FileCheck 
--check-prefix=SPVVK %s
+// RUN: %clang -### --target=spirv32-unknown-vulkan -x c -c %s 2>&1 | 
FileCheck --check-prefix=SPV32VK %s
 // RUN: %clang -### --target=spirv64-unknown-vulkan -x c -c %s 2>&1 | 
FileCheck --check-prefix=SPV64VK %s
 // RUN: %clang -### --target=spirv64-unknown-vulkan1.3 -x c -c %s 2>&1 | 
FileCheck --check-prefix=SPV64VK %s
 
 // SPV64: "-cc1" "-triple" "spirv64"
 // SPV64-SAME: "-o" {{".*o"}}
 
+// SPVVK: "-cc1" "-triple" "spirv-unknown-vulkan"
+// SPVVK-SAME: "-o" {{".*o"}}
+
+// SPV32VK: "-cc1" "-triple" "spirv32-unknown-vulkan"
+// SPV32VK-SAME: "-o" {{".*o"}}
+
 // SPV64VK: "-cc1" "-triple" "spirv64-unknown-vulkan{{(1\.3)?}}"
 // SPV64VK-SAME: "-o" {{".*o"}}
 
diff --git a/clang/test/Frontend/spirv-target-validation.c 
b/clang/test/Frontend/spirv-target-validation.c
index a463f7ffe7d90..9ac984ec6d70e 100644
--- a/clang/test/Frontend/spirv-target-validation.c
+++ b/clang/test/Frontend/spirv-target-validation.c
@@ -2,6 +2,6 @@
 // RUN: not %clang_cc1 -triple spirv-vulkan-mlibc %s 2>&1 | FileCheck %s 
--check-prefix=CHECK-SHADER
 
 // CHECK-VULKAN: error: SPIR-V target requires a Vulkan environment
-// CHECK-SHADER: error: SPIR-V target requires a valid shader stage environment
+// CHECK-SHADER: error: SPIR-V target requires a valid shader stage or no 
environment
 
 int main() { return 0; }

``````````

</details>


https://github.com/llvm/llvm-project/pull/197144
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to