diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -1040,6 +1040,67 @@ } // Flags = [CC1Option, NoDriverOption] +// HeaderSearch Options + +def fmodules_validate_once_per_build_session : Flag<["-"], "fmodules-validate-once-per-build-session">, + Group, Flags<[CC1Option]>, + HelpText<"Don't verify input files for the modules if the module has been " + "successfully validated or loaded during this build session">, + MarshallingInfoFlag<"HeaderSearchOpts->ModulesValidateOncePerBuildSession", "false">; +def fmodules_disable_diagnostic_validation : Flag<["-"], "fmodules-disable-diagnostic-validation">, + Group, Flags<[CC1Option]>, + HelpText<"Disable validation of the diagnostic options when loading the module">, + MarshallingInfoFlag<"HeaderSearchOpts->ModulesValidateDiagnosticOptions", "true">, IsNegative; +def fmodules_validate_system_headers : Flag<["-"], "fmodules-validate-system-headers">, + Group, Flags<[CC1Option]>, + HelpText<"Validate the system headers that a module depends on when loading the module">, + MarshallingInfoFlag<"HeaderSearchOpts->ModulesValidateSystemHeaders", "false">; +def fno_modules_validate_system_headers : Flag<["-"], "fno-modules-validate-system-headers">, + Group, Flags<[DriverOption]>; +def fvalidate_ast_input_files_content: + Flag <["-"], "fvalidate-ast-input-files-content">, + Group, Flags<[CC1Option]>, + HelpText<"Compute and store the hash of input files used to build an AST." + " Files with mismatching mtime's are considered valid" + " if both contents is identical">, + MarshallingInfoFlag<"HeaderSearchOpts->ValidateASTInputFilesContent", "false">; +def fimplicit_module_maps : Flag <["-"], "fimplicit-module-maps">, Group, + Flags<[DriverOption, CC1Option]>, + HelpText<"Implicitly search the file system for module map files.">, + MarshallingInfoFlag<"HeaderSearchOpts->ImplicitModuleMaps", "false">; +def nobuiltininc : Flag<["-"], "nobuiltininc">, Flags<[CC1Option, CoreOption]>, + HelpText<"Disable builtin #include directories">, + MarshallingInfoFlag<"HeaderSearchOpts->UseBuiltinIncludes", "true">, IsNegative; +def nostdincxx : Flag<["-"], "nostdinc++">, Flags<[CC1Option]>, + HelpText<"Disable standard #include directories for the C++ standard library">, + MarshallingInfoFlag<"HeaderSearchOpts->UseStandardCXXIncludes", "true">, IsNegative; +def v : Flag<["-"], "v">, Flags<[CC1Option, CoreOption]>, + HelpText<"Show commands to run and use verbose output">, + MarshallingInfoFlag<"HeaderSearchOpts->Verbose", "false">; + +let Flags = [CC1Option, NoDriverOption] in { + +def fmodule_map_file_home_is_cwd : Flag<["-"], "fmodule-map-file-home-is-cwd">, + HelpText<"Use the current working directory as the home directory of " + "module maps specified by -fmodule-map-file=">, + MarshallingInfoFlag<"HeaderSearchOpts->ModuleMapFileHomeIsCwd", "false">; +def nostdsysteminc : Flag<["-"], "nostdsysteminc">, + HelpText<"Disable standard system #include directories">, + MarshallingInfoFlag<"HeaderSearchOpts->UseStandardSystemIncludes", "true">, IsNegative; +def fdisable_module_hash : Flag<["-"], "fdisable-module-hash">, + HelpText<"Disable the module hash">, + MarshallingInfoFlag<"HeaderSearchOpts->DisableModuleHash", "false">; +def fmodules_hash_content : Flag<["-"], "fmodules-hash-content">, + HelpText<"Enable hashing the content of a module file">, + MarshallingInfoFlag<"HeaderSearchOpts->ModulesHashContent", "false">; +def fmodules_strict_context_hash : Flag<["-"], "fmodules-strict-context-hash">, + HelpText<"Enable hashing of all compiler options that could impact the " + "semantics of a module in an implicit build">, + MarshallingInfoFlag<"HeaderSearchOpts->ModulesStrictContextHash", "false">; + +} // Flags = [CC1Option, NoDriverOption] + + // Standard Options def _HASH_HASH_HASH : Flag<["-"], "###">, Flags<[DriverOption, CoreOption]>, @@ -1939,25 +2000,7 @@ def fbuild_session_file : Joined<["-"], "fbuild-session-file=">, Group, MetaVarName<"">, HelpText<"Use the last modification time of as the build session timestamp">; -def fmodules_validate_once_per_build_session : Flag<["-"], "fmodules-validate-once-per-build-session">, - Group, Flags<[CC1Option]>, - HelpText<"Don't verify input files for the modules if the module has been " - "successfully validated or loaded during this build session">; -def fmodules_disable_diagnostic_validation : Flag<["-"], "fmodules-disable-diagnostic-validation">, - Group, Flags<[CC1Option]>, - HelpText<"Disable validation of the diagnostic options when loading the module">; -def fmodules_validate_system_headers : Flag<["-"], "fmodules-validate-system-headers">, - Group, Flags<[CC1Option]>, - HelpText<"Validate the system headers that a module depends on when loading the module">; -def fno_modules_validate_system_headers : Flag<["-"], "fno-modules-validate-system-headers">, - Group, Flags<[DriverOption]>; -def fvalidate_ast_input_files_content: - Flag <["-"], "fvalidate-ast-input-files-content">, - Group, Flags<[CC1Option]>, - HelpText<"Compute and store the hash of input files used to build an AST." - " Files with mismatching mtime's are considered valid" - " if both contents is identical">; def fmodules_validate_input_files_content: Flag <["-"], "fmodules-validate-input-files-content">, Group, Flags<[DriverOption]>, @@ -1983,9 +2026,6 @@ def fmodules : Flag <["-"], "fmodules">, Group, Flags<[DriverOption, CC1Option]>, HelpText<"Enable the 'modules' language feature">; -def fimplicit_module_maps : Flag <["-"], "fimplicit-module-maps">, Group, - Flags<[DriverOption, CC1Option]>, - HelpText<"Implicitly search the file system for module map files.">; def fmodules_ts : Flag <["-"], "fmodules-ts">, Group, Flags<[CC1Option]>, HelpText<"Enable support for the C++ Modules TS">; def fmodule_maps : Flag <["-"], "fmodule-maps">, Alias; @@ -3095,8 +3135,6 @@ def no_integrated_cpp : Flag<["-", "--"], "no-integrated-cpp">, Flags<[DriverOption]>; def no_pedantic : Flag<["-", "--"], "no-pedantic">, Group; def no__dead__strip__inits__and__terms : Flag<["-"], "no_dead_strip_inits_and_terms">; -def nobuiltininc : Flag<["-"], "nobuiltininc">, Flags<[CC1Option, CoreOption]>, - HelpText<"Disable builtin #include directories">; def nogpuinc : Flag<["-"], "nogpuinc">; def : Flag<["-"], "nocudainc">, Alias; def nogpulib : Flag<["-"], "nogpulib">, @@ -3114,8 +3152,6 @@ def nostartfiles : Flag<["-"], "nostartfiles">; def nostdinc : Flag<["-"], "nostdinc">, Flags<[CoreOption]>; def nostdlibinc : Flag<["-"], "nostdlibinc">; -def nostdincxx : Flag<["-"], "nostdinc++">, Flags<[CC1Option]>, - HelpText<"Disable standard #include directories for the C++ standard library">; def nostdlib : Flag<["-"], "nostdlib">; def nostdlibxx : Flag<["-"], "nostdlib++">; def object : Flag<["-"], "object">; @@ -3267,8 +3303,6 @@ HelpText<"undef all system defines">; def unexported__symbols__list : Separate<["-"], "unexported_symbols_list">; def u : JoinedOrSeparate<["-"], "u">, Group; -def v : Flag<["-"], "v">, Flags<[CC1Option, CoreOption]>, - HelpText<"Show commands to run and use verbose output">; def verify_debug_info : Flag<["--"], "verify-debug-info">, Flags<[DriverOption]>, HelpText<"Verify the binary representation of debug output">; def weak_l : Joined<["-"], "weak-l">, Flags<[LinkerInput]>; @@ -4218,9 +4252,6 @@ " -ast-list to list all filterable declaration node names.">; def fno_modules_error_recovery : Flag<["-"], "fno-modules-error-recovery">, HelpText<"Do not automatically import modules for error recovery">; -def fmodule_map_file_home_is_cwd : Flag<["-"], "fmodule-map-file-home-is-cwd">, - HelpText<"Use the current working directory as the home directory of " - "module maps specified by -fmodule-map-file=">; def fmodule_feature : Separate<["-"], "fmodule-feature">, MetaVarName<"">, HelpText<"Enable in module map requires declarations">; @@ -4492,16 +4523,6 @@ // Header Search Options //===----------------------------------------------------------------------===// -def nostdsysteminc : Flag<["-"], "nostdsysteminc">, - HelpText<"Disable standard system #include directories">; -def fdisable_module_hash : Flag<["-"], "fdisable-module-hash">, - HelpText<"Disable the module hash">; -def fmodules_hash_content : Flag<["-"], "fmodules-hash-content">, - HelpText<"Enable hashing the content of a module file">; -def fmodules_strict_context_hash : Flag<["-"], "fmodules-strict-context-hash">, - HelpText<"Enable hashing of all compiler options that could impact the " - "semantics of a module in an implicit build">, - MarshallingInfoFlag<"HeaderSearchOpts->ModulesStrictContextHash", "false">; def c_isystem : JoinedOrSeparate<["-"], "c-isystem">, MetaVarName<"">, HelpText<"Add directory to the C SYSTEM include search path">; def objc_isystem : JoinedOrSeparate<["-"], "objc-isystem">, 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 @@ -1885,10 +1885,6 @@ static void ParseHeaderSearchArgs(HeaderSearchOptions &Opts, ArgList &Args, const std::string &WorkingDir) { Opts.Sysroot = std::string(Args.getLastArgValue(OPT_isysroot, "/")); - Opts.Verbose = Args.hasArg(OPT_v); - Opts.UseBuiltinIncludes = !Args.hasArg(OPT_nobuiltininc); - Opts.UseStandardSystemIncludes = !Args.hasArg(OPT_nostdsysteminc); - Opts.UseStandardCXXIncludes = !Args.hasArg(OPT_nostdincxx); if (const Arg *A = Args.getLastArg(OPT_stdlib_EQ)) Opts.UseLibcxx = (strcmp(A->getValue(), "libc++") == 0); Opts.ResourceDir = std::string(Args.getLastArgValue(OPT_resource_dir)); @@ -1917,24 +1913,12 @@ } for (const auto *A : Args.filtered(OPT_fprebuilt_module_path)) Opts.AddPrebuiltModulePath(A->getValue()); - Opts.DisableModuleHash = Args.hasArg(OPT_fdisable_module_hash); - Opts.ModulesHashContent = Args.hasArg(OPT_fmodules_hash_content); - Opts.ModulesValidateDiagnosticOptions = - !Args.hasArg(OPT_fmodules_disable_diagnostic_validation); - Opts.ImplicitModuleMaps = Args.hasArg(OPT_fimplicit_module_maps); - Opts.ModuleMapFileHomeIsCwd = Args.hasArg(OPT_fmodule_map_file_home_is_cwd); Opts.ModuleCachePruneInterval = getLastArgIntValue(Args, OPT_fmodules_prune_interval, 7 * 24 * 60 * 60); Opts.ModuleCachePruneAfter = getLastArgIntValue(Args, OPT_fmodules_prune_after, 31 * 24 * 60 * 60); - Opts.ModulesValidateOncePerBuildSession = - Args.hasArg(OPT_fmodules_validate_once_per_build_session); Opts.BuildSessionTimestamp = getLastArgUInt64Value(Args, OPT_fbuild_session_timestamp, 0); - Opts.ModulesValidateSystemHeaders = - Args.hasArg(OPT_fmodules_validate_system_headers); - Opts.ValidateASTInputFilesContent = - Args.hasArg(OPT_fvalidate_ast_input_files_content); if (const Arg *A = Args.getLastArg(OPT_fmodule_format_EQ)) Opts.ModuleFormat = A->getValue();