Author: DonĂ¡t Nagy Date: 2026-06-24T14:31:14+02:00 New Revision: bfac2845fefcfe829df7df4e32a3a3044ee101a5
URL: https://github.com/llvm/llvm-project/commit/bfac2845fefcfe829df7df4e32a3a3044ee101a5 DIFF: https://github.com/llvm/llvm-project/commit/bfac2845fefcfe829df7df4e32a3a3044ee101a5.diff LOG: [NFC][analyzer] Remove the NodeBuilder from VisitArrayInitLoopExpr (#204354) Part of my commit series to eliminate the class `NodeBuilder`. Added: Modified: clang/lib/StaticAnalyzer/Core/ExprEngine.cpp Removed: ################################################################################ diff --git a/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp b/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp index 77faa675b90b8..4357f0fae4144 100644 --- a/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp +++ b/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp @@ -3190,20 +3190,20 @@ void ExprEngine::VisitCommonDeclRefExpr(const Expr *Ex, const NamedDecl *D, void ExprEngine::VisitArrayInitLoopExpr(const ArrayInitLoopExpr *Ex, ExplodedNode *Pred, ExplodedNodeSet &Dst) { + const Expr *Arr = Ex->getCommonExpr()->getSourceExpr(); + ExplodedNodeSet CheckerPreStmt; getCheckerManager().runCheckersForPreStmt(CheckerPreStmt, Pred, Ex, *this); ExplodedNodeSet EvalSet; - NodeBuilder Bldr(CheckerPreStmt, EvalSet, *currBldrCtx); - - const Expr *Arr = Ex->getCommonExpr()->getSourceExpr(); + if (isa<CXXConstructExpr>(Ex->getSubExpr())) { + // The constructor visitor has already handled everything, so let's skip + // forward to PostStmt handling by clearing the range of the 'for' loop. + EvalSet.insert(CheckerPreStmt); + CheckerPreStmt.clear(); + } for (auto *Node : CheckerPreStmt) { - - // The constructor visitior has already taken care of everything. - if (isa<CXXConstructExpr>(Ex->getSubExpr())) - break; - const StackFrame *SF = Node->getStackFrame(); ProgramStateRef state = Node->getState(); @@ -3278,7 +3278,7 @@ void ExprEngine::VisitArrayInitLoopExpr(const ArrayInitLoopExpr *Ex, else Base = UnknownVal(); - Bldr.generateNode(Ex, Node, state->BindExpr(Ex, SF, Base)); + EvalSet.insert(Engine.makeNodeWithBinding(Node, Ex, Base)); } getCheckerManager().runCheckersForPostStmt(Dst, EvalSet, Ex, *this); _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
