[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