UninitialuzedValues now only tracks BlockVarDecls; obviating false positives with
globals and function parameters.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42055 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/Analysis/DataflowSolver.h b/Analysis/DataflowSolver.h
index de5f9a3..4a089db 100644
--- a/Analysis/DataflowSolver.h
+++ b/Analysis/DataflowSolver.h
@@ -117,7 +117,15 @@
         for (CFGBlock::const_succ_iterator I=B->succ_begin(), E=B->succ_end();
              I != E; ++I)
           WorkList.enqueue(*I);    
-    }                     
+    }
+    
+    // For blocks that have no associated dataflow value, instantiate a
+    // default value.
+    BlockDataMapTy& M = D.getBlockDataMap();
+    
+    for (CFG::const_iterator I=cfg.begin(), E=cfg.end(); I!=E; ++I)
+      if (M.find(&*I) == M.end())
+        M[&*I].resetValues(D.getAnalysisData());
   }       
   
   /// SolveDataflowEquations (BACKWARD ANALYSIS) - Perform the actual
@@ -153,7 +161,7 @@
     ValTy& V = TF.getVal();
 
     // Merge dataflow values from all predecessors of this block.
-    V.resetValues();
+    V.resetValues(D.getAnalysisData());
     MergeOperatorTy Merge;
   
     for (CFGBlock::const_pred_iterator I=B->pred_begin(), 
@@ -175,7 +183,7 @@
     ValTy& V = TF.getVal();
     
     // Merge dataflow values from all predecessors of this block.
-    V.resetValues();
+    V.resetValues(D.getAnalysisData());
     MergeOperatorTy Merge;
     
     for (CFGBlock::const_succ_iterator I=B->succ_begin(),