convert ast printer and dumper ocver to ASTConsumer interface,
genericizing them and eliminating boilerplate code.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41992 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/Driver/clang.cpp b/Driver/clang.cpp
index d6f4da8..7c25a0a 100644
--- a/Driver/clang.cpp
+++ b/Driver/clang.cpp
@@ -844,12 +844,16 @@
     ParseAST(PP, MainFileID, NullConsumer, Stats);
     break;
   }
-  case ParseASTPrint:
-    PrintASTs(PP, MainFileID, Stats);
+  case ParseASTPrint: {
+    std::auto_ptr<ASTConsumer> C(CreateASTPrinter());
+    ParseAST(PP, MainFileID, *C.get(), Stats);
     break;
-  case ParseASTDump:
-    DumpASTs(PP, MainFileID, Stats);
+  }
+  case ParseASTDump: {
+    std::auto_ptr<ASTConsumer> C(CreateASTDumper());
+    ParseAST(PP, MainFileID, *C.get(), Stats);
     break;
+  }
   case ParseCFGDump:
     DumpCFGs(PP, MainFileID, Stats);
     break;