[clang] 6e9a308 - [clang] Avoid calling isInSystemMacro() too often (#182217)
via cfe-commits
cfe-commits at lists.llvm.org
Sat Feb 21 21:21:38 PST 2026
Author: Timm Baeder
Date: 2026-02-22T06:21:33+01:00
New Revision: 6e9a308a884d18315fa3cb31693718148dfa63dd
URL: https://github.com/llvm/llvm-project/commit/6e9a308a884d18315fa3cb31693718148dfa63dd
DIFF: https://github.com/llvm/llvm-project/commit/6e9a308a884d18315fa3cb31693718148dfa63dd.diff
LOG: [clang] Avoid calling isInSystemMacro() too often (#182217)
This caused a performance regression as reported in
https://github.com/llvm/llvm-project/pull/141950
Added:
Modified:
clang/lib/Basic/DiagnosticIDs.cpp
Removed:
################################################################################
diff --git a/clang/lib/Basic/DiagnosticIDs.cpp b/clang/lib/Basic/DiagnosticIDs.cpp
index 804f0d9957f23..fcd2d9f34414e 100644
--- a/clang/lib/Basic/DiagnosticIDs.cpp
+++ b/clang/lib/Basic/DiagnosticIDs.cpp
@@ -570,13 +570,13 @@ DiagnosticIDs::getDiagnosticSeverity(unsigned DiagID, SourceLocation Loc,
// We also ignore warnings due to system macros. As above, we respect the
// ForceSystemWarnings override.
if (State->SuppressSystemWarnings && !Diag.getForceSystemWarnings() &&
- Loc.isValid() && SM.isInSystemMacro(Loc)) {
+ Loc.isValid()) {
bool ShowInSystemMacro = true;
if (const StaticDiagInfoRec *Rec = GetDiagInfo(DiagID))
ShowInSystemMacro = Rec->WarnShowInSystemMacro;
- if (!ShowInSystemMacro)
+ if (!ShowInSystemMacro && SM.isInSystemMacro(Loc))
return diag::Severity::Ignored;
}
// Clang-diagnostics pragmas always take precedence over suppression mapping.
More information about the cfe-commits
mailing list