[clang-tools-extra] [clang-tidy][NFC] simplify `TimerGroup` in `ClangTidyProfiling` (PR #123958)

Congcong Cai via cfe-commits cfe-commits at lists.llvm.org
Wed Jan 22 07:29:46 PST 2025


https://github.com/HerrCai0907 created https://github.com/llvm/llvm-project/pull/123958

`TimerGroup` don't need to use as field of `ClangTidyProfiling`.
We can construct it local during destructing.


>From 7f6fccebdc73f06d920eae75132238c5a884bbea Mon Sep 17 00:00:00 2001
From: Congcong Cai <congcongcai0907 at 163.com>
Date: Wed, 22 Jan 2025 23:27:55 +0800
Subject: [PATCH] [clang-tidy][NFC] simplify `TimerGroup` in
 `ClangTidyProfiling`

`TimerGroup` don't need to use as field of `ClangTidyProfiling`.
We can construct it local during destructing.
---
 .../clang-tidy/ClangTidyProfiling.cpp         | 21 ++++++++++---------
 .../clang-tidy/ClangTidyProfiling.h           |  9 +++-----
 2 files changed, 14 insertions(+), 16 deletions(-)

diff --git a/clang-tools-extra/clang-tidy/ClangTidyProfiling.cpp b/clang-tools-extra/clang-tidy/ClangTidyProfiling.cpp
index 07ab34a07cd31d..89867ec30f51f3 100644
--- a/clang-tools-extra/clang-tidy/ClangTidyProfiling.cpp
+++ b/clang-tools-extra/clang-tidy/ClangTidyProfiling.cpp
@@ -36,23 +36,25 @@ ClangTidyProfiling::StorageParams::StorageParams(llvm::StringRef ProfilePrefix,
                       .str();
 }
 
-void ClangTidyProfiling::printUserFriendlyTable(llvm::raw_ostream &OS) {
-  TG->print(OS);
+void ClangTidyProfiling::printUserFriendlyTable(llvm::raw_ostream &OS,
+                                                llvm::TimerGroup &TG) {
+  TG.print(OS);
   OS.flush();
 }
 
-void ClangTidyProfiling::printAsJSON(llvm::raw_ostream &OS) {
+void ClangTidyProfiling::printAsJSON(llvm::raw_ostream &OS,
+                                     llvm::TimerGroup &TG) {
   OS << "{\n";
   OS << R"("file": ")" << Storage->SourceFilename << "\",\n";
   OS << R"("timestamp": ")" << Storage->Timestamp << "\",\n";
   OS << "\"profile\": {\n";
-  TG->printJSONValues(OS, "");
+  TG.printJSONValues(OS, "");
   OS << "\n}\n";
   OS << "}\n";
   OS.flush();
 }
 
-void ClangTidyProfiling::storeProfileData() {
+void ClangTidyProfiling::storeProfileData(llvm::TimerGroup &TG) {
   assert(Storage && "We should have a filename.");
 
   llvm::SmallString<256> OutputDirectory(Storage->StoreFilename);
@@ -71,19 +73,18 @@ void ClangTidyProfiling::storeProfileData() {
     return;
   }
 
-  printAsJSON(OS);
+  printAsJSON(OS, TG);
 }
 
 ClangTidyProfiling::ClangTidyProfiling(std::optional<StorageParams> Storage)
     : Storage(std::move(Storage)) {}
 
 ClangTidyProfiling::~ClangTidyProfiling() {
-  TG.emplace("clang-tidy", "clang-tidy checks profiling", Records);
-
+  llvm::TimerGroup TG{"clang-tidy", "clang-tidy checks profiling", Records};
   if (!Storage)
-    printUserFriendlyTable(llvm::errs());
+    printUserFriendlyTable(llvm::errs(), TG);
   else
-    storeProfileData();
+    storeProfileData(TG);
 }
 
 } // namespace clang::tidy
diff --git a/clang-tools-extra/clang-tidy/ClangTidyProfiling.h b/clang-tools-extra/clang-tidy/ClangTidyProfiling.h
index b6f7d66343fa46..76deede1716f44 100644
--- a/clang-tools-extra/clang-tidy/ClangTidyProfiling.h
+++ b/clang-tools-extra/clang-tidy/ClangTidyProfiling.h
@@ -34,14 +34,11 @@ class ClangTidyProfiling {
   };
 
 private:
-  std::optional<llvm::TimerGroup> TG;
-
   std::optional<StorageParams> Storage;
 
-  void printUserFriendlyTable(llvm::raw_ostream &OS);
-  void printAsJSON(llvm::raw_ostream &OS);
-
-  void storeProfileData();
+  void printUserFriendlyTable(llvm::raw_ostream &OS, llvm::TimerGroup &TG);
+  void printAsJSON(llvm::raw_ostream &OS, llvm::TimerGroup &TG);
+  void storeProfileData(llvm::TimerGroup &TG);
 
 public:
   llvm::StringMap<llvm::TimeRecord> Records;



More information about the cfe-commits mailing list