[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