Author: Timm Baeder Date: 2025-05-31T19:59:55+02:00 New Revision: b9675617af25d674b6f1e22c1ffeb6ae926b0e14
URL: https://github.com/llvm/llvm-project/commit/b9675617af25d674b6f1e22c1ffeb6ae926b0e14 DIFF: https://github.com/llvm/llvm-project/commit/b9675617af25d674b6f1e22c1ffeb6ae926b0e14.diff LOG: [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 Added: Modified: clang/lib/Sema/Sema.cpp Removed: ################################################################################ diff --git a/clang/lib/Sema/Sema.cpp b/clang/lib/Sema/Sema.cpp index f8bfd60f2faad..6a2cca6c14aca 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."); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits