diff --git a/lib/Sema/AnalysisBasedWarnings.cpp b/lib/Sema/AnalysisBasedWarnings.cpp
index 20a503d..14d7533 100644
--- a/lib/Sema/AnalysisBasedWarnings.cpp
+++ b/lib/Sema/AnalysisBasedWarnings.cpp
@@ -25,6 +25,7 @@
 #include "clang/Analysis/AnalysisContext.h"
 #include "clang/Analysis/CFG.h"
 #include "clang/Analysis/Analyses/ReachableCode.h"
+#include "clang/Analysis/Analyses/UninitializedValuesV2.h"
 #include "llvm/ADT/BitVector.h"
 #include "llvm/Support/Casting.h"
 
@@ -344,6 +345,23 @@
 }
 
 //===----------------------------------------------------------------------===//
+// -Wuninitialized
+//===----------------------------------------------------------------------===//
+
+namespace {
+class UninitValsDiagReporter : public UninitVariablesHandler {
+  Sema &S;
+public:
+  UninitValsDiagReporter(Sema &S) : S(S) {}
+  
+  void handleUseOfUninitVariable(const DeclRefExpr *dr, const VarDecl *vd) {
+    S.Diag(dr->getLocStart(), diag::warn_var_is_uninit)
+      << vd->getDeclName() << dr->getSourceRange();
+  }
+};
+}
+
+//===----------------------------------------------------------------------===//
 // AnalysisBasedWarnings - Worker object used by Sema to execute analysis-based
 //  warnings on a function, method, or block.
 //===----------------------------------------------------------------------===//
@@ -406,6 +424,18 @@
   // Warning: check for unreachable code
   if (P.enableCheckUnreachable)
     CheckUnreachable(S, AC);
+  
+  if (Diags.getDiagnosticLevel(diag::warn_var_is_uninit, D->getLocStart())
+      != Diagnostic::Ignored) {
+    if (!S.getLangOptions().CPlusPlus) {
+      CFG *cfg = AC.getCFG();
+      if (cfg) {
+        UninitValsDiagReporter reporter(S);
+        runUninitializedVariablesAnalysis(*cast<DeclContext>(D), *cfg,
+                                          reporter);
+      }
+    }
+  }
 }
 
 void clang::sema::
