config->emitDataInCodeInfo =
args.hasFlag(OPT_data_in_code_info, OPT_no_data_in_code_info, true);
config->icfLevel = getICFLevel(args);
- config->dedupLiterals = args.hasArg(OPT_deduplicate_literals) ||
- config->icfLevel != ICFLevel::none;
+ config->dedupLiterals =
+ args.hasFlag(OPT_deduplicate_literals, OPT_icf_eq, false) ||
+ config->icfLevel != ICFLevel::none;
config->warnDylibInstallName = args.hasFlag(
OPT_warn_dylib_install_name, OPT_no_warn_dylib_install_name, false);
config->callGraphProfileSort = args.hasFlag(
# RUN: llvm-objdump --macho --section="__TEXT,__literals" --section="__DATA,ptrs" --syms %t/test | FileCheck %s
# RUN: llvm-readobj --section-headers %t/test | FileCheck %s --check-prefix=HEADER
+## Make sure literal deduplication can be overridden or that the later flag wins.
+# RUN: %lld -dylib --deduplicate-literals -no_deduplicate %t/test.o %t/qux.o -o %t/no-dedup-test
+# RUN: llvm-objdump --macho --section="__TEXT,__literals" --section="__DATA,ptrs" %t/no-dedup-test | FileCheck %s --check-prefix=NO-DEDUP
+
+# RUN: %lld -dylib -no_deduplicate --deduplicate-literals %t/test.o %t/qux.o -o %t/test
+# RUN: llvm-objdump --macho --section="__TEXT,__literals" --section="__DATA,ptrs" --syms %t/test | FileCheck %s
+# RUN: llvm-readobj --section-headers %t/test | FileCheck %s --check-prefix=HEADER
+
+# NO-DEDUP-NOT: Contents of (__TEXT,__literals) section
+# NO-DEDUP: Contents of (__DATA,ptrs) section
+# NO-DEDUP-NEXT: __TEXT:__literal16:0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef
+# NO-DEDUP-NEXT: __TEXT:__literal16:0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef
+# NO-DEDUP-NEXT: __TEXT:__literal16:0xfeedface 0xfeedface 0xfeedface 0xfeedface
+# NO-DEDUP-NEXT: __TEXT:__literal16:0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef
+# NO-DEDUP-NEXT: __TEXT:__literal8:0xdeadbeef 0xdeadbeef
+# NO-DEDUP-NEXT: __TEXT:__literal8:0xdeadbeef 0xdeadbeef
+# NO-DEDUP-NEXT: __TEXT:__literal8:0xfeedface 0xfeedface
+# NO-DEDUP-NEXT: __TEXT:__literal8:0xdeadbeef 0xdeadbeef
+# NO-DEDUP-NEXT: __TEXT:__literal4:0xdeadbeef
+# NO-DEDUP-NEXT: __TEXT:__literal4:0xdeadbeef
+# NO-DEDUP-NEXT: __TEXT:__literal4:0xfeedface
+# NO-DEDUP-NEXT: __TEXT:__literal4:0xdeadbeef
+
# CHECK: Contents of (__TEXT,__literals) section
# CHECK-NEXT: [[#%.16x,DEADBEEF16:]] ef be ad de ef be ad de ef be ad de ef be ad de
# CHECK-NEXT: [[#%.16x,FEEDFACE16:]] ce fa ed fe ce fa ed fe ce fa ed fe ce fa ed fe