[llvm] [tools][llc] Add `--save-stats` option (PR #163967)
Jon Roelofs via llvm-commits
llvm-commits at lists.llvm.org
Mon Oct 27 16:03:00 PDT 2025
================
@@ -355,6 +366,50 @@ static std::unique_ptr<ToolOutputFile> GetOutputStream(const char *TargetName,
return FDOut;
}
+static int MaybeEnableStats() {
+ if (SaveStats.getNumOccurrences() > 0) {
+ if (SaveStats.empty() || SaveStats == "cwd" || SaveStats == "obj") {
+ llvm::EnableStatistics(false);
+ } else {
+ WithColor::error(errs(), "llc")
+ << "Invalid --save-stats value: " << SaveStats
+ << ", must be empty, 'cwd' or 'obj'\n";
+ return 1;
+ }
+ }
+ return 0;
+}
+
+static int MaybeSaveStats(std::string &&OutputFilename) {
+ if (SaveStats.getNumOccurrences() > 0) {
+ SmallString<128> StatsFilename;
+ if (SaveStats == "obj") {
+ StatsFilename = OutputFilename;
+ llvm::sys::path::remove_filename(StatsFilename);
+ } else {
+ assert((SaveStats.empty() || SaveStats == "cwd") &&
+ "Should have been a valid --save-stats value");
+ }
+
+ auto BaseName = llvm::sys::path::filename(OutputFilename);
+ llvm::sys::path::append(StatsFilename, BaseName);
+ llvm::sys::path::replace_extension(StatsFilename, "stats");
+
+ auto FileFlags = llvm::sys::fs::OF_TextWithCRLF;
+ std::error_code EC;
+ auto StatsOS =
+ std::make_unique<llvm::raw_fd_ostream>(StatsFilename, EC, FileFlags);
+ if (EC) {
+ WithColor::error(errs(), "llc")
+ << "Unable to open statistics file: " << EC.message() << "\n";
+ return 1;
+ } else {
+ llvm::PrintStatisticsJSON(*StatsOS);
+ }
----------------
jroelofs wrote:
no `else` after `return`
```suggestion
}
llvm::PrintStatisticsJSON(*StatsOS);
```
https://github.com/llvm/llvm-project/pull/163967
More information about the llvm-commits
mailing list