[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:
@@ -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.");
|
||||
|
||||
Reference in New Issue
Block a user