[clang-tidy] Optimize misc-confusable-identifiers
authorPiotr Zegar <me@piotrzegar.pl>
Sat, 10 Jun 2023 07:44:18 +0000 (07:44 +0000)
committerPiotr Zegar <me@piotrzegar.pl>
Sat, 10 Jun 2023 11:06:49 +0000 (11:06 +0000)
commit8fdedcd1a242f6b54eec969e72e35ac0a68b7ea1
tree8be426793d7839f315c6ccfec74254f4706906a8
parent7ffeb8efe8a08d74649c325a7eb70dc0b853326e
[clang-tidy] Optimize misc-confusable-identifiers

This is final optimization for this check. Main
improvements comes from changing a logic order
in mayShadow function, to first validate result
of mayShadowImpl, then search primary context in
a vectors. Secondary improvement comes from excluding
all implicit code by using TK_IgnoreUnlessSpelledInSource.
All other changes are just cosmetic improvements.

Tested on Cataclysm-DDA open source project, result in
check execution time reduction from 3682 seconds to
100 seconds (~0.25s per TU). That's 97.2% reduction for
this change alone. Resulting in cumulative improvement for
this check around -99.6%, finally bringing this check
into a cheap category.

Reviewed By: serge-sans-paille

Differential Revision: https://reviews.llvm.org/D151594
clang-tools-extra/clang-tidy/misc/ConfusableIdentifierCheck.cpp
clang-tools-extra/clang-tidy/misc/ConfusableIdentifierCheck.h