@@ -66,13 +66,10 @@ void CheckerManager::runCheckersOnASTDecl(const Decl *D, AnalysisManager& mgr,
66
66
assert (D);
67
67
68
68
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) {
74
72
// Find the checkers that should run for this Decl and cache them.
75
- checkers = &CachedDeclCheckersMap[DeclKind];
76
73
for (const auto &info : DeclCheckers)
77
74
if (info.IsForDeclFn (D))
78
75
checkers->push_back (info.CheckFn );
@@ -896,14 +893,13 @@ CheckerManager::getCachedStmtCheckersFor(const Stmt *S, bool isPreVisit) {
896
893
assert (S);
897
894
898
895
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
+ }
908
904
return Checkers;
909
905
}
0 commit comments