[clang] e603df0 - [NvlinkWrapper] Add relocatable link support to LTO pass
Joseph Huber via cfe-commits
cfe-commits at lists.llvm.org
Fri Jul 26 07:51:32 PDT 2024
Author: Joseph Huber
Date: 2024-07-26T09:51:25-05:00
New Revision: e603df083be3d41680c6289bce549b022dcfe7d5
URL: https://github.com/llvm/llvm-project/commit/e603df083be3d41680c6289bce549b022dcfe7d5
DIFF: https://github.com/llvm/llvm-project/commit/e603df083be3d41680c6289bce549b022dcfe7d5.diff
LOG: [NvlinkWrapper] Add relocatable link support to LTO pass
Summary:
We need `-r` to work so we can preserve symbols.
Added:
Modified:
clang/tools/clang-nvlink-wrapper/ClangNVLinkWrapper.cpp
clang/tools/clang-nvlink-wrapper/NVLinkOpts.td
Removed:
################################################################################
diff --git a/clang/tools/clang-nvlink-wrapper/ClangNVLinkWrapper.cpp b/clang/tools/clang-nvlink-wrapper/ClangNVLinkWrapper.cpp
index 3885166e76ca7..30c45eda66288 100644
--- a/clang/tools/clang-nvlink-wrapper/ClangNVLinkWrapper.cpp
+++ b/clang/tools/clang-nvlink-wrapper/ClangNVLinkWrapper.cpp
@@ -598,10 +598,11 @@ Expected<SmallVector<StringRef>> getInput(const ArgList &Args) {
Res.Prevailing = !Sym.isUndefined() && ObjSym.File == *BitcodeFile;
// We need LTO to preseve the following global symbols:
- // 1) Symbols used in regular objects.
- // 2) Prevailing symbols that are needed visible to the gpu runtime.
+ // 1) All symbols during a relocatable link.
+ // 2) Symbols used in regular objects.
+ // 3) Prevailing symbols that are needed visible to the gpu runtime.
Res.VisibleToRegularObj =
- ObjSym.UsedInRegularObj ||
+ Args.hasArg(OPT_relocatable) || ObjSym.UsedInRegularObj ||
(Res.Prevailing &&
(Sym.getVisibility() != GlobalValue::HiddenVisibility &&
!Sym.canBeOmittedFromSymbolTable()));
diff --git a/clang/tools/clang-nvlink-wrapper/NVLinkOpts.td b/clang/tools/clang-nvlink-wrapper/NVLinkOpts.td
index 8c80a51b12a44..01bd0f85b1a33 100644
--- a/clang/tools/clang-nvlink-wrapper/NVLinkOpts.td
+++ b/clang/tools/clang-nvlink-wrapper/NVLinkOpts.td
@@ -73,6 +73,10 @@ def plugin_opt : Joined<["--", "-"], "plugin-opt=">, Flags<[WrapperOnlyOption]>,
def save_temps : Flag<["--", "-"], "save-temps">,
Flags<[WrapperOnlyOption]>, HelpText<"Save intermediate results">;
+def relocatable : Flag<["--", "-"], "relocatable">,
+ Flags<[WrapperOnlyOption]>, HelpText<"Perform a relocatable link (LTO only)">;
+def r : Flag<["-"], "r">, Flags<[WrapperOnlyOption]>, Alias<relocatable>;
+
def whole_archive : Flag<["--", "-"], "whole-archive">,
Flags<[WrapperOnlyOption, HelpHidden]>;
def no_whole_archive : Flag<["--", "-"], "no-whole-archive">,
@@ -83,8 +87,7 @@ def mllvm : Separate<["-"], "mllvm">, Flags<[WrapperOnlyOption]>,
HelpText<"Arguments passed to LLVM, including Clang invocations, for which "
"the '-mllvm' prefix is preserved. Use '-mllvm --help' for a list "
"of options.">;
-def mllvm_EQ : Joined<["-"], "mllvm=">, Flags<[HelpHidden]>,
- Alias<mllvm>;
+def mllvm_EQ : Joined<["-"], "mllvm=">, Flags<[HelpHidden]>, Alias<mllvm>;
def dry_run : Flag<["--", "-"], "dry-run">, Flags<[WrapperOnlyOption]>,
HelpText<"Print generated commands without running.">;
More information about the cfe-commits
mailing list