[clang] 69327c1 - [clang] Make `-ftime-report` and `-ftime-report-json` honor `-info-output-file` (#138035)
via cfe-commits
cfe-commits at lists.llvm.org
Wed Apr 30 14:48:20 PDT 2025
Author: Alan Zhao
Date: 2025-04-30T14:48:17-07:00
New Revision: 69327c16d17b13cb2bc27968a557276bd82eef9a
URL: https://github.com/llvm/llvm-project/commit/69327c16d17b13cb2bc27968a557276bd82eef9a
DIFF: https://github.com/llvm/llvm-project/commit/69327c16d17b13cb2bc27968a557276bd82eef9a.diff
LOG: [clang] Make `-ftime-report` and `-ftime-report-json` honor `-info-output-file` (#138035)
This way, the output of `-ftime-report` and `-ftime-report-json` can be
redirected to a specific file rather than just stderr.
Added:
Modified:
clang/test/Misc/time-passes.c
clang/tools/driver/cc1_main.cpp
Removed:
################################################################################
diff --git a/clang/test/Misc/time-passes.c b/clang/test/Misc/time-passes.c
index 35b5e1634ee73..370f52e4904fe 100644
--- a/clang/test/Misc/time-passes.c
+++ b/clang/test/Misc/time-passes.c
@@ -3,6 +3,10 @@
// RUN: -ftime-report %s -o /dev/null 2>&1 | \
// RUN: FileCheck %s --check-prefixes=TIME,NPM
// RUN: %clang_cc1 -emit-obj -O1 \
+// RUN: -ftime-report %s -o /dev/null \
+// RUN: -mllvm -info-output-file=%t
+// RUN: cat %t | FileCheck %s --check-prefixes=TIME,NPM
+// RUN: %clang_cc1 -emit-obj -O1 \
// RUN: -ftime-report=per-pass %s -o /dev/null 2>&1 | \
// RUN: FileCheck %s --check-prefixes=TIME,NPM
// RUN: %clang_cc1 -emit-obj -O1 \
@@ -11,6 +15,10 @@
// RUN: %clang_cc1 -emit-obj -O1 \
// RUN: -ftime-report-json %s -o /dev/null 2>&1 | \
// RUN: FileCheck %s --check-prefixes=JSON
+// RUN: %clang_cc1 -emit-obj -O1 \
+// RUN: -ftime-report-json %s -o /dev/null \
+// RUN: -mllvm -info-output-file=%t
+// RUN: cat %t | FileCheck %s --check-prefixes=JSON
// TIME: Pass execution timing report
// TIME: Total Execution Time:
diff --git a/clang/tools/driver/cc1_main.cpp b/clang/tools/driver/cc1_main.cpp
index 1e79e78fdea62..dd53712bcfc96 100644
--- a/clang/tools/driver/cc1_main.cpp
+++ b/clang/tools/driver/cc1_main.cpp
@@ -296,12 +296,13 @@ int cc1_main(ArrayRef<const char *> Argv, const char *Argv0, void *MainAddr) {
// If any timers were active but haven't been destroyed yet, print their
// results now. This happens in -disable-free mode.
+ std::unique_ptr<raw_ostream> IOFile = llvm::CreateInfoOutputFile();
if (Clang->getCodeGenOpts().TimePassesJson) {
- llvm::errs() << "{\n";
- llvm::TimerGroup::printAllJSONValues(llvm::errs(), "");
- llvm::errs() << "\n}\n";
+ *IOFile << "{\n";
+ llvm::TimerGroup::printAllJSONValues(*IOFile, "");
+ *IOFile << "\n}\n";
} else {
- llvm::TimerGroup::printAll(llvm::errs());
+ llvm::TimerGroup::printAll(*IOFile);
}
llvm::TimerGroup::clearAll();
More information about the cfe-commits
mailing list