[clang] [analyzer] Add time-trace scopes for high-level analyzer steps (PR #125508)

Gábor Horváth via cfe-commits cfe-commits at lists.llvm.org
Tue Feb 4 03:20:19 PST 2025


================
@@ -287,6 +288,34 @@ class PathDiagnosticBuilder : public BugReporterContext {
   const PathSensitiveBugReport *getBugReport() const { return R; }
 };
 
+std::string timeTraceName(const BugReportEquivClass &EQ) {
+  if (!llvm::timeTraceProfilerEnabled())
+    return "";
+  const auto &bugReports = EQ.getReports();
+  if (bugReports.empty())
+    return "Empty Equivalence Class";
+  const BugReport *R = bugReports.front().get();
+  const auto &BT = R->getBugType();
+  return ("Flushing EQC " + BT.getDescription()).str();
+}
+
+llvm::TimeTraceMetadata timeTraceMetadata(const BugReportEquivClass &EQ) {
+  // Must be called only when constructing non-bogus TimeTraceScope
+  assert(llvm::timeTraceProfilerEnabled());
+
+  const auto &bugReports = EQ.getReports();
+  if (bugReports.empty())
+    return {};
+  const BugReport *R = bugReports.front().get();
+  const auto &BT = R->getBugType();
+  auto Loc = R->getLocation().asLocation();
+  std::string File = "";
+  if (const auto *Entry = Loc.getFileEntry())
+    File = Entry->tryGetRealPathName().str();
+  return {BT.getCheckerName().str(), File,
----------------
Xazax-hun wrote:

Could move File here.

https://github.com/llvm/llvm-project/pull/125508


More information about the cfe-commits mailing list