[clang][Sema] Optimize ~SemaDiagnosticBuilder (#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
This commit is contained in:
Timm Baeder
2025-05-31 19:59:55 +02:00
committed by GitHub
parent 81602769d8
commit b9675617af

View File

@@ -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.");