diff options
author | Jan Svoboda <jan_svoboda@apple.com> | 2020-11-20 12:49:51 +0100 |
---|---|---|
committer | Jan Svoboda <jan_svoboda@apple.com> | 2020-12-01 10:02:08 +0100 |
commit | 2b84efa00040410d97aff403788ee5d96b1046e2 (patch) | |
tree | d89b33db4f4193fa5fdb0cd4bd3557c5f66df694 /clang/lib/Frontend/CompilerInvocation.cpp | |
parent | 88ab38449b49bf002ed7794d1b81d362aa9f9df2 (diff) | |
download | llvm-2b84efa00040410d97aff403788ee5d96b1046e2.zip llvm-2b84efa00040410d97aff403788ee5d96b1046e2.tar.gz llvm-2b84efa00040410d97aff403788ee5d96b1046e2.tar.bz2 |
[clang][cli] Port Frontend option flags to new option parsing system
Depends on D91861.
Reviewed By: dexonsmith
Original patch by Daniel Grumberg.
Differential Revision: https://reviews.llvm.org/D83697
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
-rw-r--r-- | clang/lib/Frontend/CompilerInvocation.cpp | 45 |
1 files changed, 10 insertions, 35 deletions
diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp index 6b4da61..f23d1e3 100644 --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/clang/lib/Frontend/CompilerInvocation.cpp @@ -136,6 +136,14 @@ static llvm::Optional<bool> normalizeSimpleFlag(OptSpecifier Opt, return None; } +static Optional<bool> normalizeSimpleNegativeFlag(OptSpecifier Opt, unsigned, + const ArgList &Args, + DiagnosticsEngine &) { + if (Args.hasArg(Opt)) + return false; + return None; +} + void denormalizeSimpleFlag(SmallVectorImpl<const char *> &Args, const char *Spelling, CompilerInvocation::StringAllocator SA, @@ -278,9 +286,11 @@ static void FixupInvocation(CompilerInvocation &Invocation) { LangOptions &LangOpts = *Invocation.getLangOpts(); DiagnosticOptions &DiagOpts = Invocation.getDiagnosticOpts(); CodeGenOptions &CodeGenOpts = Invocation.getCodeGenOpts(); + FrontendOptions &FrontendOpts = Invocation.getFrontendOpts(); CodeGenOpts.XRayInstrumentFunctions = LangOpts.XRayInstrument; CodeGenOpts.XRayAlwaysEmitCustomEvents = LangOpts.XRayAlwaysEmitCustomEvents; CodeGenOpts.XRayAlwaysEmitTypedEvents = LangOpts.XRayAlwaysEmitTypedEvents; + FrontendOpts.GenerateGlobalModuleIndex = FrontendOpts.UseGlobalModuleIndex; llvm::sys::Process::UseANSIEscapeCodes(DiagOpts.UseANSIEscapeCodes); } @@ -2016,32 +2026,16 @@ static InputKind ParseFrontendArgs(FrontendOptions &Opts, ArgList &Args, Diags.Report(diag::err_drv_invalid_value) << A->getAsString(Args) << A->getValue(); } - Opts.DisableFree = Args.hasArg(OPT_disable_free); Opts.OutputFile = std::string(Args.getLastArgValue(OPT_o)); Opts.Plugins = Args.getAllArgValues(OPT_load); - Opts.RelocatablePCH = Args.hasArg(OPT_relocatable_pch); - Opts.ShowHelp = Args.hasArg(OPT_help); - Opts.ShowStats = Args.hasArg(OPT_print_stats); - Opts.ShowTimers = Args.hasArg(OPT_ftime_report); - Opts.PrintSupportedCPUs = Args.hasArg(OPT_print_supported_cpus); - Opts.TimeTrace = Args.hasArg(OPT_ftime_trace); Opts.TimeTraceGranularity = getLastArgIntValue( Args, OPT_ftime_trace_granularity_EQ, Opts.TimeTraceGranularity, Diags); - Opts.ShowVersion = Args.hasArg(OPT_version); Opts.ASTMergeFiles = Args.getAllArgValues(OPT_ast_merge); Opts.LLVMArgs = Args.getAllArgValues(OPT_mllvm); - Opts.FixWhatYouCan = Args.hasArg(OPT_fix_what_you_can); - Opts.FixOnlyWarnings = Args.hasArg(OPT_fix_only_warnings); - Opts.FixAndRecompile = Args.hasArg(OPT_fixit_recompile); - Opts.FixToTemporaries = Args.hasArg(OPT_fixit_to_temp); Opts.ASTDumpDecls = Args.hasArg(OPT_ast_dump, OPT_ast_dump_EQ); Opts.ASTDumpAll = Args.hasArg(OPT_ast_dump_all, OPT_ast_dump_all_EQ); Opts.ASTDumpFilter = std::string(Args.getLastArgValue(OPT_ast_dump_filter)); - Opts.ASTDumpLookups = Args.hasArg(OPT_ast_dump_lookups); - Opts.ASTDumpDeclTypes = Args.hasArg(OPT_ast_dump_decl_types); - Opts.UseGlobalModuleIndex = !Args.hasArg(OPT_fno_modules_global_index); - Opts.GenerateGlobalModuleIndex = Opts.UseGlobalModuleIndex; Opts.ModuleMapFiles = Args.getAllArgValues(OPT_fmodule_map_file); // Only the -fmodule-file=<file> form. for (const auto *A : Args.filtered(OPT_fmodule_file)) { @@ -2050,29 +2044,12 @@ static InputKind ParseFrontendArgs(FrontendOptions &Opts, ArgList &Args, Opts.ModuleFiles.push_back(std::string(Val)); } Opts.ModulesEmbedFiles = Args.getAllArgValues(OPT_fmodules_embed_file_EQ); - Opts.ModulesEmbedAllFiles = Args.hasArg(OPT_fmodules_embed_all_files); - Opts.IncludeTimestamps = !Args.hasArg(OPT_fno_pch_timestamp); - Opts.UseTemporary = !Args.hasArg(OPT_fno_temp_file); - Opts.IsSystemModule = Args.hasArg(OPT_fsystem_module); Opts.AllowPCMWithCompilerErrors = Args.hasArg(OPT_fallow_pcm_with_errors); if (Opts.ProgramAction != frontend::GenerateModule && Opts.IsSystemModule) Diags.Report(diag::err_drv_argument_only_allowed_with) << "-fsystem-module" << "-emit-module"; - Opts.CodeCompleteOpts.IncludeMacros - = Args.hasArg(OPT_code_completion_macros); - Opts.CodeCompleteOpts.IncludeCodePatterns - = Args.hasArg(OPT_code_completion_patterns); - Opts.CodeCompleteOpts.IncludeGlobals - = !Args.hasArg(OPT_no_code_completion_globals); - Opts.CodeCompleteOpts.IncludeNamespaceLevelDecls - = !Args.hasArg(OPT_no_code_completion_ns_level_decls); - Opts.CodeCompleteOpts.IncludeBriefComments - = Args.hasArg(OPT_code_completion_brief_comments); - Opts.CodeCompleteOpts.IncludeFixIts - = Args.hasArg(OPT_code_completion_with_fixits); - Opts.OverrideRecordLayoutsFile = std::string(Args.getLastArgValue(OPT_foverride_record_layout_EQ)); Opts.AuxTriple = std::string(Args.getLastArgValue(OPT_aux_triple)); @@ -2086,8 +2063,6 @@ static InputKind ParseFrontendArgs(FrontendOptions &Opts, ArgList &Args, std::string(Args.getLastArgValue(OPT_mt_migrate_directory)); Opts.ARCMTMigrateReportOut = std::string(Args.getLastArgValue(OPT_arcmt_migrate_report_output)); - Opts.ARCMTMigrateEmitARCErrors - = Args.hasArg(OPT_arcmt_migrate_emit_arc_errors); Opts.ObjCMTWhiteListPath = std::string(Args.getLastArgValue(OPT_objcmt_whitelist_dir_path)); |