diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2011-10-20 21:14:49 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2011-10-20 21:14:49 +0000 | 
| commit | 36981b17ed939300f6f8fc2355a255f711fcef71 (patch) | |
| tree | ee2483e98b09cac943dc93a6969d83ca737ff139 /lib/FrontendTool/ExecuteCompilerInvocation.cpp | |
| parent | 180abc3db9ae3b4fc63cd65b15697e6ffcc8a657 (diff) | |
Notes
Diffstat (limited to 'lib/FrontendTool/ExecuteCompilerInvocation.cpp')
| -rw-r--r-- | lib/FrontendTool/ExecuteCompilerInvocation.cpp | 39 | 
1 files changed, 22 insertions, 17 deletions
diff --git a/lib/FrontendTool/ExecuteCompilerInvocation.cpp b/lib/FrontendTool/ExecuteCompilerInvocation.cpp index f2db3ae74191..c9af3cc3ff1e 100644 --- a/lib/FrontendTool/ExecuteCompilerInvocation.cpp +++ b/lib/FrontendTool/ExecuteCompilerInvocation.cpp @@ -39,7 +39,6 @@ static FrontendAction *CreateFrontendBaseAction(CompilerInstance &CI) {    case ASTDumpXML:             return new ASTDumpXMLAction();    case ASTPrint:               return new ASTPrintAction();    case ASTView:                return new ASTViewAction(); -  case CreateModule:           return 0;    case DumpRawTokens:          return new DumpRawTokensAction();    case DumpTokens:             return new DumpTokensAction();    case EmitAssembly:           return new EmitAssemblyAction(); @@ -50,7 +49,8 @@ static FrontendAction *CreateFrontendBaseAction(CompilerInstance &CI) {    case EmitCodeGenOnly:        return new EmitCodeGenOnlyAction();    case EmitObj:                return new EmitObjAction();    case FixIt:                  return new FixItAction(); -  case GeneratePCH:            return new GeneratePCHAction(); +  case GenerateModule:         return new GeneratePCHAction(true); +  case GeneratePCH:            return new GeneratePCHAction(false);    case GeneratePTH:            return new GeneratePTHAction();    case InitOnly:               return new InitOnlyAction();    case ParseSyntaxOnly:        return new SyntaxOnlyAction(); @@ -100,7 +100,10 @@ static FrontendAction *CreateFrontendAction(CompilerInstance &CI) {      Act = new arcmt::ModifyAction(Act);      break;    case FrontendOptions::ARCMT_Migrate: -    Act = new arcmt::MigrateAction(Act, CI.getFrontendOpts().ARCMTMigrateDir); +    Act = new arcmt::MigrateAction(Act, +                                   CI.getFrontendOpts().ARCMTMigrateDir, +                                   CI.getFrontendOpts().ARCMTMigrateReportOut, +                                CI.getFrontendOpts().ARCMTMigrateEmitARCErrors);      break;    } @@ -122,12 +125,6 @@ bool clang::ExecuteCompilerInvocation(CompilerInstance *Clang) {      return 0;    } -  // Honor -analyzer-checker-help. -  if (Clang->getAnalyzerOpts().ShowCheckerHelp) { -    ento::printCheckerHelp(llvm::outs()); -    return 0; -  } -    // Honor -version.    //    // FIXME: Use a better -version message? @@ -136,9 +133,20 @@ bool clang::ExecuteCompilerInvocation(CompilerInstance *Clang) {      return 0;    } +  // 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)) +      Clang->getDiagnostics().Report(diag::err_fe_unable_to_load_plugin) +        << Path << Error; +  } +    // Honor -mllvm.    //    // FIXME: Remove this, one day. +  // This should happen AFTER plugins have been loaded!    if (!Clang->getFrontendOpts().LLVMArgs.empty()) {      unsigned NumArgs = Clang->getFrontendOpts().LLVMArgs.size();      const char **Args = new const char*[NumArgs + 2]; @@ -149,14 +157,11 @@ bool clang::ExecuteCompilerInvocation(CompilerInstance *Clang) {      llvm::cl::ParseCommandLineOptions(NumArgs + 1, const_cast<char **>(Args));    } -  // 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)) -      Clang->getDiagnostics().Report(diag::err_fe_unable_to_load_plugin) -        << Path << Error; +  // Honor -analyzer-checker-help. +  // This should happen AFTER plugins have been loaded! +  if (Clang->getAnalyzerOpts().ShowCheckerHelp) { +    ento::printCheckerHelp(llvm::outs(), Clang->getFrontendOpts().Plugins); +    return 0;    }    // If there were errors in processing arguments, don't do anything else.  | 
