Skip to content

Commit b967561

Browse files
authored
[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
1 parent 8160276 commit b967561

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

clang/lib/Sema/Sema.cpp

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2062,11 +2062,14 @@ Sema::SemaDiagnosticBuilder::~SemaDiagnosticBuilder() {
20622062
if (ImmediateDiag) {
20632063
// Emit our diagnostic and, if it was a warning or error, output a callstack
20642064
// if Fn isn't a priori known-emitted.
2065-
bool IsWarningOrError = S.getDiagnostics().getDiagnosticLevel(
2066-
DiagID, Loc) >= DiagnosticsEngine::Warning;
20672065
ImmediateDiag.reset(); // Emit the immediate diag.
2068-
if (IsWarningOrError && ShowCallStack)
2069-
emitCallStackNotes(S, Fn);
2066+
2067+
if (ShowCallStack) {
2068+
bool IsWarningOrError = S.getDiagnostics().getDiagnosticLevel(
2069+
DiagID, Loc) >= DiagnosticsEngine::Warning;
2070+
if (IsWarningOrError)
2071+
emitCallStackNotes(S, Fn);
2072+
}
20702073
} else {
20712074
assert((!PartialDiagId || ShowCallStack) &&
20722075
"Must always show call stack for deferred diags.");

0 commit comments

Comments
 (0)