]> granicus.if.org Git - clang/commitdiff
[analyzer] Fix transitions in check::PreStmt<MemberExpr> checker callback.
authorArtem Dergachev <artem.dergachev@gmail.com>
Fri, 2 Feb 2018 02:23:37 +0000 (02:23 +0000)
committerArtem Dergachev <artem.dergachev@gmail.com>
Fri, 2 Feb 2018 02:23:37 +0000 (02:23 +0000)
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

lib/StaticAnalyzer/Core/ExprEngine.cpp

index 055152dd52fcaa41ec3b621db65bcfd36ae20674..bea9314afbcfe45581e435575c6ca1b2a8ae073a 100644 (file)
@@ -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<VarDecl>(Member) || isa<EnumConstantDecl>(Member)) {
-    ExplodedNodeSet Dst;
+  if (isa<VarDecl>(Member) || isa<EnumConstantDecl>(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);