]> granicus.if.org Git - clang/commitdiff
cc1: Lift creation of the FrontendAction higher.
authorDaniel Dunbar <daniel@zuster.org>
Wed, 13 Jan 2010 00:47:51 +0000 (00:47 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Wed, 13 Jan 2010 00:47:51 +0000 (00:47 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93281 91177308-0d34-0410-b5e6-96231b3b80d8

tools/driver/cc1_main.cpp

index eb1f60ccb645e4ebab9a9852c488fe453e31af7e..d901c6f8a14e089d6e1f38560a5ed5d0f562f4e4 100644 (file)
@@ -249,8 +249,11 @@ int cc1_main(const char **ArgBegin, const char **ArgEnd,
       Diags.Report(diag::err_fe_unable_to_load_plugin) << Path << Error;
   }
 
+  // Create the frontend action.
+  llvm::OwningPtr<FrontendAction> Act(CreateFrontendAction(Clang));
+
   // If there were any errors in processing arguments, exit now.
-  if (Clang.getDiagnostics().getNumErrors())
+  if (!Act || Clang.getDiagnostics().getNumErrors())
     return 1;
 
   // Create the target instance.
@@ -259,13 +262,13 @@ int cc1_main(const char **ArgBegin, const char **ArgEnd,
   if (!Clang.hasTarget())
     return 1;
 
-  // Inform the target of the language options
+  // Inform the target of the language options.
   //
   // FIXME: We shouldn't need to do this, the target should be immutable once
   // created. This complexity should be lifted elsewhere.
   Clang.getTarget().setForcedLangOptions(Clang.getLangOpts());
 
-  // Validate/process some options
+  // Validate/process some options.
   if (Clang.getHeaderSearchOpts().Verbose)
     llvm::errs() << "clang -cc1 version " CLANG_VERSION_STRING
                  << " based upon " << PACKAGE_STRING
@@ -298,10 +301,6 @@ int cc1_main(const char **ArgBegin, const char **ArgEnd,
       Clang.createPreprocessor();
     }
 
-    llvm::OwningPtr<FrontendAction> Act(CreateFrontendAction(Clang));
-    if (!Act)
-      break;
-
     if (Act->BeginSourceFile(Clang, InFile, IsAST)) {
       Act->Execute();
       Act->EndSourceFile();