[clang] [NFC][analyzer] Remove the NodeBuilder from VisitArrayInitLoopExpr (PR #204354)
via cfe-commits
cfe-commits at lists.llvm.org
Wed Jun 17 06:51:10 PDT 2026
=?utf-8?q?Donát?= Nagy <donat.nagy at ericsson.com>
Message-ID:
In-Reply-To: <llvm.org/llvm/llvm-project/pull/204354 at github.com>
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang
Author: Donát Nagy (NagyDonat)
<details>
<summary>Changes</summary>
Part of my commit series to eliminate the class `NodeBuilder`.
---
Full diff: https://github.com/llvm/llvm-project/pull/204354.diff
1 Files Affected:
- (modified) clang/lib/StaticAnalyzer/Core/ExprEngine.cpp (+9-9)
``````````diff
diff --git a/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp b/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp
index 32da5e097c76e..0937f76308d74 100644
--- a/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp
+++ b/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp
@@ -3193,20 +3193,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 visitior has already taken care of everything, so let's
+ // skip forward to the PostStmt handling after 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();
@@ -3281,7 +3281,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);
``````````
</details>
https://github.com/llvm/llvm-project/pull/204354
More information about the cfe-commits
mailing list