switch the various CFG-based stuff over to using ASTConsumer interface,
this eliminates their dependence on the preprocessor and eliminates some
duplicated code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41993 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/Driver/clang.cpp b/Driver/clang.cpp
index 7c25a0a..7301354 100644
--- a/Driver/clang.cpp
+++ b/Driver/clang.cpp
@@ -855,17 +855,21 @@
     break;
   }
   case ParseCFGDump:
-    DumpCFGs(PP, MainFileID, Stats);
+  case ParseCFGView: {
+    std::auto_ptr<ASTConsumer> C(CreateCFGDumper(ProgAction == ParseCFGView));
+    ParseAST(PP, MainFileID, *C.get(), Stats);
     break;
-  case ParseCFGView:
-    DumpCFGs(PP, MainFileID, Stats, true);
+  }
+  case AnalysisLiveVariables: {
+    std::auto_ptr<ASTConsumer> C(CreateLiveVarAnalyzer());
+    ParseAST(PP, MainFileID, *C.get(), Stats);
     break;
-  case AnalysisLiveVariables:
-    AnalyzeLiveVariables(PP, MainFileID);
+  }
+  case WarnDeadStores: {
+    std::auto_ptr<ASTConsumer> C(CreateDeadStoreChecker(PP.getDiagnostics()));
+    ParseAST(PP, MainFileID, *C.get(), Stats);
     break;
-  case WarnDeadStores:
-    RunDeadStoresCheck(PP, MainFileID, Stats);
-    break;
+  }
   case EmitLLVM:
     EmitLLVMFromASTs(PP, MainFileID, Stats);
     break;