aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFangrui Song <i@maskray.me>2025-01-12 13:17:49 -0800
committerFangrui Song <i@maskray.me>2025-01-12 13:17:49 -0800
commit5c0aa31c3cb448065f12ede53e4dd54a9a98f650 (patch)
treeb30a23bdc1ddd8271754fbe6e180df8a8d954895
parentf5a35a31bfe6cbc16bec0c130f2bb3632dbf1fbf (diff)
downloadllvm-5c0aa31c3cb448065f12ede53e4dd54a9a98f650.zip
llvm-5c0aa31c3cb448065f12ede53e4dd54a9a98f650.tar.gz
llvm-5c0aa31c3cb448065f12ede53e4dd54a9a98f650.tar.bz2
-ftime-report: Move FrontendTimer closer to TimeTraceScope
... to improve consistency and make "Clang time report" cover `FrontendAction::BeginSourceFile` and `FrontendAction::EndSourceFile`.
-rw-r--r--clang/include/clang/Frontend/CompilerInstance.h2
-rw-r--r--clang/lib/Frontend/CompilerInstance.cpp3
-rw-r--r--clang/lib/Frontend/FrontendAction.cpp7
-rw-r--r--clang/tools/driver/cc1_main.cpp4
4 files changed, 5 insertions, 11 deletions
diff --git a/clang/include/clang/Frontend/CompilerInstance.h b/clang/include/clang/Frontend/CompilerInstance.h
index 4a79b8d..8b539df 100644
--- a/clang/include/clang/Frontend/CompilerInstance.h
+++ b/clang/include/clang/Frontend/CompilerInstance.h
@@ -632,8 +632,6 @@ public:
llvm::TimerGroup &getTimerGroup() const { return *timerGroup; }
- bool hasFrontendTimer() const { return (bool)FrontendTimer; }
-
llvm::Timer &getFrontendTimer() const {
assert(FrontendTimer && "Compiler instance has no frontend timer!");
return *FrontendTimer;
diff --git a/clang/lib/Frontend/CompilerInstance.cpp b/clang/lib/Frontend/CompilerInstance.cpp
index b00a4ac..c11c857 100644
--- a/clang/lib/Frontend/CompilerInstance.cpp
+++ b/clang/lib/Frontend/CompilerInstance.cpp
@@ -1038,9 +1038,6 @@ bool CompilerInstance::ExecuteAction(FrontendAction &Act) {
<< LLVM_VERSION_STRING << " default target "
<< llvm::sys::getDefaultTargetTriple() << "\n";
- if (getCodeGenOpts().TimePasses)
- createFrontendTimer();
-
if (getFrontendOpts().ShowStats || !getFrontendOpts().StatsFile.empty())
llvm::EnableStatistics(false);
diff --git a/clang/lib/Frontend/FrontendAction.cpp b/clang/lib/Frontend/FrontendAction.cpp
index 9a50e745..9f789f0 100644
--- a/clang/lib/Frontend/FrontendAction.cpp
+++ b/clang/lib/Frontend/FrontendAction.cpp
@@ -1069,12 +1069,7 @@ bool FrontendAction::BeginSourceFile(CompilerInstance &CI,
llvm::Error FrontendAction::Execute() {
CompilerInstance &CI = getCompilerInstance();
-
- if (CI.hasFrontendTimer()) {
- llvm::TimeRegion Timer(CI.getFrontendTimer());
- ExecuteAction();
- }
- else ExecuteAction();
+ ExecuteAction();
// If we are supposed to rebuild the global module index, do so now unless
// there were any module-build failures.
diff --git a/clang/tools/driver/cc1_main.cpp b/clang/tools/driver/cc1_main.cpp
index d14058f..26b5e78 100644
--- a/clang/tools/driver/cc1_main.cpp
+++ b/clang/tools/driver/cc1_main.cpp
@@ -283,6 +283,10 @@ int cc1_main(ArrayRef<const char *> Argv, const char *Argv0, void *MainAddr) {
// Execute the frontend actions.
{
llvm::TimeTraceScope TimeScope("ExecuteCompiler");
+ bool TimePasses = Clang->getCodeGenOpts().TimePasses;
+ if (TimePasses)
+ Clang->createFrontendTimer();
+ llvm::TimeRegion Timer(TimePasses ? &Clang->getFrontendTimer() : nullptr);
Success = ExecuteCompilerInvocation(Clang.get());
}