[lld] 7c20e7c - [ELF] Support -plugin-opt=stats-file=

Alex Richardson via llvm-commits llvm-commits at lists.llvm.org
Mon May 9 08:05:20 PDT 2022


Author: Alex Richardson
Date: 2022-05-09T15:04:40Z
New Revision: 7c20e7ca8642bafa44f5829a14deea5f9b37f0ef

URL: https://github.com/llvm/llvm-project/commit/7c20e7ca8642bafa44f5829a14deea5f9b37f0ef
DIFF: https://github.com/llvm/llvm-project/commit/7c20e7ca8642bafa44f5829a14deea5f9b37f0ef.diff

LOG: [ELF] Support -plugin-opt=stats-file=

This flag is added by clang::driver::tools::addLTOOptions() and was causing
errors for me when building the llvm-test-suite repository with LTO and
-DTEST_SUITE_COLLECT_STATS=ON. This replaces the --stats-file= option
added in 1c04b52b2594d403f739ed919ef420b1e47ae343 since the flag is only
used for LTO and should therefore be in the -plugin-opt= namespace.

Additionally, this commit fixes the `REQUIRES: asserts` that was added in
948d05324a150a5a24e93bad07c9090d5b8bd129: the feature was never defined in
the lld test suite so it effectively disabled the test.

Reviewed By: MaskRay, MTC

Differential Revision: https://reviews.llvm.org/D124105

Added: 
    

Modified: 
    lld/ELF/Driver.cpp
    lld/ELF/Options.td
    lld/test/ELF/lto/stats-file-option.ll
    lld/test/lit.cfg.py

Removed: 
    


################################################################################
diff  --git a/lld/ELF/Driver.cpp b/lld/ELF/Driver.cpp
index ba24be790186e..1e0a46040eb95 100644
--- a/lld/ELF/Driver.cpp
+++ b/lld/ELF/Driver.cpp
@@ -1127,7 +1127,7 @@ static void readConfigs(opt::InputArgList &args) {
   config->oFormatBinary = isOutputFormatBinary(args);
   config->omagic = args.hasFlag(OPT_omagic, OPT_no_omagic, false);
   config->optRemarksFilename = args.getLastArgValue(OPT_opt_remarks_filename);
-  config->optStatsFilename = args.getLastArgValue(OPT_opt_stats_filename);
+  config->optStatsFilename = args.getLastArgValue(OPT_plugin_opt_stats_file);
 
   // Parse remarks hotness threshold. Valid value is either integer or 'auto'.
   if (auto *arg = args.getLastArg(OPT_opt_remarks_hotness_threshold)) {

diff  --git a/lld/ELF/Options.td b/lld/ELF/Options.td
index 86bd93a6e878e..73e7b2dded675 100644
--- a/lld/ELF/Options.td
+++ b/lld/ELF/Options.td
@@ -582,8 +582,6 @@ def opt_remarks_with_hotness: FF<"opt-remarks-with-hotness">,
   HelpText<"Include hotness information in the optimization remarks file">;
 def opt_remarks_format: Separate<["--"], "opt-remarks-format">,
   HelpText<"The format used for serializing remarks (default: YAML)">;
-def opt_stats_filename: JJ<"stats-file=">,
-  HelpText<"Filename to write statistics to">;
 def save_temps: F<"save-temps">, HelpText<"Save intermediate LTO compilation results">;
 def lto_basic_block_sections: JJ<"lto-basic-block-sections=">,
   HelpText<"Enable basic block sections for LTO">;
@@ -646,6 +644,8 @@ def: J<"plugin-opt=opt-remarks-hotness-threshold=">,
 def: J<"plugin-opt=sample-profile=">,
   Alias<lto_sample_profile>, HelpText<"Alias for --lto-sample-profile">;
 def: F<"plugin-opt=save-temps">, Alias<save_temps>, HelpText<"Alias for --save-temps">;
+def plugin_opt_stats_file: J<"plugin-opt=stats-file=">,
+  HelpText<"Filename to write LTO statistics to">;
 def: F<"plugin-opt=thinlto-emit-imports-files">,
   Alias<thinlto_emit_imports_files>,
   HelpText<"Alias for --thinlto-emit-imports-files">;

diff  --git a/lld/test/ELF/lto/stats-file-option.ll b/lld/test/ELF/lto/stats-file-option.ll
index 36bb4a30c7f02..c83113d5e7375 100644
--- a/lld/test/ELF/lto/stats-file-option.ll
+++ b/lld/test/ELF/lto/stats-file-option.ll
@@ -3,7 +3,7 @@
 ; RUN: llvm-as -o %t.bc %s
 
 ;; Try to save statistics to file.
-; RUN: ld.lld --stats-file=%t2.stats -m elf_x86_64 -r -o %t.o %t.bc
+; RUN: ld.lld --plugin-opt=stats-file=%t2.stats -m elf_x86_64 -r -o %t.o %t.bc
 ; RUN: FileCheck --input-file=%t2.stats %s
 
 ; CHECK: {

diff  --git a/lld/test/lit.cfg.py b/lld/test/lit.cfg.py
index e0b8a824c4ef0..0d5487eabd4d1 100644
--- a/lld/test/lit.cfg.py
+++ b/lld/test/lit.cfg.py
@@ -74,7 +74,8 @@
                           'RISCV': 'riscv',
                           'Sparc': 'sparc',
                           'WebAssembly': 'wasm',
-                          'X86': 'x86'})
+                          'X86': 'x86'}),
+     ('--assertion-mode', {'ON': 'asserts'}),
      ])
 
 # Set a fake constant version so that we get consistent output.


        


More information about the llvm-commits mailing list