[llvm] [opt] Add --save-stats option (PR #167304)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Nov 10 04:00:59 PST 2025
github-actions[bot] wrote:
<!--LLVM CODE FORMAT COMMENT: {clang-format}-->
:warning: C/C++ code formatter, clang-format found issues in your code. :warning:
<details>
<summary>
You can test this locally with the following command:
</summary>
``````````bash
git-clang-format --diff origin/main HEAD --extensions h,cpp -- llvm/include/llvm/CodeGen/CommandFlags.h llvm/lib/CodeGen/CommandFlags.cpp llvm/tools/llc/llc.cpp llvm/tools/opt/optdriver.cpp --diff_from_common_commit
``````````
:warning:
The reproduction instructions above might return results for more than one PR
in a stack if you are using a stacked PR workflow. You can limit the results by
changing `origin/main` to the base branch/commit you want to compare against.
:warning:
</details>
<details>
<summary>
View the diff from clang-format here.
</summary>
``````````diff
diff --git a/llvm/include/llvm/CodeGen/CommandFlags.h b/llvm/include/llvm/CodeGen/CommandFlags.h
index e46628bdf..321546559 100644
--- a/llvm/include/llvm/CodeGen/CommandFlags.h
+++ b/llvm/include/llvm/CodeGen/CommandFlags.h
@@ -164,8 +164,8 @@ struct RegisterCodeGenFlags {
LLVM_ABI RegisterCodeGenFlags();
};
-/// Tools that support stats saving should create this object with static storage
-/// to register the --save-stats command line option.
+/// Tools that support stats saving should create this object with static
+/// storage to register the --save-stats command line option.
struct RegisterSaveStatsFlag {
LLVM_ABI RegisterSaveStatsFlag();
};
@@ -218,9 +218,10 @@ LLVM_ABI Expected<std::unique_ptr<TargetMachine>> createTargetMachineForTriple(
/// collect data.
LLVM_ABI int MaybeEnableStatistics();
-/// Conditionally saves the collected LLVM statistics to the recevied output file,
-/// based on the value of the flag. Shuould be called after the tool run, and must
-/// follow a call to `MaybeEnableStats()` to actually have data to write.
+/// Conditionally saves the collected LLVM statistics to the recevied output
+/// file, based on the value of the flag. Shuould be called after the tool run,
+/// and must follow a call to `MaybeEnableStats()` to actually have data to
+/// write.
LLVM_ABI int MaybeSaveStatistics(StringRef OutputFilename, StringRef ToolName);
} // namespace codegen
diff --git a/llvm/lib/CodeGen/CommandFlags.cpp b/llvm/lib/CodeGen/CommandFlags.cpp
index caa2f3cf8..c9a502d36 100644
--- a/llvm/lib/CodeGen/CommandFlags.cpp
+++ b/llvm/lib/CodeGen/CommandFlags.cpp
@@ -26,8 +26,8 @@
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/Path.h"
-#include "llvm/Support/raw_ostream.h"
#include "llvm/Support/WithColor.h"
+#include "llvm/Support/raw_ostream.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/TargetParser/Host.h"
#include "llvm/TargetParser/SubtargetFeature.h"
@@ -42,14 +42,14 @@ using namespace llvm;
#define CGOPT(TY, NAME) \
static cl::opt<TY> *NAME##View; \
TY codegen::get##NAME() { \
- assert(NAME##View && "Flag not registered."); \
+ assert(NAME##View && "Flag not registered."); \
return *NAME##View; \
}
#define CGLIST(TY, NAME) \
static cl::list<TY> *NAME##View; \
std::vector<TY> codegen::get##NAME() { \
- assert(NAME##View && "Flag not registered."); \
+ assert(NAME##View && "Flag not registered."); \
return *NAME##View; \
}
@@ -531,17 +531,18 @@ codegen::RegisterCodeGenFlags::RegisterCodeGenFlags() {
codegen::RegisterSaveStatsFlag::RegisterSaveStatsFlag() {
static cl::opt<SaveStatsMode> SaveStats(
- "save-stats",
- cl::desc("Save LLVM statistics to a file in the current directory"
- "(`-save-stats`/`-save-stats=cwd`) or the directory of the output"
- "file (`-save-stats=obj`). (default: cwd)"),
- cl::values(clEnumValN(SaveStatsMode::Cwd, "cwd",
- "Save to the current working directory"),
- clEnumValN(SaveStatsMode::Cwd, "", ""),
- clEnumValN(SaveStatsMode::Obj, "obj",
- "Save to the output file directory")),
- cl::init(SaveStatsMode::None), cl::ValueOptional);
- CGBINDOPT(SaveStats);
+ "save-stats",
+ cl::desc(
+ "Save LLVM statistics to a file in the current directory"
+ "(`-save-stats`/`-save-stats=cwd`) or the directory of the output"
+ "file (`-save-stats=obj`). (default: cwd)"),
+ cl::values(clEnumValN(SaveStatsMode::Cwd, "cwd",
+ "Save to the current working directory"),
+ clEnumValN(SaveStatsMode::Cwd, "", ""),
+ clEnumValN(SaveStatsMode::Obj, "obj",
+ "Save to the output file directory")),
+ cl::init(SaveStatsMode::None), cl::ValueOptional);
+ CGBINDOPT(SaveStats);
}
llvm::BasicBlockSection
diff --git a/llvm/tools/opt/optdriver.cpp b/llvm/tools/opt/optdriver.cpp
index 18897959d..ac86d289c 100644
--- a/llvm/tools/opt/optdriver.cpp
+++ b/llvm/tools/opt/optdriver.cpp
@@ -747,12 +747,12 @@ optMain(int argc, char **argv,
// string. Hand off the rest of the functionality to the new code for that
// layer.
if (!runPassPipeline(
- argv[0], *M, TM.get(), &TLII, Out.get(), ThinLinkOut.get(),
- RemarksFile.get(), Pipeline, PluginList, PassBuilderCallbacks,
- OK, VK, /* ShouldPreserveAssemblyUseListOrder */ false,
- /* ShouldPreserveBitcodeUseListOrder */ true, EmitSummaryIndex,
- EmitModuleHash, EnableDebugify, VerifyDebugInfoPreserve,
- EnableProfileVerification, UnifiedLTO))
+ argv[0], *M, TM.get(), &TLII, Out.get(), ThinLinkOut.get(),
+ RemarksFile.get(), Pipeline, PluginList, PassBuilderCallbacks, OK,
+ VK, /* ShouldPreserveAssemblyUseListOrder */ false,
+ /* ShouldPreserveBitcodeUseListOrder */ true, EmitSummaryIndex,
+ EmitModuleHash, EnableDebugify, VerifyDebugInfoPreserve,
+ EnableProfileVerification, UnifiedLTO))
return 1;
return codegen::MaybeSaveStatistics(OutputFilename, "opt");
}
``````````
</details>
https://github.com/llvm/llvm-project/pull/167304
More information about the llvm-commits
mailing list