[Clang][OpenMP] Add partial support for Static Device Libraries
authorSaiyedul Islam <Saiyedul.Islam@amd.com>
Tue, 28 Sep 2021 14:26:54 +0000 (14:26 +0000)
committerSaiyedul Islam <Saiyedul.Islam@amd.com>
Thu, 7 Oct 2021 04:45:19 +0000 (04:45 +0000)
commit4c4117089599cb5b6c6fa5635c28462ffd1bddf4
treebb271dc5b020c21a00856576cfee8ab91b268d0d
parent393581d8a5cb017da1b4c27456c92290751bdfae
[Clang][OpenMP] Add partial support for Static Device Libraries

An archive containing device code object files can be passed to
clang command line for linking. For each given offload target
it creates a device specific archives which is either passed to llvm-link
if the target is amdgpu, or to clang-nvlink-wrapper if the target is
nvptx. -L/-l flags are used to specify these fat archives on the command
line. E.g.
  clang++ -fopenmp -fopenmp-targets=nvptx64 main.cpp -L. -lmylib

It currently doesn't support linking an archive directly, like:
  clang++ -fopenmp -fopenmp-targets=nvptx64 main.cpp libmylib.a

Linking with x86 offload also does not work.

Reviewed By: ye-luo

Differential Revision: https://reviews.llvm.org/D105191
clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp
clang/lib/Driver/ToolChains/Clang.cpp
clang/lib/Driver/ToolChains/CommonArgs.cpp
clang/lib/Driver/ToolChains/CommonArgs.h
clang/lib/Driver/ToolChains/Cuda.cpp
clang/test/Driver/Inputs/openmp_static_device_link/libFatArchive.a [new file with mode: 0644]
clang/test/Driver/fat_archive_amdgpu.cpp [new file with mode: 0644]
clang/test/Driver/fat_archive_nvptx.cpp [new file with mode: 0644]
clang/tools/clang-offload-bundler/ClangOffloadBundler.cpp