]> granicus.if.org Git - clang/commitdiff
clang -cc1: Move real diagnostics client initialization to earlier.
authorDaniel Dunbar <daniel@zuster.org>
Thu, 12 Aug 2010 02:53:07 +0000 (02:53 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Thu, 12 Aug 2010 02:53:07 +0000 (02:53 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110902 91177308-0d34-0410-b5e6-96231b3b80d8

tools/driver/cc1_main.cpp

index 0699b7f48dbdec9a4d890067b8f82c32db6e2d1f..dcf7d4e5c1a5dcc209881d3c3fe3cbb54d1a3728 100644 (file)
@@ -222,6 +222,18 @@ int cc1_main(const char **ArgBegin, const char **ArgEnd,
     Clang->getHeaderSearchOpts().ResourceDir =
       CompilerInvocation::GetResourcesPath(Argv0, MainAddr);
 
+  // Create the actual diagnostics engine.
+  Clang->createDiagnostics(ArgEnd - ArgBegin, const_cast<char**>(ArgBegin));
+  if (!Clang->hasDiagnostics())
+    return 1;
+
+  // Set an error handler, so that any LLVM backend diagnostics go through our
+  // error handler.
+  llvm::install_fatal_error_handler(LLVMErrorHandler,
+                                  static_cast<void*>(&Clang->getDiagnostics()));
+
+  DiagsBuffer.FlushDiagnostics(Clang->getDiagnostics());
+
   // Honor -help.
   if (Clang->getFrontendOpts().ShowHelp) {
     llvm::OwningPtr<driver::OptTable> Opts(driver::createCC1OptTable());
@@ -251,25 +263,14 @@ int cc1_main(const char **ArgBegin, const char **ArgEnd,
     llvm::cl::ParseCommandLineOptions(NumArgs + 1, const_cast<char **>(Args));
   }
 
-  // Create the actual diagnostics engine.
-  Clang->createDiagnostics(ArgEnd - ArgBegin, const_cast<char**>(ArgBegin));
-  if (!Clang->hasDiagnostics())
-    return 1;
-
-  // Set an error handler, so that any LLVM backend diagnostics go through our
-  // error handler.
-  llvm::install_fatal_error_handler(LLVMErrorHandler,
-                                  static_cast<void*>(&Clang->getDiagnostics()));
-
-  DiagsBuffer.FlushDiagnostics(Clang->getDiagnostics());
-
   // Load any requested plugins.
   for (unsigned i = 0,
          e = Clang->getFrontendOpts().Plugins.size(); i != e; ++i) {
     const std::string &Path = Clang->getFrontendOpts().Plugins[i];
     std::string Error;
     if (llvm::sys::DynamicLibrary::LoadLibraryPermanently(Path.c_str(), &Error))
-      Diags.Report(diag::err_fe_unable_to_load_plugin) << Path << Error;
+      Clang->getDiagnostics().Report(diag::err_fe_unable_to_load_plugin)
+        << Path << Error;
   }
 
   // If there were errors in processing arguments, don't do anything else.