[PATCH] D92060: [lld] Add --no-lto-whole-program-visibility
Teresa Johnson via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Nov 24 14:56:27 PST 2020
tejohnson created this revision.
tejohnson added a reviewer: MaskRay.
Herald added subscribers: dang, steven_wu, hiraditya, arichardson, inglorion, emaste.
Herald added a reviewer: espindola.
Herald added a project: LLVM.
tejohnson requested review of this revision.
Enables overriding earlier --lto-whole-program-visibility.
Variant of D91583 <https://reviews.llvm.org/D91583> while discussing alternate ways to identify and
handle the --export-dynamic case.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D92060
Files:
lld/ELF/Driver.cpp
lld/ELF/Options.td
lld/test/ELF/lto/devirt_vcall_vis_public.ll
Index: lld/test/ELF/lto/devirt_vcall_vis_public.ll
===================================================================
--- lld/test/ELF/lto/devirt_vcall_vis_public.ll
+++ lld/test/ELF/lto/devirt_vcall_vis_public.ll
@@ -31,6 +31,14 @@
; RUN: ld.lld %t2.o -o %t3 -save-temps \
; RUN: -mllvm -pass-remarks=. --export-dynamic 2>&1 | FileCheck %s --implicit-check-not single-impl --allow-empty
; RUN: llvm-dis %t2.o.4.opt.bc -o - | FileCheck %s --check-prefix=CHECK-NODEVIRT-IR
+; Try again with explicit --no-lto-whole-program-visibility.
+; RUN: ld.lld %t2.o -o %t3 -save-temps --no-lto-whole-program-visibility \
+; RUN: -mllvm -pass-remarks=. --export-dynamic 2>&1 | FileCheck %s --implicit-check-not single-impl --allow-empty
+; RUN: llvm-dis %t2.o.4.opt.bc -o - | FileCheck %s --check-prefix=CHECK-NODEVIRT-IR
+; Ensure --no-lto-whole-program-visibility overrides explicit --lto-whole-program-visibility.
+; RUN: ld.lld %t2.o -o %t3 -save-temps --lto-whole-program-visibility --no-lto-whole-program-visibility \
+; RUN: -mllvm -pass-remarks=. --export-dynamic 2>&1 | FileCheck %s --implicit-check-not single-impl --allow-empty
+; RUN: llvm-dis %t2.o.4.opt.bc -o - | FileCheck %s --check-prefix=CHECK-NODEVIRT-IR
; Hybrid WPD
; RUN: ld.lld %t.o -o %t3 -save-temps \
Index: lld/ELF/Options.td
===================================================================
--- lld/ELF/Options.td
+++ lld/ELF/Options.td
@@ -539,8 +539,9 @@
def lto_obj_path_eq: JJ<"lto-obj-path=">;
def lto_sample_profile: JJ<"lto-sample-profile=">,
HelpText<"Sample profile file path">;
-def lto_whole_program_visibility: FF<"lto-whole-program-visibility">,
- HelpText<"Asserts that the LTO link has whole program visibility">;
+defm lto_whole_program_visibility: BB<"lto-whole-program-visibility",
+ "Asserts that the LTO link has whole program visibility",
+ "Asserts that the LTO link does not have whole program visibility">;
def disable_verify: F<"disable-verify">;
defm mllvm: Eq<"mllvm", "Additional arguments to forward to LLVM's option processing">;
def opt_remarks_filename: Separate<["--"], "opt-remarks-filename">,
Index: lld/ELF/Driver.cpp
===================================================================
--- lld/ELF/Driver.cpp
+++ lld/ELF/Driver.cpp
@@ -990,7 +990,8 @@
config->ltoNewPassManager = args.hasArg(OPT_lto_new_pass_manager);
config->ltoNewPmPasses = args.getLastArgValue(OPT_lto_newpm_passes);
config->ltoWholeProgramVisibility =
- args.hasArg(OPT_lto_whole_program_visibility);
+ args.hasFlag(OPT_lto_whole_program_visibility,
+ OPT_no_lto_whole_program_visibility, false);
config->ltoo = args::getInteger(args, OPT_lto_O, 2);
config->ltoObjPath = args.getLastArgValue(OPT_lto_obj_path_eq);
config->ltoPartitions = args::getInteger(args, OPT_lto_partitions, 1);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D92060.307458.patch
Type: text/x-patch
Size: 2832 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20201124/e62955e1/attachment.bin>
More information about the llvm-commits
mailing list