[analyzer] Propagate the checker's state from checkBranchCondition
authorAnna Zaks <ganna@apple.com>
Fri, 14 Dec 2012 19:08:20 +0000 (19:08 +0000)
committerAnna Zaks <ganna@apple.com>
Fri, 14 Dec 2012 19:08:20 +0000 (19:08 +0000)
Fixes a bug, where we were dropping the state modifications from the
checkBranchCondition checker callback.

llvm-svn: 170232

clang/lib/StaticAnalyzer/Core/ExprEngine.cpp

index 2657573..5c91dd2 100644 (file)
@@ -1217,8 +1217,8 @@ void ExprEngine::processBranch(const Stmt *Condition, const Stmt *Term,
     if (PredI->isSink())
       continue;
 
-    ProgramStateRef PrevState = Pred->getState();
-    SVal X = PrevState->getSVal(Condition, Pred->getLocationContext());
+    ProgramStateRef PrevState = PredI->getState();
+    SVal X = PrevState->getSVal(Condition, PredI->getLocationContext());
 
     if (X.isUnknownOrUndef()) {
       // Give it a chance to recover from unknown.
@@ -1230,7 +1230,7 @@ void ExprEngine::processBranch(const Stmt *Condition, const Stmt *Term,
           // underlying value and use that instead.
           SVal recovered = RecoverCastedSymbol(getStateManager(),
                                                PrevState, Condition,
-                                               Pred->getLocationContext(),
+                                               PredI->getLocationContext(),
                                                getContext());
 
           if (!recovered.isUnknown()) {