[clang] [clang][Sema] Optimize ~SemaDiagnosticBuilder (PR #142252)
Timm Baeder via cfe-commits
cfe-commits at lists.llvm.org
Fri May 30 21:58:16 PDT 2025
https://github.com/tbaederr created https://github.com/llvm/llvm-project/pull/142252
Call getDiagnosticLevel(), which is expensive, only if ShowCallStack is set.
Small gains:
https://llvm-compile-time-tracker.com/compare.php?from=843e362318e884991e517a54446b4faeacdad789&to=5cef0c18466318a426924b3c45f7abaaa8f6b535&stat=instructions:u
>From 25ba6bd099da9ea686850a47060f72a3cb6156d3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Timm=20B=C3=A4der?= <tbaeder at redhat.com>
Date: Fri, 30 May 2025 19:50:18 +0200
Subject: [PATCH] [clang][Sema] Optimize ~SemaDiagnosticBuilder
Call getDiagnosticLevel(), which is expensive, only if ShowCallStack is
set.
Small gains:
https://llvm-compile-time-tracker.com/compare.php?from=843e362318e884991e517a54446b4faeacdad789&to=5cef0c18466318a426924b3c45f7abaaa8f6b535&stat=instructions:u
---
clang/lib/Sema/Sema.cpp | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/clang/lib/Sema/Sema.cpp b/clang/lib/Sema/Sema.cpp
index 1901d19b14dfc..ff4c0d833e573 100644
--- a/clang/lib/Sema/Sema.cpp
+++ b/clang/lib/Sema/Sema.cpp
@@ -2062,11 +2062,14 @@ Sema::SemaDiagnosticBuilder::~SemaDiagnosticBuilder() {
if (ImmediateDiag) {
// Emit our diagnostic and, if it was a warning or error, output a callstack
// if Fn isn't a priori known-emitted.
- bool IsWarningOrError = S.getDiagnostics().getDiagnosticLevel(
- DiagID, Loc) >= DiagnosticsEngine::Warning;
ImmediateDiag.reset(); // Emit the immediate diag.
- if (IsWarningOrError && ShowCallStack)
- emitCallStackNotes(S, Fn);
+
+ if (ShowCallStack) {
+ bool IsWarningOrError = S.getDiagnostics().getDiagnosticLevel(
+ DiagID, Loc) >= DiagnosticsEngine::Warning;
+ if (IsWarningOrError)
+ emitCallStackNotes(S, Fn);
+ }
} else {
assert((!PartialDiagId || ShowCallStack) &&
"Must always show call stack for deferred diags.");
More information about the cfe-commits
mailing list