https://github.com/AlexVlx created 
https://github.com/llvm/llvm-project/pull/166565

It is possible to run into situations where no mcpu is specified for an offload 
device side compilation. Currently, this'd lead to a rather uninformative blank 
being presented as the target for a failing compilation, when messaging the 
error count. This patch changes things so that if there is no `-mcpu` we print 
the triple, which is slightly more helpful, especially when there are multiple 
offload targets for a single compilation.

>From f1a56e2a45240ddaa457e5f28dd0f3c4e136450d Mon Sep 17 00:00:00 2001
From: Alex Voicu <[email protected]>
Date: Wed, 5 Nov 2025 13:52:43 +0000
Subject: [PATCH] Print out the offload triple when there's no `mcpu`
 available.

---
 clang/lib/Frontend/CompilerInstance.cpp    | 6 +++++-
 clang/test/SemaCUDA/error-includes-mode.cu | 9 +++++++++
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/clang/lib/Frontend/CompilerInstance.cpp 
b/clang/lib/Frontend/CompilerInstance.cpp
index 6b09f7f9fc1e3..f8df204cf4618 100644
--- a/clang/lib/Frontend/CompilerInstance.cpp
+++ b/clang/lib/Frontend/CompilerInstance.cpp
@@ -1058,7 +1058,11 @@ void CompilerInstance::printDiagnosticStats() {
       if (!getLangOpts().CUDAIsDevice) {
         OS << " when compiling for host";
       } else {
-        OS << " when compiling for " << getTargetOpts().CPU;
+        OS << " when compiling for ";
+        if (getTargetOpts().CPU.empty())
+          OS << getTarget().getTriple().str();//"SPIR-V";
+        else
+          OS << getTargetOpts().CPU;
       }
     }
     OS << ".\n";
diff --git a/clang/test/SemaCUDA/error-includes-mode.cu 
b/clang/test/SemaCUDA/error-includes-mode.cu
index 257fdeceef654..f775e656b07a1 100644
--- a/clang/test/SemaCUDA/error-includes-mode.cu
+++ b/clang/test/SemaCUDA/error-includes-mode.cu
@@ -1,7 +1,16 @@
 // RUN: not %clang_cc1 -fsyntax-only %s 2>&1 | FileCheck --check-prefix HOST %s
 // RUN: not %clang_cc1 -triple nvptx-unknown-unknown -target-cpu sm_35 \
 // RUN:   -fcuda-is-device -fsyntax-only %s 2>&1 | FileCheck --check-prefix 
SM35 %s
+// RUN: not %clang_cc1 -triple spirv64-unknown-unknown \
+// RUN:   -fcuda-is-device -fsyntax-only %s 2>&1 | FileCheck --check-prefix 
SPIRV %s
+// RUN: not %clang_cc1 -triple spirv64-amd-amdhsa \
+// RUN:   -fcuda-is-device -fsyntax-only %s 2>&1 | FileCheck --check-prefix 
AMDGCNSPIRV %s
+// RUN: not %clang_cc1 -triple spirv64-intel-unknown \
+// RUN:   -fcuda-is-device -fsyntax-only %s 2>&1 | FileCheck --check-prefix 
INTELSPIRV %s
 
 // HOST: 1 error generated when compiling for host
 // SM35: 1 error generated when compiling for sm_35
+// SPIRV: 1 error generated when compiling for spirv64-unknown-unknown
+// AMDGCNSPIRV: 1 error generated when compiling for spirv64-amd-amdhsa
+// INTELSPIRV: 1 error generated when compiling for spirv64-intel-unknown
 error;

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

Reply via email to