[clang] [clang-sycl-linker] Forward all --ocloc-options occurrences to ocloc (PR #211075)
via cfe-commits
cfe-commits at lists.llvm.org
Tue Jul 21 11:52:02 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang
Author: Alexey Bader (bader)
<details>
<summary>Changes</summary>
getLastArgValue() only returned the final --ocloc-options= occurrence,
silently dropping earlier ones when the option is passed multiple
times (one token per occurrence). Use getAllArgValues() so every
occurrence is forwarded to ocloc.
---
Full diff: https://github.com/llvm/llvm-project/pull/211075.diff
2 Files Affected:
- (modified) clang/test/OffloadTools/clang-sycl-linker/basic.ll (+6)
- (modified) clang/tools/clang-sycl-linker/ClangSYCLLinker.cpp (+5-2)
``````````diff
diff --git a/clang/test/OffloadTools/clang-sycl-linker/basic.ll b/clang/test/OffloadTools/clang-sycl-linker/basic.ll
index 448a166e0a5e1..00e3bba8d297e 100644
--- a/clang/test/OffloadTools/clang-sycl-linker/basic.ll
+++ b/clang/test/OffloadTools/clang-sycl-linker/basic.ll
@@ -118,6 +118,12 @@
; AOT-INTEL-GPU-NEXT: sycl-bundle: image kind: o, triple: spirv64, arch: bmg_g21
; AOT-INTEL-GPU-NOT: {{.+}}
;
+; Test that all --ocloc-options are passed to ocloc, even if they contain spaces or quotes.
+; RUN: clang-sycl-linker --dry-run -v --module-split-mode=link_unit -arch=bmg_g21 %t/input1.bc -o %t/aot-gpu.out 2>&1 \
+; RUN: --ocloc-options="-a -b" --ocloc-options=-c --ocloc-options="d" --ocloc-options='"-e -f"' \
+; RUN: | FileCheck %s --check-prefix=AOT-INTEL-OCLOC-OPTIONS
+; AOT-INTEL-OCLOC-OPTIONS: "{{.*}}ocloc{{.*}}" {{.*}}-device bmg_g21 -a -b -c d "-e -f"
+;
; Test AOT compilation for an Intel CPU.
; Test that IMG_Object image kind is set for AOT compilation (Intel CPU).
; RUN: clang-sycl-linker --dry-run -v --module-split-mode=link_unit -arch=graniterapids %t/input1.bc %t/input2.bc -o %t/aot-cpu.out 2>&1 \
diff --git a/clang/tools/clang-sycl-linker/ClangSYCLLinker.cpp b/clang/tools/clang-sycl-linker/ClangSYCLLinker.cpp
index 5e937507289ec..acb529faa0b51 100644
--- a/clang/tools/clang-sycl-linker/ClangSYCLLinker.cpp
+++ b/clang/tools/clang-sycl-linker/ClangSYCLLinker.cpp
@@ -725,8 +725,11 @@ static Error runAOTCompileIntelGPU(StringRef InputFile, StringRef OutputFile,
CmdArgs.push_back("-device");
CmdArgs.push_back(Arch);
- StringRef ExtraArgs = Args.getLastArgValue(OPT_ocloc_options_EQ);
- ExtraArgs.split(CmdArgs, " ", /*MaxSplit=*/-1, /*KeepEmpty=*/false);
+ // getAllArgValues returns a temporary vector; retain it so the StringRefs
+ // remain valid through the executeCommands call below.
+ std::vector<std::string> ExtraArgsStorage =
+ Args.getAllArgValues(OPT_ocloc_options_EQ);
+ llvm::append_range(CmdArgs, ExtraArgsStorage);
CmdArgs.push_back("-output");
CmdArgs.push_back(OutputFile);
``````````
</details>
https://github.com/llvm/llvm-project/pull/211075
More information about the cfe-commits
mailing list