forked from OSchip/llvm-project
[lld] Add --no-lto-whole-program-visibility
Enables overriding earlier --lto-whole-program-visibility. Variant of D91583 while discussing alternate ways to identify and handle the --export-dynamic case. Differential Revision: https://reviews.llvm.org/D92060
This commit is contained in:
parent
c2cb61bed3
commit
07f234be1c
|
@ -990,7 +990,8 @@ static void readConfigs(opt::InputArgList &args) {
|
|||
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);
|
||||
|
|
|
@ -539,8 +539,9 @@ def lto_cs_profile_file: JJ<"lto-cs-profile-file=">,
|
|||
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">,
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
; REQUIRES: x86
|
||||
; Test that --lto-whole-program-visibility enables devirtualization.
|
||||
|
||||
; Note that the --export-dynamic used below is simply to ensure symbols are
|
||||
; retained during linking.
|
||||
|
||||
; Index based WPD
|
||||
; Generate unsplit module with summary for ThinLTO index-based WPD.
|
||||
; RUN: opt --thinlto-bc -o %t2.o %s
|
||||
|
@ -31,6 +34,10 @@
|
|||
; 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
|
||||
; 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 \
|
||||
|
|
Loading…
Reference in New Issue