diff options
Diffstat (limited to 'include/clang/Driver/Options.td')
-rw-r--r-- | include/clang/Driver/Options.td | 488 |
1 files changed, 362 insertions, 126 deletions
diff --git a/include/clang/Driver/Options.td b/include/clang/Driver/Options.td index 09efd7b0af63f..2470638bec66b 100644 --- a/include/clang/Driver/Options.td +++ b/include/clang/Driver/Options.td @@ -143,14 +143,18 @@ def m_hexagon_Features_Group : OptionGroup<"<hexagon features group>">, // These are explicitly handled. def m_hexagon_Features_HVX_Group : OptionGroup<"<hexagon features group>">, Group<m_Group>, DocName<"Hexagon">; +def m_mips_Features_Group : OptionGroup<"<mips features group>">, + Group<m_Group>, DocName<"MIPS">; def m_ppc_Features_Group : OptionGroup<"<ppc features group>">, Group<m_Group>, DocName<"PowerPC">; def m_wasm_Features_Group : OptionGroup<"<wasm features group>">, Group<m_Group>, DocName<"WebAssembly">; def m_x86_Features_Group : OptionGroup<"<x86 features group>">, Group<m_Group>, Flags<[CoreOption]>, DocName<"X86">; +def m_riscv_Features_Group : OptionGroup<"<riscv features group>">, + Group<m_Group>, DocName<"RISCV">; -def m_libc_Group : OptionGroup<"<m libc group>">, Group<m_Group>, +def m_libc_Group : OptionGroup<"<m libc group>">, Group<m_mips_Features_Group>, Flags<[HelpHidden]>; def O_Group : OptionGroup<"<O group>">, Group<CompileOnly_Group>, @@ -396,7 +400,12 @@ def O_flag : Flag<["-"], "O">, Flags<[CC1Option]>, Alias<O>, AliasArgs<["2"]>; def Ofast : Joined<["-"], "Ofast">, Group<O_Group>, Flags<[CC1Option]>; def P : Flag<["-"], "P">, Flags<[CC1Option]>, Group<Preprocessor_Group>, HelpText<"Disable linemarker output in -E mode">; -def Qn : Flag<["-"], "Qn">, IgnoredGCCCompat; +def Qy : Flag<["-"], "Qy">, Flags<[CC1Option]>, + HelpText<"Emit metadata containing compiler name and version">; +def Qn : Flag<["-"], "Qn">, Flags<[CC1Option]>, + HelpText<"Do not emit metadata containing compiler name and version">; +def : Flag<["-"], "fident">, Group<f_Group>, Alias<Qy>, Flags<[CC1Option]>; +def : Flag<["-"], "fno-ident">, Group<f_Group>, Alias<Qn>, Flags<[CC1Option]>; def Qunused_arguments : Flag<["-"], "Qunused-arguments">, Flags<[DriverOption, CoreOption]>, HelpText<"Don't emit warning for unused driver arguments">; def Q : Flag<["-"], "Q">, IgnoredGCCCompat; @@ -418,9 +427,9 @@ def S : Flag<["-"], "S">, Flags<[DriverOption,CC1Option]>, Group<Action_Group>, def Tbss : JoinedOrSeparate<["-"], "Tbss">, Group<T_Group>, MetaVarName<"<addr>">, HelpText<"Set starting address of BSS to <addr>">; def Tdata : JoinedOrSeparate<["-"], "Tdata">, Group<T_Group>, - MetaVarName<"<addr>">, HelpText<"Set starting address of BSS to <addr>">; + MetaVarName<"<addr>">, HelpText<"Set starting address of DATA to <addr>">; def Ttext : JoinedOrSeparate<["-"], "Ttext">, Group<T_Group>, - MetaVarName<"<addr>">, HelpText<"Set starting address of BSS to <addr>">; + MetaVarName<"<addr>">, HelpText<"Set starting address of TEXT to <addr>">; def T : JoinedOrSeparate<["-"], "T">, Group<T_Group>, MetaVarName<"<script>">, HelpText<"Specify <script> as linker script">; def U : JoinedOrSeparate<["-"], "U">, Group<Preprocessor_Group>, @@ -466,7 +475,8 @@ def Xcuda_ptxas : Separate<["-"], "Xcuda-ptxas">, def Xopenmp_target : Separate<["-"], "Xopenmp-target">, HelpText<"Pass <arg> to the target offloading toolchain.">, MetaVarName<"<arg>">; def Xopenmp_target_EQ : JoinedAndSeparate<["-"], "Xopenmp-target=">, - HelpText<"Pass <arg> to the specified target offloading toolchain. The triple that identifies the toolchain must be provided after the equals sign.">, MetaVarName<"<arg>">; + HelpText<"Pass <arg> to the target offloading toolchain identified by <triple>.">, + MetaVarName<"<triple> <arg>">; def z : Separate<["-"], "z">, Flags<[LinkerInput, RenderAsInput]>, HelpText<"Pass -z <arg> to the linker">, MetaVarName<"<arg>">, Group<Link_Group>; @@ -492,6 +502,8 @@ def bind__at__load : Flag<["-"], "bind_at_load">; def bundle__loader : Separate<["-"], "bundle_loader">; def bundle : Flag<["-"], "bundle">; def b : JoinedOrSeparate<["-"], "b">, Flags<[Unsupported]>; +def cfguard : Flag<["-"], "cfguard">, Flags<[CC1Option]>, + HelpText<"Emit tables required for Windows Control Flow Guard.">; def cl_opt_disable : Flag<["-"], "cl-opt-disable">, Group<opencl_Group>, Flags<[CC1Option]>, HelpText<"OpenCL only. This option disables all optimizations. By default optimizations are enabled.">; def cl_strict_aliasing : Flag<["-"], "cl-strict-aliasing">, Group<opencl_Group>, Flags<[CC1Option]>, @@ -511,14 +523,22 @@ def cl_mad_enable : Flag<["-"], "cl-mad-enable">, Group<opencl_Group>, Flags<[CC def cl_no_signed_zeros : Flag<["-"], "cl-no-signed-zeros">, Group<opencl_Group>, Flags<[CC1Option]>, HelpText<"OpenCL only. Allow use of less precise no signed zeros computations in the generated binary.">; def cl_std_EQ : Joined<["-"], "cl-std=">, Group<opencl_Group>, Flags<[CC1Option]>, - HelpText<"OpenCL language standard to compile for.">, Values<"cl,CL,cl1.1,CL1.1,cl1.2,CL1.2,cl2.0,CL2.0">; + HelpText<"OpenCL language standard to compile for.">, Values<"cl,CL,cl1.1,CL1.1,cl1.2,CL1.2,cl2.0,CL2.0,c++">; def cl_denorms_are_zero : Flag<["-"], "cl-denorms-are-zero">, Group<opencl_Group>, Flags<[CC1Option]>, HelpText<"OpenCL only. Allow denormals to be flushed to zero.">; def cl_fp32_correctly_rounded_divide_sqrt : Flag<["-"], "cl-fp32-correctly-rounded-divide-sqrt">, Group<opencl_Group>, Flags<[CC1Option]>, HelpText<"OpenCL only. Specify that single precision floating-point divide and sqrt used in the program source are correctly rounded.">; +def cl_uniform_work_group_size : Flag<["-"], "cl-uniform-work-group-size">, Group<opencl_Group>, Flags<[CC1Option]>, + HelpText<"OpenCL only. Defines that the global work-size be a multiple of the work-group size specified to clEnqueueNDRangeKernel">; def client__name : JoinedOrSeparate<["-"], "client_name">; def combine : Flag<["-", "--"], "combine">, Flags<[DriverOption, Unsupported]>; def compatibility__version : JoinedOrSeparate<["-"], "compatibility_version">; +def config : Separate<["--"], "config">, Flags<[DriverOption]>, + HelpText<"Specifies configuration file">; +def config_system_dir_EQ : Joined<["--"], "config-system-dir=">, Flags<[DriverOption, HelpHidden]>, + HelpText<"System directory for configuration files">; +def config_user_dir_EQ : Joined<["--"], "config-user-dir=">, Flags<[DriverOption, HelpHidden]>, + HelpText<"User directory for configuration files">; def coverage : Flag<["-", "--"], "coverage">, Flags<[CoreOption]>; def cpp_precomp : Flag<["-"], "cpp-precomp">, Group<clang_ignored_f_Group>; def current__version : JoinedOrSeparate<["-"], "current_version">; @@ -535,8 +555,14 @@ def cuda_host_only : Flag<["--"], "cuda-host-only">, def cuda_compile_host_device : Flag<["--"], "cuda-compile-host-device">, HelpText<"Compile CUDA code for both host and device (default). Has no " "effect on non-CUDA compilations.">; +def cuda_include_ptx_EQ : Joined<["--"], "cuda-include-ptx=">, Flags<[DriverOption]>, + HelpText<"Include PTX for the follwing GPU architecture (e.g. sm_35) or 'all'. May be specified more than once.">; +def no_cuda_include_ptx_EQ : Joined<["--"], "no-cuda-include-ptx=">, Flags<[DriverOption]>, + HelpText<"Do not include PTX for the follwing GPU architecture (e.g. sm_35) or 'all'. May be specified more than once.">; def cuda_gpu_arch_EQ : Joined<["--"], "cuda-gpu-arch=">, Flags<[DriverOption]>, HelpText<"CUDA GPU architecture (e.g. sm_35). May be specified more than once.">; +def hip_link : Flag<["--"], "hip-link">, + HelpText<"Link clang-offload-bundler bundles for HIP">; def no_cuda_gpu_arch_EQ : Joined<["--"], "no-cuda-gpu-arch=">, Flags<[DriverOption]>, HelpText<"Remove GPU architecture (e.g. sm_35) from the list of GPUs to compile for. " "'all' resets the list to its default value.">; @@ -548,6 +574,8 @@ def no_cuda_version_check : Flag<["--"], "no-cuda-version-check">, def no_cuda_noopt_device_debug : Flag<["--"], "no-cuda-noopt-device-debug">; def cuda_path_EQ : Joined<["--"], "cuda-path=">, Group<i_Group>, HelpText<"CUDA installation path">; +def cuda_path_ignore_env : Flag<["--"], "cuda-path-ignore-env">, Group<i_Group>, + HelpText<"Ignore environment variables to detect CUDA installation">; def ptxas_path_EQ : Joined<["--"], "ptxas-path=">, Group<i_Group>, HelpText<"Path to ptxas (used for compiling CUDA code)">; def fcuda_flush_denormals_to_zero : Flag<["-"], "fcuda-flush-denormals-to-zero">, @@ -556,6 +584,18 @@ def fno_cuda_flush_denormals_to_zero : Flag<["-"], "fno-cuda-flush-denormals-to- def fcuda_approx_transcendentals : Flag<["-"], "fcuda-approx-transcendentals">, Flags<[CC1Option]>, HelpText<"Use approximate transcendental functions">; def fno_cuda_approx_transcendentals : Flag<["-"], "fno-cuda-approx-transcendentals">; +def fcuda_rdc : Flag<["-"], "fcuda-rdc">, Flags<[CC1Option]>, + HelpText<"Generate relocatable device code, also known as separate compilation mode.">; +def fno_cuda_rdc : Flag<["-"], "fno-cuda-rdc">; +def fcuda_short_ptr : Flag<["-"], "fcuda-short-ptr">, Flags<[CC1Option]>, + HelpText<"Use 32-bit pointers for accessing const/local/shared address spaces.">; +def fno_cuda_short_ptr : Flag<["-"], "fno-cuda-short-ptr">; +def hip_device_lib_path_EQ : Joined<["--"], "hip-device-lib-path=">, Group<Link_Group>, + HelpText<"HIP device library path">; +def hip_device_lib_EQ : Joined<["--"], "hip-device-lib=">, Group<Link_Group>, + HelpText<"HIP device library">; +def fhip_dump_offload_linker_script : Flag<["-"], "fhip-dump-offload-linker-script">, + Group<f_Group>, Flags<[NoArgumentUnused, HelpHidden]>; def dA : Flag<["-"], "dA">, Group<d_Group>; def dD : Flag<["-"], "dD">, Group<d_Group>, Flags<[CC1Option]>, HelpText<"Print macro definitions in -E mode in addition to normal output">; @@ -591,6 +631,9 @@ def fno_PIC : Flag<["-"], "fno-PIC">, Group<f_Group>; def fPIE : Flag<["-"], "fPIE">, Group<f_Group>; def fno_PIE : Flag<["-"], "fno-PIE">, Group<f_Group>; def faccess_control : Flag<["-"], "faccess-control">, Group<f_Group>; +def falign_functions : Flag<["-"], "falign-functions">, Group<f_Group>; +def falign_functions_EQ : Joined<["-"], "falign-functions=">, Group<f_Group>; +def fno_align_functions: Flag<["-"], "fno-align-functions">, Group<f_Group>; def fallow_unsupported : Flag<["-"], "fallow-unsupported">, Group<f_Group>; def fapple_kext : Flag<["-"], "fapple-kext">, Group<f_Group>, Flags<[CC1Option]>, HelpText<"Use Apple's kernel extensions ABI">; @@ -687,10 +730,10 @@ def fprofile_instr_use_EQ : Joined<["-"], "fprofile-instr-use=">, Group<f_Group>, Flags<[CoreOption]>, HelpText<"Use instrumentation data for profile-guided optimization">; def fcoverage_mapping : Flag<["-"], "fcoverage-mapping">, - Group<f_Group>, Flags<[CC1Option]>, + Group<f_Group>, Flags<[CC1Option, CoreOption]>, HelpText<"Generate coverage mapping to enable code coverage analysis">; def fno_coverage_mapping : Flag<["-"], "fno-coverage-mapping">, - Group<f_Group>, Flags<[DriverOption]>, + Group<f_Group>, Flags<[DriverOption, CoreOption]>, HelpText<"Disable code coverage analysis">; def fprofile_generate : Flag<["-"], "fprofile-generate">, Group<f_Group>, Flags<[DriverOption]>, @@ -715,12 +758,16 @@ def fno_profile_instr_use : Flag<["-"], "fno-profile-instr-use">, def fno_profile_use : Flag<["-"], "fno-profile-use">, Alias<fno_profile_instr_use>; -def fblocks : Flag<["-"], "fblocks">, Group<f_Group>, Flags<[CC1Option]>, +def faddrsig : Flag<["-"], "faddrsig">, Group<f_Group>, Flags<[CoreOption, CC1Option]>, + HelpText<"Emit an address-significance table">; +def fno_addrsig : Flag<["-"], "fno-addrsig">, Group<f_Group>, Flags<[CoreOption]>, + HelpText<"Don't emit an address-significance table">; +def fblocks : Flag<["-"], "fblocks">, Group<f_Group>, Flags<[CoreOption, CC1Option]>, HelpText<"Enable the 'blocks' language feature">; def fbootclasspath_EQ : Joined<["-"], "fbootclasspath=">, Group<f_Group>; def fborland_extensions : Flag<["-"], "fborland-extensions">, Group<f_Group>, Flags<[CC1Option]>, HelpText<"Accept non-standard constructs supported by the Borland compiler">; -def fbuiltin : Flag<["-"], "fbuiltin">, Group<f_Group>; +def fbuiltin : Flag<["-"], "fbuiltin">, Group<f_Group>, Flags<[CoreOption]>; def fbuiltin_module_map : Flag <["-"], "fbuiltin-module-map">, Group<f_Group>, Flags<[DriverOption]>, HelpText<"Load the clang builtins module map file.">; def fcaret_diagnostics : Flag<["-"], "fcaret-diagnostics">, Group<f_Group>; @@ -741,6 +788,12 @@ def fcomment_block_commands : CommaJoined<["-"], "fcomment-block-commands=">, Gr def fparse_all_comments : Flag<["-"], "fparse-all-comments">, Group<f_clang_Group>, Flags<[CC1Option]>; def fcommon : Flag<["-"], "fcommon">, Group<f_Group>; def fcompile_resource_EQ : Joined<["-"], "fcompile-resource=">, Group<f_Group>; +def fcomplete_member_pointers : Flag<["-"], "fcomplete-member-pointers">, Group<f_clang_Group>, + Flags<[CoreOption, CC1Option]>, + HelpText<"Require member pointer base types to be complete if they would be significant under the Microsoft ABI">; +def fno_complete_member_pointers : Flag<["-"], "fno-complete-member-pointers">, Group<f_clang_Group>, + Flags<[CoreOption]>, + HelpText<"Do not require member pointer base types to be complete if they would be significant under the Microsoft ABI">; def fconstant_cfstrings : Flag<["-"], "fconstant-cfstrings">, Group<f_Group>; def fconstant_string_class_EQ : Joined<["-"], "fconstant-string-class=">, Group<f_Group>; def fconstexpr_depth_EQ : Joined<["-"], "fconstexpr-depth=">, Group<f_Group>; @@ -749,6 +802,7 @@ def fconstexpr_backtrace_limit_EQ : Joined<["-"], "fconstexpr-backtrace-limit="> Group<f_Group>; def fno_crash_diagnostics : Flag<["-"], "fno-crash-diagnostics">, Group<f_clang_Group>, Flags<[NoArgumentUnused]>, HelpText<"Disable auto-generation of preprocessed source files and a script for reproduction during a clang crash">; +def fcrash_diagnostics_dir : Joined<["-"], "fcrash-diagnostics-dir=">, Group<f_clang_Group>, Flags<[NoArgumentUnused]>; def fcreate_profile : Flag<["-"], "fcreate-profile">, Group<f_Group>; def fcxx_exceptions: Flag<["-"], "fcxx-exceptions">, Group<f_Group>, HelpText<"Enable C++ exceptions">, Flags<[CC1Option]>; @@ -780,6 +834,10 @@ def fdiagnostics_show_template_tree : Flag<["-"], "fdiagnostics-show-template-tr HelpText<"Print a template comparison tree for differing templates">; def fdeclspec : Flag<["-"], "fdeclspec">, Group<f_clang_Group>, HelpText<"Allow __declspec as a keyword">, Flags<[CC1Option]>; +def fdiscard_value_names : Flag<["-"], "fdiscard-value-names">, Group<f_clang_Group>, + HelpText<"Discard value names in LLVM IR">, Flags<[DriverOption]>; +def fno_discard_value_names : Flag<["-"], "fno-discard-value-names">, Group<f_clang_Group>, + HelpText<"Do not discard value names in LLVM IR">, Flags<[DriverOption]>; def fdollars_in_identifiers : Flag<["-"], "fdollars-in-identifiers">, Group<f_Group>, HelpText<"Allow '$' in identifiers">, Flags<[CC1Option]>; def fdwarf2_cfi_asm : Flag<["-"], "fdwarf2-cfi-asm">, Group<clang_ignored_f_Group>; @@ -795,7 +853,7 @@ def femit_all_decls : Flag<["-"], "femit-all-decls">, Group<f_Group>, Flags<[CC1 HelpText<"Emit all declarations, even if unused">; def femulated_tls : Flag<["-"], "femulated-tls">, Group<f_Group>, Flags<[CC1Option]>, HelpText<"Use emutls functions to access thread_local variables">; -def fno_emulated_tls : Flag<["-"], "fno-emulated-tls">, Group<f_Group>; +def fno_emulated_tls : Flag<["-"], "fno-emulated-tls">, Group<f_Group>, Flags<[CC1Option]>; def fencoding_EQ : Joined<["-"], "fencoding=">, Group<f_Group>; def ferror_limit_EQ : Joined<["-"], "ferror-limit=">, Group<f_Group>, Flags<[CoreOption]>; def fexceptions : Flag<["-"], "fexceptions">, Group<f_Group>, Flags<[CC1Option]>, @@ -829,6 +887,17 @@ def fno_signaling_math : Flag<["-"], "fno-signaling-math">, Group<f_Group>; def fjump_tables : Flag<["-"], "fjump-tables">, Group<f_Group>; def fno_jump_tables : Flag<["-"], "fno-jump-tables">, Group<f_Group>, Flags<[CC1Option]>, HelpText<"Do not use jump tables for lowering switches">; +def fforce_enable_int128 : Flag<["-"], "fforce-enable-int128">, + Group<f_Group>, Flags<[CC1Option]>, + HelpText<"Enable support for int128_t type">; +def fno_force_enable_int128 : Flag<["-"], "fno-force-enable-int128">, + Group<f_Group>, Flags<[CC1Option]>, + HelpText<"Disable support for int128_t type">; + +def ffixed_point : Flag<["-"], "ffixed-point">, Group<f_Group>, + Flags<[CC1Option]>, HelpText<"Enable fixed point types">; +def fno_fixed_point : Flag<["-"], "fno-fixed-point">, Group<f_Group>, + HelpText<"Disable fixed point types">; // Begin sanitizer flags. These should all be core options exposed in all driver // modes. @@ -881,6 +950,14 @@ def fno_sanitize_address_use_after_scope : Flag<["-"], "fno-sanitize-address-use Group<f_clang_Group>, Flags<[CoreOption, DriverOption]>, HelpText<"Disable use-after-scope detection in AddressSanitizer">; +def fsanitize_address_poison_class_member_array_new_cookie + : Flag<[ "-" ], "fsanitize-address-poison-class-member-array-new-cookie">, + Group<f_clang_Group>, + HelpText<"Enable poisoning array cookies when using class member operator new[] in AddressSanitizer">; +def fno_sanitize_address_poison_class_member_array_new_cookie + : Flag<[ "-" ], "fno-sanitize-address-poison-class-member-array-new-cookie">, + Group<f_clang_Group>, + HelpText<"Disable poisoning array cookies when using class member operator new[] in AddressSanitizer">; def fsanitize_address_globals_dead_stripping : Flag<["-"], "fsanitize-address-globals-dead-stripping">, Group<f_clang_Group>, HelpText<"Enable linker dead stripping of globals in AddressSanitizer">; @@ -985,6 +1062,13 @@ def ffp_contract : Joined<["-"], "ffp-contract=">, Group<f_Group>, Flags<[CC1Option]>, HelpText<"Form fused FP ops (e.g. FMAs): fast (everywhere)" " | on (according to FP_CONTRACT pragma, default) | off (never fuse)">, Values<"fast,on,off">; +def fstrict_float_cast_overflow : Flag<["-"], + "fstrict-float-cast-overflow">, Group<f_Group>, Flags<[CC1Option]>, + HelpText<"Assume that overflowing float-to-int casts are undefined (default)">; +def fno_strict_float_cast_overflow : Flag<["-"], + "fno-strict-float-cast-overflow">, Group<f_Group>, Flags<[CC1Option]>, + HelpText<"Relax language rules and try to match the behavior of the target's native float-to-int conversion instructions">; + def ffor_scope : Flag<["-"], "ffor-scope">, Group<f_Group>; def fno_for_scope : Flag<["-"], "fno-for-scope">, Group<f_Group>; @@ -996,6 +1080,13 @@ def frewrite_imports : Flag<["-"], "frewrite-imports">, Group<f_Group>, Flags<[CC1Option]>; def fno_rewrite_imports : Flag<["-"], "fno-rewrite-imports">, Group<f_Group>; +def fdelete_null_pointer_checks : Flag<["-"], + "fdelete-null-pointer-checks">, Group<f_Group>, + HelpText<"Treat usage of null pointers as undefined behavior.">; +def fno_delete_null_pointer_checks : Flag<["-"], + "fno-delete-null-pointer-checks">, Group<f_Group>, Flags<[CC1Option]>, + HelpText<"Do not treat usage of null pointers as undefined behavior.">; + def frewrite_map_file : Separate<["-"], "frewrite-map-file">, Group<f_Group>, Flags<[ DriverOption, CC1Option ]>; @@ -1025,6 +1116,8 @@ def finline_functions : Flag<["-"], "finline-functions">, Group<f_clang_Group>, def finline_hint_functions: Flag<["-"], "finline-hint-functions">, Group<f_clang_Group>, Flags<[CC1Option]>, HelpText<"Inline functions which are (explicitly or implicitly) marked inline">; def finline : Flag<["-"], "finline">, Group<clang_ignored_f_Group>; +def fexperimental_isel : Flag<["-"], "fexperimental-isel">, Group<f_clang_Group>, + HelpText<"Enables the experimental global instruction selector">; def fexperimental_new_pass_manager : Flag<["-"], "fexperimental-new-pass-manager">, Group<f_clang_Group>, Flags<[CC1Option]>, HelpText<"Enables an experimental new pass manager in LLVM.">; @@ -1036,6 +1129,11 @@ def finstrument_functions_after_inlining : Flag<["-"], "finstrument-functions-af HelpText<"Like -finstrument-functions, but insert the calls after inlining">; def finstrument_function_entry_bare : Flag<["-"], "finstrument-function-entry-bare">, Group<f_Group>, Flags<[CC1Option]>, HelpText<"Instrument function entry only, after inlining, without arguments to the instrumentation call">; +def fcf_protection_EQ : Joined<["-"], "fcf-protection=">, Flags<[CoreOption, CC1Option]>, Group<f_Group>, + HelpText<"Instrument control-flow architecture protection. Options: return, branch, full, none.">, Values<"return,branch,full,none">; +def fcf_protection : Flag<["-"], "fcf-protection">, Group<f_Group>, Flags<[CoreOption, CC1Option]>, + Alias<fcf_protection_EQ>, AliasArgs<["full"]>, + HelpText<"Enable cf-protection in 'full' mode">; def fxray_instrument : Flag<["-"], "fxray-instrument">, Group<f_Group>, Flags<[CC1Option]>, @@ -1054,11 +1152,19 @@ def fxray_instruction_threshold_ : def fxray_always_instrument : JoinedOrSeparate<["-"], "fxray-always-instrument=">, Group<f_Group>, Flags<[CC1Option]>, - HelpText<"Filename defining the whitelist for imbuing the 'always instrument' XRay attribute.">; + HelpText<"DEPRECATED: Filename defining the whitelist for imbuing the 'always instrument' XRay attribute.">; def fxray_never_instrument : JoinedOrSeparate<["-"], "fxray-never-instrument=">, Group<f_Group>, Flags<[CC1Option]>, - HelpText<"Filename defining the whitelist for imbuing the 'never instrument' XRay attribute.">; + HelpText<"DEPRECATED: Filename defining the whitelist for imbuing the 'never instrument' XRay attribute.">; +def fxray_attr_list : + JoinedOrSeparate<["-"], "fxray-attr-list=">, + Group<f_Group>, Flags<[CC1Option]>, + HelpText<"Filename defining the list of functions/types for imbuing XRay attributes.">; +def fxray_modes : + JoinedOrSeparate<["-"], "fxray-modes=">, + Group<f_Group>, Flags<[CC1Option]>, + HelpText<"List of modes to link in by default into XRay instrumented binaries.">; def fxray_always_emit_customevents : Flag<["-"], "fxray-always-emit-customevents">, Group<f_Group>, Flags<[CC1Option]>, @@ -1066,9 +1172,26 @@ def fxray_always_emit_customevents : Flag<["-"], "fxray-always-emit-customevents def fnoxray_always_emit_customevents : Flag<["-"], "fno-xray-always-emit-customevents">, Group<f_Group>, Flags<[CC1Option]>; +def fxray_always_emit_typedevents : Flag<["-"], "fxray-always-emit-typedevents">, Group<f_Group>, + Flags<[CC1Option]>, + HelpText<"Determine whether to always emit __xray_typedevent(...) calls even if the function it appears in is not always instrumented.">; +def fnoxray_always_emit_typedevents : Flag<["-"], "fno-xray-always-emit-typedevents">, Group<f_Group>, + Flags<[CC1Option]>; + +def fxray_link_deps : Flag<["-"], "fxray-link-deps">, Group<f_Group>, + Flags<[CC1Option]>, + HelpText<"Tells clang to add the link dependencies for XRay.">; +def fnoxray_link_deps : Flag<["-"], "fnoxray-link-deps">, Group<f_Group>, + Flags<[CC1Option]>; + +def fxray_instrumentation_bundle : + JoinedOrSeparate<["-"], "fxray-instrumentation-bundle=">, + Group<f_Group>, Flags<[CC1Option]>, + HelpText<"Select which XRay instrumentation points to emit. Options: all, none, function, custom. Default is 'all'.">; + def ffine_grained_bitfield_accesses : Flag<["-"], "ffine-grained-bitfield-accesses">, Group<f_clang_Group>, Flags<[CC1Option]>, - HelpText<"Use separate accesses for bitfields with legal widths and alignments.">; + HelpText<"Use separate accesses for consecutive bitfield runs with legal widths and alignments.">; def fno_fine_grained_bitfield_accesses : Flag<["-"], "fno-fine-grained-bitfield-accesses">, Group<f_clang_Group>, Flags<[CC1Option]>, HelpText<"Use large-integer access for consecutive bitfield runs.">; @@ -1092,7 +1215,8 @@ def fthinlto_index_EQ : Joined<["-"], "fthinlto-index=">, HelpText<"Perform ThinLTO importing using provided function summary index">; def fmacro_backtrace_limit_EQ : Joined<["-"], "fmacro-backtrace-limit=">, Group<f_Group>, Flags<[DriverOption, CoreOption]>; -def fmerge_all_constants : Flag<["-"], "fmerge-all-constants">, Group<f_Group>; +def fmerge_all_constants : Flag<["-"], "fmerge-all-constants">, Group<f_Group>, + Flags<[CC1Option, CoreOption]>, HelpText<"Allow merging of constants">; def fmessage_length_EQ : Joined<["-"], "fmessage-length=">, Group<f_Group>; def fms_extensions : Flag<["-"], "fms-extensions">, Group<f_Group>, Flags<[CC1Option, CoreOption]>, HelpText<"Accept some non-standard constructs supported by the Microsoft compiler">; @@ -1146,6 +1270,8 @@ def fmodules_disable_diagnostic_validation : Flag<["-"], "fmodules-disable-diagn def fmodules_validate_system_headers : Flag<["-"], "fmodules-validate-system-headers">, Group<i_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<i_Group>, Flags<[DriverOption]>; def fmodules : Flag <["-"], "fmodules">, Group<f_Group>, Flags<[DriverOption, CC1Option]>, HelpText<"Enable the 'modules' language feature">; @@ -1194,11 +1320,11 @@ def fno_asynchronous_unwind_tables : Flag<["-"], "fno-asynchronous-unwind-tables def fno_assume_sane_operator_new : Flag<["-"], "fno-assume-sane-operator-new">, Group<f_Group>, HelpText<"Don't assume that C++'s global operator new can't alias any pointer">, Flags<[CC1Option]>; -def fno_blocks : Flag<["-"], "fno-blocks">, Group<f_Group>; +def fno_blocks : Flag<["-"], "fno-blocks">, Group<f_Group>, Flags<[CoreOption]>; def fno_borland_extensions : Flag<["-"], "fno-borland-extensions">, Group<f_Group>; -def fno_builtin : Flag<["-"], "fno-builtin">, Group<f_Group>, Flags<[CC1Option]>, +def fno_builtin : Flag<["-"], "fno-builtin">, Group<f_Group>, Flags<[CC1Option, CoreOption]>, HelpText<"Disable implicit builtin knowledge of functions">; -def fno_builtin_ : Joined<["-"], "fno-builtin-">, Group<f_Group>, Flags<[CC1Option]>, +def fno_builtin_ : Joined<["-"], "fno-builtin-">, Group<f_Group>, Flags<[CC1Option, CoreOption]>, HelpText<"Disable implicit builtin knowledge of a specific function">; def fno_caret_diagnostics : Flag<["-"], "fno-caret-diagnostics">, Group<f_Group>, Flags<[CC1Option]>; @@ -1220,6 +1346,10 @@ def fno_diagnostics_show_hotness : Flag<["-"], "fno-diagnostics-show-hotness">, def fno_diagnostics_show_option : Flag<["-"], "fno-diagnostics-show-option">, Group<f_Group>; def fno_diagnostics_show_note_include_stack : Flag<["-"], "fno-diagnostics-show-note-include-stack">, Flags<[CC1Option]>, Group<f_Group>; +def fdigraphs : Flag<["-"], "fdigraphs">, Group<f_Group>, Flags<[CC1Option]>, + HelpText<"Enable alternative token representations '<:', ':>', '<%', '%>', '%:', '%:%:' (default)">; +def fno_digraphs : Flag<["-"], "fno-digraphs">, Group<f_Group>, Flags<[CC1Option]>, + HelpText<"Disallow alternative token representations '<:', ':>', '<%', '%>', '%:', '%:%:'">; def fno_declspec : Flag<["-"], "fno-declspec">, Group<f_clang_Group>, HelpText<"Disallow __declspec as a keyword">, Flags<[CC1Option]>; def fno_dollars_in_identifiers : Flag<["-"], "fno-dollars-in-identifiers">, Group<f_Group>, @@ -1231,6 +1361,8 @@ def fno_exceptions : Flag<["-"], "fno-exceptions">, Group<f_Group>; def fno_gnu_keywords : Flag<["-"], "fno-gnu-keywords">, Group<f_Group>, Flags<[CC1Option]>; def fno_inline_functions : Flag<["-"], "fno-inline-functions">, Group<f_clang_Group>, Flags<[CC1Option]>; def fno_inline : Flag<["-"], "fno-inline">, Group<f_clang_Group>, Flags<[CC1Option]>; +def fno_experimental_isel : Flag<["-"], "fno-experimental-isel">, Group<f_clang_Group>, + HelpText<"Disables the experimental global instruction selector">; def fno_experimental_new_pass_manager : Flag<["-"], "fno-experimental-new-pass-manager">, Group<f_clang_Group>, Flags<[CC1Option]>, HelpText<"Disables an experimental new pass manager in LLVM.">; @@ -1239,7 +1371,7 @@ def fveclib : Joined<["-"], "fveclib=">, Group<f_Group>, Flags<[CC1Option]>, def fno_lax_vector_conversions : Flag<["-"], "fno-lax-vector-conversions">, Group<f_Group>, HelpText<"Disallow implicit conversions between vectors with a different number of elements or different element types">, Flags<[CC1Option]>; def fno_merge_all_constants : Flag<["-"], "fno-merge-all-constants">, Group<f_Group>, - Flags<[CC1Option]>, HelpText<"Disallow merging of constants">; + HelpText<"Disallow merging of constants">; def fno_modules : Flag <["-"], "fno-modules">, Group<f_Group>, Flags<[DriverOption]>; def fno_implicit_module_maps : Flag <["-"], "fno-implicit-module-maps">, Group<f_Group>, @@ -1272,6 +1404,8 @@ def fno_operator_names : Flag<["-"], "fno-operator-names">, Group<f_Group>, def fno_pascal_strings : Flag<["-"], "fno-pascal-strings">, Group<f_Group>; def fno_rtti : Flag<["-"], "fno-rtti">, Group<f_Group>, Flags<[CC1Option]>, HelpText<"Disable generation of rtti information">; +def fno_rtti_data : Flag<["-"], "fno-rtti-data">, Group<f_Group>, Flags<[CC1Option]>, + HelpText<"Control emission of RTTI data">; def fno_short_enums : Flag<["-"], "fno-short-enums">, Group<f_Group>; def fno_show_column : Flag<["-"], "fno-show-column">, Group<f_Group>, Flags<[CC1Option]>, HelpText<"Do not include column number on diagnostics">; @@ -1295,6 +1429,8 @@ def fno_threadsafe_statics : Flag<["-"], "fno-threadsafe-statics">, Group<f_Grou Flags<[CC1Option]>, HelpText<"Do not emit code to make initialization of local statics thread safe">; def fno_use_cxa_atexit : Flag<["-"], "fno-use-cxa-atexit">, Group<f_Group>, Flags<[CC1Option]>, HelpText<"Don't use __cxa_atexit for calling destructors">; +def fno_register_global_dtors_with_atexit : Flag<["-"], "fno-register-global-dtors-with-atexit">, Group<f_Group>, + HelpText<"Don't use atexit or __cxa_atexit to register global destructors">; def fno_use_init_array : Flag<["-"], "fno-use-init-array">, Group<f_Group>, Flags<[CC1Option]>, HelpText<"Don't use .init_array instead of .ctors">; def fno_unit_at_a_time : Flag<["-"], "fno-unit-at-a-time">, Group<f_Group>; @@ -1361,22 +1497,34 @@ def fno_objc_nonfragile_abi : Flag<["-"], "fno-objc-nonfragile-abi">, Group<f_Gr def fobjc_sender_dependent_dispatch : Flag<["-"], "fobjc-sender-dependent-dispatch">, Group<f_Group>; def fomit_frame_pointer : Flag<["-"], "fomit-frame-pointer">, Group<f_Group>; -def fopenmp : Flag<["-"], "fopenmp">, Group<f_Group>, Flags<[CC1Option, NoArgumentUnused]>; +def fopenmp : Flag<["-"], "fopenmp">, Group<f_Group>, Flags<[CC1Option, NoArgumentUnused]>, + HelpText<"Parse OpenMP pragmas and generate parallel code.">; def fno_openmp : Flag<["-"], "fno-openmp">, Group<f_Group>, Flags<[NoArgumentUnused]>; def fopenmp_version_EQ : Joined<["-"], "fopenmp-version=">, Group<f_Group>, Flags<[CC1Option, NoArgumentUnused]>; def fopenmp_EQ : Joined<["-"], "fopenmp=">, Group<f_Group>; -def fopenmp_use_tls : Flag<["-"], "fopenmp-use-tls">, Group<f_Group>, Flags<[NoArgumentUnused]>; -def fnoopenmp_use_tls : Flag<["-"], "fnoopenmp-use-tls">, Group<f_Group>, Flags<[CC1Option, NoArgumentUnused]>; +def fopenmp_use_tls : Flag<["-"], "fopenmp-use-tls">, Group<f_Group>, + Flags<[NoArgumentUnused, HelpHidden]>; +def fnoopenmp_use_tls : Flag<["-"], "fnoopenmp-use-tls">, Group<f_Group>, + Flags<[CC1Option, NoArgumentUnused, HelpHidden]>; def fopenmp_targets_EQ : CommaJoined<["-"], "fopenmp-targets=">, Flags<[DriverOption, CC1Option]>, HelpText<"Specify comma-separated list of triples OpenMP offloading targets to be supported">; -def fopenmp_dump_offload_linker_script : Flag<["-"], "fopenmp-dump-offload-linker-script">, Group<f_Group>, - Flags<[NoArgumentUnused]>; -def fopenmp_relocatable_target : Flag<["-"], "fopenmp-relocatable-target">, Group<f_Group>, Flags<[CC1Option, NoArgumentUnused]>, - HelpText<"OpenMP target code is compiled as relocatable using the -c flag. For OpenMP targets the code is relocatable by default.">; -def fnoopenmp_relocatable_target : Flag<["-"], "fnoopenmp-relocatable-target">, Group<f_Group>, Flags<[CC1Option, NoArgumentUnused]>, - HelpText<"Do not compile OpenMP target code as relocatable.">; +def fopenmp_dump_offload_linker_script : Flag<["-"], "fopenmp-dump-offload-linker-script">, + Group<f_Group>, Flags<[NoArgumentUnused, HelpHidden]>; +def fopenmp_relocatable_target : Flag<["-"], "fopenmp-relocatable-target">, + Group<f_Group>, Flags<[CC1Option, NoArgumentUnused, HelpHidden]>; +def fnoopenmp_relocatable_target : Flag<["-"], "fnoopenmp-relocatable-target">, + Group<f_Group>, Flags<[CC1Option, NoArgumentUnused, HelpHidden]>; +def fopenmp_simd : Flag<["-"], "fopenmp-simd">, Group<f_Group>, Flags<[CC1Option, NoArgumentUnused]>, + HelpText<"Emit OpenMP code only for SIMD-based constructs.">; +def fno_openmp_simd : Flag<["-"], "fno-openmp-simd">, Group<f_Group>, Flags<[CC1Option, NoArgumentUnused]>; +def fopenmp_cuda_mode : Flag<["-"], "fopenmp-cuda-mode">, Group<f_Group>, + Flags<[CC1Option, NoArgumentUnused, HelpHidden]>; +def fno_openmp_cuda_mode : Flag<["-"], "fno-openmp-cuda-mode">, Group<f_Group>, + Flags<[NoArgumentUnused, HelpHidden]>; def fno_optimize_sibling_calls : Flag<["-"], "fno-optimize-sibling-calls">, Group<f_Group>; def foptimize_sibling_calls : Flag<["-"], "foptimize-sibling-calls">, Group<f_Group>; +def fno_escaping_block_tail_calls : Flag<["-"], "fno-escaping-block-tail-calls">, Group<f_Group>, Flags<[CC1Option]>; +def fescaping_block_tail_calls : Flag<["-"], "fescaping-block-tail-calls">, Group<f_Group>; def force__cpusubtype__ALL : Flag<["-"], "force_cpusubtype_ALL">; def force__flat__namespace : Flag<["-"], "force_flat_namespace">; def force__load : Separate<["-"], "force_load">; @@ -1421,6 +1569,10 @@ def frtti : Flag<["-"], "frtti">, Group<f_Group>; def : Flag<["-"], "fsched-interblock">, Group<clang_ignored_f_Group>; def fshort_enums : Flag<["-"], "fshort-enums">, Group<f_Group>, Flags<[CC1Option]>, HelpText<"Allocate to an enum type only as many bytes as it needs for the declared range of possible values">; +def fchar8__t : Flag<["-"], "fchar8_t">, Group<f_Group>, Flags<[CC1Option]>, + HelpText<"Enable C++ builtin type char8_t">; +def fno_char8__t : Flag<["-"], "fno-char8_t">, Group<f_Group>, + HelpText<"Disable C++ builtin type char8_t">; def fshort_wchar : Flag<["-"], "fshort-wchar">, Group<f_Group>, HelpText<"Force wchar_t to be a short unsigned int">; def fno_short_wchar : Flag<["-"], "fno-short-wchar">, Group<f_Group>, @@ -1533,6 +1685,8 @@ def funsigned_char : Flag<["-"], "funsigned-char">, Group<f_Group>; def fno_unsigned_char : Flag<["-"], "fno-unsigned-char">; def funwind_tables : Flag<["-"], "funwind-tables">, Group<f_Group>; def fuse_cxa_atexit : Flag<["-"], "fuse-cxa-atexit">, Group<f_Group>; +def fregister_global_dtors_with_atexit : Flag<["-"], "fregister-global-dtors-with-atexit">, Group<f_Group>, Flags<[CC1Option]>, + HelpText<"Use atexit or __cxa_atexit to register global destructors">; def fuse_init_array : Flag<["-"], "fuse-init-array">, Group<f_Group>, Flags<[CC1Option]>, HelpText<"Use .init_array instead of .ctors">; def fno_var_tracking : Flag<["-"], "fno-var-tracking">, Group<clang_ignored_f_Group>; @@ -1540,7 +1694,7 @@ def fverbose_asm : Flag<["-"], "fverbose-asm">, Group<f_Group>; def fvisibility_EQ : Joined<["-"], "fvisibility=">, Group<f_Group>, HelpText<"Set the default symbol visibility for all global declarations">, Values<"hidden,default">; def fvisibility_inlines_hidden : Flag<["-"], "fvisibility-inlines-hidden">, Group<f_Group>, - HelpText<"Give inline C++ member functions default visibility by default">, + HelpText<"Give inline C++ member functions hidden visibility by default">, Flags<[CC1Option]>; def fvisibility_ms_compat : Flag<["-"], "fvisibility-ms-compat">, Group<f_Group>, HelpText<"Give global types 'default' visibility and global functions and " @@ -1550,6 +1704,11 @@ def fwhole_program_vtables : Flag<["-"], "fwhole-program-vtables">, Group<f_Grou HelpText<"Enables whole-program vtable optimization. Requires -flto">; def fno_whole_program_vtables : Flag<["-"], "fno-whole-program-vtables">, Group<f_Group>, Flags<[CoreOption]>; +def fforce_emit_vtables : Flag<["-"], "fforce-emit-vtables">, Group<f_Group>, + Flags<[CC1Option]>, + HelpText<"Emits more virtual tables to improve devirtualization">; +def fno_force_emit_vtables : Flag<["-"], "fno-force-emit-vtables">, Group<f_Group>, + Flags<[CoreOption]>; def fwrapv : Flag<["-"], "fwrapv">, Group<f_Group>, Flags<[CC1Option]>, HelpText<"Treat signed integer overflow as two's complement">; def fwritable_strings : Flag<["-"], "fwritable-strings">, Group<f_Group>, Flags<[CC1Option]>, @@ -1564,6 +1723,10 @@ def fdata_sections : Flag <["-"], "fdata-sections">, Group<f_Group>, Flags<[CC1Option]>, HelpText<"Place each data in its own section (ELF Only)">; def fno_data_sections : Flag <["-"], "fno-data-sections">, Group<f_Group>, Flags<[CC1Option]>; +def fstack_size_section : Flag<["-"], "fstack-size-section">, Group<f_Group>, Flags<[CC1Option]>, + HelpText<"Emit section containing metadata on function stack sizes">; +def fno_stack_size_section : Flag<["-"], "fno-stack-size-section">, Group<f_Group>, Flags<[CC1Option]>, + HelpText<"Don't emit section containing metadata on function stack sizes">; def funique_section_names : Flag <["-"], "funique-section-names">, Group<f_Group>, Flags<[CC1Option]>, @@ -1589,11 +1752,12 @@ def fdebug_types_section: Flag <["-"], "fdebug-types-section">, Group<f_Group>, def fno_debug_types_section: Flag<["-"], "fno-debug-types-section">, Group<f_Group>, Flags<[CC1Option]>; def fsplit_dwarf_inlining: Flag <["-"], "fsplit-dwarf-inlining">, Group<f_Group>, - Flags<[CC1Option]>, HelpText<"Place debug types in their own section (ELF Only)">; + Flags<[CC1Option]>, HelpText<"Provide minimal debug info in the object/executable to facilitate online symbolication/stack traces in the absence of .dwo/.dwp files when using Split DWARF">; def fno_split_dwarf_inlining: Flag<["-"], "fno-split-dwarf-inlining">, Group<f_Group>, Flags<[CC1Option]>; def fdebug_prefix_map_EQ - : Joined<["-"], "fdebug-prefix-map=">, Group<f_Group>, Flags<[CC1Option]>, + : Joined<["-"], "fdebug-prefix-map=">, Group<f_Group>, + Flags<[CC1Option,CC1AsOption]>, HelpText<"remap file source paths in debug info">; def g_Flag : Flag<["-"], "g">, Group<g_Group>, HelpText<"Generate source-level debug information">; @@ -1642,6 +1806,7 @@ def gcolumn_info : Flag<["-"], "gcolumn-info">, Group<g_flags_Group>, Flags<[Cor def gno_column_info : Flag<["-"], "gno-column-info">, Group<g_flags_Group>, Flags<[CoreOption]>; def gsplit_dwarf : Flag<["-"], "gsplit-dwarf">, Group<g_flags_Group>; def ggnu_pubnames : Flag<["-"], "ggnu-pubnames">, Group<g_flags_Group>, Flags<[CC1Option]>; +def gno_gnu_pubnames : Flag<["-"], "gno-gnu-pubnames">, Group<g_flags_Group>, Flags<[CC1Option]>; def gdwarf_aranges : Flag<["-"], "gdwarf-aranges">, Group<g_flags_Group>; def gmodules : Flag <["-"], "gmodules">, Group<gN_Group>, HelpText<"Generate debug info with external references to clang modules" @@ -1650,6 +1815,11 @@ def gz : Flag<["-"], "gz">, Group<g_flags_Group>, HelpText<"DWARF debug sections compression type">; def gz_EQ : Joined<["-"], "gz=">, Group<g_flags_Group>, HelpText<"DWARF debug sections compression type">; +def gembed_source : Flag<["-"], "gembed-source">, Group<g_flags_Group>, Flags<[CC1Option]>, + HelpText<"Embed source text in DWARF debug sections">; +def gno_embed_source : Flag<["-"], "gno-embed-source">, Group<g_flags_Group>, + Flags<[DriverOption]>, + HelpText<"Restore the default behavior of not embedding source text in DWARF debug sections">; def headerpad__max__install__names : Joined<["-"], "headerpad_max_install_names">; def help : Flag<["-", "--"], "help">, Flags<[CC1Option,CC1AsOption]>, HelpText<"Display available options">; @@ -1700,7 +1870,7 @@ def iwithsysroot : JoinedOrSeparate<["-"], "iwithsysroot">, Group<clang_i_Group> Flags<[CC1Option]>; def ivfsoverlay : JoinedOrSeparate<["-"], "ivfsoverlay">, Group<clang_i_Group>, Flags<[CC1Option]>, HelpText<"Overlay the virtual filesystem described by file over the real file system">; -def i : Joined<["-"], "i">, Group<i_Group>; +def imultilib : Separate<["-"], "imultilib">, Group<gfortran_Group>; def keep__private__externs : Flag<["-"], "keep_private_externs">; def l : JoinedOrSeparate<["-"], "l">, Flags<[LinkerInput, RenderJoined]>, Group<Link_Group>; @@ -1787,6 +1957,10 @@ def mmacos_version_min_EQ : Joined<["-"], "mmacos-version-min=">, Group<m_Group>, Alias<mmacosx_version_min_EQ>; def mms_bitfields : Flag<["-"], "mms-bitfields">, Group<m_Group>, Flags<[CC1Option]>, HelpText<"Set the default structure layout to be compatible with the Microsoft compiler standard">; +def moutline : Flag<["-"], "moutline">, Group<f_clang_Group>, Flags<[CC1Option]>, + HelpText<"Enable function outlining (AArch64 only)">; +def mno_outline : Flag<["-"], "mno-outline">, Group<f_clang_Group>, Flags<[CC1Option]>, + HelpText<"Disable function outlining (AArch64 only)">; def mno_ms_bitfields : Flag<["-"], "mno-ms-bitfields">, Group<m_Group>, HelpText<"Do not set the default structure layout to be compatible with the Microsoft compiler standard">; def mstackrealign : Flag<["-"], "mstackrealign">, Group<m_Group>, Flags<[CC1Option]>, @@ -1795,6 +1969,10 @@ def mstack_alignment : Joined<["-"], "mstack-alignment=">, Group<m_Group>, Flags HelpText<"Set the stack alignment">; def mstack_probe_size : Joined<["-"], "mstack-probe-size=">, Group<m_Group>, Flags<[CC1Option]>, HelpText<"Set the stack probe size">; +def mstack_arg_probe : Flag<["-"], "mstack-arg-probe">, Group<m_Group>, + HelpText<"Enable stack probes">; +def mno_stack_arg_probe : Flag<["-"], "mno-stack-arg-probe">, Group<m_Group>, Flags<[CC1Option]>, + HelpText<"Disable stack probes which are enabled by default">; def mthread_model : Separate<["-"], "mthread-model">, Group<m_Group>, Flags<[CC1Option]>, HelpText<"The thread model to use, e.g. posix, single (posix by default)">, Values<"posix,single">; def meabi : Separate<["-"], "meabi">, Group<m_Group>, Flags<[CC1Option]>, @@ -1811,6 +1989,11 @@ def mno_rtd: Flag<["-"], "mno-rtd">, Group<m_Group>; def mno_soft_float : Flag<["-"], "mno-soft-float">, Group<m_Group>; def mno_stackrealign : Flag<["-"], "mno-stackrealign">, Group<m_Group>; +def mrelax : Flag<["-"], "mrelax">, Group<m_riscv_Features_Group>, + HelpText<"Enable linker relaxation">; +def mno_relax : Flag<["-"], "mno-relax">, Group<m_riscv_Features_Group>, + HelpText<"Disable linker relaxation">; + def munaligned_access : Flag<["-"], "munaligned-access">, Group<m_arm_Features_Group>, HelpText<"Allow memory accesses to be unaligned (AArch32/AArch64 only)">; def mno_unaligned_access : Flag<["-"], "mno-unaligned-access">, Group<m_arm_Features_Group>, @@ -1827,8 +2010,8 @@ def ffixed_r9 : Flag<["-"], "ffixed-r9">, Group<m_arm_Features_Group>, HelpText<"Reserve the r9 register (ARM only)">; def mno_movt : Flag<["-"], "mno-movt">, Group<m_arm_Features_Group>, HelpText<"Disallow use of movt/movw pairs (ARM only)">; -def mcrc : Flag<["-"], "mcrc">, Group<m_arm_Features_Group>, - HelpText<"Allow use of CRC instructions (ARM only)">; +def mcrc : Flag<["-"], "mcrc">, Group<m_Group>, + HelpText<"Allow use of CRC instructions (ARM/Mips only)">; def mnocrc : Flag<["-"], "mnocrc">, Group<m_arm_Features_Group>, HelpText<"Disallow use of CRC instructions (ARM only)">; def mno_neg_immediates: Flag<["-"], "mno-neg-immediates">, Group<m_arm_Features_Group>, @@ -1844,11 +2027,17 @@ def mno_fix_cortex_a53_835769 : Flag<["-"], "mno-fix-cortex-a53-835769">, HelpText<"Don't workaround Cortex-A53 erratum 835769 (AArch64 only)">; def ffixed_x18 : Flag<["-"], "ffixed-x18">, Group<m_aarch64_Features_Group>, HelpText<"Reserve the x18 register (AArch64 only)">; +def ffixed_x20 : Flag<["-"], "ffixed-x20">, Group<m_aarch64_Features_Group>, + HelpText<"Reserve the x20 register (AArch64 only)">; def msimd128 : Flag<["-"], "msimd128">, Group<m_wasm_Features_Group>; def mno_simd128 : Flag<["-"], "mno-simd128">, Group<m_wasm_Features_Group>; def mnontrapping_fptoint : Flag<["-"], "mnontrapping-fptoint">, Group<m_wasm_Features_Group>; def mno_nontrapping_fptoint : Flag<["-"], "mno-nontrapping-fptoint">, Group<m_wasm_Features_Group>; +def msign_ext : Flag<["-"], "msign-ext">, Group<m_wasm_Features_Group>; +def mno_sign_ext : Flag<["-"], "mno-sign-ext">, Group<m_wasm_Features_Group>; +def mexception_handing : Flag<["-"], "mexception-handling">, Group<m_wasm_Features_Group>; +def mno_exception_handing : Flag<["-"], "mno-exception-handling">, Group<m_wasm_Features_Group>; def mamdgpu_debugger_abi : Joined<["-"], "mamdgpu-debugger-abi=">, Flags<[HelpHidden]>, @@ -1866,6 +2055,7 @@ def maltivec : Flag<["-"], "maltivec">, Group<m_ppc_Features_Group>; def mno_altivec : Flag<["-"], "mno-altivec">, Group<m_ppc_Features_Group>; def mvsx : Flag<["-"], "mvsx">, Group<m_ppc_Features_Group>; def mno_vsx : Flag<["-"], "mno-vsx">, Group<m_ppc_Features_Group>; +def msecure_plt : Flag<["-"], "msecure-plt">, Group<m_ppc_Features_Group>; def mpower8_vector : Flag<["-"], "mpower8-vector">, Group<m_ppc_Features_Group>; def mno_power8_vector : Flag<["-"], "mno-power8-vector">, @@ -1962,124 +2152,141 @@ def mpie_copy_relocations : Flag<["-"], "mpie-copy-relocations">, Group<m_Group> def mno_pie_copy_relocations : Flag<["-"], "mno-pie-copy-relocations">, Group<m_Group>; def mfentry : Flag<["-"], "mfentry">, HelpText<"Insert calls to fentry at function entry (x86 only)">, Flags<[CC1Option]>, Group<m_Group>; -def mips16 : Flag<["-"], "mips16">, Group<m_Group>; -def mno_mips16 : Flag<["-"], "mno-mips16">, Group<m_Group>; -def mmicromips : Flag<["-"], "mmicromips">, Group<m_Group>; -def mno_micromips : Flag<["-"], "mno-micromips">, Group<m_Group>; -def mxgot : Flag<["-"], "mxgot">, Group<m_Group>; -def mno_xgot : Flag<["-"], "mno-xgot">, Group<m_Group>; -def mldc1_sdc1 : Flag<["-"], "mldc1-sdc1">, Group<m_Group>; -def mno_ldc1_sdc1 : Flag<["-"], "mno-ldc1-sdc1">, Group<m_Group>; -def mcheck_zero_division : Flag<["-"], "mcheck-zero-division">, Group<m_Group>; +def mips16 : Flag<["-"], "mips16">, Group<m_mips_Features_Group>; +def mno_mips16 : Flag<["-"], "mno-mips16">, Group<m_mips_Features_Group>; +def mmicromips : Flag<["-"], "mmicromips">, Group<m_mips_Features_Group>; +def mno_micromips : Flag<["-"], "mno-micromips">, Group<m_mips_Features_Group>; +def mxgot : Flag<["-"], "mxgot">, Group<m_mips_Features_Group>; +def mno_xgot : Flag<["-"], "mno-xgot">, Group<m_mips_Features_Group>; +def mldc1_sdc1 : Flag<["-"], "mldc1-sdc1">, Group<m_mips_Features_Group>; +def mno_ldc1_sdc1 : Flag<["-"], "mno-ldc1-sdc1">, Group<m_mips_Features_Group>; +def mcheck_zero_division : Flag<["-"], "mcheck-zero-division">, + Group<m_mips_Features_Group>; def mno_check_zero_division : Flag<["-"], "mno-check-zero-division">, - Group<m_Group>; -def mcompact_branches_EQ : Joined<["-"], "mcompact-branches=">, Group<m_Group>; + Group<m_mips_Features_Group>; +def mcompact_branches_EQ : Joined<["-"], "mcompact-branches=">, + Group<m_mips_Features_Group>; def mbranch_likely : Flag<["-"], "mbranch-likely">, Group<m_Group>, IgnoredGCCCompat; def mno_branch_likely : Flag<["-"], "mno-branch-likely">, Group<m_Group>, IgnoredGCCCompat; -def mdsp : Flag<["-"], "mdsp">, Group<m_Group>; -def mno_dsp : Flag<["-"], "mno-dsp">, Group<m_Group>; -def mdspr2 : Flag<["-"], "mdspr2">, Group<m_Group>; -def mno_dspr2 : Flag<["-"], "mno-dspr2">, Group<m_Group>; -def msingle_float : Flag<["-"], "msingle-float">, Group<m_Group>; -def mdouble_float : Flag<["-"], "mdouble-float">, Group<m_Group>; -def mmadd4 : Flag<["-"], "mmadd4">, Group<m_Group>, +def mindirect_jump_EQ : Joined<["-"], "mindirect-jump=">, + Group<m_mips_Features_Group>, + HelpText<"Change indirect jump instructions to inhibit speculation">; +def mdsp : Flag<["-"], "mdsp">, Group<m_mips_Features_Group>; +def mno_dsp : Flag<["-"], "mno-dsp">, Group<m_mips_Features_Group>; +def mdspr2 : Flag<["-"], "mdspr2">, Group<m_mips_Features_Group>; +def mno_dspr2 : Flag<["-"], "mno-dspr2">, Group<m_mips_Features_Group>; +def msingle_float : Flag<["-"], "msingle-float">, Group<m_mips_Features_Group>; +def mdouble_float : Flag<["-"], "mdouble-float">, Group<m_mips_Features_Group>; +def mmadd4 : Flag<["-"], "mmadd4">, Group<m_mips_Features_Group>, HelpText<"Enable the generation of 4-operand madd.s, madd.d and related instructions.">; -def mno_madd4 : Flag<["-"], "mno-madd4">, Group<m_Group>, +def mno_madd4 : Flag<["-"], "mno-madd4">, Group<m_mips_Features_Group>, HelpText<"Disable the generation of 4-operand madd.s, madd.d and related instructions.">; -def mmsa : Flag<["-"], "mmsa">, Group<m_Group>, +def mmsa : Flag<["-"], "mmsa">, Group<m_mips_Features_Group>, HelpText<"Enable MSA ASE (MIPS only)">; -def mno_msa : Flag<["-"], "mno-msa">, Group<m_Group>, +def mno_msa : Flag<["-"], "mno-msa">, Group<m_mips_Features_Group>, HelpText<"Disable MSA ASE (MIPS only)">; -def mmt : Flag<["-"], "mmt">, Group<m_Group>, +def mmt : Flag<["-"], "mmt">, Group<m_mips_Features_Group>, HelpText<"Enable MT ASE (MIPS only)">; -def mno_mt : Flag<["-"], "mno-mt">, Group<m_Group>, +def mno_mt : Flag<["-"], "mno-mt">, Group<m_mips_Features_Group>, HelpText<"Disable MT ASE (MIPS only)">; -def mfp64 : Flag<["-"], "mfp64">, Group<m_Group>, +def mfp64 : Flag<["-"], "mfp64">, Group<m_mips_Features_Group>, HelpText<"Use 64-bit floating point registers (MIPS only)">; -def mfp32 : Flag<["-"], "mfp32">, Group<m_Group>, +def mfp32 : Flag<["-"], "mfp32">, Group<m_mips_Features_Group>, HelpText<"Use 32-bit floating point registers (MIPS only)">; -def mgpopt : Flag<["-"], "mgpopt">, Group<m_Group>, +def mgpopt : Flag<["-"], "mgpopt">, Group<m_mips_Features_Group>, HelpText<"Use GP relative accesses for symbols known to be in a small" " data section (MIPS)">; -def mno_gpopt : Flag<["-"], "mno-gpopt">, Group<m_Group>, +def mno_gpopt : Flag<["-"], "mno-gpopt">, Group<m_mips_Features_Group>, HelpText<"Do not use GP relative accesses for symbols known to be in a small" " data section (MIPS)">; -def mlocal_sdata : Flag<["-"], "mlocal-sdata">, Group<m_Group>, +def mlocal_sdata : Flag<["-"], "mlocal-sdata">, + Group<m_mips_Features_Group>, HelpText<"Extend the -G behaviour to object local data (MIPS)">; -def mno_local_sdata : Flag<["-"], "mno-local-sdata">, Group<m_Group>, +def mno_local_sdata : Flag<["-"], "mno-local-sdata">, + Group<m_mips_Features_Group>, HelpText<"Do not extend the -G behaviour to object local data (MIPS)">; -def mextern_sdata : Flag<["-"], "mextern-sdata">, Group<m_Group>, +def mextern_sdata : Flag<["-"], "mextern-sdata">, + Group<m_mips_Features_Group>, HelpText<"Assume that externally defined data is in the small data if it" " meets the -G <size> threshold (MIPS)">; -def mno_extern_sdata : Flag<["-"], "mno-extern-sdata">, Group<m_Group>, +def mno_extern_sdata : Flag<["-"], "mno-extern-sdata">, + Group<m_mips_Features_Group>, HelpText<"Do not assume that externally defined data is in the small data if" " it meets the -G <size> threshold (MIPS)">; -def membedded_data : Flag<["-"], "membedded-data">, Group<m_Group>, +def membedded_data : Flag<["-"], "membedded-data">, + Group<m_mips_Features_Group>, HelpText<"Place constants in the .rodata section instead of the .sdata " "section even if they meet the -G <size> threshold (MIPS)">; -def mno_embedded_data : Flag<["-"], "mno-embedded-data">, Group<m_Group>, +def mno_embedded_data : Flag<["-"], "mno-embedded-data">, + Group<m_mips_Features_Group>, HelpText<"Do not place constants in the .rodata section instead of the " ".sdata if they meet the -G <size> threshold (MIPS)">; -def mnan_EQ : Joined<["-"], "mnan=">, Group<m_Group>; -def mabs_EQ : Joined<["-"], "mabs=">, Group<m_Group>; -def mabicalls : Flag<["-"], "mabicalls">, Group<m_Group>, +def mnan_EQ : Joined<["-"], "mnan=">, Group<m_mips_Features_Group>; +def mabs_EQ : Joined<["-"], "mabs=">, Group<m_mips_Features_Group>; +def mabicalls : Flag<["-"], "mabicalls">, Group<m_mips_Features_Group>, HelpText<"Enable SVR4-style position-independent code (Mips only)">; -def mno_abicalls : Flag<["-"], "mno-abicalls">, Group<m_Group>, +def mno_abicalls : Flag<["-"], "mno-abicalls">, Group<m_mips_Features_Group>, HelpText<"Disable SVR4-style position-independent code (Mips only)">; +def mno_crc : Flag<["-"], "mno-crc">, Group<m_mips_Features_Group>, + HelpText<"Disallow use of CRC instructions (Mips only)">; +def mvirt : Flag<["-"], "mvirt">, Group<m_mips_Features_Group>; +def mno_virt : Flag<["-"], "mno-virt">, Group<m_mips_Features_Group>; +def mginv : Flag<["-"], "mginv">, Group<m_mips_Features_Group>; +def mno_ginv : Flag<["-"], "mno-ginv">, Group<m_mips_Features_Group>; def mips1 : Flag<["-"], "mips1">, - Alias<march_EQ>, AliasArgs<["mips1"]>, + Alias<march_EQ>, AliasArgs<["mips1"]>, Group<m_mips_Features_Group>, HelpText<"Equivalent to -march=mips1">, Flags<[HelpHidden]>; def mips2 : Flag<["-"], "mips2">, - Alias<march_EQ>, AliasArgs<["mips2"]>, + Alias<march_EQ>, AliasArgs<["mips2"]>, Group<m_mips_Features_Group>, HelpText<"Equivalent to -march=mips2">, Flags<[HelpHidden]>; def mips3 : Flag<["-"], "mips3">, - Alias<march_EQ>, AliasArgs<["mips3"]>, + Alias<march_EQ>, AliasArgs<["mips3"]>, Group<m_mips_Features_Group>, HelpText<"Equivalent to -march=mips3">, Flags<[HelpHidden]>; def mips4 : Flag<["-"], "mips4">, - Alias<march_EQ>, AliasArgs<["mips4"]>, + Alias<march_EQ>, AliasArgs<["mips4"]>, Group<m_mips_Features_Group>, HelpText<"Equivalent to -march=mips4">, Flags<[HelpHidden]>; def mips5 : Flag<["-"], "mips5">, - Alias<march_EQ>, AliasArgs<["mips5"]>, + Alias<march_EQ>, AliasArgs<["mips5"]>, Group<m_mips_Features_Group>, HelpText<"Equivalent to -march=mips5">, Flags<[HelpHidden]>; def mips32 : Flag<["-"], "mips32">, - Alias<march_EQ>, AliasArgs<["mips32"]>, + Alias<march_EQ>, AliasArgs<["mips32"]>, Group<m_mips_Features_Group>, HelpText<"Equivalent to -march=mips32">, Flags<[HelpHidden]>; def mips32r2 : Flag<["-"], "mips32r2">, - Alias<march_EQ>, AliasArgs<["mips32r2"]>, + Alias<march_EQ>, AliasArgs<["mips32r2"]>, Group<m_mips_Features_Group>, HelpText<"Equivalent to -march=mips32r2">, Flags<[HelpHidden]>; def mips32r3 : Flag<["-"], "mips32r3">, - Alias<march_EQ>, AliasArgs<["mips32r3"]>, + Alias<march_EQ>, AliasArgs<["mips32r3"]>, Group<m_mips_Features_Group>, HelpText<"Equivalent to -march=mips32r3">, Flags<[HelpHidden]>; def mips32r5 : Flag<["-"], "mips32r5">, - Alias<march_EQ>, AliasArgs<["mips32r5"]>, + Alias<march_EQ>, AliasArgs<["mips32r5"]>, Group<m_mips_Features_Group>, HelpText<"Equivalent to -march=mips32r5">, Flags<[HelpHidden]>; def mips32r6 : Flag<["-"], "mips32r6">, - Alias<march_EQ>, AliasArgs<["mips32r6"]>, + Alias<march_EQ>, AliasArgs<["mips32r6"]>, Group<m_mips_Features_Group>, HelpText<"Equivalent to -march=mips32r6">, Flags<[HelpHidden]>; def mips64 : Flag<["-"], "mips64">, - Alias<march_EQ>, AliasArgs<["mips64"]>, + Alias<march_EQ>, AliasArgs<["mips64"]>, Group<m_mips_Features_Group>, HelpText<"Equivalent to -march=mips64">, Flags<[HelpHidden]>; def mips64r2 : Flag<["-"], "mips64r2">, - Alias<march_EQ>, AliasArgs<["mips64r2"]>, + Alias<march_EQ>, AliasArgs<["mips64r2"]>, Group<m_mips_Features_Group>, HelpText<"Equivalent to -march=mips64r2">, Flags<[HelpHidden]>; def mips64r3 : Flag<["-"], "mips64r3">, - Alias<march_EQ>, AliasArgs<["mips64r3"]>, + Alias<march_EQ>, AliasArgs<["mips64r3"]>, Group<m_mips_Features_Group>, HelpText<"Equivalent to -march=mips64r3">, Flags<[HelpHidden]>; def mips64r5 : Flag<["-"], "mips64r5">, - Alias<march_EQ>, AliasArgs<["mips64r5"]>, + Alias<march_EQ>, AliasArgs<["mips64r5"]>, Group<m_mips_Features_Group>, HelpText<"Equivalent to -march=mips64r5">, Flags<[HelpHidden]>; def mips64r6 : Flag<["-"], "mips64r6">, - Alias<march_EQ>, AliasArgs<["mips64r6"]>, + Alias<march_EQ>, AliasArgs<["mips64r6"]>, Group<m_mips_Features_Group>, HelpText<"Equivalent to -march=mips64r6">, Flags<[HelpHidden]>; -def mfpxx : Flag<["-"], "mfpxx">, Group<m_Group>, +def mfpxx : Flag<["-"], "mfpxx">, Group<m_mips_Features_Group>, HelpText<"Avoid FPU mode dependent operations when used with the O32 ABI">, Flags<[HelpHidden]>; -def modd_spreg : Flag<["-"], "modd-spreg">, Group<m_Group>, +def modd_spreg : Flag<["-"], "modd-spreg">, Group<m_mips_Features_Group>, HelpText<"Enable odd single-precision floating point registers">, Flags<[HelpHidden]>; -def mno_odd_spreg : Flag<["-"], "mno-odd-spreg">, Group<m_Group>, +def mno_odd_spreg : Flag<["-"], "mno-odd-spreg">, Group<m_mips_Features_Group>, HelpText<"Disable odd single-precision floating point registers">, Flags<[HelpHidden]>; def mglibc : Flag<["-"], "mglibc">, Group<m_libc_Group>, Flags<[HelpHidden]>; @@ -2092,7 +2299,7 @@ def multi__module : Flag<["-"], "multi_module">; def multiply__defined__unused : Separate<["-"], "multiply_defined_unused">; def multiply__defined : Separate<["-"], "multiply_defined">; def mwarn_nonportable_cfstrings : Flag<["-"], "mwarn-nonportable-cfstrings">, Group<m_Group>; -def no_canonical_prefixes : Flag<["-"], "no-canonical-prefixes">, Flags<[HelpHidden]>, +def no_canonical_prefixes : Flag<["-"], "no-canonical-prefixes">, Flags<[HelpHidden, CoreOption]>, HelpText<"Use relative instead of canonical paths">; def no_cpp_precomp : Flag<["-"], "no-cpp-precomp">, Group<clang_ignored_f_Group>; def no_integrated_cpp : Flag<["-", "--"], "no-integrated-cpp">, Flags<[DriverOption]>; @@ -2175,7 +2382,7 @@ def fno_rtlib_add_rpath: Flag<["-"], "fno-rtlib-add-rpath">, Flags<[NoArgumentUn HelpText<"Do not add -rpath with architecture-specific resource directory to the linker flags">; def r : Flag<["-"], "r">, Flags<[LinkerInput,NoArgumentUnused]>, Group<Link_Group>; -def save_temps_EQ : Joined<["-", "--"], "save-temps=">, Flags<[DriverOption]>, +def save_temps_EQ : Joined<["-", "--"], "save-temps=">, Flags<[CC1Option, DriverOption]>, HelpText<"Save intermediate compilation results.">; def save_temps : Flag<["-", "--"], "save-temps">, Flags<[DriverOption]>, Alias<save_temps_EQ>, AliasArgs<["cwd"]>, @@ -2326,7 +2533,8 @@ def _for_linker_EQ : Joined<["--"], "for-linker=">, Alias<Xlinker>; def _for_linker : Separate<["--"], "for-linker">, Alias<Xlinker>; def _force_link_EQ : Joined<["--"], "force-link=">, Alias<u>; def _force_link : Separate<["--"], "force-link">, Alias<u>; -def _help_hidden : Flag<["--"], "help-hidden">; +def _help_hidden : Flag<["--"], "help-hidden">, + HelpText<"Display help for hidden options">; def _imacros_EQ : Joined<["--"], "imacros=">, Alias<imacros>; def _include_barrier : Flag<["--"], "include-barrier">, Alias<I_>; def _include_directory_after_EQ : Joined<["--"], "include-directory-after=">, Alias<idirafter>; @@ -2396,39 +2604,50 @@ def _write_dependencies : Flag<["--"], "write-dependencies">, Alias<MD>; def _write_user_dependencies : Flag<["--"], "write-user-dependencies">, Alias<MMD>; def _ : Joined<["--"], "">, Flags<[Unsupported]>; -def mieee_rnd_near : Flag<["-"], "mieee-rnd-near">, Group<m_hexagon_Features_Group>; +// Hexagon feature flags. +def mieee_rnd_near : Flag<["-"], "mieee-rnd-near">, + Group<m_hexagon_Features_Group>; def mv4 : Flag<["-"], "mv4">, Group<m_hexagon_Features_Group>, - Alias<mcpu_EQ>, AliasArgs<["hexagonv4"]>; + Alias<mcpu_EQ>, AliasArgs<["hexagonv4"]>; def mv5 : Flag<["-"], "mv5">, Group<m_hexagon_Features_Group>, Alias<mcpu_EQ>, - AliasArgs<["hexagonv5"]>; + AliasArgs<["hexagonv5"]>; def mv55 : Flag<["-"], "mv55">, Group<m_hexagon_Features_Group>, - Alias<mcpu_EQ>, AliasArgs<["hexagonv55"]>; + Alias<mcpu_EQ>, AliasArgs<["hexagonv55"]>; def mv60 : Flag<["-"], "mv60">, Group<m_hexagon_Features_Group>, - Alias<mcpu_EQ>, AliasArgs<["hexagonv60"]>; + Alias<mcpu_EQ>, AliasArgs<["hexagonv60"]>; def mv62 : Flag<["-"], "mv62">, Group<m_hexagon_Features_Group>, - Alias<mcpu_EQ>, AliasArgs<["hexagonv62"]>; + Alias<mcpu_EQ>, AliasArgs<["hexagonv62"]>; def mv65 : Flag<["-"], "mv65">, Group<m_hexagon_Features_Group>, - Alias<mcpu_EQ>, AliasArgs<["hexagonv65"]>; -def mhexagon_hvx : Flag<[ "-" ], "mhvx">, - Group<m_hexagon_Features_HVX_Group>, - HelpText<"Enable Hexagon Vector eXtensions">; -def mhexagon_hvx_EQ : Joined<[ "-" ], "mhvx=">, - Group<m_hexagon_Features_HVX_Group>, - HelpText<"Enable Hexagon Vector eXtensions">; -def mno_hexagon_hvx : Flag<[ "-" ], "mno-hvx">, - Group<m_hexagon_Features_HVX_Group>, - HelpText<"Disable Hexagon Vector eXtensions">; -def mhexagon_hvx_length_EQ : Joined<[ "-" ], "mhvx-length=">, - Group<m_hexagon_Features_HVX_Group>, - HelpText<"Set Hexagon Vector Length">, Values<"64B,128B">; -// hvx-double deprecrated flag. -def mhexagon_hvx_double : Flag<[ "-" ], "mhvx-double">, - Group<m_hexagon_Features_HVX_Group>, - HelpText<"Enable Hexagon Double Vector eXtensions">; -def mno_hexagon_hvx_double - : Flag<[ "-" ], "mno-hvx-double">, - Group<m_hexagon_Features_HVX_Group>, - HelpText<"Disable Hexagon Double Vector eXtensions">; + Alias<mcpu_EQ>, AliasArgs<["hexagonv65"]>; +def mhexagon_hvx : Flag<["-"], "mhvx">, Group<m_hexagon_Features_HVX_Group>, + HelpText<"Enable Hexagon Vector eXtensions">; +def mhexagon_hvx_EQ : Joined<["-"], "mhvx=">, + Group<m_hexagon_Features_HVX_Group>, + HelpText<"Enable Hexagon Vector eXtensions">; +def mno_hexagon_hvx : Flag<["-"], "mno-hvx">, + Group<m_hexagon_Features_HVX_Group>, + HelpText<"Disable Hexagon Vector eXtensions">; +def mhexagon_hvx_length_EQ : Joined<["-"], "mhvx-length=">, + Group<m_hexagon_Features_HVX_Group>, HelpText<"Set Hexagon Vector Length">, + Values<"64B,128B">; +def ffixed_r19: Flag<["-"], "ffixed-r19">, + HelpText<"Reserve register r19 (Hexagon only)">; +def mmemops : Flag<["-"], "mmemops">, Group<m_hexagon_Features_Group>, + Flags<[CC1Option]>, HelpText<"Enable generation of memop instructions">; +def mno_memops : Flag<["-"], "mno-memops">, Group<m_hexagon_Features_Group>, + Flags<[CC1Option]>, HelpText<"Disable generation of memop instructions">; +def mpackets : Flag<["-"], "mpackets">, Group<m_hexagon_Features_Group>, + Flags<[CC1Option]>, HelpText<"Enable generation of instruction packets">; +def mno_packets : Flag<["-"], "mno-packets">, Group<m_hexagon_Features_Group>, + Flags<[CC1Option]>, HelpText<"Disable generation of instruction packets">; +def mnvj : Flag<["-"], "mnvj">, Group<m_hexagon_Features_Group>, + Flags<[CC1Option]>, HelpText<"Enable generation of new-value jumps">; +def mno_nvj : Flag<["-"], "mno-nvj">, Group<m_hexagon_Features_Group>, + Flags<[CC1Option]>, HelpText<"Disable generation of new-value jumps">; +def mnvs : Flag<["-"], "mnvs">, Group<m_hexagon_Features_Group>, + Flags<[CC1Option]>, HelpText<"Enable generation of new-value stores">; +def mno_nvs : Flag<["-"], "mno-nvs">, Group<m_hexagon_Features_Group>, + Flags<[CC1Option]>, HelpText<"Disable generation of new-value stores">; // X86 feature flags @@ -2499,10 +2718,14 @@ def mbmi : Flag<["-"], "mbmi">, Group<m_x86_Features_Group>; def mno_bmi : Flag<["-"], "mno-bmi">, Group<m_x86_Features_Group>; def mbmi2 : Flag<["-"], "mbmi2">, Group<m_x86_Features_Group>; def mno_bmi2 : Flag<["-"], "mno-bmi2">, Group<m_x86_Features_Group>; +def mcldemote : Flag<["-"], "mcldemote">, Group<m_x86_Features_Group>; +def mno_cldemote : Flag<["-"], "mno-cldemote">, Group<m_x86_Features_Group>; def mclflushopt : Flag<["-"], "mclflushopt">, Group<m_x86_Features_Group>; def mno_clflushopt : Flag<["-"], "mno-clflushopt">, Group<m_x86_Features_Group>; def mclwb : Flag<["-"], "mclwb">, Group<m_x86_Features_Group>; def mno_clwb : Flag<["-"], "mno-clwb">, Group<m_x86_Features_Group>; +def mwbnoinvd : Flag<["-"], "mwbnoinvd">, Group<m_x86_Features_Group>; +def mno_wbnoinvd : Flag<["-"], "mno-wbnoinvd">, Group<m_x86_Features_Group>; def mclzero : Flag<["-"], "mclzero">, Group<m_x86_Features_Group>; def mno_clzero : Flag<["-"], "mno-clzero">, Group<m_x86_Features_Group>; def mcx16 : Flag<["-"], "mcx16">, Group<m_x86_Features_Group>; @@ -2517,6 +2740,8 @@ def mfsgsbase : Flag<["-"], "mfsgsbase">, Group<m_x86_Features_Group>; def mno_fsgsbase : Flag<["-"], "mno-fsgsbase">, Group<m_x86_Features_Group>; def mfxsr : Flag<["-"], "mfxsr">, Group<m_x86_Features_Group>; def mno_fxsr : Flag<["-"], "mno-fxsr">, Group<m_x86_Features_Group>; +def minvpcid : Flag<["-"], "minvpcid">, Group<m_x86_Features_Group>; +def mno_invpcid : Flag<["-"], "mno-invpcid">, Group<m_x86_Features_Group>; def mgfni : Flag<["-"], "mgfni">, Group<m_x86_Features_Group>; def mno_gfni : Flag<["-"], "mno-gfni">, Group<m_x86_Features_Group>; def mlwp : Flag<["-"], "mlwp">, Group<m_x86_Features_Group>; @@ -2525,6 +2750,10 @@ def mlzcnt : Flag<["-"], "mlzcnt">, Group<m_x86_Features_Group>; def mno_lzcnt : Flag<["-"], "mno-lzcnt">, Group<m_x86_Features_Group>; def mmovbe : Flag<["-"], "mmovbe">, Group<m_x86_Features_Group>; def mno_movbe : Flag<["-"], "mno-movbe">, Group<m_x86_Features_Group>; +def mmovdiri : Flag<["-"], "mmovdiri">, Group<m_x86_Features_Group>; +def mno_movdiri : Flag<["-"], "mno-movdiri">, Group<m_x86_Features_Group>; +def mmovdir64b : Flag<["-"], "mmovdir64b">, Group<m_x86_Features_Group>; +def mno_movdir64b : Flag<["-"], "mno-movdir64b">, Group<m_x86_Features_Group>; def mmpx : Flag<["-"], "mmpx">, Group<m_x86_Features_Group>; def mno_mpx : Flag<["-"], "mno-mpx">, Group<m_x86_Features_Group>; def mmwaitx : Flag<["-"], "mmwaitx">, Group<m_x86_Features_Group>; @@ -2533,18 +2762,26 @@ def mpku : Flag<["-"], "mpku">, Group<m_x86_Features_Group>; def mno_pku : Flag<["-"], "mno-pku">, Group<m_x86_Features_Group>; def mpclmul : Flag<["-"], "mpclmul">, Group<m_x86_Features_Group>; def mno_pclmul : Flag<["-"], "mno-pclmul">, Group<m_x86_Features_Group>; +def mpconfig : Flag<["-"], "mpconfig">, Group<m_x86_Features_Group>; +def mno_pconfig : Flag<["-"], "mno-pconfig">, Group<m_x86_Features_Group>; def mpopcnt : Flag<["-"], "mpopcnt">, Group<m_x86_Features_Group>; def mno_popcnt : Flag<["-"], "mno-popcnt">, Group<m_x86_Features_Group>; def mprefetchwt1 : Flag<["-"], "mprefetchwt1">, Group<m_x86_Features_Group>; def mno_prefetchwt1 : Flag<["-"], "mno-prefetchwt1">, Group<m_x86_Features_Group>; def mprfchw : Flag<["-"], "mprfchw">, Group<m_x86_Features_Group>; def mno_prfchw : Flag<["-"], "mno-prfchw">, Group<m_x86_Features_Group>; +def mptwrite : Flag<["-"], "mptwrite">, Group<m_x86_Features_Group>; +def mno_ptwrite : Flag<["-"], "mno-ptwrite">, Group<m_x86_Features_Group>; +def mrdpid : Flag<["-"], "mrdpid">, Group<m_x86_Features_Group>; +def mno_rdpid : Flag<["-"], "mno-rdpid">, Group<m_x86_Features_Group>; def mrdrnd : Flag<["-"], "mrdrnd">, Group<m_x86_Features_Group>; def mno_rdrnd : Flag<["-"], "mno-rdrnd">, Group<m_x86_Features_Group>; def mrtm : Flag<["-"], "mrtm">, Group<m_x86_Features_Group>; def mno_rtm : Flag<["-"], "mno-rtm">, Group<m_x86_Features_Group>; def mrdseed : Flag<["-"], "mrdseed">, Group<m_x86_Features_Group>; def mno_rdseed : Flag<["-"], "mno-rdseed">, Group<m_x86_Features_Group>; +def msahf : Flag<["-"], "msahf">, Group<m_x86_Features_Group>; +def mno_sahf : Flag<["-"], "mno-sahf">, Group<m_x86_Features_Group>; def msgx : Flag<["-"], "msgx">, Group<m_x86_Features_Group>; def mno_sgx : Flag<["-"], "mno-sgx">, Group<m_x86_Features_Group>; def msha : Flag<["-"], "msha">, Group<m_x86_Features_Group>; @@ -2555,6 +2792,8 @@ def mvaes : Flag<["-"], "mvaes">, Group<m_x86_Features_Group>; def mno_vaes : Flag<["-"], "mno-vaes">, Group<m_x86_Features_Group>; def mvpclmulqdq : Flag<["-"], "mvpclmulqdq">, Group<m_x86_Features_Group>; def mno_vpclmulqdq : Flag<["-"], "mno-vpclmulqdq">, Group<m_x86_Features_Group>; +def mwaitpkg : Flag<["-"], "mwaitpkg">, Group<m_x86_Features_Group>; +def mno_waitpkg : Flag<["-"], "mno-waitpkg">, Group<m_x86_Features_Group>; def mxop : Flag<["-"], "mxop">, Group<m_x86_Features_Group>; def mno_xop : Flag<["-"], "mno-xop">, Group<m_x86_Features_Group>; def mxsave : Flag<["-"], "mxsave">, Group<m_x86_Features_Group>; @@ -2567,8 +2806,10 @@ def mxsaves : Flag<["-"], "mxsaves">, Group<m_x86_Features_Group>; def mno_xsaves : Flag<["-"], "mno-xsaves">, Group<m_x86_Features_Group>; def mshstk : Flag<["-"], "mshstk">, Group<m_x86_Features_Group>; def mno_shstk : Flag<["-"], "mno-shstk">, Group<m_x86_Features_Group>; -def mibt : Flag<["-"], "mibt">, Group<m_x86_Features_Group>; -def mno_ibt : Flag<["-"], "mno-ibt">, Group<m_x86_Features_Group>; +def mretpoline : Flag<["-"], "mretpoline">, Group<m_x86_Features_Group>; +def mno_retpoline : Flag<["-"], "mno-retpoline">, Group<m_x86_Features_Group>; +def mretpoline_external_thunk : Flag<["-"], "mretpoline-external-thunk">, Group<m_x86_Features_Group>; +def mno_retpoline_external_thunk : Flag<["-"], "mno-retpoline-external-thunk">, Group<m_x86_Features_Group>; // These are legacy user-facing driver-level option spellings. They are always // aliases for options that are spelled using the more common Unix / GNU flag @@ -2604,8 +2845,6 @@ def fprofile_dir : Joined<["-"], "fprofile-dir=">, Group<f_Group>; def fuse_ld_EQ : Joined<["-"], "fuse-ld=">, Group<f_Group>, Flags<[CoreOption]>; -defm align_functions : BooleanFFlag<"align-functions">, Group<clang_ignored_gcc_optimization_f_Group>; -def falign_functions_EQ : Joined<["-"], "falign-functions=">, Group<clang_ignored_gcc_optimization_f_Group>; defm align_labels : BooleanFFlag<"align-labels">, Group<clang_ignored_gcc_optimization_f_Group>; def falign_labels_EQ : Joined<["-"], "falign-labels=">, Group<clang_ignored_gcc_optimization_f_Group>; defm align_loops : BooleanFFlag<"align-loops">, Group<clang_ignored_gcc_optimization_f_Group>; @@ -2623,8 +2862,6 @@ defm reorder_blocks : BooleanFFlag<"reorder-blocks">, Group<clang_ignored_gcc_op defm eliminate_unused_debug_types : BooleanFFlag<"eliminate-unused-debug-types">, Group<clang_ignored_f_Group>; defm branch_count_reg : BooleanFFlag<"branch-count-reg">, Group<clang_ignored_gcc_optimization_f_Group>; defm default_inline : BooleanFFlag<"default-inline">, Group<clang_ignored_gcc_optimization_f_Group>; -defm delete_null_pointer_checks : BooleanFFlag<"delete-null-pointer-checks">, - Group<clang_ignored_gcc_optimization_f_Group>; defm fat_lto_objects : BooleanFFlag<"fat-lto-objects">, Group<clang_ignored_gcc_optimization_f_Group>; defm float_store : BooleanFFlag<"float-store">, Group<clang_ignored_gcc_optimization_f_Group>; defm friend_injection : BooleanFFlag<"friend-injection">, Group<clang_ignored_f_Group>; @@ -2634,7 +2871,6 @@ defm gcse_after_reload: BooleanFFlag<"gcse-after-reload">, Group<clang_ignored_g defm gcse_las: BooleanFFlag<"gcse-las">, Group<clang_ignored_gcc_optimization_f_Group>; defm gcse_sm: BooleanFFlag<"gcse-sm">, Group<clang_ignored_gcc_optimization_f_Group>; defm gnu : BooleanFFlag<"gnu">, Group<clang_ignored_f_Group>; -defm ident : BooleanFFlag<"ident">, Group<clang_ignored_f_Group>; defm implicit_templates : BooleanFFlag<"implicit-templates">, Group<clang_ignored_f_Group>; defm implement_inlines : BooleanFFlag<"implement-inlines">, Group<clang_ignored_f_Group>; defm merge_constants : BooleanFFlag<"merge-constants">, Group<clang_ignored_gcc_optimization_f_Group>; |