From f6d5244a524980ba589acfacfaadd4b46c205c9a Mon Sep 17 00:00:00 2001 From: Alexey Bader Date: Mon, 22 Dec 2025 09:09:51 -0800 Subject: [PATCH] [NFC][clang-linker-wrapper] Move Arch definition out of the loop. Add a TODO comment with plan for further alignment with the upstream code. The idea is replace SPIR-V AOT sub-targets with --arch option to separate JIT and AOT modes. --- clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp b/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp index ddabfef2519fd..23f94ade52d09 100644 --- a/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp +++ b/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp @@ -2256,6 +2256,12 @@ linkAndWrapDeviceFiles(ArrayRef> LinkerInputFiles, auto &SplitModules = *SplitModulesOrErr; const llvm::Triple Triple(LinkerArgs.getLastArgValue(OPT_triple_EQ)); + StringRef Arch = LinkerArgs.getLastArgValue(OPT_arch_EQ); + if (Arch.empty()) + Arch = "native"; + // TODO: Take into account Arch values considered as JIT: "native", + // "spir64", "spir", "spirv32" and "spirv64" for SPIR targets. + // For now we only consider NoSubArch target as JIT. bool IsJIT = Triple.isSPIROrSPIRV() && Triple.getSubArch() == llvm::Triple::NoSubArch; if ((Triple.isNVPTX() || Triple.isAMDGCN()) && @@ -2273,9 +2279,6 @@ linkAndWrapDeviceFiles(ArrayRef> LinkerInputFiles, } for (size_t I = 0, E = SplitModules.size(); I != E; ++I) { SmallVector Files = {SplitModules[I].ModuleFilePath}; - StringRef Arch = LinkerArgs.getLastArgValue(OPT_arch_EQ); - if (Arch.empty()) - Arch = "native"; SmallVector, 4> BundlerInputFiles; auto ClangOutputOrErr = linkDevice(Files, LinkerArgs, true /* IsSYCLKind */,