https://github.com/carlosgalvezp created 
https://github.com/llvm/llvm-project/pull/151772

…heck

One typically only wants to perform renaming operations in user code, not in 
system headers (which are out of the user's control). Let's skip those 
altogether.

This leads to performance improvements in clang-tidy. As a benchmark, I run all 
checks on a .cpp file that #includes all C++ standard headers.

On trunk:

Suppressed 213362 warnings (213362 in non-user code). Use -header-filter=.* to 
display errors from all non-system headers. Use -system-headers to display 
errors from system headers as well.

real    0m14.517s
user    0m14.383s
sys     0m0.132s

On this patch:

Suppressed 75107 warnings (75107 in non-user code).

real    0m12.545s
user    0m12.349s
sys     0m0.188s

>From 97e0e2d06c4d10ebf042f8b653e7914fec3347fb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Carlos=20G=C3=A1lvez?= <[email protected]>
Date: Fri, 1 Aug 2025 20:53:17 +0000
Subject: [PATCH] [clang-tidy] Skip declarations in system headers in
 RenamerClangTidyCheck

One typically only wants to perform renaming operations in user code,
not in system headers (which are out of the user's control).
Let's skip those altogether.

This leads to performance improvements in clang-tidy. As a benchmark,
I run all checks on a .cpp file that #includes all C++ standard
headers.

On trunk:

Suppressed 213362 warnings (213362 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.

real    0m14.517s
user    0m14.383s
sys     0m0.132s

On this patch:

Suppressed 75107 warnings (75107 in non-user code).

real    0m12.545s
user    0m12.349s
sys     0m0.188s
---
 .../clang-tidy/utils/RenamerClangTidyCheck.cpp            | 3 +++
 clang-tools-extra/docs/ReleaseNotes.rst                   | 8 ++++++++
 2 files changed, 11 insertions(+)

diff --git a/clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp 
b/clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp
index dd28806e008ed..e7009b8f67a96 100644
--- a/clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp
+++ b/clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp
@@ -455,6 +455,9 @@ RenamerClangTidyCheck::addUsage(
 void RenamerClangTidyCheck::addUsage(const NamedDecl *Decl,
                                      SourceRange UsageRange,
                                      const SourceManager &SourceMgr) {
+  if (SourceMgr.isInSystemHeader(Decl->getLocation()))
+    return;
+
   if (hasNoName(Decl))
     return;
 
diff --git a/clang-tools-extra/docs/ReleaseNotes.rst 
b/clang-tools-extra/docs/ReleaseNotes.rst
index e45f870fd4330..2f720d47a0931 100644
--- a/clang-tools-extra/docs/ReleaseNotes.rst
+++ b/clang-tools-extra/docs/ReleaseNotes.rst
@@ -130,6 +130,10 @@ Changes in existing checks
   <clang-tidy/checks/bugprone/infinite-loop>` check by adding detection for
   variables introduced by structured bindings.
 
+- Improved :doc:`bugprone-reserved-identifier
+  <clang-tidy/checks/bugprone/reserved-identifier>` check by ignoring
+  declarations in system headers.
+
 - Improved :doc:`bugprone-signed-char-misuse
   <clang-tidy/checks/bugprone/signed-char-misuse>` check by fixing
   false positives on C23 enums with the fixed underlying type of signed char.
@@ -160,6 +164,10 @@ Changes in existing checks
   <clang-tidy/checks/portability/template-virtual-member-function>` check to
   avoid false positives on pure virtual member functions.
 
+- Improved :doc:`readability-identifier-naming
+  <clang-tidy/checks/readability/identifier-naming>` check by ignoring
+  declarations in system headers.
+
 - Improved :doc:`readability-qualified-auto
   <clang-tidy/checks/readability/qualified-auto>` check by adding the option
   `IgnoreAliasing`, that allows not looking at underlying types of type 
aliases.

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to