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/Driver/ASTStreamers.cpp b/Driver/ASTStreamers.cpp
index 124b9e2..cce19e7 100644
--- a/Driver/ASTStreamers.cpp
+++ b/Driver/ASTStreamers.cpp
@@ -210,7 +210,7 @@
 }
 
 //===----------------------------------------------------------------------===//
-// RunDeadStores - run checker to locate dead stores in a function
+// DeadStores - run checker to locate dead stores in a function
 
 namespace {
   class DeadStoreVisitor : public CFGVisitor {
@@ -232,6 +232,29 @@
 }
 
 //===----------------------------------------------------------------------===//
+// Unitialized Values - run checker to flag potential uses of uninitalized
+//  variables.
+
+namespace {
+  class UninitValsVisitor : public CFGVisitor {
+    Diagnostic &Diags;
+    ASTContext *Ctx;
+  public:
+    UninitValsVisitor(Diagnostic &diags) : Diags(diags) {}
+    virtual void Initialize(ASTContext &Context, unsigned MainFileID) {
+      Ctx = &Context;
+    }
+    
+    virtual void VisitCFG(CFG& C) { CheckUninitializedValues(C, *Ctx, Diags); }
+    virtual bool printFuncDeclStart() { return false; }
+  }; 
+} // end anonymous namespace
+
+ASTConsumer *clang::CreateUnitValsChecker(Diagnostic &Diags) {
+  return new UninitValsVisitor(Diags);
+}
+
+//===----------------------------------------------------------------------===//
 // LLVM Emitter
 
 #include "clang/Basic/Diagnostic.h"