[all-commits] [llvm/llvm-project] 8aafa5: [clang][sycl][nvlink] Share static library linking...
Alexey Bader via All-commits
all-commits at lists.llvm.org
Fri Jun 5 15:41:25 PDT 2026
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 8aafa50c7a2dfb8ca1d5cdf8980f7f2d259779f5
https://github.com/llvm/llvm-project/commit/8aafa50c7a2dfb8ca1d5cdf8980f7f2d259779f5
Author: Alexey Bader <alexey.bader at intel.com>
Date: 2026-06-05 (Fri, 05 Jun 2026)
Changed paths:
M clang/docs/ClangSYCLLinker.rst
M clang/test/OffloadTools/clang-sycl-linker/basic.ll
M clang/test/OffloadTools/clang-sycl-linker/link.ll
M clang/test/OffloadTools/clang-sycl-linker/split-mode.ll
M clang/test/OffloadTools/clang-sycl-linker/triple.ll
M clang/tools/clang-nvlink-wrapper/CMakeLists.txt
M clang/tools/clang-nvlink-wrapper/ClangNVLinkWrapper.cpp
M clang/tools/clang-sycl-linker/ClangSYCLLinker.cpp
M clang/tools/clang-sycl-linker/SYCLLinkOpts.td
A llvm/include/llvm/Frontend/Offloading/ArchiveLinker.h
A llvm/lib/Frontend/Offloading/ArchiveLinker.cpp
M llvm/lib/Frontend/Offloading/CMakeLists.txt
Log Message:
-----------
[clang][sycl][nvlink] Share static library linking in Frontend/Offloading (#201253)
Move clang-nvlink-wrapper's archive member selection engine into a new
shared library in llvm/lib/Frontend/Offloading (ArchiveLinker.h/.cpp)
and use it from both clang-nvlink-wrapper and clang-sycl-linker, adding
static library (.a) and -l support to the SYCL linker.
The shared llvm::offloading::resolveArchiveMembers() API:
- Searches -L paths for -l library names (lib<name>.a or :<name>)
- Expands archives, honouring --whole-archive/--no-whole-archive
- Runs a symbol-driven fixed-point loop to extract only the archive
members that resolve undefined symbols
- Returns the resolved MemoryBuffers and symbol table; the symbol table
is consumed by clang-nvlink-wrapper's LTO resolution pass
clang-sycl-linker gains -l, --whole-archive/--no-whole-archive, and -u
options (added to SYCLLinkOpts.td). The previous --bc-library option
has been removed in favor of the standard -l mechanism.
Bug fixes included:
* Fix dangling StringRef UB: Args.getAllArgValues() returns a temporary
vector; retain it in ForcedUndefStorage so the StringRefs
remain valid through the resolveArchiveMembers call (both tools).
* Fix assert crash in clang-sycl-linker when all positional inputs are
non-existent: return a proper error instead of propagating an empty
buffer vector to linkInputs.
* Fixed forced undefined symbol handling: corrected -u option
processing to properly handle symbols.
Co-Authored-By: Claude
To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications
More information about the All-commits
mailing list