diff --git a/clang/include/clang/Frontend/CompilerInvocation.h b/clang/include/clang/Frontend/CompilerInvocation.h --- a/clang/include/clang/Frontend/CompilerInvocation.h +++ b/clang/include/clang/Frontend/CompilerInvocation.h @@ -243,27 +243,14 @@ ArrayRef CommandLineArgs, DiagnosticsEngine &Diags, const char *Argv0); - /// Parse command line options from DiagnosticOptions. - static bool ParseDiagnosticArgsRoundTrip(CompilerInvocation &Res, - DiagnosticOptions &Opts, - llvm::opt::ArgList &Args, - DiagnosticsEngine *Diags = nullptr, - bool DefaultDiagColor = true); - /// Generate command line options from DiagnosticOptions. static void GenerateDiagnosticArgs(const DiagnosticOptions &Opts, SmallVectorImpl &Args, StringAllocator SA, bool DefaultDiagColor); /// Parse command line options that map to LangOptions. - static bool ParseLangArgsImpl(LangOptions &Opts, llvm::opt::ArgList &Args, - InputKind IK, const llvm::Triple &T, - std::vector &Includes, - DiagnosticsEngine &Diags); - - static bool ParseLangArgs(CompilerInvocation &Res, LangOptions &Opts, - llvm::opt::ArgList &Args, InputKind IK, - const llvm::Triple &T, + static bool ParseLangArgs(LangOptions &Opts, llvm::opt::ArgList &Args, + InputKind IK, const llvm::Triple &T, std::vector &Includes, DiagnosticsEngine &Diags); @@ -273,16 +260,9 @@ StringAllocator SA, const llvm::Triple &T); /// Parse command line options that map to CodeGenOptions. - static bool ParseCodeGenArgsImpl(CodeGenOptions &Opts, - llvm::opt::ArgList &Args, InputKind IK, - DiagnosticsEngine &Diags, - const llvm::Triple &T, - const std::string &OutputFile, - const LangOptions &LangOptsRef); - - static bool ParseCodeGenArgs(CompilerInvocation &Res, CodeGenOptions &Opts, - llvm::opt::ArgList &Args, InputKind IK, - DiagnosticsEngine &Diags, const llvm::Triple &T, + static bool ParseCodeGenArgs(CodeGenOptions &Opts, llvm::opt::ArgList &Args, + InputKind IK, DiagnosticsEngine &Diags, + const llvm::Triple &T, const std::string &OutputFile, const LangOptions &LangOptsRef); @@ -292,18 +272,6 @@ StringAllocator SA, const llvm::Triple &T, const std::string &OutputFile, const LangOptions *LangOpts); - - /// Parse command line options that map to HeaderSearchOptions. - static void ParseHeaderSearchArgs(CompilerInvocation &Res, - HeaderSearchOptions &Opts, - llvm::opt::ArgList &Args, - DiagnosticsEngine &Diags, - const std::string &WorkingDir); - - /// Generate command line options from HeaderSearchOptions. - static void GenerateHeaderSearchArgs(HeaderSearchOptions &Opts, - SmallVectorImpl &Args, - CompilerInvocation::StringAllocator SA); }; IntrusiveRefCntPtr diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/clang/lib/Frontend/CompilerInvocation.cpp @@ -845,8 +845,8 @@ // Nothing to generate for FullCompilerInvocation. } -static bool ParseAnalyzerArgsImpl(AnalyzerOptions &Opts, ArgList &Args, - DiagnosticsEngine &Diags) { +static bool ParseAnalyzerArgs(AnalyzerOptions &Opts, ArgList &Args, + DiagnosticsEngine &Diags) { AnalyzerOptions *AnalyzerOpts = &Opts; bool Success = true; @@ -1013,11 +1013,6 @@ return Success; } -static bool ParseAnalyzerArgs(CompilerInvocation &Res, AnalyzerOptions &Opts, - ArgList &Args, DiagnosticsEngine &Diags) { - return ParseAnalyzerArgsImpl(*Res.getAnalyzerOpts(), Args, Diags); -} - static StringRef getStringOption(AnalyzerOptions::ConfigTable &Config, StringRef OptionName, StringRef DefaultVal) { return Config.insert({OptionName, std::string(DefaultVal)}).first->second; @@ -1478,12 +1473,12 @@ GenerateArg(Args, OPT_Qn, SA); } -bool CompilerInvocation::ParseCodeGenArgsImpl(CodeGenOptions &Opts, - ArgList &Args, InputKind IK, - DiagnosticsEngine &Diags, - const llvm::Triple &T, - const std::string &OutputFile, - const LangOptions &LangOptsRef) { +bool CompilerInvocation::ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args, + InputKind IK, + DiagnosticsEngine &Diags, + const llvm::Triple &T, + const std::string &OutputFile, + const LangOptions &LangOptsRef) { unsigned NumErrorsBefore = Diags.getNumErrors(); bool Success = true; @@ -1891,14 +1886,6 @@ return Success && Diags.getNumErrors() == NumErrorsBefore; } -bool CompilerInvocation::ParseCodeGenArgs( - CompilerInvocation &Res, CodeGenOptions &Opts, ArgList &Args, InputKind IK, - DiagnosticsEngine &Diags, const llvm::Triple &T, - const std::string &OutputFile, const LangOptions &LangOptsRef) { - return ParseCodeGenArgsImpl(Res.getCodeGenOpts(), Args, IK, Diags, T, - OutputFile, LangOptsRef); -} - static void GenerateDependencyOutputArgs(const DependencyOutputOptions &Opts, SmallVectorImpl &Args, @@ -1938,10 +1925,10 @@ } } -static bool ParseDependencyOutputArgsImpl( - DependencyOutputOptions &Opts, ArgList &Args, - DiagnosticsEngine &Diags, - frontend::ActionKind Action, bool ShowLineMarkers) { +static bool ParseDependencyOutputArgs(DependencyOutputOptions &Opts, + ArgList &Args, DiagnosticsEngine &Diags, + frontend::ActionKind Action, + bool ShowLineMarkers) { unsigned NumErrorsBefore = Diags.getNumErrors(); bool Success = true; @@ -2006,15 +1993,6 @@ return Success && Diags.getNumErrors() == NumErrorsBefore; } -static bool ParseDependencyOutputArgs(CompilerInvocation &Res, - DependencyOutputOptions &Opts, - ArgList &Args, DiagnosticsEngine &Diags, - frontend::ActionKind Action, - bool ShowLineMarkers) { - return ParseDependencyOutputArgsImpl(Res.getDependencyOutputOpts(), Args, - Diags, Action, ShowLineMarkers); -} - static bool parseShowColorsArgs(const ArgList &Args, bool DefaultColor) { // Color diagnostics default to auto ("on" if terminal supports) in the driver // but default to off in cc1, needing an explicit OPT_fdiagnostics_color. @@ -2267,15 +2245,6 @@ return Success; } -bool CompilerInvocation::ParseDiagnosticArgsRoundTrip(CompilerInvocation &Res, - DiagnosticOptions &Opts, - ArgList &Args, - DiagnosticsEngine *Diags, - bool DefaultDiagColor) { - return clang::ParseDiagnosticArgs(Res.getDiagnosticOpts(), Args, Diags, - DefaultDiagColor); -} - /// Parse the argument to the -ftest-module-file-extension /// command-line argument. /// @@ -2531,9 +2500,8 @@ Args.push_back(SA(Input.getFile())); } -static bool ParseFrontendArgsImpl(FrontendOptions &Opts, ArgList &Args, - DiagnosticsEngine &Diags, - bool &IsHeaderFile) { +static bool ParseFrontendArgs(FrontendOptions &Opts, ArgList &Args, + DiagnosticsEngine &Diags, bool &IsHeaderFile) { FrontendOptions &FrontendOpts = Opts; bool Success = true; unsigned NumErrorsBefore = Diags.getNumErrors(); @@ -2752,13 +2720,6 @@ return Diags.getNumErrors() == NumErrorsBefore; } -static bool ParseFrontendArgs(CompilerInvocation &Res, FrontendOptions &Opts, - ArgList &Args, DiagnosticsEngine &Diags, - bool &IsHeaderFile) { - return ParseFrontendArgsImpl(Res.getFrontendOpts(), Args, Diags, - IsHeaderFile); -} - std::string CompilerInvocation::GetResourcesPath(const char *Argv0, void *MainAddr) { std::string ClangExecutable = @@ -2766,9 +2727,9 @@ return Driver::GetResourcesPath(ClangExecutable, CLANG_RESOURCE_DIR); } -void CompilerInvocation::GenerateHeaderSearchArgs( - HeaderSearchOptions &Opts, SmallVectorImpl &Args, - CompilerInvocation::StringAllocator SA) { +static void GenerateHeaderSearchArgs(HeaderSearchOptions &Opts, + SmallVectorImpl &Args, + CompilerInvocation::StringAllocator SA) { const HeaderSearchOptions *HeaderSearchOpts = &Opts; #define HEADER_SEARCH_OPTION_WITH_MARSHALLING( \ PREFIX_TYPE, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \ @@ -3027,14 +2988,6 @@ return Success; } -void CompilerInvocation::ParseHeaderSearchArgs(CompilerInvocation &Res, - HeaderSearchOptions &Opts, - ArgList &Args, - DiagnosticsEngine &Diags, - const std::string &WorkingDir) { - ::ParseHeaderSearchArgs(Res.getHeaderSearchOpts(), Args, Diags, WorkingDir); -} - void CompilerInvocation::setLangDefaults(LangOptions &Opts, InputKind IK, const llvm::Triple &T, std::vector &Includes, @@ -3467,10 +3420,10 @@ GenerateArg(Args, OPT_msign_return_address_key_EQ, "b_key", SA); } -bool CompilerInvocation::ParseLangArgsImpl(LangOptions &Opts, ArgList &Args, - InputKind IK, const llvm::Triple &T, - std::vector &Includes, - DiagnosticsEngine &Diags) { +bool CompilerInvocation::ParseLangArgs(LangOptions &Opts, ArgList &Args, + InputKind IK, const llvm::Triple &T, + std::vector &Includes, + DiagnosticsEngine &Diags) { unsigned NumErrorsBefore = Diags.getNumErrors(); // FIXME: Cleanup per-file based stuff. @@ -3908,15 +3861,6 @@ return Success && Diags.getNumErrors() == NumErrorsBefore; } -bool CompilerInvocation::ParseLangArgs(CompilerInvocation &Res, - LangOptions &Opts, - llvm::opt::ArgList &Args, InputKind IK, - const llvm::Triple &T, - std::vector &Includes, - DiagnosticsEngine &Diags) { - return ParseLangArgsImpl(*Res.getLangOpts(), Args, IK, T, Includes, Diags); -} - static bool isStrictlyPreprocessorAction(frontend::ActionKind Action) { switch (Action) { case frontend::ASTDeclList: @@ -4032,10 +3976,10 @@ // generated elsewhere. } -static bool ParsePreprocessorArgsImpl(PreprocessorOptions &Opts, ArgList &Args, - DiagnosticsEngine &Diags, - frontend::ActionKind Action, - const FrontendOptions &FrontendOpts) { +static bool ParsePreprocessorArgs(PreprocessorOptions &Opts, ArgList &Args, + DiagnosticsEngine &Diags, + frontend::ActionKind Action, + const FrontendOptions &FrontendOpts) { PreprocessorOptions *PreprocessorOpts = &Opts; bool Success = true; @@ -4125,15 +4069,6 @@ return Success; } -static bool ParsePreprocessorArgs(CompilerInvocation &Res, - PreprocessorOptions &Opts, ArgList &Args, - DiagnosticsEngine &Diags, - frontend::ActionKind Action, - FrontendOptions &FrontendOpts) { - return ParsePreprocessorArgsImpl(Res.getPreprocessorOpts(), Args, Diags, - Action, Res.getFrontendOpts()); -} - static void GeneratePreprocessorOutputArgs( const PreprocessorOutputOptions &Opts, SmallVectorImpl &Args, CompilerInvocation::StringAllocator SA, frontend::ActionKind Action) { @@ -4157,10 +4092,9 @@ GenerateArg(Args, OPT_dD, SA); } -static bool ParsePreprocessorOutputArgsImpl(PreprocessorOutputOptions &Opts, - ArgList &Args, - DiagnosticsEngine &Diags, - frontend::ActionKind Action) { +static bool ParsePreprocessorOutputArgs(PreprocessorOutputOptions &Opts, + ArgList &Args, DiagnosticsEngine &Diags, + frontend::ActionKind Action) { PreprocessorOutputOptions &PreprocessorOutputOpts = Opts; unsigned NumErrorsBefore = Diags.getNumErrors(); bool Success = true; @@ -4183,14 +4117,6 @@ return Success && Diags.getNumErrors() == NumErrorsBefore; } -static bool ParsePreprocessorOutputArgs(CompilerInvocation &Res, - PreprocessorOutputOptions &Opts, - ArgList &Args, DiagnosticsEngine &Diags, - frontend::ActionKind Action) { - return ParsePreprocessorOutputArgsImpl(Res.getPreprocessorOutputOpts(), Args, - Diags, Action); -} - static void GenerateTargetArgs(const TargetOptions &Opts, SmallVectorImpl &Args, CompilerInvocation::StringAllocator SA) { @@ -4211,8 +4137,8 @@ SA); } -static bool ParseTargetArgsImpl(TargetOptions &Opts, ArgList &Args, - DiagnosticsEngine &Diags) { +static bool ParseTargetArgs(TargetOptions &Opts, ArgList &Args, + DiagnosticsEngine &Diags) { TargetOptions *TargetOpts = &Opts; unsigned NumErrorsBefore = Diags.getNumErrors(); bool Success = true; @@ -4241,11 +4167,6 @@ return Success && Diags.getNumErrors() == NumErrorsBefore; } -static bool ParseTargetArgs(CompilerInvocation &Res, TargetOptions &Opts, - ArgList &Args, DiagnosticsEngine &Diags) { - return ParseTargetArgsImpl(Res.getTargetOpts(), Args, Diags); -} - bool CompilerInvocation::CreateFromArgsImpl( CompilerInvocation &Res, ArrayRef CommandLineArgs, DiagnosticsEngine &Diags, const char *Argv0) { @@ -4280,17 +4201,16 @@ Success &= ParseFileSystemArgs(Res.getFileSystemOpts(), Args, Diags); Success &= ParseMigratorArgs(Res.getMigratorOpts(), Args, Diags); - Success &= ParseAnalyzerArgs(Res, *Res.getAnalyzerOpts(), Args, Diags); - Success &= - ParseDiagnosticArgsRoundTrip(Res, Res.getDiagnosticOpts(), Args, &Diags, - /*DefaultDiagColor=*/false); - Success &= ParseFrontendArgs(Res, Res.getFrontendOpts(), Args, Diags, + Success &= ParseAnalyzerArgs(*Res.getAnalyzerOpts(), Args, Diags); + Success &= ParseDiagnosticArgs(Res.getDiagnosticOpts(), Args, &Diags, + /*DefaultDiagColor=*/false); + Success &= ParseFrontendArgs(Res.getFrontendOpts(), Args, Diags, LangOpts.IsHeaderFile); // FIXME: We shouldn't have to pass the DashX option around here InputKind DashX = Res.getFrontendOpts().DashX; - Success &= ParseTargetArgs(Res, Res.getTargetOpts(), Args, Diags); + Success &= ParseTargetArgs(Res.getTargetOpts(), Args, Diags); llvm::Triple T(Res.getTargetOpts().Triple); - ParseHeaderSearchArgs(Res, Res.getHeaderSearchOpts(), Args, Diags, + ParseHeaderSearchArgs(Res.getHeaderSearchOpts(), Args, Diags, Res.getFileSystemOpts().WorkingDir); if (DashX.getFormat() == InputKind::Precompiled || DashX.getLanguage() == Language::LLVM_IR) { @@ -4308,7 +4228,7 @@ } else { // Other LangOpts are only initialized when the input is not AST or LLVM IR. // FIXME: Should we really be calling this for an Language::Asm input? - Success &= ParseLangArgs(Res, LangOpts, Args, DashX, T, + Success &= ParseLangArgs(LangOpts, Args, DashX, T, Res.getPreprocessorOpts().Includes, Diags); if (Res.getFrontendOpts().ProgramAction == frontend::RewriteObjC) LangOpts.ObjCExceptions = 1; @@ -4331,7 +4251,7 @@ if (LangOpts.OpenMPIsDevice) Res.getTargetOpts().HostTriple = Res.getFrontendOpts().AuxTriple; - Success &= ParseCodeGenArgs(Res, Res.getCodeGenOpts(), Args, DashX, Diags, T, + Success &= ParseCodeGenArgs(Res.getCodeGenOpts(), Args, DashX, Diags, T, Res.getFrontendOpts().OutputFile, LangOpts); // FIXME: Override value name discarding when asan or msan is used because the @@ -4343,13 +4263,13 @@ !LangOpts.Sanitize.has(SanitizerKind::Memory) && !LangOpts.Sanitize.has(SanitizerKind::KernelMemory); - ParsePreprocessorArgs(Res, Res.getPreprocessorOpts(), Args, Diags, + ParsePreprocessorArgs(Res.getPreprocessorOpts(), Args, Diags, Res.getFrontendOpts().ProgramAction, Res.getFrontendOpts()); - ParsePreprocessorOutputArgs(Res, Res.getPreprocessorOutputOpts(), Args, Diags, + ParsePreprocessorOutputArgs(Res.getPreprocessorOutputOpts(), Args, Diags, Res.getFrontendOpts().ProgramAction); - ParseDependencyOutputArgs(Res, Res.getDependencyOutputOpts(), Args, Diags, + ParseDependencyOutputArgs(Res.getDependencyOutputOpts(), Args, Diags, Res.getFrontendOpts().ProgramAction, Res.getPreprocessorOutputOpts().ShowLineMarkers); if (!Res.getDependencyOutputOpts().OutputFile.empty() &&