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;