Skip to content

Commit 9e6578c

Browse files
[StaticAnalyzer] Avoid repeated hash lookups (NFC) (#111272)
1 parent bea2803 commit 9e6578c

File tree

1 file changed

+11
-15
lines changed

1 file changed

+11
-15
lines changed

clang/lib/StaticAnalyzer/Core/CheckerManager.cpp

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -66,13 +66,10 @@ void CheckerManager::runCheckersOnASTDecl(const Decl *D, AnalysisManager& mgr,
6666
assert(D);
6767

6868
unsigned DeclKind = D->getKind();
69-
CachedDeclCheckers *checkers = nullptr;
70-
CachedDeclCheckersMapTy::iterator CCI = CachedDeclCheckersMap.find(DeclKind);
71-
if (CCI != CachedDeclCheckersMap.end()) {
72-
checkers = &(CCI->second);
73-
} else {
69+
auto [CCI, Inserted] = CachedDeclCheckersMap.try_emplace(DeclKind);
70+
CachedDeclCheckers *checkers = &(CCI->second);
71+
if (Inserted) {
7472
// Find the checkers that should run for this Decl and cache them.
75-
checkers = &CachedDeclCheckersMap[DeclKind];
7673
for (const auto &info : DeclCheckers)
7774
if (info.IsForDeclFn(D))
7875
checkers->push_back(info.CheckFn);
@@ -896,14 +893,13 @@ CheckerManager::getCachedStmtCheckersFor(const Stmt *S, bool isPreVisit) {
896893
assert(S);
897894

898895
unsigned Key = (S->getStmtClass() << 1) | unsigned(isPreVisit);
899-
CachedStmtCheckersMapTy::iterator CCI = CachedStmtCheckersMap.find(Key);
900-
if (CCI != CachedStmtCheckersMap.end())
901-
return CCI->second;
902-
903-
// Find the checkers that should run for this Stmt and cache them.
904-
CachedStmtCheckers &Checkers = CachedStmtCheckersMap[Key];
905-
for (const auto &Info : StmtCheckers)
906-
if (Info.IsPreVisit == isPreVisit && Info.IsForStmtFn(S))
907-
Checkers.push_back(Info.CheckFn);
896+
auto [CCI, Inserted] = CachedStmtCheckersMap.try_emplace(Key);
897+
CachedStmtCheckers &Checkers = CCI->second;
898+
if (Inserted) {
899+
// Find the checkers that should run for this Stmt and cache them.
900+
for (const auto &Info : StmtCheckers)
901+
if (Info.IsPreVisit == isPreVisit && Info.IsForStmtFn(S))
902+
Checkers.push_back(Info.CheckFn);
903+
}
908904
return Checkers;
909905
}

0 commit comments

Comments
 (0)