From: Artem Dergachev Date: Fri, 2 Feb 2018 02:23:37 +0000 (+0000) Subject: [analyzer] Fix transitions in check::PreStmt checker callback. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=cd369d49a2ea70390c28d51f391f00f57195738b;p=clang [analyzer] Fix transitions in check::PreStmt checker callback. No in-tree checkers use this callback so far, hence no tests. But better fix this now than remember to fix this when the checkers actually appear. Patch by Henry Wong! Differential Revision: https://reviews.llvm.org/D42785 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@324053 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/StaticAnalyzer/Core/ExprEngine.cpp b/lib/StaticAnalyzer/Core/ExprEngine.cpp index 055152dd52..bea9314afb 100644 --- a/lib/StaticAnalyzer/Core/ExprEngine.cpp +++ b/lib/StaticAnalyzer/Core/ExprEngine.cpp @@ -2251,16 +2251,15 @@ void ExprEngine::VisitMemberExpr(const MemberExpr *M, ExplodedNode *Pred, ExplodedNodeSet CheckedSet; getCheckerManager().runCheckersForPreStmt(CheckedSet, Pred, M, *this); - ExplodedNodeSet EvalSet; - ValueDecl *Member = M->getMemberDecl(); + ExplodedNodeSet EvalSet; + ValueDecl *Member = M->getMemberDecl(); // Handle static member variables and enum constants accessed via // member syntax. - if (isa(Member) || isa(Member)) { - ExplodedNodeSet Dst; + if (isa(Member) || isa(Member)) { for (ExplodedNodeSet::iterator I = CheckedSet.begin(), E = CheckedSet.end(); I != E; ++I) { - VisitCommonDeclRefExpr(M, Member, Pred, EvalSet); + VisitCommonDeclRefExpr(M, Member, *I, EvalSet); } } else { StmtNodeBuilder Bldr(CheckedSet, EvalSet, *currBldrCtx);