[cfe-commits] r44618 - /cfe/trunk/Driver/clang.cpp
Ted Kremenek
kremenek at apple.com
Wed Dec 5 10:27:05 PST 2007
Author: kremenek
Date: Wed Dec 5 12:27:04 2007
New Revision: 44618
URL: http://llvm.org/viewvc/llvm-project?rev=44618&view=rev
Log:
Moved creation of ASTConsumers that can operate on both freshly-parsed and
deserialized ASTs into the function CreateASTConsumer(). This function
is called by ProcessInputFile, and soon the logic that processes deserialized
ASTs.
Modified:
cfe/trunk/Driver/clang.cpp
Modified: cfe/trunk/Driver/clang.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/Driver/clang.cpp?rev=44618&r1=44617&r2=44618&view=diff
==============================================================================
--- cfe/trunk/Driver/clang.cpp (original)
+++ cfe/trunk/Driver/clang.cpp Wed Dec 5 12:27:04 2007
@@ -816,6 +816,48 @@
// Main driver
//===----------------------------------------------------------------------===//
+/// CreateASTConsumer - Create the ASTConsumer for the corresponding program
+/// action. These consumers can operate on both ASTs that are freshly
+/// parsed from source files as well as those deserialized from Bitcode.
+static ASTConsumer* CreateASTConsumer(Diagnostic& Diag, FileManager& FileMgr,
+ const LangOptions& LangOpts) {
+ switch (ProgAction) {
+ default:
+ return NULL;
+
+ case ASTPrint:
+ return CreateASTPrinter();
+
+ case ASTDump:
+ return CreateASTDumper();
+
+ case ASTView:
+ return CreateASTViewer();
+
+ case ParseCFGDump:
+ case ParseCFGView:
+ return CreateCFGDumper(ProgAction == ParseCFGView);
+
+ case AnalysisLiveVariables:
+ return CreateLiveVarAnalyzer();
+
+ case WarnDeadStores:
+ return CreateDeadStoreChecker(Diag);
+
+ case WarnUninitVals:
+ return CreateUnitValsChecker(Diag);
+
+ case TestSerialization:
+ return CreateSerializationTest(Diag, FileMgr);
+
+ case EmitLLVM:
+ return CreateLLVMEmitter(Diag, LangOpts);
+
+ case RewriteTest:
+ return CreateCodeRewriterTest(Diag);
+ }
+}
+
/// ProcessInputFile - Process a single input file with the specified state.
///
static void ProcessInputFile(Preprocessor &PP, unsigned MainFileID,
@@ -830,8 +872,15 @@
switch (ProgAction) {
default:
- fprintf(stderr, "Unexpected program action!\n");
- return;
+ Consumer = CreateASTConsumer(PP.getDiagnostics(), HeaderInfo.getFileMgr(),
+ PP.getLangOptions());
+
+ if (!Consumer) {
+ fprintf(stderr, "Unexpected program action!\n");
+ return;
+ }
+ break;
+
case DumpTokens: { // Token dump mode.
Token Tok;
// Start parsing the specified input file.
@@ -874,48 +923,6 @@
case ParseSyntaxOnly: // -fsyntax-only
Consumer = new ASTConsumer();
break;
-
- case ASTPrint:
- Consumer = CreateASTPrinter();
- break;
-
- case ASTDump:
- Consumer = CreateASTDumper();
- break;
-
- case ASTView:
- Consumer = CreateASTViewer();
- break;
-
- case ParseCFGDump:
- case ParseCFGView:
- Consumer = CreateCFGDumper(ProgAction == ParseCFGView);
- break;
-
- case AnalysisLiveVariables:
- Consumer = CreateLiveVarAnalyzer();
- break;
-
- case WarnDeadStores:
- Consumer = CreateDeadStoreChecker(PP.getDiagnostics());
- break;
-
- case WarnUninitVals:
- Consumer = CreateUnitValsChecker(PP.getDiagnostics());
- break;
-
- case TestSerialization:
- Consumer = CreateSerializationTest(PP.getDiagnostics(),
- HeaderInfo.getFileMgr());
- break;
-
- case EmitLLVM:
- Consumer = CreateLLVMEmitter(PP.getDiagnostics(), PP.getLangOptions());
- break;
-
- case RewriteTest:
- Consumer = CreateCodeRewriterTest(PP.getDiagnostics());
- break;
}
if (Consumer) {
More information about the cfe-commits
mailing list