[lld] c19315e - [lld/mac] Don't warn on both --icf=all and -no_deduplicate
Nico Weber via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 29 05:25:30 PDT 2021
Author: Nico Weber
Date: 2021-09-29T08:25:21-04:00
New Revision: c19315ef60828b96ce77ab8adca58b3c529c8b70
URL: https://github.com/llvm/llvm-project/commit/c19315ef60828b96ce77ab8adca58b3c529c8b70
DIFF: https://github.com/llvm/llvm-project/commit/c19315ef60828b96ce77ab8adca58b3c529c8b70.diff
LOG: [lld/mac] Don't warn on both --icf=all and -no_deduplicate
Instead, just make the later flag win, like usual.
Implement this by making -no_deduplicate an actual alias for --icf=none
at the Options.td level.
Differential Revision: https://reviews.llvm.org/D110672
Added:
Modified:
lld/MachO/Driver.cpp
lld/MachO/Options.td
lld/test/MachO/icf-options.s
Removed:
################################################################################
diff --git a/lld/MachO/Driver.cpp b/lld/MachO/Driver.cpp
index 2780d2b9d5966..449eb745aeb5d 100644
--- a/lld/MachO/Driver.cpp
+++ b/lld/MachO/Driver.cpp
@@ -705,7 +705,6 @@ getUndefinedSymbolTreatment(const ArgList &args) {
}
static ICFLevel getICFLevel(const ArgList &args) {
- bool noDeduplicate = args.hasArg(OPT_no_deduplicate);
StringRef icfLevelStr = args.getLastArgValue(OPT_icf_eq);
auto icfLevel = StringSwitch<ICFLevel>(icfLevelStr)
.Cases("none", "", ICFLevel::none)
@@ -716,10 +715,6 @@ static ICFLevel getICFLevel(const ArgList &args) {
warn(Twine("unknown --icf=OPTION `") + icfLevelStr +
"', defaulting to `none'");
icfLevel = ICFLevel::none;
- } else if (icfLevel != ICFLevel::none && noDeduplicate) {
- warn(Twine("`--icf=" + icfLevelStr +
- "' conflicts with -no_deduplicate, setting to `none'"));
- icfLevel = ICFLevel::none;
} else if (icfLevel == ICFLevel::safe) {
warn(Twine("`--icf=safe' is not yet implemented, reverting to `none'"));
icfLevel = ICFLevel::none;
diff --git a/lld/MachO/Options.td b/lld/MachO/Options.td
index cda857d605bd4..a51cd8474c829 100644
--- a/lld/MachO/Options.td
+++ b/lld/MachO/Options.td
@@ -290,6 +290,7 @@ def no_branch_islands : Flag<["-"], "no_branch_islands">,
Group<grp_opts>;
def no_deduplicate : Flag<["-"], "no_deduplicate">,
HelpText<"Disable code deduplicaiton (synonym for `--icf=none')">,
+ Alias<icf_eq>, AliasArgs<["none"]>,
Group<grp_opts>;
def grp_version : OptionGroup<"version">, HelpText<"VERSION TARGETING">;
diff --git a/lld/test/MachO/icf-options.s b/lld/test/MachO/icf-options.s
index 0be44c9c07c11..3a6eddb80361b 100644
--- a/lld/test/MachO/icf-options.s
+++ b/lld/test/MachO/icf-options.s
@@ -12,16 +12,19 @@
# RUN: | FileCheck %s --check-prefix=DIAG-SAFE
# RUN: not %lld -lSystem --icf=junk -o %t/junk %t/main.o 2>&1 \
# RUN: | FileCheck %s --check-prefix=DIAG-JUNK
-# RUN: not %lld -lSystem --icf=all -no_deduplicate -o %t/clash %t/main.o 2>&1 \
-# RUN: | FileCheck %s --check-prefix=DIAG-CLASH
+# RUN: %lld -lSystem --icf=all -no_deduplicate -o %t/none2 %t/main.o 2>&1 \
+# RUN: | FileCheck %s --check-prefix=DIAG-EMPTY --allow-empty
+# RUN: %lld -lSystem -no_deduplicate --icf=all -o %t/all2 %t/main.o 2>&1 \
+# RUN: | FileCheck %s --check-prefix=DIAG-EMPTY --allow-empty
# DIAG-EMPTY-NOT: {{.}}
# DIAG-SAFE: `--icf=safe' is not yet implemented, reverting to `none'
# DIAG-JUNK: unknown --icf=OPTION `junk', defaulting to `none'
-# DIAG-CLASH: `--icf=all' conflicts with -no_deduplicate, setting to `none'
# RUN: llvm-objdump -d --syms %t/all | FileCheck %s --check-prefix=FOLD
+# RUN: llvm-objdump -d --syms %t/all2 | FileCheck %s --check-prefix=FOLD
# RUN: llvm-objdump -d --syms %t/none | FileCheck %s --check-prefix=NOOP
+# RUN: llvm-objdump -d --syms %t/none2 | FileCheck %s --check-prefix=NOOP
# RUN: llvm-objdump -d --syms %t/no_dedup | FileCheck %s --check-prefix=NOOP
# FOLD-LABEL: SYMBOL TABLE:
More information about the llvm-commits
mailing list