From 74db26ff14589acceff47f1d277c6c82ef191dba Mon Sep 17 00:00:00 2001 From: Artem Dergachev Date: Fri, 2 Feb 2018 02:23:37 +0000 Subject: [PATCH] [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 llvm-svn: 324053 --- clang/lib/StaticAnalyzer/Core/ExprEngine.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp b/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp index 055152dd52fc..bea9314afbcf 100644 --- a/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp +++ b/clang/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);