@@ -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