[clang] [clang-sycl-linker][NFC] Refactor for backend extensibility (PR #192886)

Alexey Bader via cfe-commits cfe-commits at lists.llvm.org
Sun Apr 19 19:21:24 PDT 2026


https://github.com/bader updated https://github.com/llvm/llvm-project/pull/192886

>From d29233c857b424e6f4210d7f8ea1fd1ca9b51689 Mon Sep 17 00:00:00 2001
From: Alexey Bader <alexey.bader at intel.com>
Date: Thu, 16 Apr 2026 19:13:58 -0700
Subject: [PATCH 1/2] [clang-sycl-linker][NFC] Refactor for backend
 extensibility

Use OutputFileNameExt variable for codegen output extension.
Avoid shadowing OffloadArch type name with local variable.
Simplify codegen loop to single SplitModules assignment.
---
 .../clang-sycl-linker/ClangSYCLLinker.cpp     | 23 +++++++++++--------
 1 file changed, 13 insertions(+), 10 deletions(-)

diff --git a/clang/tools/clang-sycl-linker/ClangSYCLLinker.cpp b/clang/tools/clang-sycl-linker/ClangSYCLLinker.cpp
index 99e1a78a97bf3..b6e35cfd16d08 100644
--- a/clang/tools/clang-sycl-linker/ClangSYCLLinker.cpp
+++ b/clang/tools/clang-sycl-linker/ClangSYCLLinker.cpp
@@ -450,10 +450,10 @@ static Error runAOTCompileIntelGPU(StringRef InputFile, StringRef OutputFile,
 static Error runAOTCompile(StringRef InputFile, StringRef OutputFile,
                            const ArgList &Args) {
   StringRef Arch = Args.getLastArgValue(OPT_arch_EQ);
-  OffloadArch OffloadArch = StringToOffloadArch(Arch);
-  if (IsIntelGPUOffloadArch(OffloadArch))
+  OffloadArch OA = StringToOffloadArch(Arch);
+  if (IsIntelGPUOffloadArch(OA))
     return runAOTCompileIntelGPU(InputFile, OutputFile, Args);
-  if (IsIntelCPUOffloadArch(OffloadArch))
+  if (IsIntelCPUOffloadArch(OA))
     return runAOTCompileIntelCPU(InputFile, OutputFile, Args);
 
   return createStringError(inconvertibleErrorCode(), "Unsupported arch");
@@ -501,18 +501,21 @@ Error runSYCLLink(ArrayRef<std::string> Files, const ArgList &Args) {
   bool IsAOTCompileNeeded = IsIntelOffloadArch(
       StringToOffloadArch(Args.getLastArgValue(OPT_arch_EQ)));
 
+  StringRef OutputFileNameExt = ".spv";
+
   // Code generation step.
   for (size_t I = 0, E = SplitModules.size(); I != E; ++I) {
     StringRef Stem = OutputFile.rsplit('.').first;
-    std::string SPVFile = (Stem + "_" + Twine(I) + ".spv").str();
-    if (Error Err = runCodeGen(SplitModules[I], Args, SPVFile, C))
+    std::string CodeGenFile =
+        (Stem + "_" + Twine(I) + OutputFileNameExt).str();
+
+    if (Error Err = runCodeGen(SplitModules[I], Args, CodeGenFile, C))
       return Err;
-    if (!IsAOTCompileNeeded) {
-      SplitModules[I] = SPVFile;
-    } else {
-      // AOT compilation step.
+
+    SplitModules[I] = CodeGenFile;
+    if (IsAOTCompileNeeded) {
       std::string AOTFile = (Stem + "_" + Twine(I) + ".out").str();
-      if (Error Err = runAOTCompile(SPVFile, AOTFile, Args))
+      if (Error Err = runAOTCompile(CodeGenFile, AOTFile, Args))
         return Err;
       SplitModules[I] = AOTFile;
     }

>From 8146ad4f4993dc6a7f01180ba537a84a4abdbc2c Mon Sep 17 00:00:00 2001
From: Alexey Bader <alexey.bader at intel.com>
Date: Sun, 19 Apr 2026 19:21:07 -0700
Subject: [PATCH 2/2] clang-format

---
 clang/tools/clang-sycl-linker/ClangSYCLLinker.cpp | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/clang/tools/clang-sycl-linker/ClangSYCLLinker.cpp b/clang/tools/clang-sycl-linker/ClangSYCLLinker.cpp
index b6e35cfd16d08..c835c76788768 100644
--- a/clang/tools/clang-sycl-linker/ClangSYCLLinker.cpp
+++ b/clang/tools/clang-sycl-linker/ClangSYCLLinker.cpp
@@ -506,8 +506,7 @@ Error runSYCLLink(ArrayRef<std::string> Files, const ArgList &Args) {
   // Code generation step.
   for (size_t I = 0, E = SplitModules.size(); I != E; ++I) {
     StringRef Stem = OutputFile.rsplit('.').first;
-    std::string CodeGenFile =
-        (Stem + "_" + Twine(I) + OutputFileNameExt).str();
+    std::string CodeGenFile = (Stem + "_" + Twine(I) + OutputFileNameExt).str();
 
     if (Error Err = runCodeGen(SplitModules[I], Args, CodeGenFile, C))
       return Err;



More information about the cfe-commits mailing list