https://github.com/srividya-sundaram updated 
https://github.com/llvm/llvm-project/pull/229249

>From e78c0231d44986f0a3aff2fee6b54ed0e7c44303 Mon Sep 17 00:00:00 2001
From: srividya sundaram <[email protected]>
Date: Mon, 2 Nov 2026 14:35:37 -0800
Subject: [PATCH 1/4] [Clang][SYCL] Reject an unknown offload architecture on a
 SPIR-V target

On a spirv32-unknown-unknown or spirv64-unknown-unknown target, a SYCL 
--offload-arch or --no-offload-arch value must name an Intel GPU or CPU, an 
IGCA target or "generic". Diagnose anything else, e.g. a misspelled xe-pcv or 
xe-pvc:foo, as for CUDA and HIP, instead of building for a device that does not 
exist.
---
 clang/docs/ReleaseNotes.md                |  5 +++
 clang/lib/Driver/Driver.cpp               | 38 ++++++++++++----
 clang/test/Driver/sycl-intel-gpu-arch.cpp | 53 +++++++++++++++++++++++
 3 files changed, 87 insertions(+), 9 deletions(-)

diff --git a/clang/docs/ReleaseNotes.md b/clang/docs/ReleaseNotes.md
index 7a0169be43980e..c93cfb96007db3 100644
--- a/clang/docs/ReleaseNotes.md
+++ b/clang/docs/ReleaseNotes.md
@@ -1551,6 +1551,11 @@ The `alpha.cplusplus.UseAfterLifetimeEnd` checker was 
renamed to `alpha.core.Use
 
 ### SYCL Support
 
+- On a `spirv32-unknown-unknown` or `spirv64-unknown-unknown` offload target,
+  `--offload-arch` and `--no-offload-arch` must now name an Intel GPU or CPU, 
an
+  IGCA target or `generic`. Any other value, e.g. a misspelled `xe-pcv`, is an
+  error rather than a device job for a device that does not exist.
+
 #### Improvements
 
 ### Clang IR Improvements
diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
index 37fb69baf6a3eb..a9881b8a2f5824 100644
--- a/clang/lib/Driver/Driver.cpp
+++ b/clang/lib/Driver/Driver.cpp
@@ -3929,16 +3929,28 @@ void Driver::BuildActions(Compilation &C, 
DerivedArgList &Args,
   Args.ClaimAllArgs(options::OPT_cl_ignored_Group);
 }
 
-/// Returns the canonical name for the offloading architecture when using a HIP
-/// or CUDA architecture.
+/// \return true if \p Triple is a SPIR-V target with no vendor or OS, such as
+/// spirv64-unknown-unknown.
+static bool isPlainSPIRV(const llvm::Triple &Triple) {
+  return Triple.isSPIRV() &&
+         Triple.getVendor() == llvm::Triple::UnknownVendor &&
+         Triple.getOS() == llvm::Triple::UnknownOS;
+}
+
+/// Returns the canonical name for the offloading architecture \p ArchStr on
+/// \p Triple, or an empty string after diagnosing an architecture that
+/// \p Triple does not support.
 static StringRef getCanonicalArchString(Compilation &C,
                                         const llvm::opt::DerivedArgList &Args,
                                         StringRef ArchStr,
-                                        const llvm::Triple &Triple) {
-  // Lookup the CUDA / HIP architecture string. Only report an error if we were
-  // expecting the triple to be only NVPTX / AMDGPU.
+                                        const llvm::Triple &Triple,
+                                        Action::OffloadKind Kind) {
   OffloadArch Arch =
       StringToOffloadArch(getProcessorFromTargetID(Triple, ArchStr));
+  // An Intel name or "generic" takes no target features, so "xe-pvc:foo" is
+  // not "xe-pvc".
+  if ((Arch.isIntel() || Arch.isGeneric()) && ArchStr.contains(':'))
+    Arch = OffloadArch::getUnknown();
   if (Triple.isNVPTX() && (Arch.isUnknown() || !Arch.isNVPTX())) {
     C.getDriver().Diag(clang::diag::err_drv_offload_bad_gpu_arch)
         << "CUDA" << ArchStr;
@@ -3965,6 +3977,14 @@ static StringRef getCanonicalArchString(Compilation &C,
           << "IGCA" << ArchStr;
       return StringRef();
     }
+  } else if (Kind == Action::OFK_SYCL && isPlainSPIRV(Triple) &&
+             !ArchStr.empty() && !Arch.isIntel() && !Arch.isGeneric()) {
+    // A SYCL device on a plain SPIR-V target is an Intel GPU or CPU, an IGCA
+    // target or "generic". Reject anything else, as for CUDA and HIP, rather
+    // than build for a device that does not exist.
+    C.getDriver().Diag(clang::diag::err_drv_offload_bad_gpu_arch)
+        << "SYCL" << ArchStr;
+    return StringRef();
   }
 
   if (Arch.isNVPTX())
@@ -4027,7 +4047,7 @@ Driver::getOffloadArchs(Compilation &C, const 
llvm::opt::DerivedArgList &Args,
 
           for (auto ArchStr : *GPUsOrErr) {
             StringRef CanonicalStr = getCanonicalArchString(
-                C, Args, Args.MakeArgString(ArchStr), TC.getTriple());
+                C, Args, Args.MakeArgString(ArchStr), TC.getTriple(), Kind);
             if (!CanonicalStr.empty())
               Archs.insert(CanonicalStr);
             else
@@ -4035,7 +4055,7 @@ Driver::getOffloadArchs(Compilation &C, const 
llvm::opt::DerivedArgList &Args,
           }
         } else {
           StringRef CanonicalStr =
-              getCanonicalArchString(C, Args, Arch, TC.getTriple());
+              getCanonicalArchString(C, Args, Arch, TC.getTriple(), Kind);
           if (!CanonicalStr.empty())
             Archs.insert(CanonicalStr);
           else
@@ -4048,7 +4068,7 @@ Driver::getOffloadArchs(Compilation &C, const 
llvm::opt::DerivedArgList &Args,
           Archs.clear();
         } else {
           StringRef ArchStr =
-              getCanonicalArchString(C, Args, Arch, TC.getTriple());
+              getCanonicalArchString(C, Args, Arch, TC.getTriple(), Kind);
           Archs.erase(ArchStr);
         }
       }
@@ -4104,7 +4124,7 @@ Driver::getOffloadArchs(Compilation &C, const 
llvm::opt::DerivedArgList &Args,
                                   ? ""
                                   : OffloadArchToString(TripleOffloadArch);
     StringRef CanonicalStr =
-        getCanonicalArchString(C, Args, ArchStr, TC.getTriple());
+        getCanonicalArchString(C, Args, ArchStr, TC.getTriple(), Kind);
     if (!CanonicalStr.empty())
       Archs.insert(CanonicalStr);
   }
diff --git a/clang/test/Driver/sycl-intel-gpu-arch.cpp 
b/clang/test/Driver/sycl-intel-gpu-arch.cpp
index e0169b95b84ee3..df793573b5cc5b 100644
--- a/clang/test/Driver/sycl-intel-gpu-arch.cpp
+++ b/clang/test/Driver/sycl-intel-gpu-arch.cpp
@@ -57,3 +57,56 @@
 // RUN:   -nocudalib --offload-arch=xe-pvc -c %s 2>&1 \
 // RUN:   | FileCheck -check-prefixes=CHK-CUDA %s
 // CHK-CUDA: error: unsupported CUDA gpu architecture: xe-pvc
+
+/// On a plain SPIR-V target, a SYCL device must be an Intel GPU or CPU, an 
IGCA
+/// target or "generic".
+// RUN: not %clang -### --target=x86_64-unknown-linux-gnu -fsycl \
+// RUN:   --offload-targets=spirv64-unknown-unknown --offload-arch=xe-pcv -c 
%s 2>&1 \
+// RUN:   | FileCheck -check-prefixes=CHK-BAD-ARCH %s
+// CHK-BAD-ARCH: error: unsupported SYCL gpu architecture: xe-pcv
+// RUN: not %clang -### --target=x86_64-unknown-linux-gnu -fsycl \
+// RUN:   --offload-targets=spirv64-unknown-unknown --offload-arch=bmg_g21 -c 
%s 2>&1 \
+// RUN:   | FileCheck -check-prefixes=CHK-BAD-ARCH-OLD %s
+// CHK-BAD-ARCH-OLD: error: unsupported SYCL gpu architecture: bmg_g21
+// RUN: not %clang -### --target=x86_64-unknown-linux-gnu -fsycl \
+// RUN:   --offload-targets=spirv64-unknown-unknown --offload-arch=xe_12.60. 
-c %s 2>&1 \
+// RUN:   | FileCheck -check-prefixes=CHK-BAD-ARCH-NUM %s
+// CHK-BAD-ARCH-NUM: error: unsupported SYCL gpu architecture: xe_12.60.
+/// A numeric name names no device unless the list has its GPU IP version.
+// RUN: not %clang -### --target=x86_64-unknown-linux-gnu -fsycl \
+// RUN:   --offload-targets=spirv64-unknown-unknown --offload-arch=xe_40.11.0 
-c %s 2>&1 \
+// RUN:   | FileCheck -check-prefixes=CHK-BAD-ARCH-UNLISTED %s
+// RUN: not %clang -### --target=x86_64-unknown-linux-gnu -fsycl \
+// RUN:   --offload-arch=xe_40.11.0 -c %s 2>&1 \
+// RUN:   | FileCheck -check-prefixes=CHK-BAD-ARCH-UNLISTED %s
+// CHK-BAD-ARCH-UNLISTED: error: unsupported {{SYCL|offload}} gpu 
architecture: xe_40.11.0
+// RUN: not %clang -### --target=x86_64-unknown-linux-gnu -fsycl \
+// RUN:   --offload-targets=spirv64-unknown-unknown 
--offload-arch=xe-pvc:garbage -c %s 2>&1 \
+// RUN:   | FileCheck -check-prefixes=CHK-BAD-ARCH-SUFFIX %s
+// CHK-BAD-ARCH-SUFFIX: error: unsupported SYCL gpu architecture: 
xe-pvc:garbage
+// RUN: not %clang -### --target=x86_64-unknown-linux-gnu -fsycl \
+// RUN:   --offload-targets=spirv64-unknown-unknown --offload-arch=generic:foo 
-c %s 2>&1 \
+// RUN:   | FileCheck -check-prefixes=CHK-BAD-GENERIC %s
+// RUN: not %clang -### --target=x86_64-unknown-linux-gnu -fsycl \
+// RUN:   --offload-arch=generic:foo -c %s 2>&1 \
+// RUN:   | FileCheck -check-prefixes=CHK-BAD-GENERIC %s
+// CHK-BAD-GENERIC: error: unsupported SYCL gpu architecture: generic:foo
+/// As for CUDA and HIP, --no-offload-arch is checked too when the target is
+/// given.
+// RUN: not %clang -### --target=x86_64-unknown-linux-gnu -fsycl \
+// RUN:   --offload-targets=spirv64-unknown-unknown --offload-arch=xe-pvc \
+// RUN:   --no-offload-arch=foo -c %s 2>&1 \
+// RUN:   | FileCheck -check-prefixes=CHK-BAD-NO-ARCH %s
+// CHK-BAD-NO-ARCH: error: unsupported SYCL gpu architecture: foo
+/// Only a plain SPIR-V target is checked.
+// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fsycl \
+// RUN:   --offload-targets=spirv64-intel --offload-arch=foo -c %s 2>&1 \
+// RUN:   | FileCheck -check-prefixes=CHK-NOT-CHECKED %s
+// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fsycl \
+// RUN:   --offload-targets=spirv64-unknown-amdhsa --offload-arch=foo -c %s 
2>&1 \
+// RUN:   | FileCheck -check-prefixes=CHK-NOT-CHECKED %s
+// CHK-NOT-CHECKED-NOT: error:
+// RUN: %clang -ccc-print-phases --target=x86_64-unknown-linux-gnu -fsycl \
+// RUN:   --offload-targets=spirv64-unknown-unknown 
--offload-arch=graniterapids \
+// RUN:   -c %s 2>&1 | FileCheck -check-prefixes=CHK-GOOD-ARCH %s
+// CHK-GOOD-ARCH: offload, "device-sycl 
(spirv64-unknown-unknown:graniterapids)"

>From f6f580718a04e93ff0af32f02a9a97289fe05fea Mon Sep 17 00:00:00 2001
From: srividya sundaram <[email protected]>
Date: Mon, 2 Nov 2026 14:36:06 -0800
Subject: [PATCH 2/4] [Clang][SYCL] Require a plain SPIR-V target for an Intel
 offload architecture

Intel GPU and CPU names and IGCA targets always use a plain SPIR-V target such 
as spirv64-unknown-unknown, so diagnose them on any other SPIR-V target, e.g. 
spirv64-amd-amdhsa. A valid IGCA target now reaches this check too.
---
 clang/lib/Driver/Driver.cpp                  | 20 ++++++++++++++------
 clang/test/Driver/sycl-intel-gpu-arch.cpp    | 14 ++++++++++++++
 clang/test/Driver/sycl-offload-arch-igca.cpp | 10 ++++++++++
 3 files changed, 38 insertions(+), 6 deletions(-)

diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
index a9881b8a2f5824..787b2726c65aba 100644
--- a/clang/lib/Driver/Driver.cpp
+++ b/clang/lib/Driver/Driver.cpp
@@ -3971,12 +3971,13 @@ static StringRef getCanonicalArchString(Compilation &C,
         return StringRef();
       }
     }
-  } else if (Triple.isSPIRV() && ArchStr.starts_with("igca")) {
-    if (!StringToOffloadArch(ArchStr).isIntelIGCA()) {
-      C.getDriver().Diag(clang::diag::err_drv_offload_bad_gpu_arch)
-          << "IGCA" << ArchStr;
-      return StringRef();
-    }
+  } else if (Triple.isSPIRV() && ArchStr.starts_with("igca") &&
+             !StringToOffloadArch(ArchStr).isIntelIGCA()) {
+    // Only an invalid IGCA target stops here; a valid one still needs the
+    // SPIR-V target checks below.
+    C.getDriver().Diag(clang::diag::err_drv_offload_bad_gpu_arch)
+        << "IGCA" << ArchStr;
+    return StringRef();
   } else if (Kind == Action::OFK_SYCL && isPlainSPIRV(Triple) &&
              !ArchStr.empty() && !Arch.isIntel() && !Arch.isGeneric()) {
     // A SYCL device on a plain SPIR-V target is an Intel GPU or CPU, an IGCA
@@ -3985,6 +3986,13 @@ static StringRef getCanonicalArchString(Compilation &C,
     C.getDriver().Diag(clang::diag::err_drv_offload_bad_gpu_arch)
         << "SYCL" << ArchStr;
     return StringRef();
+  } else if (Kind == Action::OFK_SYCL && Triple.isSPIRV() &&
+             !isPlainSPIRV(Triple) && Arch.isIntel()) {
+    // An Intel name or IGCA target always uses a plain SPIR-V target, so
+    // reject it on any other SPIR-V target.
+    C.getDriver().Diag(clang::diag::err_target_unsupported_arch)
+        << ArchStr << Triple.str();
+    return StringRef();
   }
 
   if (Arch.isNVPTX())
diff --git a/clang/test/Driver/sycl-intel-gpu-arch.cpp 
b/clang/test/Driver/sycl-intel-gpu-arch.cpp
index df793573b5cc5b..038ef4afb2de67 100644
--- a/clang/test/Driver/sycl-intel-gpu-arch.cpp
+++ b/clang/test/Driver/sycl-intel-gpu-arch.cpp
@@ -106,6 +106,20 @@
 // RUN:   --offload-targets=spirv64-unknown-amdhsa --offload-arch=foo -c %s 
2>&1 \
 // RUN:   | FileCheck -check-prefixes=CHK-NOT-CHECKED %s
 // CHK-NOT-CHECKED-NOT: error:
+/// An Intel name needs a plain SPIR-V target.
+// RUN: not %clang -### --target=x86_64-unknown-linux-gnu -fsycl \
+// RUN:   --offload-targets=spirv64-intel --offload-arch=xe-pvc -c %s 2>&1 \
+// RUN:   | FileCheck -check-prefixes=CHK-NOT-PLAIN -DARCH=xe-pvc 
-DTRIPLE=spirv64-intel %s
+// RUN: not %clang -### --target=x86_64-unknown-linux-gnu -fsycl \
+// RUN:   --offload-targets=spirv64-amd-amdhsa --offload-arch=xe-pvc -c %s 
2>&1 \
+// RUN:   | FileCheck -check-prefixes=CHK-NOT-PLAIN -DARCH=xe-pvc 
-DTRIPLE=spirv64-amd-amdhsa %s
+// RUN: not %clang -### --target=x86_64-unknown-linux-gnu -fsycl \
+// RUN:   --offload-targets=spirv64-unknown-amdhsa --offload-arch=xe-pvc -c %s 
2>&1 \
+// RUN:   | FileCheck -check-prefixes=CHK-NOT-PLAIN -DARCH=xe-pvc 
-DTRIPLE=spirv64-unknown-amdhsa %s
+// RUN: not %clang -### --target=x86_64-unknown-linux-gnu -fsycl \
+// RUN:   --offload-targets=spirv64-intel --offload-arch=graniterapids -c %s 
2>&1 \
+// RUN:   | FileCheck -check-prefixes=CHK-NOT-PLAIN -DARCH=graniterapids 
-DTRIPLE=spirv64-intel %s
+// CHK-NOT-PLAIN: error: the target architecture '[[ARCH]]' is not supported 
by the target '[[TRIPLE]]'
 // RUN: %clang -ccc-print-phases --target=x86_64-unknown-linux-gnu -fsycl \
 // RUN:   --offload-targets=spirv64-unknown-unknown 
--offload-arch=graniterapids \
 // RUN:   -c %s 2>&1 | FileCheck -check-prefixes=CHK-GOOD-ARCH %s
diff --git a/clang/test/Driver/sycl-offload-arch-igca.cpp 
b/clang/test/Driver/sycl-offload-arch-igca.cpp
index 7a3a2b4f7d7ace..1b948af1bb9d57 100644
--- a/clang/test/Driver/sycl-offload-arch-igca.cpp
+++ b/clang/test/Driver/sycl-offload-arch-igca.cpp
@@ -33,3 +33,13 @@
 // RUN:   -c %s 2>&1 | FileCheck -check-prefix=CHK-AMDGPU %s
 // CHK-AMDGPU: error: unsupported HIP gpu architecture: igca_20ca
 // CHK-AMDGPU-NOT: llvm-offload-binary
+
+/// A valid IGCA target, like an Intel GPU name, needs a plain SPIR-V target:
+// RUN: not %clang -### --target=x86_64-unknown-linux-gnu -fsycl \
+// RUN:   --offload-targets=spirv64-amd-amdhsa --offload-arch=igca_20ca \
+// RUN:   -c %s 2>&1 | FileCheck -check-prefix=CHK-NOT-PLAIN 
-DTRIPLE=spirv64-amd-amdhsa %s
+// RUN: not %clang -### --target=x86_64-unknown-linux-gnu -fsycl \
+// RUN:   --offload-targets=spirv64-unknown-amdhsa --offload-arch=igca_20ca \
+// RUN:   -c %s 2>&1 | FileCheck -check-prefix=CHK-NOT-PLAIN 
-DTRIPLE=spirv64-unknown-amdhsa %s
+// CHK-NOT-PLAIN: error: the target architecture 'igca_20ca' is not supported 
by the target '[[TRIPLE]]'
+// CHK-NOT-PLAIN-NOT: llvm-offload-binary

>From 0fef0693bae54fa6db20aa13fb8429f6029aa766 Mon Sep 17 00:00:00 2001
From: srividya sundaram <[email protected]>
Date: Mon, 2 Nov 2026 14:47:57 -0800
Subject: [PATCH 3/4] [Clang][SYCL] Address review: reuse the parsed IGCA
 target, tighten tests

Use the already parsed architecture for the IGCA check instead of parsing it 
again, limit the target-feature check to SPIR-V, check the exact message for an 
unlisted numeric name with and without --offload-targets, and explain the Intel 
CPU test.
---
 clang/lib/Driver/Driver.cpp               | 9 +++++----
 clang/test/Driver/sycl-intel-gpu-arch.cpp | 6 ++++--
 2 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
index 787b2726c65aba..3286ee3edc8686 100644
--- a/clang/lib/Driver/Driver.cpp
+++ b/clang/lib/Driver/Driver.cpp
@@ -3947,9 +3947,10 @@ static StringRef getCanonicalArchString(Compilation &C,
                                         Action::OffloadKind Kind) {
   OffloadArch Arch =
       StringToOffloadArch(getProcessorFromTargetID(Triple, ArchStr));
-  // An Intel name or "generic" takes no target features, so "xe-pvc:foo" is
-  // not "xe-pvc".
-  if ((Arch.isIntel() || Arch.isGeneric()) && ArchStr.contains(':'))
+  // On SPIR-V, an Intel name or "generic" takes no target features, so
+  // "xe-pvc:foo" is not "xe-pvc".
+  if (Triple.isSPIRV() && (Arch.isIntel() || Arch.isGeneric()) &&
+      ArchStr.contains(':'))
     Arch = OffloadArch::getUnknown();
   if (Triple.isNVPTX() && (Arch.isUnknown() || !Arch.isNVPTX())) {
     C.getDriver().Diag(clang::diag::err_drv_offload_bad_gpu_arch)
@@ -3972,7 +3973,7 @@ static StringRef getCanonicalArchString(Compilation &C,
       }
     }
   } else if (Triple.isSPIRV() && ArchStr.starts_with("igca") &&
-             !StringToOffloadArch(ArchStr).isIntelIGCA()) {
+             !Arch.isIntelIGCA()) {
     // Only an invalid IGCA target stops here; a valid one still needs the
     // SPIR-V target checks below.
     C.getDriver().Diag(clang::diag::err_drv_offload_bad_gpu_arch)
diff --git a/clang/test/Driver/sycl-intel-gpu-arch.cpp 
b/clang/test/Driver/sycl-intel-gpu-arch.cpp
index 038ef4afb2de67..ed900b81ff3273 100644
--- a/clang/test/Driver/sycl-intel-gpu-arch.cpp
+++ b/clang/test/Driver/sycl-intel-gpu-arch.cpp
@@ -76,10 +76,11 @@
 // RUN: not %clang -### --target=x86_64-unknown-linux-gnu -fsycl \
 // RUN:   --offload-targets=spirv64-unknown-unknown --offload-arch=xe_40.11.0 
-c %s 2>&1 \
 // RUN:   | FileCheck -check-prefixes=CHK-BAD-ARCH-UNLISTED %s
+// CHK-BAD-ARCH-UNLISTED: error: unsupported SYCL gpu architecture: xe_40.11.0
 // RUN: not %clang -### --target=x86_64-unknown-linux-gnu -fsycl \
 // RUN:   --offload-arch=xe_40.11.0 -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefixes=CHK-BAD-ARCH-UNLISTED %s
-// CHK-BAD-ARCH-UNLISTED: error: unsupported {{SYCL|offload}} gpu 
architecture: xe_40.11.0
+// RUN:   | FileCheck -check-prefixes=CHK-BAD-ARCH-UNLISTED-INFER %s
+// CHK-BAD-ARCH-UNLISTED-INFER: error: unsupported offload gpu architecture: 
xe_40.11.0
 // RUN: not %clang -### --target=x86_64-unknown-linux-gnu -fsycl \
 // RUN:   --offload-targets=spirv64-unknown-unknown 
--offload-arch=xe-pvc:garbage -c %s 2>&1 \
 // RUN:   | FileCheck -check-prefixes=CHK-BAD-ARCH-SUFFIX %s
@@ -120,6 +121,7 @@
 // RUN:   --offload-targets=spirv64-intel --offload-arch=graniterapids -c %s 
2>&1 \
 // RUN:   | FileCheck -check-prefixes=CHK-NOT-PLAIN -DARCH=graniterapids 
-DTRIPLE=spirv64-intel %s
 // CHK-NOT-PLAIN: error: the target architecture '[[ARCH]]' is not supported 
by the target '[[TRIPLE]]'
+/// An Intel CPU is accepted on a plain SPIR-V target.
 // RUN: %clang -ccc-print-phases --target=x86_64-unknown-linux-gnu -fsycl \
 // RUN:   --offload-targets=spirv64-unknown-unknown 
--offload-arch=graniterapids \
 // RUN:   -c %s 2>&1 | FileCheck -check-prefixes=CHK-GOOD-ARCH %s

>From db40f3ae6b518a0963f3187e616d98183e4669d9 Mon Sep 17 00:00:00 2001
From: srividya sundaram <[email protected]>
Date: Mon, 2 Nov 2026 15:02:04 -0800
Subject: [PATCH 4/4] [Clang][SYCL] Address review: add examples to two
 comments

---
 clang/lib/Driver/Driver.cpp               | 2 +-
 clang/test/Driver/sycl-intel-gpu-arch.cpp | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
index 3286ee3edc8686..e297585ebfdeea 100644
--- a/clang/lib/Driver/Driver.cpp
+++ b/clang/lib/Driver/Driver.cpp
@@ -3990,7 +3990,7 @@ static StringRef getCanonicalArchString(Compilation &C,
   } else if (Kind == Action::OFK_SYCL && Triple.isSPIRV() &&
              !isPlainSPIRV(Triple) && Arch.isIntel()) {
     // An Intel name or IGCA target always uses a plain SPIR-V target, so
-    // reject it on any other SPIR-V target.
+    // reject it on any other SPIR-V target, e.g. spirv64-amd-amdhsa.
     C.getDriver().Diag(clang::diag::err_target_unsupported_arch)
         << ArchStr << Triple.str();
     return StringRef();
diff --git a/clang/test/Driver/sycl-intel-gpu-arch.cpp 
b/clang/test/Driver/sycl-intel-gpu-arch.cpp
index ed900b81ff3273..312785ba6a2e85 100644
--- a/clang/test/Driver/sycl-intel-gpu-arch.cpp
+++ b/clang/test/Driver/sycl-intel-gpu-arch.cpp
@@ -59,7 +59,7 @@
 // CHK-CUDA: error: unsupported CUDA gpu architecture: xe-pvc
 
 /// On a plain SPIR-V target, a SYCL device must be an Intel GPU or CPU, an 
IGCA
-/// target or "generic".
+/// target (e.g. igca_20ca) or "generic".
 // RUN: not %clang -### --target=x86_64-unknown-linux-gnu -fsycl \
 // RUN:   --offload-targets=spirv64-unknown-unknown --offload-arch=xe-pcv -c 
%s 2>&1 \
 // RUN:   | FileCheck -check-prefixes=CHK-BAD-ARCH %s

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

Reply via email to