More edge-case handling with using liveness information to prune dead state values.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48127 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/Analysis/GRCoreEngine.cpp b/Analysis/GRCoreEngine.cpp
index cff3337..53831ed 100644
--- a/Analysis/GRCoreEngine.cpp
+++ b/Analysis/GRCoreEngine.cpp
@@ -292,7 +292,7 @@
 
 GRStmtNodeBuilderImpl::GRStmtNodeBuilderImpl(CFGBlock* b, unsigned idx,
                                      ExplodedNodeImpl* N, GRCoreEngineImpl* e)
-  : Eng(*e), B(*b), Idx(idx), LastNode(N), Populated(false) {
+  : Eng(*e), B(*b), Idx(idx), Pred(N), LastNode(N), Populated(false) {
   Deferred.insert(N);
 }
 
diff --git a/Analysis/GRExprEngine.cpp b/Analysis/GRExprEngine.cpp
index aafc735..15fe88ec 100644
--- a/Analysis/GRExprEngine.cpp
+++ b/Analysis/GRExprEngine.cpp
@@ -403,6 +403,8 @@
 
   CleanedState = StateMgr.RemoveDeadBindings(StmtEntryNode->getState(),
                                              CurrentStmt, Liveness);
+  
+  Builder->SetCleanedState(CleanedState);
 
   // Visit the statement.