1//===--- Options.td - Options for clang -----------------------------------===// 2// 3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4// See https://llvm.org/LICENSE.txt for license information. 5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6// 7//===----------------------------------------------------------------------===// 8// 9// This file defines the options accepted by clang. 10// 11//===----------------------------------------------------------------------===// 12 13// Include the common option parsing interfaces. 14include "llvm/Option/OptParser.td" 15 16///////// 17// Flags 18 19// DriverOption - The option is a "driver" option, and should not be forwarded 20// to other tools. 21def DriverOption : OptionFlag; 22 23// LinkerInput - The option is a linker input. 24def LinkerInput : OptionFlag; 25 26// NoArgumentUnused - Don't report argument unused warnings for this option; this 27// is useful for options like -static or -dynamic which a user may always end up 28// passing, even if the platform defaults to (or only supports) that option. 29def NoArgumentUnused : OptionFlag; 30 31// Unsupported - The option is unsupported, and the driver will reject command 32// lines that use it. 33def Unsupported : OptionFlag; 34 35// Ignored - The option is unsupported, and the driver will silently ignore it. 36def Ignored : OptionFlag; 37 38// CoreOption - This is considered a "core" Clang option, available in both 39// clang and clang-cl modes. 40def CoreOption : OptionFlag; 41 42// CLOption - This is a cl.exe compatibility option. Options with this flag 43// are made available when the driver is running in CL compatibility mode. 44def CLOption : OptionFlag; 45 46// CC1Option - This option should be accepted by clang -cc1. 47def CC1Option : OptionFlag; 48 49// CC1AsOption - This option should be accepted by clang -cc1as. 50def CC1AsOption : OptionFlag; 51 52// NoDriverOption - This option should not be accepted by the driver. 53def NoDriverOption : OptionFlag; 54 55// A short name to show in documentation. The name will be interpreted as rST. 56class DocName<string name> { string DocName = name; } 57 58// A brief description to show in documentation, interpreted as rST. 59class DocBrief<code descr> { code DocBrief = descr; } 60 61// Indicates that this group should be flattened into its parent when generating 62// documentation. 63class DocFlatten { bit DocFlatten = 1; } 64 65// Indicates that this warning is ignored, but accepted with a warning for 66// GCC compatibility. 67class IgnoredGCCCompat : Flags<[HelpHidden]> {} 68 69///////// 70// Groups 71 72def Action_Group : OptionGroup<"<action group>">, DocName<"Actions">, 73 DocBrief<[{The action to perform on the input.}]>; 74 75// Meta-group for options which are only used for compilation, 76// and not linking etc. 77def CompileOnly_Group : OptionGroup<"<CompileOnly group>">, 78 DocName<"Compilation flags">, DocBrief<[{ 79Flags controlling the behavior of Clang during compilation. These flags have 80no effect during actions that do not perform compilation.}]>; 81 82def Preprocessor_Group : OptionGroup<"<Preprocessor group>">, 83 Group<CompileOnly_Group>, 84 DocName<"Preprocessor flags">, DocBrief<[{ 85Flags controlling the behavior of the Clang preprocessor.}]>; 86 87def IncludePath_Group : OptionGroup<"<I/i group>">, Group<Preprocessor_Group>, 88 DocName<"Include path management">, 89 DocBrief<[{ 90Flags controlling how ``#include``\s are resolved to files.}]>; 91 92def I_Group : OptionGroup<"<I group>">, Group<IncludePath_Group>, DocFlatten; 93def i_Group : OptionGroup<"<i group>">, Group<IncludePath_Group>, DocFlatten; 94def clang_i_Group : OptionGroup<"<clang i group>">, Group<i_Group>, DocFlatten; 95 96def M_Group : OptionGroup<"<M group>">, Group<Preprocessor_Group>, 97 DocName<"Dependency file generation">, DocBrief<[{ 98Flags controlling generation of a dependency file for ``make``-like build 99systems.}]>; 100 101def d_Group : OptionGroup<"<d group>">, Group<Preprocessor_Group>, 102 DocName<"Dumping preprocessor state">, DocBrief<[{ 103Flags allowing the state of the preprocessor to be dumped in various ways.}]>; 104 105def Diag_Group : OptionGroup<"<W/R group>">, Group<CompileOnly_Group>, 106 DocName<"Diagnostic flags">, DocBrief<[{ 107Flags controlling which warnings, errors, and remarks Clang will generate. 108See the :doc:`full list of warning and remark flags <DiagnosticsReference>`.}]>; 109 110def R_Group : OptionGroup<"<R group>">, Group<Diag_Group>, DocFlatten; 111def R_value_Group : OptionGroup<"<R (with value) group>">, Group<R_Group>, 112 DocFlatten; 113def W_Group : OptionGroup<"<W group>">, Group<Diag_Group>, DocFlatten; 114def W_value_Group : OptionGroup<"<W (with value) group>">, Group<W_Group>, 115 DocFlatten; 116 117def f_Group : OptionGroup<"<f group>">, Group<CompileOnly_Group>, 118 DocName<"Target-independent compilation options">; 119 120def f_clang_Group : OptionGroup<"<f (clang-only) group>">, 121 Group<CompileOnly_Group>, DocFlatten; 122def pedantic_Group : OptionGroup<"<pedantic group>">, Group<f_Group>, 123 DocFlatten; 124def opencl_Group : OptionGroup<"<opencl group>">, Group<f_Group>, 125 DocName<"OpenCL flags">; 126 127def m_Group : OptionGroup<"<m group>">, Group<CompileOnly_Group>, 128 DocName<"Target-dependent compilation options">; 129 130// Feature groups - these take command line options that correspond directly to 131// target specific features and can be translated directly from command line 132// options. 133def m_aarch64_Features_Group : OptionGroup<"<aarch64 features group>">, 134 Group<m_Group>, DocName<"AARCH64">; 135def m_amdgpu_Features_Group : OptionGroup<"<amdgpu features group>">, 136 Group<m_Group>, DocName<"AMDGPU">; 137def m_arm_Features_Group : OptionGroup<"<arm features group>">, 138 Group<m_Group>, DocName<"ARM">; 139def m_hexagon_Features_Group : OptionGroup<"<hexagon features group>">, 140 Group<m_Group>, DocName<"Hexagon">; 141// The features added by this group will not be added to target features. 142// These are explicitly handled. 143def m_hexagon_Features_HVX_Group : OptionGroup<"<hexagon features group>">, 144 Group<m_Group>, DocName<"Hexagon">; 145def m_mips_Features_Group : OptionGroup<"<mips features group>">, 146 Group<m_Group>, DocName<"MIPS">; 147def m_ppc_Features_Group : OptionGroup<"<ppc features group>">, 148 Group<m_Group>, DocName<"PowerPC">; 149def m_wasm_Features_Group : OptionGroup<"<wasm features group>">, 150 Group<m_Group>, DocName<"WebAssembly">; 151def m_x86_Features_Group : OptionGroup<"<x86 features group>">, 152 Group<m_Group>, Flags<[CoreOption]>, DocName<"X86">; 153def m_riscv_Features_Group : OptionGroup<"<riscv features group>">, 154 Group<m_Group>, DocName<"RISCV">; 155 156def m_libc_Group : OptionGroup<"<m libc group>">, Group<m_mips_Features_Group>, 157 Flags<[HelpHidden]>; 158 159def O_Group : OptionGroup<"<O group>">, Group<CompileOnly_Group>, 160 DocName<"Optimization level">, DocBrief<[{ 161Flags controlling how much optimization should be performed.}]>; 162 163def DebugInfo_Group : OptionGroup<"<g group>">, Group<CompileOnly_Group>, 164 DocName<"Debug information generation">, DocBrief<[{ 165Flags controlling how much and what kind of debug information should be 166generated.}]>; 167 168def g_Group : OptionGroup<"<g group>">, Group<DebugInfo_Group>, 169 DocName<"Kind and level of debug information">; 170def gN_Group : OptionGroup<"<gN group>">, Group<g_Group>, 171 DocName<"Debug level">; 172def ggdbN_Group : OptionGroup<"<ggdbN group>">, Group<gN_Group>, DocFlatten; 173def gTune_Group : OptionGroup<"<gTune group>">, Group<g_Group>, 174 DocName<"Debugger to tune debug information for">; 175def g_flags_Group : OptionGroup<"<g flags group>">, Group<DebugInfo_Group>, 176 DocName<"Debug information flags">; 177 178def StaticAnalyzer_Group : OptionGroup<"<Static analyzer group>">, 179 DocName<"Static analyzer flags">, DocBrief<[{ 180Flags controlling the behavior of the Clang Static Analyzer.}]>; 181 182// gfortran options that we recognize in the driver and pass along when 183// invoking GCC to compile Fortran code. 184def gfortran_Group : OptionGroup<"<gfortran group>">, 185 DocName<"Fortran compilation flags">, DocBrief<[{ 186Flags that will be passed onto the ``gfortran`` compiler when Clang is given 187a Fortran input.}]>; 188 189def Link_Group : OptionGroup<"<T/e/s/t/u group>">, DocName<"Linker flags">, 190 DocBrief<[{Flags that are passed on to the linker}]>; 191def T_Group : OptionGroup<"<T group>">, Group<Link_Group>, DocFlatten; 192def u_Group : OptionGroup<"<u group>">, Group<Link_Group>, DocFlatten; 193 194def reserved_lib_Group : OptionGroup<"<reserved libs group>">, 195 Flags<[Unsupported]>; 196 197// Temporary groups for clang options which we know we don't support, 198// but don't want to verbosely warn the user about. 199def clang_ignored_f_Group : OptionGroup<"<clang ignored f group>">, 200 Group<f_Group>, Flags<[Ignored]>; 201def clang_ignored_m_Group : OptionGroup<"<clang ignored m group>">, 202 Group<m_Group>, Flags<[Ignored]>; 203 204// Group for clang options in the process of deprecation. 205// Please include the version that deprecated the flag as comment to allow 206// easier garbage collection. 207def clang_ignored_legacy_options_Group : OptionGroup<"<clang legacy flags>">, 208 Group<f_Group>, Flags<[Ignored]>; 209 210// Retired with clang-5.0 211def : Flag<["-"], "fslp-vectorize-aggressive">, Group<clang_ignored_legacy_options_Group>; 212def : Flag<["-"], "fno-slp-vectorize-aggressive">, Group<clang_ignored_legacy_options_Group>; 213 214// Group that ignores all gcc optimizations that won't be implemented 215def clang_ignored_gcc_optimization_f_Group : OptionGroup< 216 "<clang_ignored_gcc_optimization_f_Group>">, Group<f_Group>, Flags<[Ignored]>; 217 218///////// 219// Options 220 221// The internal option ID must be a valid C++ identifier and results in a 222// clang::driver::options::OPT_XX enum constant for XX. 223// 224// We want to unambiguously be able to refer to options from the driver source 225// code, for this reason the option name is mangled into an ID. This mangling 226// isn't guaranteed to have an inverse, but for practical purposes it does. 227// 228// The mangling scheme is to ignore the leading '-', and perform the following 229// substitutions: 230// _ => __ 231// - => _ 232// / => _SLASH 233// # => _HASH 234// ? => _QUESTION 235// , => _COMMA 236// = => _EQ 237// C++ => CXX 238// . => _ 239 240// Developer Driver Options 241 242def internal_Group : OptionGroup<"<clang internal options>">, Flags<[HelpHidden]>; 243def internal_driver_Group : OptionGroup<"<clang driver internal options>">, 244 Group<internal_Group>, HelpText<"DRIVER OPTIONS">; 245def internal_debug_Group : 246 OptionGroup<"<clang debug/development internal options>">, 247 Group<internal_Group>, HelpText<"DEBUG/DEVELOPMENT OPTIONS">; 248 249class InternalDriverOpt : Group<internal_driver_Group>, 250 Flags<[DriverOption, HelpHidden]>; 251def driver_mode : Joined<["--"], "driver-mode=">, Group<internal_driver_Group>, 252 Flags<[CoreOption, DriverOption, HelpHidden]>, 253 HelpText<"Set the driver mode to either 'gcc', 'g++', 'cpp', or 'cl'">; 254def rsp_quoting : Joined<["--"], "rsp-quoting=">, Group<internal_driver_Group>, 255 Flags<[CoreOption, DriverOption, HelpHidden]>, 256 HelpText<"Set the rsp quoting to either 'posix', or 'windows'">; 257def ccc_gcc_name : Separate<["-"], "ccc-gcc-name">, InternalDriverOpt, 258 HelpText<"Name for native GCC compiler">, 259 MetaVarName<"<gcc-path>">; 260 261class InternalDebugOpt : Group<internal_debug_Group>, 262 Flags<[DriverOption, HelpHidden, CoreOption]>; 263def ccc_install_dir : Separate<["-"], "ccc-install-dir">, InternalDebugOpt, 264 HelpText<"Simulate installation in the given directory">; 265def ccc_print_phases : Flag<["-"], "ccc-print-phases">, InternalDebugOpt, 266 HelpText<"Dump list of actions to perform">; 267def ccc_print_bindings : Flag<["-"], "ccc-print-bindings">, InternalDebugOpt, 268 HelpText<"Show bindings of tools to actions">; 269 270def ccc_arcmt_check : Flag<["-"], "ccc-arcmt-check">, InternalDriverOpt, 271 HelpText<"Check for ARC migration issues that need manual handling">; 272def ccc_arcmt_modify : Flag<["-"], "ccc-arcmt-modify">, InternalDriverOpt, 273 HelpText<"Apply modifications to files to conform to ARC">; 274def ccc_arcmt_migrate : Separate<["-"], "ccc-arcmt-migrate">, InternalDriverOpt, 275 HelpText<"Apply modifications and produces temporary files that conform to ARC">; 276def arcmt_migrate_report_output : Separate<["-"], "arcmt-migrate-report-output">, 277 HelpText<"Output path for the plist report">, Flags<[CC1Option]>; 278def arcmt_migrate_emit_arc_errors : Flag<["-"], "arcmt-migrate-emit-errors">, 279 HelpText<"Emit ARC errors even if the migrator can fix them">, 280 Flags<[CC1Option]>; 281def gen_reproducer: Flag<["-"], "gen-reproducer">, InternalDebugOpt, 282 HelpText<"Auto-generates preprocessed source files and a reproduction script">; 283 284def _migrate : Flag<["--"], "migrate">, Flags<[DriverOption]>, 285 HelpText<"Run the migrator">; 286def ccc_objcmt_migrate : Separate<["-"], "ccc-objcmt-migrate">, 287 InternalDriverOpt, 288 HelpText<"Apply modifications and produces temporary files to migrate to " 289 "modern ObjC syntax">; 290def objcmt_migrate_literals : Flag<["-"], "objcmt-migrate-literals">, Flags<[CC1Option]>, 291 HelpText<"Enable migration to modern ObjC literals">; 292def objcmt_migrate_subscripting : Flag<["-"], "objcmt-migrate-subscripting">, Flags<[CC1Option]>, 293 HelpText<"Enable migration to modern ObjC subscripting">; 294def objcmt_migrate_property : Flag<["-"], "objcmt-migrate-property">, Flags<[CC1Option]>, 295 HelpText<"Enable migration to modern ObjC property">; 296def objcmt_migrate_all : Flag<["-"], "objcmt-migrate-all">, Flags<[CC1Option]>, 297 HelpText<"Enable migration to modern ObjC">; 298def objcmt_migrate_readonly_property : Flag<["-"], "objcmt-migrate-readonly-property">, Flags<[CC1Option]>, 299 HelpText<"Enable migration to modern ObjC readonly property">; 300def objcmt_migrate_readwrite_property : Flag<["-"], "objcmt-migrate-readwrite-property">, Flags<[CC1Option]>, 301 HelpText<"Enable migration to modern ObjC readwrite property">; 302def objcmt_migrate_property_dot_syntax : Flag<["-"], "objcmt-migrate-property-dot-syntax">, Flags<[CC1Option]>, 303 HelpText<"Enable migration of setter/getter messages to property-dot syntax">; 304def objcmt_migrate_annotation : Flag<["-"], "objcmt-migrate-annotation">, Flags<[CC1Option]>, 305 HelpText<"Enable migration to property and method annotations">; 306def objcmt_migrate_instancetype : Flag<["-"], "objcmt-migrate-instancetype">, Flags<[CC1Option]>, 307 HelpText<"Enable migration to infer instancetype for method result type">; 308def objcmt_migrate_nsmacros : Flag<["-"], "objcmt-migrate-ns-macros">, Flags<[CC1Option]>, 309 HelpText<"Enable migration to NS_ENUM/NS_OPTIONS macros">; 310def objcmt_migrate_protocol_conformance : Flag<["-"], "objcmt-migrate-protocol-conformance">, Flags<[CC1Option]>, 311 HelpText<"Enable migration to add protocol conformance on classes">; 312def objcmt_atomic_property : Flag<["-"], "objcmt-atomic-property">, Flags<[CC1Option]>, 313 HelpText<"Make migration to 'atomic' properties">; 314def objcmt_returns_innerpointer_property : Flag<["-"], "objcmt-returns-innerpointer-property">, Flags<[CC1Option]>, 315 HelpText<"Enable migration to annotate property with NS_RETURNS_INNER_POINTER">; 316def objcmt_ns_nonatomic_iosonly: Flag<["-"], "objcmt-ns-nonatomic-iosonly">, Flags<[CC1Option]>, 317 HelpText<"Enable migration to use NS_NONATOMIC_IOSONLY macro for setting property's 'atomic' attribute">; 318def objcmt_migrate_designated_init : Flag<["-"], "objcmt-migrate-designated-init">, Flags<[CC1Option]>, 319 HelpText<"Enable migration to infer NS_DESIGNATED_INITIALIZER for initializer methods">; 320def objcmt_whitelist_dir_path: Joined<["-"], "objcmt-whitelist-dir-path=">, Flags<[CC1Option]>, 321 HelpText<"Only modify files with a filename contained in the provided directory path">; 322// The misspelt "white-list" [sic] alias is due for removal. 323def : Joined<["-"], "objcmt-white-list-dir-path=">, Flags<[CC1Option]>, 324 Alias<objcmt_whitelist_dir_path>; 325 326// Make sure all other -ccc- options are rejected. 327def ccc_ : Joined<["-"], "ccc-">, Group<internal_Group>, Flags<[Unsupported]>; 328 329// Standard Options 330 331def _HASH_HASH_HASH : Flag<["-"], "###">, Flags<[DriverOption, CoreOption]>, 332 HelpText<"Print (but do not run) the commands to run for this compilation">; 333def _DASH_DASH : Option<["--"], "", KIND_REMAINING_ARGS>, 334 Flags<[DriverOption, CoreOption]>; 335def A : JoinedOrSeparate<["-"], "A">, Flags<[RenderJoined]>, Group<gfortran_Group>; 336def B : JoinedOrSeparate<["-"], "B">, MetaVarName<"<dir>">, 337 HelpText<"Add <dir> to search path for binaries and object files used implicitly">; 338def CC : Flag<["-"], "CC">, Flags<[CC1Option]>, Group<Preprocessor_Group>, 339 HelpText<"Include comments from within macros in preprocessed output">; 340def C : Flag<["-"], "C">, Flags<[CC1Option]>, Group<Preprocessor_Group>, 341 HelpText<"Include comments in preprocessed output">; 342def D : JoinedOrSeparate<["-"], "D">, Group<Preprocessor_Group>, 343 Flags<[CC1Option]>, MetaVarName<"<macro>=<value>">, 344 HelpText<"Define <macro> to <value> (or 1 if <value> omitted)">; 345def E : Flag<["-"], "E">, Flags<[DriverOption,CC1Option]>, Group<Action_Group>, 346 HelpText<"Only run the preprocessor">; 347def F : JoinedOrSeparate<["-"], "F">, Flags<[RenderJoined,CC1Option]>, 348 HelpText<"Add directory to framework include search path">; 349def G : JoinedOrSeparate<["-"], "G">, Flags<[DriverOption]>, Group<m_Group>, 350 MetaVarName<"<size>">, HelpText<"Put objects of at most <size> bytes " 351 "into small data section (MIPS / Hexagon)">; 352def G_EQ : Joined<["-"], "G=">, Flags<[DriverOption]>, Group<m_Group>, Alias<G>; 353def H : Flag<["-"], "H">, Flags<[CC1Option]>, Group<Preprocessor_Group>, 354 HelpText<"Show header includes and nesting depth">; 355def I_ : Flag<["-"], "I-">, Group<I_Group>, 356 HelpText<"Restrict all prior -I flags to double-quoted inclusion and " 357 "remove current directory from include path">; 358def I : JoinedOrSeparate<["-"], "I">, Group<I_Group>, 359 Flags<[CC1Option,CC1AsOption]>, MetaVarName<"<dir>">, 360 HelpText<"Add directory to include search path">; 361def L : JoinedOrSeparate<["-"], "L">, Flags<[RenderJoined]>, Group<Link_Group>, 362 MetaVarName<"<dir>">, HelpText<"Add directory to library search path">; 363def MD : Flag<["-"], "MD">, Group<M_Group>, 364 HelpText<"Write a depfile containing user and system headers">; 365def MMD : Flag<["-"], "MMD">, Group<M_Group>, 366 HelpText<"Write a depfile containing user headers">; 367def M : Flag<["-"], "M">, Group<M_Group>, 368 HelpText<"Like -MD, but also implies -E and writes to stdout by default">; 369def MM : Flag<["-"], "MM">, Group<M_Group>, 370 HelpText<"Like -MMD, but also implies -E and writes to stdout by default">; 371def MF : JoinedOrSeparate<["-"], "MF">, Group<M_Group>, 372 HelpText<"Write depfile output from -MMD, -MD, -MM, or -M to <file>">, 373 MetaVarName<"<file>">; 374def MG : Flag<["-"], "MG">, Group<M_Group>, Flags<[CC1Option]>, 375 HelpText<"Add missing headers to depfile">; 376def MJ : JoinedOrSeparate<["-"], "MJ">, Group<M_Group>, 377 HelpText<"Write a compilation database entry per input">; 378def MP : Flag<["-"], "MP">, Group<M_Group>, Flags<[CC1Option]>, 379 HelpText<"Create phony target for each dependency (other than main file)">; 380def MQ : JoinedOrSeparate<["-"], "MQ">, Group<M_Group>, Flags<[CC1Option]>, 381 HelpText<"Specify name of main file output to quote in depfile">; 382def MT : JoinedOrSeparate<["-"], "MT">, Group<M_Group>, Flags<[CC1Option]>, 383 HelpText<"Specify name of main file output in depfile">; 384def MV : Flag<["-"], "MV">, Group<M_Group>, Flags<[CC1Option]>, 385 HelpText<"Use NMake/Jom format for the depfile">; 386def Mach : Flag<["-"], "Mach">, Group<Link_Group>; 387def O0 : Flag<["-"], "O0">, Group<O_Group>, Flags<[CC1Option, HelpHidden]>; 388def O4 : Flag<["-"], "O4">, Group<O_Group>, Flags<[CC1Option, HelpHidden]>; 389def ObjCXX : Flag<["-"], "ObjC++">, Flags<[DriverOption]>, 390 HelpText<"Treat source input files as Objective-C++ inputs">; 391def ObjC : Flag<["-"], "ObjC">, Flags<[DriverOption]>, 392 HelpText<"Treat source input files as Objective-C inputs">; 393def O : Joined<["-"], "O">, Group<O_Group>, Flags<[CC1Option]>; 394def O_flag : Flag<["-"], "O">, Flags<[CC1Option]>, Alias<O>, AliasArgs<["2"]>; 395def Ofast : Joined<["-"], "Ofast">, Group<O_Group>, Flags<[CC1Option]>; 396def P : Flag<["-"], "P">, Flags<[CC1Option]>, Group<Preprocessor_Group>, 397 HelpText<"Disable linemarker output in -E mode">; 398def Qy : Flag<["-"], "Qy">, Flags<[CC1Option]>, 399 HelpText<"Emit metadata containing compiler name and version">; 400def Qn : Flag<["-"], "Qn">, Flags<[CC1Option]>, 401 HelpText<"Do not emit metadata containing compiler name and version">; 402def : Flag<["-"], "fident">, Group<f_Group>, Alias<Qy>, Flags<[CC1Option]>; 403def : Flag<["-"], "fno-ident">, Group<f_Group>, Alias<Qn>, Flags<[CC1Option]>; 404def Qunused_arguments : Flag<["-"], "Qunused-arguments">, Flags<[DriverOption, CoreOption]>, 405 HelpText<"Don't emit warning for unused driver arguments">; 406def Q : Flag<["-"], "Q">, IgnoredGCCCompat; 407def Rpass_EQ : Joined<["-"], "Rpass=">, Group<R_value_Group>, Flags<[CC1Option]>, 408 HelpText<"Report transformations performed by optimization passes whose " 409 "name matches the given POSIX regular expression">; 410def Rpass_missed_EQ : Joined<["-"], "Rpass-missed=">, Group<R_value_Group>, 411 Flags<[CC1Option]>, 412 HelpText<"Report missed transformations by optimization passes whose " 413 "name matches the given POSIX regular expression">; 414def Rpass_analysis_EQ : Joined<["-"], "Rpass-analysis=">, Group<R_value_Group>, 415 Flags<[CC1Option]>, 416 HelpText<"Report transformation analysis from optimization passes whose " 417 "name matches the given POSIX regular expression">; 418def R_Joined : Joined<["-"], "R">, Group<R_Group>, Flags<[CC1Option, CoreOption]>, 419 MetaVarName<"<remark>">, HelpText<"Enable the specified remark">; 420def S : Flag<["-"], "S">, Flags<[DriverOption,CC1Option]>, Group<Action_Group>, 421 HelpText<"Only run preprocess and compilation steps">; 422def Tbss : JoinedOrSeparate<["-"], "Tbss">, Group<T_Group>, 423 MetaVarName<"<addr>">, HelpText<"Set starting address of BSS to <addr>">; 424def Tdata : JoinedOrSeparate<["-"], "Tdata">, Group<T_Group>, 425 MetaVarName<"<addr>">, HelpText<"Set starting address of DATA to <addr>">; 426def Ttext : JoinedOrSeparate<["-"], "Ttext">, Group<T_Group>, 427 MetaVarName<"<addr>">, HelpText<"Set starting address of TEXT to <addr>">; 428def T : JoinedOrSeparate<["-"], "T">, Group<T_Group>, 429 MetaVarName<"<script>">, HelpText<"Specify <script> as linker script">; 430def U : JoinedOrSeparate<["-"], "U">, Group<Preprocessor_Group>, 431 Flags<[CC1Option]>, MetaVarName<"<macro>">, HelpText<"Undefine macro <macro>">; 432def V : JoinedOrSeparate<["-"], "V">, Flags<[DriverOption, Unsupported]>; 433def Wa_COMMA : CommaJoined<["-"], "Wa,">, 434 HelpText<"Pass the comma separated arguments in <arg> to the assembler">, 435 MetaVarName<"<arg>">; 436def Wall : Flag<["-"], "Wall">, Group<W_Group>, Flags<[CC1Option, HelpHidden]>; 437def WCL4 : Flag<["-"], "WCL4">, Group<W_Group>, Flags<[CC1Option, HelpHidden]>; 438def Wdeprecated : Flag<["-"], "Wdeprecated">, Group<W_Group>, Flags<[CC1Option]>, 439 HelpText<"Enable warnings for deprecated constructs and define __DEPRECATED">; 440def Wno_deprecated : Flag<["-"], "Wno-deprecated">, Group<W_Group>, Flags<[CC1Option]>; 441def Wl_COMMA : CommaJoined<["-"], "Wl,">, Flags<[LinkerInput, RenderAsInput]>, 442 HelpText<"Pass the comma separated arguments in <arg> to the linker">, 443 MetaVarName<"<arg>">, Group<Link_Group>; 444// FIXME: This is broken; these should not be Joined arguments. 445def Wno_nonportable_cfstrings : Joined<["-"], "Wno-nonportable-cfstrings">, Group<W_Group>, 446 Flags<[CC1Option]>; 447def Wnonportable_cfstrings : Joined<["-"], "Wnonportable-cfstrings">, Group<W_Group>, 448 Flags<[CC1Option]>; 449def Wp_COMMA : CommaJoined<["-"], "Wp,">, 450 HelpText<"Pass the comma separated arguments in <arg> to the preprocessor">, 451 MetaVarName<"<arg>">, Group<Preprocessor_Group>; 452def Wwrite_strings : Flag<["-"], "Wwrite-strings">, Group<W_Group>, Flags<[CC1Option, HelpHidden]>; 453def Wno_write_strings : Flag<["-"], "Wno-write-strings">, Group<W_Group>, Flags<[CC1Option, HelpHidden]>; 454def W_Joined : Joined<["-"], "W">, Group<W_Group>, Flags<[CC1Option, CoreOption]>, 455 MetaVarName<"<warning>">, HelpText<"Enable the specified warning">; 456def Xanalyzer : Separate<["-"], "Xanalyzer">, 457 HelpText<"Pass <arg> to the static analyzer">, MetaVarName<"<arg>">, 458 Group<StaticAnalyzer_Group>; 459def Xarch__ : JoinedAndSeparate<["-"], "Xarch_">, Flags<[DriverOption]>; 460def Xassembler : Separate<["-"], "Xassembler">, 461 HelpText<"Pass <arg> to the assembler">, MetaVarName<"<arg>">, 462 Group<CompileOnly_Group>; 463def Xclang : Separate<["-"], "Xclang">, 464 HelpText<"Pass <arg> to the clang compiler">, MetaVarName<"<arg>">, 465 Flags<[DriverOption, CoreOption]>, Group<CompileOnly_Group>; 466def Xcuda_fatbinary : Separate<["-"], "Xcuda-fatbinary">, 467 HelpText<"Pass <arg> to fatbinary invocation">, MetaVarName<"<arg>">; 468def Xcuda_ptxas : Separate<["-"], "Xcuda-ptxas">, 469 HelpText<"Pass <arg> to the ptxas assembler">, MetaVarName<"<arg>">; 470def Xopenmp_target : Separate<["-"], "Xopenmp-target">, 471 HelpText<"Pass <arg> to the target offloading toolchain.">, MetaVarName<"<arg>">; 472def Xopenmp_target_EQ : JoinedAndSeparate<["-"], "Xopenmp-target=">, 473 HelpText<"Pass <arg> to the target offloading toolchain identified by <triple>.">, 474 MetaVarName<"<triple> <arg>">; 475def z : Separate<["-"], "z">, Flags<[LinkerInput, RenderAsInput]>, 476 HelpText<"Pass -z <arg> to the linker">, MetaVarName<"<arg>">, 477 Group<Link_Group>; 478def Xlinker : Separate<["-"], "Xlinker">, Flags<[LinkerInput, RenderAsInput]>, 479 HelpText<"Pass <arg> to the linker">, MetaVarName<"<arg>">, 480 Group<Link_Group>; 481def Xpreprocessor : Separate<["-"], "Xpreprocessor">, Group<Preprocessor_Group>, 482 HelpText<"Pass <arg> to the preprocessor">, MetaVarName<"<arg>">; 483def X_Flag : Flag<["-"], "X">, Group<Link_Group>; 484def X_Joined : Joined<["-"], "X">, IgnoredGCCCompat; 485def Z_Flag : Flag<["-"], "Z">, Group<Link_Group>; 486// FIXME: All we do with this is reject it. Remove. 487def Z_Joined : Joined<["-"], "Z">; 488def all__load : Flag<["-"], "all_load">; 489def allowable__client : Separate<["-"], "allowable_client">; 490def ansi : Flag<["-", "--"], "ansi">; 491def arch__errors__fatal : Flag<["-"], "arch_errors_fatal">; 492def arch : Separate<["-"], "arch">, Flags<[DriverOption]>; 493def arch__only : Separate<["-"], "arch_only">; 494def a : Joined<["-"], "a">; 495def autocomplete : Joined<["--"], "autocomplete=">; 496def bind__at__load : Flag<["-"], "bind_at_load">; 497def bundle__loader : Separate<["-"], "bundle_loader">; 498def bundle : Flag<["-"], "bundle">; 499def b : JoinedOrSeparate<["-"], "b">, Flags<[Unsupported]>; 500def cfguard : Flag<["-"], "cfguard">, Flags<[CC1Option]>, 501 HelpText<"Emit tables required for Windows Control Flow Guard.">; 502def cl_opt_disable : Flag<["-"], "cl-opt-disable">, Group<opencl_Group>, Flags<[CC1Option]>, 503 HelpText<"OpenCL only. This option disables all optimizations. By default optimizations are enabled.">; 504def cl_strict_aliasing : Flag<["-"], "cl-strict-aliasing">, Group<opencl_Group>, Flags<[CC1Option]>, 505 HelpText<"OpenCL only. This option is added for compatibility with OpenCL 1.0.">; 506def cl_single_precision_constant : Flag<["-"], "cl-single-precision-constant">, Group<opencl_Group>, Flags<[CC1Option]>, 507 HelpText<"OpenCL only. Treat double precision floating-point constant as single precision constant.">; 508def cl_finite_math_only : Flag<["-"], "cl-finite-math-only">, Group<opencl_Group>, Flags<[CC1Option]>, 509 HelpText<"OpenCL only. Allow floating-point optimizations that assume arguments and results are not NaNs or +-Inf.">; 510def cl_kernel_arg_info : Flag<["-"], "cl-kernel-arg-info">, Group<opencl_Group>, Flags<[CC1Option]>, 511 HelpText<"OpenCL only. Generate kernel argument metadata.">; 512def cl_unsafe_math_optimizations : Flag<["-"], "cl-unsafe-math-optimizations">, Group<opencl_Group>, Flags<[CC1Option]>, 513 HelpText<"OpenCL only. Allow unsafe floating-point optimizations. Also implies -cl-no-signed-zeros and -cl-mad-enable.">; 514def cl_fast_relaxed_math : Flag<["-"], "cl-fast-relaxed-math">, Group<opencl_Group>, Flags<[CC1Option]>, 515 HelpText<"OpenCL only. Sets -cl-finite-math-only and -cl-unsafe-math-optimizations, and defines __FAST_RELAXED_MATH__.">; 516def cl_mad_enable : Flag<["-"], "cl-mad-enable">, Group<opencl_Group>, Flags<[CC1Option]>, 517 HelpText<"OpenCL only. Allow use of less precise MAD computations in the generated binary.">; 518def cl_no_signed_zeros : Flag<["-"], "cl-no-signed-zeros">, Group<opencl_Group>, Flags<[CC1Option]>, 519 HelpText<"OpenCL only. Allow use of less precise no signed zeros computations in the generated binary.">; 520def cl_std_EQ : Joined<["-"], "cl-std=">, Group<opencl_Group>, Flags<[CC1Option]>, 521 HelpText<"OpenCL language standard to compile for.">, Values<"cl,CL,cl1.1,CL1.1,cl1.2,CL1.2,cl2.0,CL2.0,clc++,CLC++">; 522def cl_denorms_are_zero : Flag<["-"], "cl-denorms-are-zero">, Group<opencl_Group>, Flags<[CC1Option]>, 523 HelpText<"OpenCL only. Allow denormals to be flushed to zero.">; 524def cl_fp32_correctly_rounded_divide_sqrt : Flag<["-"], "cl-fp32-correctly-rounded-divide-sqrt">, Group<opencl_Group>, Flags<[CC1Option]>, 525 HelpText<"OpenCL only. Specify that single precision floating-point divide and sqrt used in the program source are correctly rounded.">; 526def cl_uniform_work_group_size : Flag<["-"], "cl-uniform-work-group-size">, Group<opencl_Group>, Flags<[CC1Option]>, 527 HelpText<"OpenCL only. Defines that the global work-size be a multiple of the work-group size specified to clEnqueueNDRangeKernel">; 528def client__name : JoinedOrSeparate<["-"], "client_name">; 529def combine : Flag<["-", "--"], "combine">, Flags<[DriverOption, Unsupported]>; 530def compatibility__version : JoinedOrSeparate<["-"], "compatibility_version">; 531def config : Separate<["--"], "config">, Flags<[DriverOption]>, 532 HelpText<"Specifies configuration file">; 533def config_system_dir_EQ : Joined<["--"], "config-system-dir=">, Flags<[DriverOption, HelpHidden]>, 534 HelpText<"System directory for configuration files">; 535def config_user_dir_EQ : Joined<["--"], "config-user-dir=">, Flags<[DriverOption, HelpHidden]>, 536 HelpText<"User directory for configuration files">; 537def coverage : Flag<["-", "--"], "coverage">, Flags<[CoreOption]>; 538def cpp_precomp : Flag<["-"], "cpp-precomp">, Group<clang_ignored_f_Group>; 539def current__version : JoinedOrSeparate<["-"], "current_version">; 540def cxx_isystem : JoinedOrSeparate<["-"], "cxx-isystem">, Group<clang_i_Group>, 541 HelpText<"Add directory to the C++ SYSTEM include search path">, Flags<[CC1Option]>, 542 MetaVarName<"<directory>">; 543def c : Flag<["-"], "c">, Flags<[DriverOption]>, Group<Action_Group>, 544 HelpText<"Only run preprocess, compile, and assemble steps">; 545def cuda_device_only : Flag<["--"], "cuda-device-only">, 546 HelpText<"Compile CUDA code for device only">; 547def cuda_host_only : Flag<["--"], "cuda-host-only">, 548 HelpText<"Compile CUDA code for host only. Has no effect on non-CUDA " 549 "compilations.">; 550def cuda_compile_host_device : Flag<["--"], "cuda-compile-host-device">, 551 HelpText<"Compile CUDA code for both host and device (default). Has no " 552 "effect on non-CUDA compilations.">; 553def cuda_include_ptx_EQ : Joined<["--"], "cuda-include-ptx=">, Flags<[DriverOption]>, 554 HelpText<"Include PTX for the following GPU architecture (e.g. sm_35) or 'all'. May be specified more than once.">; 555def no_cuda_include_ptx_EQ : Joined<["--"], "no-cuda-include-ptx=">, Flags<[DriverOption]>, 556 HelpText<"Do not include PTX for the following GPU architecture (e.g. sm_35) or 'all'. May be specified more than once.">; 557def cuda_gpu_arch_EQ : Joined<["--"], "cuda-gpu-arch=">, Flags<[DriverOption]>, 558 HelpText<"CUDA GPU architecture (e.g. sm_35). May be specified more than once.">; 559def hip_link : Flag<["--"], "hip-link">, 560 HelpText<"Link clang-offload-bundler bundles for HIP">; 561def no_cuda_gpu_arch_EQ : Joined<["--"], "no-cuda-gpu-arch=">, Flags<[DriverOption]>, 562 HelpText<"Remove GPU architecture (e.g. sm_35) from the list of GPUs to compile for. " 563 "'all' resets the list to its default value.">; 564def cuda_noopt_device_debug : Flag<["--"], "cuda-noopt-device-debug">, 565 HelpText<"Enable device-side debug info generation. Disables ptxas optimizations.">; 566def no_cuda_version_check : Flag<["--"], "no-cuda-version-check">, 567 HelpText<"Don't error out if the detected version of the CUDA install is " 568 "too low for the requested CUDA gpu architecture.">; 569def no_cuda_noopt_device_debug : Flag<["--"], "no-cuda-noopt-device-debug">; 570def cuda_path_EQ : Joined<["--"], "cuda-path=">, Group<i_Group>, 571 HelpText<"CUDA installation path">; 572def cuda_path_ignore_env : Flag<["--"], "cuda-path-ignore-env">, Group<i_Group>, 573 HelpText<"Ignore environment variables to detect CUDA installation">; 574def ptxas_path_EQ : Joined<["--"], "ptxas-path=">, Group<i_Group>, 575 HelpText<"Path to ptxas (used for compiling CUDA code)">; 576def fcuda_flush_denormals_to_zero : Flag<["-"], "fcuda-flush-denormals-to-zero">, 577 Flags<[CC1Option]>, HelpText<"Flush denormal floating point values to zero in CUDA device mode.">; 578def fno_cuda_flush_denormals_to_zero : Flag<["-"], "fno-cuda-flush-denormals-to-zero">; 579def fcuda_approx_transcendentals : Flag<["-"], "fcuda-approx-transcendentals">, 580 Flags<[CC1Option]>, HelpText<"Use approximate transcendental functions">; 581def fno_cuda_approx_transcendentals : Flag<["-"], "fno-cuda-approx-transcendentals">; 582def fgpu_rdc : Flag<["-"], "fgpu-rdc">, Flags<[CC1Option]>, 583 HelpText<"Generate relocatable device code, also known as separate compilation mode.">; 584def fno_gpu_rdc : Flag<["-"], "fno-gpu-rdc">; 585def : Flag<["-"], "fcuda-rdc">, Alias<fgpu_rdc>; 586def : Flag<["-"], "fno-cuda-rdc">, Alias<fno_gpu_rdc>; 587def fcuda_short_ptr : Flag<["-"], "fcuda-short-ptr">, Flags<[CC1Option]>, 588 HelpText<"Use 32-bit pointers for accessing const/local/shared address spaces.">; 589def fno_cuda_short_ptr : Flag<["-"], "fno-cuda-short-ptr">; 590def hip_device_lib_path_EQ : Joined<["--"], "hip-device-lib-path=">, Group<Link_Group>, 591 HelpText<"HIP device library path">; 592def hip_device_lib_EQ : Joined<["--"], "hip-device-lib=">, Group<Link_Group>, 593 HelpText<"HIP device library">; 594def fhip_dump_offload_linker_script : Flag<["-"], "fhip-dump-offload-linker-script">, 595 Group<f_Group>, Flags<[NoArgumentUnused, HelpHidden]>; 596def libomptarget_nvptx_path_EQ : Joined<["--"], "libomptarget-nvptx-path=">, Group<i_Group>, 597 HelpText<"Path to libomptarget-nvptx libraries">; 598def dA : Flag<["-"], "dA">, Group<d_Group>; 599def dD : Flag<["-"], "dD">, Group<d_Group>, Flags<[CC1Option]>, 600 HelpText<"Print macro definitions in -E mode in addition to normal output">; 601def dI : Flag<["-"], "dI">, Group<d_Group>, Flags<[CC1Option]>, 602 HelpText<"Print include directives in -E mode in addition to normal output">; 603def dM : Flag<["-"], "dM">, Group<d_Group>, Flags<[CC1Option]>, 604 HelpText<"Print macro definitions in -E mode instead of normal output">; 605def dead__strip : Flag<["-"], "dead_strip">; 606def dependency_file : Separate<["-"], "dependency-file">, Flags<[CC1Option]>, 607 HelpText<"Filename (or -) to write dependency output to">; 608def dependency_dot : Separate<["-"], "dependency-dot">, Flags<[CC1Option]>, 609 HelpText<"Filename to write DOT-formatted header dependencies to">; 610def module_dependency_dir : Separate<["-"], "module-dependency-dir">, 611 Flags<[CC1Option]>, HelpText<"Directory to dump module dependencies to">; 612def dumpmachine : Flag<["-"], "dumpmachine">; 613def dumpspecs : Flag<["-"], "dumpspecs">, Flags<[Unsupported]>; 614def dumpversion : Flag<["-"], "dumpversion">; 615def dylib__file : Separate<["-"], "dylib_file">; 616def dylinker__install__name : JoinedOrSeparate<["-"], "dylinker_install_name">; 617def dylinker : Flag<["-"], "dylinker">; 618def dynamiclib : Flag<["-"], "dynamiclib">; 619def dynamic : Flag<["-"], "dynamic">, Flags<[NoArgumentUnused]>; 620def d_Flag : Flag<["-"], "d">, Group<d_Group>; 621def d_Joined : Joined<["-"], "d">, Group<d_Group>; 622def emit_ast : Flag<["-"], "emit-ast">, 623 HelpText<"Emit Clang AST files for source inputs">; 624def emit_llvm : Flag<["-"], "emit-llvm">, Flags<[CC1Option]>, Group<Action_Group>, 625 HelpText<"Use the LLVM representation for assembler and object files">; 626def emit_iterface_stubs : Flag<["-"], "emit-interface-stubs">, Flags<[CC1Option]>, Group<Action_Group>, 627 HelpText<"Generate Inteface Stub Files.">; 628def iterface_stub_version_EQ : JoinedOrSeparate<["-"], "interface-stub-version=">, Flags<[CC1Option]>; 629def exported__symbols__list : Separate<["-"], "exported_symbols_list">; 630def e : JoinedOrSeparate<["-"], "e">, Group<Link_Group>; 631def fPIC : Flag<["-"], "fPIC">, Group<f_Group>; 632def fno_PIC : Flag<["-"], "fno-PIC">, Group<f_Group>; 633def fPIE : Flag<["-"], "fPIE">, Group<f_Group>; 634def fno_PIE : Flag<["-"], "fno-PIE">, Group<f_Group>; 635def faccess_control : Flag<["-"], "faccess-control">, Group<f_Group>; 636def falign_functions : Flag<["-"], "falign-functions">, Group<f_Group>; 637def falign_functions_EQ : Joined<["-"], "falign-functions=">, Group<f_Group>; 638def fno_align_functions: Flag<["-"], "fno-align-functions">, Group<f_Group>; 639def fallow_unsupported : Flag<["-"], "fallow-unsupported">, Group<f_Group>; 640def fapple_kext : Flag<["-"], "fapple-kext">, Group<f_Group>, Flags<[CC1Option]>, 641 HelpText<"Use Apple's kernel extensions ABI">; 642def fapple_pragma_pack : Flag<["-"], "fapple-pragma-pack">, Group<f_Group>, Flags<[CC1Option]>, 643 HelpText<"Enable Apple gcc-compatible #pragma pack handling">; 644def shared_libsan : Flag<["-"], "shared-libsan">, 645 HelpText<"Dynamically link the sanitizer runtime">; 646def static_libsan : Flag<["-"], "static-libsan">, 647 HelpText<"Statically link the sanitizer runtime">; 648def : Flag<["-"], "shared-libasan">, Alias<shared_libsan>; 649def fasm : Flag<["-"], "fasm">, Group<f_Group>; 650 651def fasm_blocks : Flag<["-"], "fasm-blocks">, Group<f_Group>, Flags<[CC1Option]>; 652def fno_asm_blocks : Flag<["-"], "fno-asm-blocks">, Group<f_Group>; 653 654def fassume_sane_operator_new : Flag<["-"], "fassume-sane-operator-new">, Group<f_Group>; 655def fastcp : Flag<["-"], "fastcp">, Group<f_Group>; 656def fastf : Flag<["-"], "fastf">, Group<f_Group>; 657def fast : Flag<["-"], "fast">, Group<f_Group>; 658def fasynchronous_unwind_tables : Flag<["-"], "fasynchronous-unwind-tables">, Group<f_Group>; 659 660def fdouble_square_bracket_attributes : Flag<[ "-" ], "fdouble-square-bracket-attributes">, 661 Group<f_Group>, Flags<[DriverOption, CC1Option]>, 662 HelpText<"Enable '[[]]' attributes in all C and C++ language modes">; 663def fno_double_square_bracket_attributes : Flag<[ "-" ], "fno-double-square-bracket-attributes">, 664 Group<f_Group>, Flags<[DriverOption, CC1Option]>, 665 HelpText<"Disable '[[]]' attributes in all C and C++ language modes">; 666 667def fautolink : Flag <["-"], "fautolink">, Group<f_Group>; 668def fno_autolink : Flag <["-"], "fno-autolink">, Group<f_Group>, 669 Flags<[DriverOption, CC1Option]>, 670 HelpText<"Disable generation of linker directives for automatic library linking">; 671 672// C++ Coroutines TS 673def fcoroutines_ts : Flag <["-"], "fcoroutines-ts">, Group<f_Group>, 674 Flags<[DriverOption, CC1Option]>, 675 HelpText<"Enable support for the C++ Coroutines TS">; 676def fno_coroutines_ts : Flag <["-"], "fno-coroutines-ts">, Group<f_Group>, 677 Flags<[DriverOption]>; 678 679def fembed_bitcode_EQ : Joined<["-"], "fembed-bitcode=">, 680 Group<f_Group>, Flags<[DriverOption, CC1Option, CC1AsOption]>, MetaVarName<"<option>">, 681 HelpText<"Embed LLVM bitcode (option: off, all, bitcode, marker)">; 682def fembed_bitcode : Flag<["-"], "fembed-bitcode">, Group<f_Group>, 683 Alias<fembed_bitcode_EQ>, AliasArgs<["all"]>, 684 HelpText<"Embed LLVM IR bitcode as data">; 685def fembed_bitcode_marker : Flag<["-"], "fembed-bitcode-marker">, 686 Alias<fembed_bitcode_EQ>, AliasArgs<["marker"]>, 687 HelpText<"Embed placeholder LLVM IR data as a marker">; 688def fgnu_inline_asm : Flag<["-"], "fgnu-inline-asm">, Group<f_Group>, Flags<[DriverOption]>; 689def fno_gnu_inline_asm : Flag<["-"], "fno-gnu-inline-asm">, Group<f_Group>, 690 Flags<[DriverOption, CC1Option]>, 691 HelpText<"Disable GNU style inline asm">; 692 693def fprofile_sample_use : Flag<["-"], "fprofile-sample-use">, Group<f_Group>, 694 Flags<[CoreOption]>; 695def fno_profile_sample_use : Flag<["-"], "fno-profile-sample-use">, Group<f_Group>, 696 Flags<[CoreOption]>; 697def fprofile_sample_use_EQ : Joined<["-"], "fprofile-sample-use=">, 698 Group<f_Group>, Flags<[DriverOption, CC1Option]>, 699 HelpText<"Enable sample-based profile guided optimizations">; 700def fprofile_sample_accurate : Flag<["-"], "fprofile-sample-accurate">, 701 Group<f_Group>, Flags<[DriverOption, CC1Option]>, 702 HelpText<"Specifies that the sample profile is accurate">, 703 DocBrief<[{Specifies that the sample profile is accurate. If the sample 704 profile is accurate, callsites without profile samples are marked 705 as cold. Otherwise, treat callsites without profile samples as if 706 we have no profile}]>; 707def fno_profile_sample_accurate : Flag<["-"], "fno-profile-sample-accurate">, 708 Group<f_Group>, Flags<[DriverOption]>; 709def fauto_profile : Flag<["-"], "fauto-profile">, Group<f_Group>, 710 Alias<fprofile_sample_use>; 711def fno_auto_profile : Flag<["-"], "fno-auto-profile">, Group<f_Group>, 712 Alias<fno_profile_sample_use>; 713def fauto_profile_EQ : Joined<["-"], "fauto-profile=">, 714 Alias<fprofile_sample_use_EQ>; 715def fauto_profile_accurate : Flag<["-"], "fauto-profile-accurate">, 716 Group<f_Group>, Alias<fprofile_sample_accurate>; 717def fno_auto_profile_accurate : Flag<["-"], "fno-auto-profile-accurate">, 718 Group<f_Group>, Alias<fno_profile_sample_accurate>; 719def fdebug_compilation_dir : Separate<["-"], "fdebug-compilation-dir">, 720 Group<f_Group>, Flags<[CC1Option, CC1AsOption, CoreOption]>, 721 HelpText<"The compilation directory to embed in the debug info.">; 722def fdebug_info_for_profiling : Flag<["-"], "fdebug-info-for-profiling">, 723 Group<f_Group>, Flags<[CC1Option]>, 724 HelpText<"Emit extra debug info to make sample profile more accurate.">; 725def fno_debug_info_for_profiling : Flag<["-"], "fno-debug-info-for-profiling">, 726 Group<f_Group>, Flags<[DriverOption]>, 727 HelpText<"Do not emit extra debug info for sample profiler.">; 728def fprofile_instr_generate : Flag<["-"], "fprofile-instr-generate">, 729 Group<f_Group>, Flags<[CoreOption]>, 730 HelpText<"Generate instrumented code to collect execution counts into default.profraw file (overridden by '=' form of option or LLVM_PROFILE_FILE env var)">; 731def fprofile_instr_generate_EQ : Joined<["-"], "fprofile-instr-generate=">, 732 Group<f_Group>, Flags<[CoreOption]>, MetaVarName<"<file>">, 733 HelpText<"Generate instrumented code to collect execution counts into <file> (overridden by LLVM_PROFILE_FILE env var)">; 734def fprofile_instr_use : Flag<["-"], "fprofile-instr-use">, Group<f_Group>, 735 Flags<[CoreOption]>; 736def fprofile_instr_use_EQ : Joined<["-"], "fprofile-instr-use=">, 737 Group<f_Group>, Flags<[CoreOption]>, 738 HelpText<"Use instrumentation data for profile-guided optimization">; 739def fprofile_remapping_file_EQ : Joined<["-"], "fprofile-remapping-file=">, 740 Group<f_Group>, Flags<[CC1Option, CoreOption]>, MetaVarName<"<file>">, 741 HelpText<"Use the remappings described in <file> to match the profile data against names in the program">; 742def fprofile_remapping_file : Separate<["-"], "fprofile-remapping-file">, 743 Group<f_Group>, Flags<[CoreOption]>, Alias<fprofile_remapping_file_EQ>; 744def fcoverage_mapping : Flag<["-"], "fcoverage-mapping">, 745 Group<f_Group>, Flags<[CC1Option, CoreOption]>, 746 HelpText<"Generate coverage mapping to enable code coverage analysis">; 747def fno_coverage_mapping : Flag<["-"], "fno-coverage-mapping">, 748 Group<f_Group>, Flags<[DriverOption, CoreOption]>, 749 HelpText<"Disable code coverage analysis">; 750def fprofile_generate : Flag<["-"], "fprofile-generate">, 751 Group<f_Group>, Flags<[CoreOption]>, 752 HelpText<"Generate instrumented code to collect execution counts into default.profraw (overridden by LLVM_PROFILE_FILE env var)">; 753def fprofile_generate_EQ : Joined<["-"], "fprofile-generate=">, 754 Group<f_Group>, Flags<[CoreOption]>, MetaVarName<"<directory>">, 755 HelpText<"Generate instrumented code to collect execution counts into <directory>/default.profraw (overridden by LLVM_PROFILE_FILE env var)">; 756def fcs_profile_generate : Flag<["-"], "fcs-profile-generate">, 757 Group<f_Group>, Flags<[CoreOption]>, 758 HelpText<"Generate instrumented code to collect context sensitive execution counts into default.profraw (overridden by LLVM_PROFILE_FILE env var)">; 759def fcs_profile_generate_EQ : Joined<["-"], "fcs-profile-generate=">, 760 Group<f_Group>, Flags<[CoreOption]>, MetaVarName<"<directory>">, 761 HelpText<"Generate instrumented code to collect context sensitive execution counts into <directory>/default.profraw (overridden by LLVM_PROFILE_FILE env var)">; 762def fprofile_use : Flag<["-"], "fprofile-use">, Group<f_Group>, 763 Alias<fprofile_instr_use>; 764def fprofile_use_EQ : Joined<["-"], "fprofile-use=">, 765 Group<f_Group>, Flags<[DriverOption]>, MetaVarName<"<pathname>">, 766 HelpText<"Use instrumentation data for profile-guided optimization. If pathname is a directory, it reads from <pathname>/default.profdata. Otherwise, it reads from file <pathname>.">; 767def fno_profile_instr_generate : Flag<["-"], "fno-profile-instr-generate">, 768 Group<f_Group>, Flags<[CoreOption]>, 769 HelpText<"Disable generation of profile instrumentation.">; 770def fno_profile_generate : Flag<["-"], "fno-profile-generate">, 771 Group<f_Group>, Flags<[CoreOption]>, 772 HelpText<"Disable generation of profile instrumentation.">; 773def fno_profile_instr_use : Flag<["-"], "fno-profile-instr-use">, 774 Group<f_Group>, Flags<[CoreOption]>, 775 HelpText<"Disable using instrumentation data for profile-guided optimization">; 776def fno_profile_use : Flag<["-"], "fno-profile-use">, 777 Alias<fno_profile_instr_use>; 778def fprofile_filter_files_EQ : Joined<["-"], "fprofile-filter-files=">, 779 Group<f_Group>, Flags<[CC1Option, CoreOption]>, 780 HelpText<"Instrument only functions from files where names match any regex separated by a semi-colon">; 781def fprofile_exclude_files_EQ : Joined<["-"], "fprofile-exclude-files=">, 782 Group<f_Group>, Flags<[CC1Option, CoreOption]>, 783 HelpText<"Instrument only functions from files where names don't match all the regexes separated by a semi-colon">; 784def forder_file_instrumentation : Flag<["-"], "forder-file-instrumentation">, 785 Group<f_Group>, Flags<[CC1Option, CoreOption]>, 786 HelpText<"Generate instrumented code to collect order file into default.profraw file (overridden by '=' form of option or LLVM_PROFILE_FILE env var)">; 787 788def faddrsig : Flag<["-"], "faddrsig">, Group<f_Group>, Flags<[CoreOption, CC1Option]>, 789 HelpText<"Emit an address-significance table">; 790def fno_addrsig : Flag<["-"], "fno-addrsig">, Group<f_Group>, Flags<[CoreOption]>, 791 HelpText<"Don't emit an address-significance table">; 792def fblocks : Flag<["-"], "fblocks">, Group<f_Group>, Flags<[CoreOption, CC1Option]>, 793 HelpText<"Enable the 'blocks' language feature">; 794def fbootclasspath_EQ : Joined<["-"], "fbootclasspath=">, Group<f_Group>; 795def fborland_extensions : Flag<["-"], "fborland-extensions">, Group<f_Group>, Flags<[CC1Option]>, 796 HelpText<"Accept non-standard constructs supported by the Borland compiler">; 797def fbuiltin : Flag<["-"], "fbuiltin">, Group<f_Group>, Flags<[CoreOption]>; 798def fbuiltin_module_map : Flag <["-"], "fbuiltin-module-map">, Group<f_Group>, 799 Flags<[DriverOption]>, HelpText<"Load the clang builtins module map file.">; 800def fcaret_diagnostics : Flag<["-"], "fcaret-diagnostics">, Group<f_Group>; 801def fclang_abi_compat_EQ : Joined<["-"], "fclang-abi-compat=">, Group<f_clang_Group>, 802 Flags<[CC1Option]>, MetaVarName<"<version>">, Values<"<major>.<minor>,latest">, 803 HelpText<"Attempt to match the ABI of Clang <version>">; 804def fclasspath_EQ : Joined<["-"], "fclasspath=">, Group<f_Group>; 805def fcolor_diagnostics : Flag<["-"], "fcolor-diagnostics">, Group<f_Group>, 806 Flags<[CoreOption, CC1Option]>, HelpText<"Use colors in diagnostics">; 807def fdiagnostics_color : Flag<["-"], "fdiagnostics-color">, Group<f_Group>, 808 Flags<[CoreOption, DriverOption]>; 809def fdiagnostics_color_EQ : Joined<["-"], "fdiagnostics-color=">, Group<f_Group>; 810def fansi_escape_codes : Flag<["-"], "fansi-escape-codes">, Group<f_Group>, 811 Flags<[CoreOption, CC1Option]>, HelpText<"Use ANSI escape codes for diagnostics">; 812def fcomment_block_commands : CommaJoined<["-"], "fcomment-block-commands=">, Group<f_clang_Group>, Flags<[CC1Option]>, 813 HelpText<"Treat each comma separated argument in <arg> as a documentation comment block command">, 814 MetaVarName<"<arg>">; 815def fparse_all_comments : Flag<["-"], "fparse-all-comments">, Group<f_clang_Group>, Flags<[CC1Option]>; 816def frecord_command_line : Flag<["-"], "frecord-command-line">, 817 Group<f_clang_Group>; 818def fno_record_command_line : Flag<["-"], "fno-record-command-line">, 819 Group<f_clang_Group>; 820def : Flag<["-"], "frecord-gcc-switches">, Alias<frecord_command_line>; 821def : Flag<["-"], "fno-record-gcc-switches">, Alias<fno_record_command_line>; 822def fcommon : Flag<["-"], "fcommon">, Group<f_Group>; 823def fcompile_resource_EQ : Joined<["-"], "fcompile-resource=">, Group<f_Group>; 824def fcomplete_member_pointers : Flag<["-"], "fcomplete-member-pointers">, Group<f_clang_Group>, 825 Flags<[CoreOption, CC1Option]>, 826 HelpText<"Require member pointer base types to be complete if they would be significant under the Microsoft ABI">; 827def fno_complete_member_pointers : Flag<["-"], "fno-complete-member-pointers">, Group<f_clang_Group>, 828 Flags<[CoreOption]>, 829 HelpText<"Do not require member pointer base types to be complete if they would be significant under the Microsoft ABI">; 830def fcf_runtime_abi_EQ : Joined<["-"], "fcf-runtime-abi=">, Group<f_Group>, 831 Flags<[CC1Option]>; 832def fconstant_cfstrings : Flag<["-"], "fconstant-cfstrings">, Group<f_Group>; 833def fconstant_string_class_EQ : Joined<["-"], "fconstant-string-class=">, Group<f_Group>; 834def fconstexpr_depth_EQ : Joined<["-"], "fconstexpr-depth=">, Group<f_Group>; 835def fconstexpr_steps_EQ : Joined<["-"], "fconstexpr-steps=">, Group<f_Group>; 836def fconstexpr_backtrace_limit_EQ : Joined<["-"], "fconstexpr-backtrace-limit=">, 837 Group<f_Group>; 838def fno_crash_diagnostics : Flag<["-"], "fno-crash-diagnostics">, Group<f_clang_Group>, Flags<[NoArgumentUnused, CoreOption]>, 839 HelpText<"Disable auto-generation of preprocessed source files and a script for reproduction during a clang crash">; 840def fcrash_diagnostics_dir : Joined<["-"], "fcrash-diagnostics-dir=">, Group<f_clang_Group>, Flags<[NoArgumentUnused, CoreOption]>; 841def fcreate_profile : Flag<["-"], "fcreate-profile">, Group<f_Group>; 842def fcxx_exceptions: Flag<["-"], "fcxx-exceptions">, Group<f_Group>, 843 HelpText<"Enable C++ exceptions">, Flags<[CC1Option]>; 844def fcxx_modules : Flag <["-"], "fcxx-modules">, Group<f_Group>, 845 Flags<[DriverOption]>; 846def fdebug_pass_arguments : Flag<["-"], "fdebug-pass-arguments">, Group<f_Group>; 847def fdebug_pass_structure : Flag<["-"], "fdebug-pass-structure">, Group<f_Group>; 848def fdepfile_entry : Joined<["-"], "fdepfile-entry=">, 849 Group<f_clang_Group>, Flags<[CC1Option]>; 850def fdiagnostics_fixit_info : Flag<["-"], "fdiagnostics-fixit-info">, Group<f_clang_Group>; 851def fdiagnostics_parseable_fixits : Flag<["-"], "fdiagnostics-parseable-fixits">, Group<f_clang_Group>, 852 Flags<[CoreOption, CC1Option]>, HelpText<"Print fix-its in machine parseable form">; 853def fdiagnostics_print_source_range_info : Flag<["-"], "fdiagnostics-print-source-range-info">, 854 Group<f_clang_Group>, Flags<[CC1Option]>, 855 HelpText<"Print source range spans in numeric form">; 856def fdiagnostics_show_hotness : Flag<["-"], "fdiagnostics-show-hotness">, Group<f_Group>, 857 Flags<[CC1Option]>, HelpText<"Enable profile hotness information in diagnostic line">; 858def fdiagnostics_hotness_threshold_EQ : Joined<["-"], "fdiagnostics-hotness-threshold=">, 859 Group<f_Group>, Flags<[CC1Option]>, MetaVarName<"<number>">, 860 HelpText<"Prevent optimization remarks from being output if they do not have at least this profile count">; 861def fdiagnostics_show_option : Flag<["-"], "fdiagnostics-show-option">, Group<f_Group>, 862 Flags<[CC1Option]>, HelpText<"Print option name with mappable diagnostics">; 863def fdiagnostics_show_note_include_stack : Flag<["-"], "fdiagnostics-show-note-include-stack">, 864 Group<f_Group>, Flags<[CC1Option]>, HelpText<"Display include stacks for diagnostic notes">; 865def fdiagnostics_format_EQ : Joined<["-"], "fdiagnostics-format=">, Group<f_clang_Group>; 866def fdiagnostics_show_category_EQ : Joined<["-"], "fdiagnostics-show-category=">, Group<f_clang_Group>; 867def fdiagnostics_show_template_tree : Flag<["-"], "fdiagnostics-show-template-tree">, 868 Group<f_Group>, Flags<[CC1Option]>, 869 HelpText<"Print a template comparison tree for differing templates">; 870def fdeclspec : Flag<["-"], "fdeclspec">, Group<f_clang_Group>, 871 HelpText<"Allow __declspec as a keyword">, Flags<[CC1Option]>; 872def fdiscard_value_names : Flag<["-"], "fdiscard-value-names">, Group<f_clang_Group>, 873 HelpText<"Discard value names in LLVM IR">, Flags<[DriverOption]>; 874def fno_discard_value_names : Flag<["-"], "fno-discard-value-names">, Group<f_clang_Group>, 875 HelpText<"Do not discard value names in LLVM IR">, Flags<[DriverOption]>; 876def fdollars_in_identifiers : Flag<["-"], "fdollars-in-identifiers">, Group<f_Group>, 877 HelpText<"Allow '$' in identifiers">, Flags<[CC1Option]>; 878def fdwarf2_cfi_asm : Flag<["-"], "fdwarf2-cfi-asm">, Group<clang_ignored_f_Group>; 879def fno_dwarf2_cfi_asm : Flag<["-"], "fno-dwarf2-cfi-asm">, Group<clang_ignored_f_Group>; 880def fdwarf_directory_asm : Flag<["-"], "fdwarf-directory-asm">, Group<f_Group>; 881def fno_dwarf_directory_asm : Flag<["-"], "fno-dwarf-directory-asm">, Group<f_Group>, Flags<[CC1Option]>; 882def felide_constructors : Flag<["-"], "felide-constructors">, Group<f_Group>; 883def fno_elide_type : Flag<["-"], "fno-elide-type">, Group<f_Group>, 884 Flags<[CC1Option]>, 885 HelpText<"Do not elide types when printing diagnostics">; 886def feliminate_unused_debug_symbols : Flag<["-"], "feliminate-unused-debug-symbols">, Group<f_Group>; 887def femit_all_decls : Flag<["-"], "femit-all-decls">, Group<f_Group>, Flags<[CC1Option]>, 888 HelpText<"Emit all declarations, even if unused">; 889def femulated_tls : Flag<["-"], "femulated-tls">, Group<f_Group>, Flags<[CC1Option]>, 890 HelpText<"Use emutls functions to access thread_local variables">; 891def fno_emulated_tls : Flag<["-"], "fno-emulated-tls">, Group<f_Group>, Flags<[CC1Option]>; 892def fencoding_EQ : Joined<["-"], "fencoding=">, Group<f_Group>; 893def ferror_limit_EQ : Joined<["-"], "ferror-limit=">, Group<f_Group>, Flags<[CoreOption]>; 894def fexceptions : Flag<["-"], "fexceptions">, Group<f_Group>, Flags<[CC1Option]>, 895 HelpText<"Enable support for exception handling">; 896def fdwarf_exceptions : Flag<["-"], "fdwarf-exceptions">, Group<f_Group>, 897 Flags<[CC1Option]>, HelpText<"Use DWARF style exceptions">; 898def fsjlj_exceptions : Flag<["-"], "fsjlj-exceptions">, Group<f_Group>, 899 Flags<[CC1Option]>, HelpText<"Use SjLj style exceptions">; 900def fseh_exceptions : Flag<["-"], "fseh-exceptions">, Group<f_Group>, 901 Flags<[CC1Option]>, HelpText<"Use SEH style exceptions">; 902def fexcess_precision_EQ : Joined<["-"], "fexcess-precision=">, 903 Group<clang_ignored_gcc_optimization_f_Group>; 904def : Flag<["-"], "fexpensive-optimizations">, Group<clang_ignored_gcc_optimization_f_Group>; 905def : Flag<["-"], "fno-expensive-optimizations">, Group<clang_ignored_gcc_optimization_f_Group>; 906def fextdirs_EQ : Joined<["-"], "fextdirs=">, Group<f_Group>; 907def : Flag<["-"], "fdefer-pop">, Group<clang_ignored_gcc_optimization_f_Group>; 908def : Flag<["-"], "fno-defer-pop">, Group<clang_ignored_gcc_optimization_f_Group>; 909def : Flag<["-"], "fextended-identifiers">, Group<clang_ignored_f_Group>; 910def : Flag<["-"], "fno-extended-identifiers">, Group<f_Group>, Flags<[Unsupported]>; 911def fhosted : Flag<["-"], "fhosted">, Group<f_Group>; 912def fdenormal_fp_math_EQ : Joined<["-"], "fdenormal-fp-math=">, Group<f_Group>, Flags<[CC1Option]>; 913def ffast_math : Flag<["-"], "ffast-math">, Group<f_Group>, Flags<[CC1Option]>, 914 HelpText<"Allow aggressive, lossy floating-point optimizations">; 915def fno_fast_math : Flag<["-"], "fno-fast-math">, Group<f_Group>; 916def fmath_errno : Flag<["-"], "fmath-errno">, Group<f_Group>, Flags<[CC1Option]>, 917 HelpText<"Require math functions to indicate errors by setting errno">; 918def fno_math_errno : Flag<["-"], "fno-math-errno">, Group<f_Group>; 919def fbracket_depth_EQ : Joined<["-"], "fbracket-depth=">, Group<f_Group>, Flags<[CoreOption]>; 920def fsignaling_math : Flag<["-"], "fsignaling-math">, Group<f_Group>; 921def fno_signaling_math : Flag<["-"], "fno-signaling-math">, Group<f_Group>; 922def fjump_tables : Flag<["-"], "fjump-tables">, Group<f_Group>; 923def fno_jump_tables : Flag<["-"], "fno-jump-tables">, Group<f_Group>, Flags<[CC1Option]>, 924 HelpText<"Do not use jump tables for lowering switches">; 925def fforce_enable_int128 : Flag<["-"], "fforce-enable-int128">, 926 Group<f_Group>, Flags<[CC1Option]>, 927 HelpText<"Enable support for int128_t type">; 928def fno_force_enable_int128 : Flag<["-"], "fno-force-enable-int128">, 929 Group<f_Group>, Flags<[CC1Option]>, 930 HelpText<"Disable support for int128_t type">; 931def fkeep_static_consts : Flag<["-"], "fkeep-static-consts">, Group<f_Group>, Flags<[CC1Option]>, 932 HelpText<"Keep static const variables even if unused">; 933def ffixed_point : Flag<["-"], "ffixed-point">, Group<f_Group>, 934 Flags<[CC1Option]>, HelpText<"Enable fixed point types">; 935def fno_fixed_point : Flag<["-"], "fno-fixed-point">, Group<f_Group>, 936 HelpText<"Disable fixed point types">; 937def fcxx_static_destructors : Flag<["-"], "fc++-static-destructors">, 938 Group<f_Group>, 939 HelpText<"Enable C++ static destructor registration (the default)">; 940def fno_cxx_static_destructors : Flag<["-"], "fno-c++-static-destructors">, 941 Group<f_Group>, 942 Flags<[CC1Option]>, 943 HelpText<"Disable C++ static destructor registration">; 944def fsymbol_partition_EQ : Joined<["-"], "fsymbol-partition=">, Group<f_Group>, 945 Flags<[CC1Option]>; 946 947// Begin sanitizer flags. These should all be core options exposed in all driver 948// modes. 949let Flags = [CC1Option, CoreOption] in { 950 951def fsanitize_EQ : CommaJoined<["-"], "fsanitize=">, Group<f_clang_Group>, 952 MetaVarName<"<check>">, 953 HelpText<"Turn on runtime checks for various forms of undefined " 954 "or suspicious behavior. See user manual for available checks">; 955def fno_sanitize_EQ : CommaJoined<["-"], "fno-sanitize=">, Group<f_clang_Group>, 956 Flags<[CoreOption, DriverOption]>; 957def fsanitize_blacklist : Joined<["-"], "fsanitize-blacklist=">, 958 Group<f_clang_Group>, 959 HelpText<"Path to blacklist file for sanitizers">; 960def fno_sanitize_blacklist : Flag<["-"], "fno-sanitize-blacklist">, 961 Group<f_clang_Group>, 962 HelpText<"Don't use blacklist file for sanitizers">; 963def fsanitize_coverage 964 : CommaJoined<["-"], "fsanitize-coverage=">, 965 Group<f_clang_Group>, 966 HelpText<"Specify the type of coverage instrumentation for Sanitizers">; 967def fno_sanitize_coverage 968 : CommaJoined<["-"], "fno-sanitize-coverage=">, 969 Group<f_clang_Group>, Flags<[CoreOption, DriverOption]>, 970 HelpText<"Disable specified features of coverage instrumentation for " 971 "Sanitizers">, Values<"func,bb,edge,indirect-calls,trace-bb,trace-cmp,trace-div,trace-gep,8bit-counters,trace-pc,trace-pc-guard,no-prune,inline-8bit-counters">; 972def fsanitize_memory_track_origins_EQ : Joined<["-"], "fsanitize-memory-track-origins=">, 973 Group<f_clang_Group>, 974 HelpText<"Enable origins tracking in MemorySanitizer">; 975def fsanitize_memory_track_origins : Flag<["-"], "fsanitize-memory-track-origins">, 976 Group<f_clang_Group>, 977 HelpText<"Enable origins tracking in MemorySanitizer">; 978def fno_sanitize_memory_track_origins : Flag<["-"], "fno-sanitize-memory-track-origins">, 979 Group<f_clang_Group>, 980 Flags<[CoreOption, DriverOption]>, 981 HelpText<"Disable origins tracking in MemorySanitizer">; 982def fsanitize_memory_use_after_dtor : Flag<["-"], "fsanitize-memory-use-after-dtor">, 983 Group<f_clang_Group>, 984 HelpText<"Enable use-after-destroy detection in MemorySanitizer">; 985def fno_sanitize_memory_use_after_dtor : Flag<["-"], "fno-sanitize-memory-use-after-dtor">, 986 Group<f_clang_Group>, 987 HelpText<"Disable use-after-destroy detection in MemorySanitizer">; 988def fsanitize_address_field_padding : Joined<["-"], "fsanitize-address-field-padding=">, 989 Group<f_clang_Group>, 990 HelpText<"Level of field padding for AddressSanitizer">; 991def fsanitize_address_use_after_scope : Flag<["-"], "fsanitize-address-use-after-scope">, 992 Group<f_clang_Group>, 993 HelpText<"Enable use-after-scope detection in AddressSanitizer">; 994def fno_sanitize_address_use_after_scope : Flag<["-"], "fno-sanitize-address-use-after-scope">, 995 Group<f_clang_Group>, 996 Flags<[CoreOption, DriverOption]>, 997 HelpText<"Disable use-after-scope detection in AddressSanitizer">; 998def fsanitize_address_poison_custom_array_cookie 999 : Flag<[ "-" ], "fsanitize-address-poison-custom-array-cookie">, 1000 Group<f_clang_Group>, 1001 HelpText<"Enable poisoning array cookies when using custom operator new[] in AddressSanitizer">; 1002def fno_sanitize_address_poison_custom_array_cookie 1003 : Flag<[ "-" ], "fno-sanitize-address-poison-custom-array-cookie">, 1004 Group<f_clang_Group>, 1005 HelpText<"Disable poisoning array cookies when using custom operator new[] in AddressSanitizer">; 1006def fsanitize_address_globals_dead_stripping : Flag<["-"], "fsanitize-address-globals-dead-stripping">, 1007 Group<f_clang_Group>, 1008 HelpText<"Enable linker dead stripping of globals in AddressSanitizer">; 1009def fsanitize_address_use_odr_indicator 1010 : Flag<["-"], "fsanitize-address-use-odr-indicator">, 1011 Group<f_clang_Group>, 1012 HelpText<"Enable ODR indicator globals to avoid false ODR violation reports in partially sanitized programs at the cost of an increase in binary size">; 1013def fno_sanitize_address_use_odr_indicator 1014 : Flag<["-"], "fno-sanitize-address-use-odr-indicator">, 1015 Group<f_clang_Group>, 1016 HelpText<"Disable ODR indicator globals">; 1017def fsanitize_hwaddress_abi_EQ 1018 : Joined<["-"], "fsanitize-hwaddress-abi=">, 1019 Group<f_clang_Group>, 1020 HelpText<"Select the HWAddressSanitizer ABI to target (interceptor or platform, default interceptor)">; 1021def fsanitize_recover : Flag<["-"], "fsanitize-recover">, Group<f_clang_Group>; 1022def fno_sanitize_recover : Flag<["-"], "fno-sanitize-recover">, 1023 Flags<[CoreOption, DriverOption]>, 1024 Group<f_clang_Group>; 1025def fsanitize_recover_EQ : CommaJoined<["-"], "fsanitize-recover=">, 1026 Group<f_clang_Group>, 1027 HelpText<"Enable recovery for specified sanitizers">; 1028def fno_sanitize_recover_EQ 1029 : CommaJoined<["-"], "fno-sanitize-recover=">, 1030 Group<f_clang_Group>, 1031 Flags<[CoreOption, DriverOption]>, 1032 HelpText<"Disable recovery for specified sanitizers">; 1033def fsanitize_trap_EQ : CommaJoined<["-"], "fsanitize-trap=">, Group<f_clang_Group>, 1034 HelpText<"Enable trapping for specified sanitizers">; 1035def fno_sanitize_trap_EQ : CommaJoined<["-"], "fno-sanitize-trap=">, Group<f_clang_Group>, 1036 Flags<[CoreOption, DriverOption]>, 1037 HelpText<"Disable trapping for specified sanitizers">; 1038def fsanitize_undefined_trap_on_error : Flag<["-"], "fsanitize-undefined-trap-on-error">, 1039 Group<f_clang_Group>; 1040def fno_sanitize_undefined_trap_on_error : Flag<["-"], "fno-sanitize-undefined-trap-on-error">, 1041 Group<f_clang_Group>; 1042def fsanitize_minimal_runtime : Flag<["-"], "fsanitize-minimal-runtime">, 1043 Group<f_clang_Group>; 1044def fno_sanitize_minimal_runtime : Flag<["-"], "fno-sanitize-minimal-runtime">, 1045 Group<f_clang_Group>; 1046def fsanitize_link_cxx_runtime : Flag<["-"], "fsanitize-link-c++-runtime">, 1047 Group<f_clang_Group>; 1048def fsanitize_cfi_cross_dso : Flag<["-"], "fsanitize-cfi-cross-dso">, 1049 Group<f_clang_Group>, 1050 HelpText<"Enable control flow integrity (CFI) checks for cross-DSO calls.">; 1051def fno_sanitize_cfi_cross_dso : Flag<["-"], "fno-sanitize-cfi-cross-dso">, 1052 Flags<[CoreOption, DriverOption]>, 1053 Group<f_clang_Group>, 1054 HelpText<"Disable control flow integrity (CFI) checks for cross-DSO calls.">; 1055def fsanitize_cfi_icall_generalize_pointers : Flag<["-"], "fsanitize-cfi-icall-generalize-pointers">, 1056 Group<f_clang_Group>, 1057 HelpText<"Generalize pointers in CFI indirect call type signature checks">; 1058def fsanitize_stats : Flag<["-"], "fsanitize-stats">, 1059 Group<f_clang_Group>, 1060 HelpText<"Enable sanitizer statistics gathering.">; 1061def fno_sanitize_stats : Flag<["-"], "fno-sanitize-stats">, 1062 Group<f_clang_Group>, 1063 Flags<[CoreOption, DriverOption]>, 1064 HelpText<"Disable sanitizer statistics gathering.">; 1065def fsanitize_thread_memory_access : Flag<["-"], "fsanitize-thread-memory-access">, 1066 Group<f_clang_Group>, 1067 HelpText<"Enable memory access instrumentation in ThreadSanitizer (default)">; 1068def fno_sanitize_thread_memory_access : Flag<["-"], "fno-sanitize-thread-memory-access">, 1069 Group<f_clang_Group>, 1070 Flags<[CoreOption, DriverOption]>, 1071 HelpText<"Disable memory access instrumentation in ThreadSanitizer">; 1072def fsanitize_thread_func_entry_exit : Flag<["-"], "fsanitize-thread-func-entry-exit">, 1073 Group<f_clang_Group>, 1074 HelpText<"Enable function entry/exit instrumentation in ThreadSanitizer (default)">; 1075def fno_sanitize_thread_func_entry_exit : Flag<["-"], "fno-sanitize-thread-func-entry-exit">, 1076 Group<f_clang_Group>, 1077 Flags<[CoreOption, DriverOption]>, 1078 HelpText<"Disable function entry/exit instrumentation in ThreadSanitizer">; 1079def fsanitize_thread_atomics : Flag<["-"], "fsanitize-thread-atomics">, 1080 Group<f_clang_Group>, 1081 HelpText<"Enable atomic operations instrumentation in ThreadSanitizer (default)">; 1082def fno_sanitize_thread_atomics : Flag<["-"], "fno-sanitize-thread-atomics">, 1083 Group<f_clang_Group>, 1084 Flags<[CoreOption, DriverOption]>, 1085 HelpText<"Disable atomic operations instrumentation in ThreadSanitizer">; 1086def fsanitize_undefined_strip_path_components_EQ : Joined<["-"], "fsanitize-undefined-strip-path-components=">, 1087 Group<f_clang_Group>, MetaVarName<"<number>">, 1088 HelpText<"Strip (or keep only, if negative) a given number of path components " 1089 "when emitting check metadata.">; 1090 1091} // end -f[no-]sanitize* flags 1092 1093def funsafe_math_optimizations : Flag<["-"], "funsafe-math-optimizations">, 1094 Group<f_Group>; 1095def fno_unsafe_math_optimizations : Flag<["-"], "fno-unsafe-math-optimizations">, 1096 Group<f_Group>; 1097def fassociative_math : Flag<["-"], "fassociative-math">, Group<f_Group>; 1098def fno_associative_math : Flag<["-"], "fno-associative-math">, Group<f_Group>; 1099def freciprocal_math : 1100 Flag<["-"], "freciprocal-math">, Group<f_Group>, Flags<[CC1Option]>, 1101 HelpText<"Allow division operations to be reassociated">; 1102def fno_reciprocal_math : Flag<["-"], "fno-reciprocal-math">, Group<f_Group>; 1103def ffinite_math_only : Flag<["-"], "ffinite-math-only">, Group<f_Group>, Flags<[CC1Option]>; 1104def fno_finite_math_only : Flag<["-"], "fno-finite-math-only">, Group<f_Group>; 1105def fsigned_zeros : Flag<["-"], "fsigned-zeros">, Group<f_Group>; 1106def fno_signed_zeros : 1107 Flag<["-"], "fno-signed-zeros">, Group<f_Group>, Flags<[CC1Option]>, 1108 HelpText<"Allow optimizations that ignore the sign of floating point zeros">; 1109def fhonor_nans : Flag<["-"], "fhonor-nans">, Group<f_Group>; 1110def fno_honor_nans : Flag<["-"], "fno-honor-nans">, Group<f_Group>; 1111def fhonor_infinities : Flag<["-"], "fhonor-infinities">, Group<f_Group>; 1112def fno_honor_infinities : Flag<["-"], "fno-honor-infinities">, Group<f_Group>; 1113// This option was originally misspelt "infinites" [sic]. 1114def : Flag<["-"], "fhonor-infinites">, Alias<fhonor_infinities>; 1115def : Flag<["-"], "fno-honor-infinites">, Alias<fno_honor_infinities>; 1116def ftrapping_math : Flag<["-"], "ftrapping-math">, Group<f_Group>, Flags<[CC1Option]>; 1117def fno_trapping_math : Flag<["-"], "fno-trapping-math">, Group<f_Group>, Flags<[CC1Option]>; 1118def ffp_contract : Joined<["-"], "ffp-contract=">, Group<f_Group>, 1119 Flags<[CC1Option]>, HelpText<"Form fused FP ops (e.g. FMAs): fast (everywhere)" 1120 " | on (according to FP_CONTRACT pragma, default) | off (never fuse)">, Values<"fast,on,off">; 1121 1122def fstrict_float_cast_overflow : Flag<["-"], 1123 "fstrict-float-cast-overflow">, Group<f_Group>, Flags<[CC1Option]>, 1124 HelpText<"Assume that overflowing float-to-int casts are undefined (default)">; 1125def fno_strict_float_cast_overflow : Flag<["-"], 1126 "fno-strict-float-cast-overflow">, Group<f_Group>, Flags<[CC1Option]>, 1127 HelpText<"Relax language rules and try to match the behavior of the target's native float-to-int conversion instructions">; 1128 1129def ffor_scope : Flag<["-"], "ffor-scope">, Group<f_Group>; 1130def fno_for_scope : Flag<["-"], "fno-for-scope">, Group<f_Group>; 1131 1132def frewrite_includes : Flag<["-"], "frewrite-includes">, Group<f_Group>, 1133 Flags<[CC1Option]>; 1134def fno_rewrite_includes : Flag<["-"], "fno-rewrite-includes">, Group<f_Group>; 1135 1136def frewrite_imports : Flag<["-"], "frewrite-imports">, Group<f_Group>, 1137 Flags<[CC1Option]>; 1138def fno_rewrite_imports : Flag<["-"], "fno-rewrite-imports">, Group<f_Group>; 1139 1140def fdelete_null_pointer_checks : Flag<["-"], 1141 "fdelete-null-pointer-checks">, Group<f_Group>, 1142 HelpText<"Treat usage of null pointers as undefined behavior.">; 1143def fno_delete_null_pointer_checks : Flag<["-"], 1144 "fno-delete-null-pointer-checks">, Group<f_Group>, Flags<[CC1Option]>, 1145 HelpText<"Do not treat usage of null pointers as undefined behavior.">; 1146 1147def frewrite_map_file : Separate<["-"], "frewrite-map-file">, 1148 Group<f_Group>, 1149 Flags<[ DriverOption, CC1Option ]>; 1150def frewrite_map_file_EQ : Joined<["-"], "frewrite-map-file=">, 1151 Group<f_Group>, 1152 Flags<[DriverOption]>; 1153 1154def fuse_line_directives : Flag<["-"], "fuse-line-directives">, Group<f_Group>, 1155 Flags<[CC1Option]>; 1156def fno_use_line_directives : Flag<["-"], "fno-use-line-directives">, Group<f_Group>; 1157 1158def ffreestanding : Flag<["-"], "ffreestanding">, Group<f_Group>, Flags<[CC1Option]>, 1159 HelpText<"Assert that the compilation takes place in a freestanding environment">; 1160def fgnu_keywords : Flag<["-"], "fgnu-keywords">, Group<f_Group>, Flags<[CC1Option]>, 1161 HelpText<"Allow GNU-extension keywords regardless of language standard">; 1162def fgnu89_inline : Flag<["-"], "fgnu89-inline">, Group<f_Group>, Flags<[CC1Option]>, 1163 HelpText<"Use the gnu89 inline semantics">; 1164def fno_gnu89_inline : Flag<["-"], "fno-gnu89-inline">, Group<f_Group>; 1165def fgnu_runtime : Flag<["-"], "fgnu-runtime">, Group<f_Group>, 1166 HelpText<"Generate output compatible with the standard GNU Objective-C runtime">; 1167def fheinous_gnu_extensions : Flag<["-"], "fheinous-gnu-extensions">, Flags<[CC1Option]>; 1168def filelist : Separate<["-"], "filelist">, Flags<[LinkerInput]>, 1169 Group<Link_Group>; 1170def : Flag<["-"], "findirect-virtual-calls">, Alias<fapple_kext>; 1171def finline_functions : Flag<["-"], "finline-functions">, Group<f_clang_Group>, Flags<[CC1Option]>, 1172 HelpText<"Inline suitable functions">; 1173def finline_hint_functions: Flag<["-"], "finline-hint-functions">, Group<f_clang_Group>, Flags<[CC1Option]>, 1174 HelpText<"Inline functions which are (explicitly or implicitly) marked inline">; 1175def finline : Flag<["-"], "finline">, Group<clang_ignored_f_Group>; 1176def fexperimental_isel : Flag<["-"], "fexperimental-isel">, Group<f_clang_Group>, 1177 HelpText<"Enables the experimental global instruction selector">; 1178def fexperimental_new_pass_manager : Flag<["-"], "fexperimental-new-pass-manager">, 1179 Group<f_clang_Group>, Flags<[CC1Option]>, 1180 HelpText<"Enables an experimental new pass manager in LLVM.">; 1181def finput_charset_EQ : Joined<["-"], "finput-charset=">, Group<f_Group>; 1182def fexec_charset_EQ : Joined<["-"], "fexec-charset=">, Group<f_Group>; 1183def finstrument_functions : Flag<["-"], "finstrument-functions">, Group<f_Group>, Flags<[CC1Option]>, 1184 HelpText<"Generate calls to instrument function entry and exit">; 1185def finstrument_functions_after_inlining : Flag<["-"], "finstrument-functions-after-inlining">, Group<f_Group>, Flags<[CC1Option]>, 1186 HelpText<"Like -finstrument-functions, but insert the calls after inlining">; 1187def finstrument_function_entry_bare : Flag<["-"], "finstrument-function-entry-bare">, Group<f_Group>, Flags<[CC1Option]>, 1188 HelpText<"Instrument function entry only, after inlining, without arguments to the instrumentation call">; 1189def fcf_protection_EQ : Joined<["-"], "fcf-protection=">, Flags<[CoreOption, CC1Option]>, Group<f_Group>, 1190 HelpText<"Instrument control-flow architecture protection. Options: return, branch, full, none.">, Values<"return,branch,full,none">; 1191def fcf_protection : Flag<["-"], "fcf-protection">, Group<f_Group>, Flags<[CoreOption, CC1Option]>, 1192 Alias<fcf_protection_EQ>, AliasArgs<["full"]>, 1193 HelpText<"Enable cf-protection in 'full' mode">; 1194 1195def fxray_instrument : Flag<["-"], "fxray-instrument">, Group<f_Group>, 1196 Flags<[CC1Option]>, 1197 HelpText<"Generate XRay instrumentation sleds on function entry and exit">; 1198def fnoxray_instrument : Flag<["-"], "fno-xray-instrument">, Group<f_Group>, 1199 Flags<[CC1Option]>; 1200 1201def fxray_instruction_threshold_EQ : 1202 JoinedOrSeparate<["-"], "fxray-instruction-threshold=">, 1203 Group<f_Group>, Flags<[CC1Option]>, 1204 HelpText<"Sets the minimum function size to instrument with XRay">; 1205def fxray_instruction_threshold_ : 1206 JoinedOrSeparate<["-"], "fxray-instruction-threshold">, 1207 Group<f_Group>, Flags<[CC1Option]>; 1208 1209def fxray_always_instrument : 1210 JoinedOrSeparate<["-"], "fxray-always-instrument=">, 1211 Group<f_Group>, Flags<[CC1Option]>, 1212 HelpText<"DEPRECATED: Filename defining the whitelist for imbuing the 'always instrument' XRay attribute.">; 1213def fxray_never_instrument : 1214 JoinedOrSeparate<["-"], "fxray-never-instrument=">, 1215 Group<f_Group>, Flags<[CC1Option]>, 1216 HelpText<"DEPRECATED: Filename defining the whitelist for imbuing the 'never instrument' XRay attribute.">; 1217def fxray_attr_list : 1218 JoinedOrSeparate<["-"], "fxray-attr-list=">, 1219 Group<f_Group>, Flags<[CC1Option]>, 1220 HelpText<"Filename defining the list of functions/types for imbuing XRay attributes.">; 1221def fxray_modes : 1222 JoinedOrSeparate<["-"], "fxray-modes=">, 1223 Group<f_Group>, Flags<[CC1Option]>, 1224 HelpText<"List of modes to link in by default into XRay instrumented binaries.">; 1225 1226def fxray_always_emit_customevents : Flag<["-"], "fxray-always-emit-customevents">, Group<f_Group>, 1227 Flags<[CC1Option]>, 1228 HelpText<"Determine whether to always emit __xray_customevent(...) calls even if the function it appears in is not always instrumented.">; 1229def fnoxray_always_emit_customevents : Flag<["-"], "fno-xray-always-emit-customevents">, Group<f_Group>, 1230 Flags<[CC1Option]>; 1231 1232def fxray_always_emit_typedevents : Flag<["-"], "fxray-always-emit-typedevents">, Group<f_Group>, 1233 Flags<[CC1Option]>, 1234 HelpText<"Determine whether to always emit __xray_typedevent(...) calls even if the function it appears in is not always instrumented.">; 1235def fnoxray_always_emit_typedevents : Flag<["-"], "fno-xray-always-emit-typedevents">, Group<f_Group>, 1236 Flags<[CC1Option]>; 1237 1238def fxray_link_deps : Flag<["-"], "fxray-link-deps">, Group<f_Group>, 1239 Flags<[CC1Option]>, 1240 HelpText<"Tells clang to add the link dependencies for XRay.">; 1241def fnoxray_link_deps : Flag<["-"], "fnoxray-link-deps">, Group<f_Group>, 1242 Flags<[CC1Option]>; 1243 1244def fxray_instrumentation_bundle : 1245 JoinedOrSeparate<["-"], "fxray-instrumentation-bundle=">, 1246 Group<f_Group>, Flags<[CC1Option]>, 1247 HelpText<"Select which XRay instrumentation points to emit. Options: all, none, function, custom. Default is 'all'.">; 1248 1249def ffine_grained_bitfield_accesses : Flag<["-"], 1250 "ffine-grained-bitfield-accesses">, Group<f_clang_Group>, Flags<[CC1Option]>, 1251 HelpText<"Use separate accesses for consecutive bitfield runs with legal widths and alignments.">; 1252def fno_fine_grained_bitfield_accesses : Flag<["-"], 1253 "fno-fine-grained-bitfield-accesses">, Group<f_clang_Group>, Flags<[CC1Option]>, 1254 HelpText<"Use large-integer access for consecutive bitfield runs.">; 1255 1256def flat__namespace : Flag<["-"], "flat_namespace">; 1257def flax_vector_conversions : Flag<["-"], "flax-vector-conversions">, Group<f_Group>; 1258def flimited_precision_EQ : Joined<["-"], "flimited-precision=">, Group<f_Group>; 1259def fapple_link_rtlib : Flag<["-"], "fapple-link-rtlib">, Group<f_Group>, 1260 HelpText<"Force linking the clang builtins runtime library">; 1261def flto_EQ : Joined<["-"], "flto=">, Flags<[CoreOption, CC1Option]>, Group<f_Group>, 1262 HelpText<"Set LTO mode to either 'full' or 'thin'">, Values<"thin,full">; 1263def flto : Flag<["-"], "flto">, Flags<[CoreOption, CC1Option]>, Group<f_Group>, 1264 HelpText<"Enable LTO in 'full' mode">; 1265def fno_lto : Flag<["-"], "fno-lto">, Group<f_Group>, 1266 HelpText<"Disable LTO mode (default)">; 1267def flto_jobs_EQ : Joined<["-"], "flto-jobs=">, 1268 Flags<[CC1Option]>, Group<f_Group>, 1269 HelpText<"Controls the backend parallelism of -flto=thin (default " 1270 "of 0 means the number of threads will be derived from " 1271 "the number of CPUs detected)">; 1272def fthinlto_index_EQ : Joined<["-"], "fthinlto-index=">, 1273 Flags<[CoreOption, CC1Option]>, Group<f_Group>, 1274 HelpText<"Perform ThinLTO importing using provided function summary index">; 1275def fmacro_backtrace_limit_EQ : Joined<["-"], "fmacro-backtrace-limit=">, 1276 Group<f_Group>, Flags<[DriverOption, CoreOption]>; 1277def fmerge_all_constants : Flag<["-"], "fmerge-all-constants">, Group<f_Group>, 1278 Flags<[CC1Option, CoreOption]>, HelpText<"Allow merging of constants">; 1279def fmessage_length_EQ : Joined<["-"], "fmessage-length=">, Group<f_Group>; 1280def fms_extensions : Flag<["-"], "fms-extensions">, Group<f_Group>, Flags<[CC1Option, CoreOption]>, 1281 HelpText<"Accept some non-standard constructs supported by the Microsoft compiler">; 1282def fms_compatibility : Flag<["-"], "fms-compatibility">, Group<f_Group>, Flags<[CC1Option, CoreOption]>, 1283 HelpText<"Enable full Microsoft Visual C++ compatibility">; 1284def fms_volatile : Joined<["-"], "fms-volatile">, Group<f_Group>, Flags<[CC1Option]>; 1285def fmsc_version : Joined<["-"], "fmsc-version=">, Group<f_Group>, Flags<[DriverOption, CoreOption]>, 1286 HelpText<"Microsoft compiler version number to report in _MSC_VER (0 = don't define it (default))">; 1287def fms_compatibility_version 1288 : Joined<["-"], "fms-compatibility-version=">, 1289 Group<f_Group>, 1290 Flags<[ CC1Option, CoreOption ]>, 1291 HelpText<"Dot-separated value representing the Microsoft compiler " 1292 "version number to report in _MSC_VER (0 = don't define it " 1293 "(default))">; 1294def fdelayed_template_parsing : Flag<["-"], "fdelayed-template-parsing">, Group<f_Group>, 1295 HelpText<"Parse templated function definitions at the end of the " 1296 "translation unit">, Flags<[CC1Option, CoreOption]>; 1297def fms_memptr_rep_EQ : Joined<["-"], "fms-memptr-rep=">, Group<f_Group>, Flags<[CC1Option]>; 1298def fmodules_cache_path : Joined<["-"], "fmodules-cache-path=">, Group<i_Group>, 1299 Flags<[DriverOption, CC1Option]>, MetaVarName<"<directory>">, 1300 HelpText<"Specify the module cache path">; 1301def fmodules_user_build_path : Separate<["-"], "fmodules-user-build-path">, Group<i_Group>, 1302 Flags<[DriverOption, CC1Option]>, MetaVarName<"<directory>">, 1303 HelpText<"Specify the module user build path">; 1304def fprebuilt_module_path : Joined<["-"], "fprebuilt-module-path=">, Group<i_Group>, 1305 Flags<[DriverOption, CC1Option]>, MetaVarName<"<directory>">, 1306 HelpText<"Specify the prebuilt module path">; 1307def fmodules_prune_interval : Joined<["-"], "fmodules-prune-interval=">, Group<i_Group>, 1308 Flags<[CC1Option]>, MetaVarName<"<seconds>">, 1309 HelpText<"Specify the interval (in seconds) between attempts to prune the module cache">; 1310def fmodules_prune_after : Joined<["-"], "fmodules-prune-after=">, Group<i_Group>, 1311 Flags<[CC1Option]>, MetaVarName<"<seconds>">, 1312 HelpText<"Specify the interval (in seconds) after which a module file will be considered unused">; 1313def fmodules_search_all : Flag <["-"], "fmodules-search-all">, Group<f_Group>, 1314 Flags<[DriverOption, CC1Option]>, 1315 HelpText<"Search even non-imported modules to resolve references">; 1316def fbuild_session_timestamp : Joined<["-"], "fbuild-session-timestamp=">, 1317 Group<i_Group>, Flags<[CC1Option]>, MetaVarName<"<time since Epoch in seconds>">, 1318 HelpText<"Time when the current build session started">; 1319def fbuild_session_file : Joined<["-"], "fbuild-session-file=">, 1320 Group<i_Group>, MetaVarName<"<file>">, 1321 HelpText<"Use the last modification time of <file> as the build session timestamp">; 1322def fmodules_validate_once_per_build_session : Flag<["-"], "fmodules-validate-once-per-build-session">, 1323 Group<i_Group>, Flags<[CC1Option]>, 1324 HelpText<"Don't verify input files for the modules if the module has been " 1325 "successfully validated or loaded during this build session">; 1326def fmodules_disable_diagnostic_validation : Flag<["-"], "fmodules-disable-diagnostic-validation">, 1327 Group<i_Group>, Flags<[CC1Option]>, 1328 HelpText<"Disable validation of the diagnostic options when loading the module">; 1329def fmodules_validate_system_headers : Flag<["-"], "fmodules-validate-system-headers">, 1330 Group<i_Group>, Flags<[CC1Option]>, 1331 HelpText<"Validate the system headers that a module depends on when loading the module">; 1332def fno_modules_validate_system_headers : Flag<["-"], "fno-modules-validate-system-headers">, 1333 Group<i_Group>, Flags<[DriverOption]>; 1334def fmodules : Flag <["-"], "fmodules">, Group<f_Group>, 1335 Flags<[DriverOption, CC1Option]>, 1336 HelpText<"Enable the 'modules' language feature">; 1337def fimplicit_module_maps : Flag <["-"], "fimplicit-module-maps">, Group<f_Group>, 1338 Flags<[DriverOption, CC1Option]>, 1339 HelpText<"Implicitly search the file system for module map files.">; 1340def fmodules_ts : Flag <["-"], "fmodules-ts">, Group<f_Group>, 1341 Flags<[CC1Option]>, HelpText<"Enable support for the C++ Modules TS">; 1342def fmodule_maps : Flag <["-"], "fmodule-maps">, Alias<fimplicit_module_maps>; 1343def fmodule_name_EQ : Joined<["-"], "fmodule-name=">, Group<f_Group>, 1344 Flags<[DriverOption,CC1Option]>, MetaVarName<"<name>">, 1345 HelpText<"Specify the name of the module to build">; 1346def fmodule_name : Separate<["-"], "fmodule-name">, Alias<fmodule_name_EQ>; 1347def fmodule_implementation_of : Separate<["-"], "fmodule-implementation-of">, 1348 Flags<[CC1Option]>, Alias<fmodule_name_EQ>; 1349def fmodule_map_file : Joined<["-"], "fmodule-map-file=">, 1350 Group<f_Group>, Flags<[DriverOption,CC1Option]>, MetaVarName<"<file>">, 1351 HelpText<"Load this module map file">; 1352def fmodule_file : Joined<["-"], "fmodule-file=">, 1353 Group<i_Group>, Flags<[DriverOption,CC1Option]>, MetaVarName<"[<name>=]<file>">, 1354 HelpText<"Specify the mapping of module name to precompiled module file, or load a module file if name is omitted.">; 1355def fmodules_ignore_macro : Joined<["-"], "fmodules-ignore-macro=">, Group<f_Group>, Flags<[CC1Option]>, 1356 HelpText<"Ignore the definition of the given macro when building and loading modules">; 1357def fmodules_decluse : Flag <["-"], "fmodules-decluse">, Group<f_Group>, 1358 Flags<[DriverOption,CC1Option]>, 1359 HelpText<"Require declaration of modules used within a module">; 1360def fmodules_strict_decluse : Flag <["-"], "fmodules-strict-decluse">, Group<f_Group>, 1361 Flags<[DriverOption,CC1Option]>, 1362 HelpText<"Like -fmodules-decluse but requires all headers to be in modules">; 1363def fno_modules_search_all : Flag <["-"], "fno-modules-search-all">, Group<f_Group>, 1364 Flags<[DriverOption, CC1Option]>; 1365def fno_implicit_modules : 1366 Flag <["-"], "fno-implicit-modules">, 1367 Group<f_Group>, Flags<[DriverOption, CC1Option]>; 1368def fretain_comments_from_system_headers : Flag<["-"], "fretain-comments-from-system-headers">, Group<f_Group>, Flags<[CC1Option]>; 1369 1370def fmudflapth : Flag<["-"], "fmudflapth">, Group<f_Group>; 1371def fmudflap : Flag<["-"], "fmudflap">, Group<f_Group>; 1372def fnested_functions : Flag<["-"], "fnested-functions">, Group<f_Group>; 1373def fnext_runtime : Flag<["-"], "fnext-runtime">, Group<f_Group>; 1374def fno_access_control : Flag<["-"], "fno-access-control">, Group<f_Group>, Flags<[CC1Option]>, 1375 HelpText<"Disable C++ access control">; 1376def fno_apple_pragma_pack : Flag<["-"], "fno-apple-pragma-pack">, Group<f_Group>; 1377def fno_asm : Flag<["-"], "fno-asm">, Group<f_Group>; 1378def fno_asynchronous_unwind_tables : Flag<["-"], "fno-asynchronous-unwind-tables">, Group<f_Group>; 1379def fno_assume_sane_operator_new : Flag<["-"], "fno-assume-sane-operator-new">, Group<f_Group>, 1380 HelpText<"Don't assume that C++'s global operator new can't alias any pointer">, 1381 Flags<[CC1Option]>; 1382def fno_blocks : Flag<["-"], "fno-blocks">, Group<f_Group>, Flags<[CoreOption]>; 1383def fno_borland_extensions : Flag<["-"], "fno-borland-extensions">, Group<f_Group>; 1384def fno_builtin : Flag<["-"], "fno-builtin">, Group<f_Group>, Flags<[CC1Option, CoreOption]>, 1385 HelpText<"Disable implicit builtin knowledge of functions">; 1386def fno_builtin_ : Joined<["-"], "fno-builtin-">, Group<f_Group>, Flags<[CC1Option, CoreOption]>, 1387 HelpText<"Disable implicit builtin knowledge of a specific function">; 1388def fno_caret_diagnostics : Flag<["-"], "fno-caret-diagnostics">, Group<f_Group>, 1389 Flags<[CC1Option]>; 1390def fno_color_diagnostics : Flag<["-"], "fno-color-diagnostics">, Group<f_Group>, 1391 Flags<[CoreOption, CC1Option]>; 1392def fno_diagnostics_color : Flag<["-"], "fno-diagnostics-color">, Group<f_Group>, 1393 Flags<[CoreOption, DriverOption]>; 1394def fno_common : Flag<["-"], "fno-common">, Group<f_Group>, Flags<[CC1Option]>, 1395 HelpText<"Compile common globals like normal definitions">; 1396def fno_constant_cfstrings : Flag<["-"], "fno-constant-cfstrings">, Group<f_Group>, 1397 Flags<[CC1Option]>, 1398 HelpText<"Disable creation of CodeFoundation-type constant strings">; 1399def fno_cxx_exceptions: Flag<["-"], "fno-cxx-exceptions">, Group<f_Group>; 1400def fno_cxx_modules : Flag <["-"], "fno-cxx-modules">, Group<f_Group>, 1401 Flags<[DriverOption]>; 1402def fno_diagnostics_fixit_info : Flag<["-"], "fno-diagnostics-fixit-info">, Group<f_Group>, 1403 Flags<[CC1Option]>, HelpText<"Do not include fixit information in diagnostics">; 1404def fno_diagnostics_show_hotness : Flag<["-"], "fno-diagnostics-show-hotness">, Group<f_Group>; 1405def fno_diagnostics_show_option : Flag<["-"], "fno-diagnostics-show-option">, Group<f_Group>; 1406def fno_diagnostics_show_note_include_stack : Flag<["-"], "fno-diagnostics-show-note-include-stack">, 1407 Flags<[CC1Option]>, Group<f_Group>; 1408def fdigraphs : Flag<["-"], "fdigraphs">, Group<f_Group>, Flags<[CC1Option]>, 1409 HelpText<"Enable alternative token representations '<:', ':>', '<%', '%>', '%:', '%:%:' (default)">; 1410def fno_digraphs : Flag<["-"], "fno-digraphs">, Group<f_Group>, Flags<[CC1Option]>, 1411 HelpText<"Disallow alternative token representations '<:', ':>', '<%', '%>', '%:', '%:%:'">; 1412def fno_declspec : Flag<["-"], "fno-declspec">, Group<f_clang_Group>, 1413 HelpText<"Disallow __declspec as a keyword">, Flags<[CC1Option]>; 1414def fno_dollars_in_identifiers : Flag<["-"], "fno-dollars-in-identifiers">, Group<f_Group>, 1415 HelpText<"Disallow '$' in identifiers">, Flags<[CC1Option]>; 1416def fno_elide_constructors : Flag<["-"], "fno-elide-constructors">, Group<f_Group>, 1417 HelpText<"Disable C++ copy constructor elision">, Flags<[CC1Option]>; 1418def fno_eliminate_unused_debug_symbols : Flag<["-"], "fno-eliminate-unused-debug-symbols">, Group<f_Group>; 1419def fno_exceptions : Flag<["-"], "fno-exceptions">, Group<f_Group>; 1420def fno_gnu_keywords : Flag<["-"], "fno-gnu-keywords">, Group<f_Group>, Flags<[CC1Option]>; 1421def fno_inline_functions : Flag<["-"], "fno-inline-functions">, Group<f_clang_Group>, Flags<[CC1Option]>; 1422def fno_inline : Flag<["-"], "fno-inline">, Group<f_clang_Group>, Flags<[CC1Option]>; 1423def fno_experimental_isel : Flag<["-"], "fno-experimental-isel">, Group<f_clang_Group>, 1424 HelpText<"Disables the experimental global instruction selector">; 1425def fno_experimental_new_pass_manager : Flag<["-"], "fno-experimental-new-pass-manager">, 1426 Group<f_clang_Group>, Flags<[CC1Option]>, 1427 HelpText<"Disables an experimental new pass manager in LLVM.">; 1428def fveclib : Joined<["-"], "fveclib=">, Group<f_Group>, Flags<[CC1Option]>, 1429 HelpText<"Use the given vector functions library">, Values<"Accelerate,MASSV,SVML,none">; 1430def fno_lax_vector_conversions : Flag<["-"], "fno-lax-vector-conversions">, Group<f_Group>, 1431 HelpText<"Disallow implicit conversions between vectors with a different number of elements or different element types">, Flags<[CC1Option]>; 1432def fno_merge_all_constants : Flag<["-"], "fno-merge-all-constants">, Group<f_Group>, 1433 HelpText<"Disallow merging of constants">; 1434def fno_modules : Flag <["-"], "fno-modules">, Group<f_Group>, 1435 Flags<[DriverOption]>; 1436def fno_implicit_module_maps : Flag <["-"], "fno-implicit-module-maps">, Group<f_Group>, 1437 Flags<[DriverOption]>; 1438def fno_module_maps : Flag <["-"], "fno-module-maps">, Alias<fno_implicit_module_maps>; 1439def fno_modules_decluse : Flag <["-"], "fno-modules-decluse">, Group<f_Group>, 1440 Flags<[DriverOption]>; 1441def fno_modules_strict_decluse : Flag <["-"], "fno-strict-modules-decluse">, Group<f_Group>, 1442 Flags<[DriverOption]>; 1443def fimplicit_modules : Flag <["-"], "fimplicit-modules">, Group<f_Group>, 1444 Flags<[DriverOption]>; 1445def fmodule_file_deps : Flag <["-"], "fmodule-file-deps">, Group<f_Group>, 1446 Flags<[DriverOption]>; 1447def fno_module_file_deps : Flag <["-"], "fno-module-file-deps">, Group<f_Group>, 1448 Flags<[DriverOption]>; 1449def fno_ms_extensions : Flag<["-"], "fno-ms-extensions">, Group<f_Group>, 1450 Flags<[CoreOption]>; 1451def fno_ms_compatibility : Flag<["-"], "fno-ms-compatibility">, Group<f_Group>, 1452 Flags<[CoreOption]>; 1453def fno_delayed_template_parsing : Flag<["-"], "fno-delayed-template-parsing">, Group<f_Group>, 1454 HelpText<"Disable delayed template parsing">, 1455 Flags<[DriverOption, CoreOption]>; 1456def fno_objc_exceptions: Flag<["-"], "fno-objc-exceptions">, Group<f_Group>; 1457def fno_objc_legacy_dispatch : Flag<["-"], "fno-objc-legacy-dispatch">, Group<f_Group>; 1458def fno_objc_weak : Flag<["-"], "fno-objc-weak">, Group<f_Group>, Flags<[CC1Option]>; 1459def fno_omit_frame_pointer : Flag<["-"], "fno-omit-frame-pointer">, Group<f_Group>; 1460def fno_operator_names : Flag<["-"], "fno-operator-names">, Group<f_Group>, 1461 HelpText<"Do not treat C++ operator name keywords as synonyms for operators">, 1462 Flags<[CC1Option]>; 1463def fno_pascal_strings : Flag<["-"], "fno-pascal-strings">, Group<f_Group>; 1464def fno_rtti : Flag<["-"], "fno-rtti">, Group<f_Group>, Flags<[CC1Option]>, 1465 HelpText<"Disable generation of rtti information">; 1466def fno_rtti_data : Flag<["-"], "fno-rtti-data">, Group<f_Group>, Flags<[CC1Option]>, 1467 HelpText<"Control emission of RTTI data">; 1468def fno_short_enums : Flag<["-"], "fno-short-enums">, Group<f_Group>; 1469def fno_show_column : Flag<["-"], "fno-show-column">, Group<f_Group>, Flags<[CC1Option]>, 1470 HelpText<"Do not include column number on diagnostics">; 1471def fno_show_source_location : Flag<["-"], "fno-show-source-location">, Group<f_Group>, 1472 Flags<[CC1Option]>, HelpText<"Do not include source location information with diagnostics">; 1473def fdiagnostics_absolute_paths : Flag<["-"], "fdiagnostics-absolute-paths">, Group<f_Group>, 1474 Flags<[CC1Option, CoreOption]>, HelpText<"Print absolute paths in diagnostics">; 1475def fno_spell_checking : Flag<["-"], "fno-spell-checking">, Group<f_Group>, 1476 Flags<[CC1Option]>, HelpText<"Disable spell-checking">; 1477def fno_stack_protector : Flag<["-"], "fno-stack-protector">, Group<f_Group>, 1478 HelpText<"Disable the use of stack protectors">; 1479def fno_strict_aliasing : Flag<["-"], "fno-strict-aliasing">, Group<f_Group>, 1480 Flags<[DriverOption, CoreOption]>; 1481def fstruct_path_tbaa : Flag<["-"], "fstruct-path-tbaa">, Group<f_Group>; 1482def fno_struct_path_tbaa : Flag<["-"], "fno-struct-path-tbaa">, Group<f_Group>; 1483def fno_strict_enums : Flag<["-"], "fno-strict-enums">, Group<f_Group>; 1484def fno_strict_vtable_pointers: Flag<["-"], "fno-strict-vtable-pointers">, 1485 Group<f_Group>; 1486def fno_strict_overflow : Flag<["-"], "fno-strict-overflow">, Group<f_Group>; 1487def fno_threadsafe_statics : Flag<["-"], "fno-threadsafe-statics">, Group<f_Group>, 1488 Flags<[CC1Option]>, HelpText<"Do not emit code to make initialization of local statics thread safe">; 1489def fno_use_cxa_atexit : Flag<["-"], "fno-use-cxa-atexit">, Group<f_Group>, Flags<[CC1Option]>, 1490 HelpText<"Don't use __cxa_atexit for calling destructors">; 1491def fno_register_global_dtors_with_atexit : Flag<["-"], "fno-register-global-dtors-with-atexit">, Group<f_Group>, 1492 HelpText<"Don't use atexit or __cxa_atexit to register global destructors">; 1493def fno_use_init_array : Flag<["-"], "fno-use-init-array">, Group<f_Group>, Flags<[CC1Option]>, 1494 HelpText<"Don't use .init_array instead of .ctors">; 1495def fno_unit_at_a_time : Flag<["-"], "fno-unit-at-a-time">, Group<f_Group>; 1496def fno_unwind_tables : Flag<["-"], "fno-unwind-tables">, Group<f_Group>; 1497def fno_verbose_asm : Flag<["-"], "fno-verbose-asm">, Group<f_Group>; 1498def fno_working_directory : Flag<["-"], "fno-working-directory">, Group<f_Group>; 1499def fno_wrapv : Flag<["-"], "fno-wrapv">, Group<f_Group>; 1500def fno_zero_initialized_in_bss : Flag<["-"], "fno-zero-initialized-in-bss">, Group<f_Group>; 1501def fobjc_arc : Flag<["-"], "fobjc-arc">, Group<f_Group>, Flags<[CC1Option]>, 1502 HelpText<"Synthesize retain and release calls for Objective-C pointers">; 1503def fno_objc_arc : Flag<["-"], "fno-objc-arc">, Group<f_Group>; 1504def fobjc_convert_messages_to_runtime_calls : 1505 Flag<["-"], "fobjc-convert-messages-to-runtime-calls">, Group<f_Group>; 1506def fno_objc_convert_messages_to_runtime_calls : 1507 Flag<["-"], "fno-objc-convert-messages-to-runtime-calls">, Group<f_Group>, Flags<[CC1Option]>; 1508def fobjc_arc_exceptions : Flag<["-"], "fobjc-arc-exceptions">, Group<f_Group>, Flags<[CC1Option]>, 1509 HelpText<"Use EH-safe code when synthesizing retains and releases in -fobjc-arc">; 1510def fno_objc_arc_exceptions : Flag<["-"], "fno-objc-arc-exceptions">, Group<f_Group>; 1511def fobjc_atdefs : Flag<["-"], "fobjc-atdefs">, Group<clang_ignored_f_Group>; 1512def fobjc_call_cxx_cdtors : Flag<["-"], "fobjc-call-cxx-cdtors">, Group<clang_ignored_f_Group>; 1513def fobjc_exceptions: Flag<["-"], "fobjc-exceptions">, Group<f_Group>, 1514 HelpText<"Enable Objective-C exceptions">, Flags<[CC1Option]>; 1515def fapplication_extension : Flag<["-"], "fapplication-extension">, 1516 Group<f_Group>, Flags<[CC1Option]>, 1517 HelpText<"Restrict code to those available for App Extensions">; 1518def fno_application_extension : Flag<["-"], "fno-application-extension">, 1519 Group<f_Group>; 1520def frelaxed_template_template_args : Flag<["-"], "frelaxed-template-template-args">, 1521 Flags<[CC1Option]>, HelpText<"Enable C++17 relaxed template template argument matching">, 1522 Group<f_Group>; 1523def fno_relaxed_template_template_args : Flag<["-"], "fno-relaxed-template-template-args">, 1524 Group<f_Group>; 1525def fsized_deallocation : Flag<["-"], "fsized-deallocation">, Flags<[CC1Option]>, 1526 HelpText<"Enable C++14 sized global deallocation functions">, Group<f_Group>; 1527def fno_sized_deallocation: Flag<["-"], "fno-sized-deallocation">, Group<f_Group>; 1528def faligned_allocation : Flag<["-"], "faligned-allocation">, Flags<[CC1Option]>, 1529 HelpText<"Enable C++17 aligned allocation functions">, Group<f_Group>; 1530def fno_aligned_allocation: Flag<["-"], "fno-aligned-allocation">, 1531 Group<f_Group>, Flags<[CC1Option]>; 1532def fnew_alignment_EQ : Joined<["-"], "fnew-alignment=">, 1533 HelpText<"Specifies the largest alignment guaranteed by '::operator new(size_t)'">, 1534 MetaVarName<"<align>">, Group<f_Group>, Flags<[CC1Option]>; 1535def : Separate<["-"], "fnew-alignment">, Alias<fnew_alignment_EQ>; 1536def : Flag<["-"], "faligned-new">, Alias<faligned_allocation>; 1537def : Flag<["-"], "fno-aligned-new">, Alias<fno_aligned_allocation>; 1538def faligned_new_EQ : Joined<["-"], "faligned-new=">; 1539 1540def fobjc_legacy_dispatch : Flag<["-"], "fobjc-legacy-dispatch">, Group<f_Group>; 1541def fobjc_new_property : Flag<["-"], "fobjc-new-property">, Group<clang_ignored_f_Group>; 1542def fobjc_infer_related_result_type : Flag<["-"], "fobjc-infer-related-result-type">, 1543 Group<f_Group>; 1544def fno_objc_infer_related_result_type : Flag<["-"], 1545 "fno-objc-infer-related-result-type">, Group<f_Group>, 1546 HelpText< 1547 "do not infer Objective-C related result type based on method family">, 1548 Flags<[CC1Option]>; 1549def fobjc_link_runtime: Flag<["-"], "fobjc-link-runtime">, Group<f_Group>; 1550def fobjc_weak : Flag<["-"], "fobjc-weak">, Group<f_Group>, Flags<[CC1Option]>, 1551 HelpText<"Enable ARC-style weak references in Objective-C">; 1552 1553// Objective-C ABI options. 1554def fobjc_runtime_EQ : Joined<["-"], "fobjc-runtime=">, Group<f_Group>, Flags<[CC1Option, CoreOption]>, 1555 HelpText<"Specify the target Objective-C runtime kind and version">; 1556def fobjc_abi_version_EQ : Joined<["-"], "fobjc-abi-version=">, Group<f_Group>; 1557def fobjc_nonfragile_abi_version_EQ : Joined<["-"], "fobjc-nonfragile-abi-version=">, Group<f_Group>; 1558def fobjc_nonfragile_abi : Flag<["-"], "fobjc-nonfragile-abi">, Group<f_Group>; 1559def fno_objc_nonfragile_abi : Flag<["-"], "fno-objc-nonfragile-abi">, Group<f_Group>; 1560 1561def fobjc_sender_dependent_dispatch : Flag<["-"], "fobjc-sender-dependent-dispatch">, Group<f_Group>; 1562def fomit_frame_pointer : Flag<["-"], "fomit-frame-pointer">, Group<f_Group>; 1563def fopenmp : Flag<["-"], "fopenmp">, Group<f_Group>, Flags<[CC1Option, NoArgumentUnused]>, 1564 HelpText<"Parse OpenMP pragmas and generate parallel code.">; 1565def fno_openmp : Flag<["-"], "fno-openmp">, Group<f_Group>, Flags<[NoArgumentUnused]>; 1566def fopenmp_version_EQ : Joined<["-"], "fopenmp-version=">, Group<f_Group>, Flags<[CC1Option, NoArgumentUnused]>; 1567def fopenmp_EQ : Joined<["-"], "fopenmp=">, Group<f_Group>; 1568def fopenmp_use_tls : Flag<["-"], "fopenmp-use-tls">, Group<f_Group>, 1569 Flags<[NoArgumentUnused, HelpHidden]>; 1570def fnoopenmp_use_tls : Flag<["-"], "fnoopenmp-use-tls">, Group<f_Group>, 1571 Flags<[CC1Option, NoArgumentUnused, HelpHidden]>; 1572def fopenmp_targets_EQ : CommaJoined<["-"], "fopenmp-targets=">, Flags<[DriverOption, CC1Option]>, 1573 HelpText<"Specify comma-separated list of triples OpenMP offloading targets to be supported">; 1574def fopenmp_dump_offload_linker_script : Flag<["-"], "fopenmp-dump-offload-linker-script">, 1575 Group<f_Group>, Flags<[NoArgumentUnused, HelpHidden]>; 1576def fopenmp_relocatable_target : Flag<["-"], "fopenmp-relocatable-target">, 1577 Group<f_Group>, Flags<[CC1Option, NoArgumentUnused, HelpHidden]>; 1578def fnoopenmp_relocatable_target : Flag<["-"], "fnoopenmp-relocatable-target">, 1579 Group<f_Group>, Flags<[CC1Option, NoArgumentUnused, HelpHidden]>; 1580def fopenmp_simd : Flag<["-"], "fopenmp-simd">, Group<f_Group>, Flags<[CC1Option, NoArgumentUnused]>, 1581 HelpText<"Emit OpenMP code only for SIMD-based constructs.">; 1582def fno_openmp_simd : Flag<["-"], "fno-openmp-simd">, Group<f_Group>, Flags<[CC1Option, NoArgumentUnused]>; 1583def fopenmp_cuda_mode : Flag<["-"], "fopenmp-cuda-mode">, Group<f_Group>, 1584 Flags<[CC1Option, NoArgumentUnused, HelpHidden]>; 1585def fno_openmp_cuda_mode : Flag<["-"], "fno-openmp-cuda-mode">, Group<f_Group>, 1586 Flags<[NoArgumentUnused, HelpHidden]>; 1587def fopenmp_cuda_force_full_runtime : Flag<["-"], "fopenmp-cuda-force-full-runtime">, Group<f_Group>, 1588 Flags<[CC1Option, NoArgumentUnused, HelpHidden]>; 1589def fno_openmp_cuda_force_full_runtime : Flag<["-"], "fno-openmp-cuda-force-full-runtime">, Group<f_Group>, 1590 Flags<[NoArgumentUnused, HelpHidden]>; 1591def fopenmp_cuda_number_of_sm_EQ : Joined<["-"], "fopenmp-cuda-number-of-sm=">, Group<f_Group>, 1592 Flags<[CC1Option, NoArgumentUnused, HelpHidden]>; 1593def fopenmp_cuda_blocks_per_sm_EQ : Joined<["-"], "fopenmp-cuda-blocks-per-sm=">, Group<f_Group>, 1594 Flags<[CC1Option, NoArgumentUnused, HelpHidden]>; 1595def fopenmp_cuda_teams_reduction_recs_num_EQ : Joined<["-"], "fopenmp-cuda-teams-reduction-recs-num=">, Group<f_Group>, 1596 Flags<[CC1Option, NoArgumentUnused, HelpHidden]>; 1597def fopenmp_optimistic_collapse : Flag<["-"], "fopenmp-optimistic-collapse">, Group<f_Group>, 1598 Flags<[CC1Option, NoArgumentUnused, HelpHidden]>; 1599def fno_openmp_optimistic_collapse : Flag<["-"], "fno-openmp-optimistic-collapse">, Group<f_Group>, 1600 Flags<[NoArgumentUnused, HelpHidden]>; 1601def fno_optimize_sibling_calls : Flag<["-"], "fno-optimize-sibling-calls">, Group<f_Group>; 1602def foptimize_sibling_calls : Flag<["-"], "foptimize-sibling-calls">, Group<f_Group>; 1603def fno_escaping_block_tail_calls : Flag<["-"], "fno-escaping-block-tail-calls">, Group<f_Group>, Flags<[CC1Option]>; 1604def fescaping_block_tail_calls : Flag<["-"], "fescaping-block-tail-calls">, Group<f_Group>; 1605def force__cpusubtype__ALL : Flag<["-"], "force_cpusubtype_ALL">; 1606def force__flat__namespace : Flag<["-"], "force_flat_namespace">; 1607def force__load : Separate<["-"], "force_load">; 1608def force_addr : Joined<["-"], "fforce-addr">, Group<clang_ignored_f_Group>; 1609def foutput_class_dir_EQ : Joined<["-"], "foutput-class-dir=">, Group<f_Group>; 1610def fpack_struct : Flag<["-"], "fpack-struct">, Group<f_Group>; 1611def fno_pack_struct : Flag<["-"], "fno-pack-struct">, Group<f_Group>; 1612def fpack_struct_EQ : Joined<["-"], "fpack-struct=">, Group<f_Group>, Flags<[CC1Option]>, 1613 HelpText<"Specify the default maximum struct packing alignment">; 1614def fmax_type_align_EQ : Joined<["-"], "fmax-type-align=">, Group<f_Group>, Flags<[CC1Option]>, 1615 HelpText<"Specify the maximum alignment to enforce on pointers lacking an explicit alignment">; 1616def fno_max_type_align : Flag<["-"], "fno-max-type-align">, Group<f_Group>; 1617def fpascal_strings : Flag<["-"], "fpascal-strings">, Group<f_Group>, Flags<[CC1Option]>, 1618 HelpText<"Recognize and construct Pascal-style string literals">; 1619def fpcc_struct_return : Flag<["-"], "fpcc-struct-return">, Group<f_Group>, Flags<[CC1Option]>, 1620 HelpText<"Override the default ABI to return all structs on the stack">; 1621def fpch_preprocess : Flag<["-"], "fpch-preprocess">, Group<f_Group>; 1622def fpic : Flag<["-"], "fpic">, Group<f_Group>; 1623def fno_pic : Flag<["-"], "fno-pic">, Group<f_Group>; 1624def fpie : Flag<["-"], "fpie">, Group<f_Group>; 1625def fno_pie : Flag<["-"], "fno-pie">, Group<f_Group>; 1626def fplt : Flag<["-"], "fplt">, Group<f_Group>, Flags<[CC1Option]>, 1627 HelpText<"Use the PLT to make function calls">; 1628def fno_plt : Flag<["-"], "fno-plt">, Group<f_Group>, Flags<[CC1Option]>, 1629 HelpText<"Do not use the PLT to make function calls">; 1630def fropi : Flag<["-"], "fropi">, Group<f_Group>, Flags<[CC1Option]>; 1631def fno_ropi : Flag<["-"], "fno-ropi">, Group<f_Group>; 1632def frwpi : Flag<["-"], "frwpi">, Group<f_Group>, Flags<[CC1Option]>; 1633def fno_rwpi : Flag<["-"], "fno-rwpi">, Group<f_Group>; 1634def fplugin_EQ : Joined<["-"], "fplugin=">, Group<f_Group>, Flags<[DriverOption]>, MetaVarName<"<dsopath>">, 1635 HelpText<"Load the named plugin (dynamic shared object)">; 1636def fpass_plugin_EQ : Joined<["-"], "fpass-plugin=">, 1637 Group<f_Group>, Flags<[CC1Option]>, MetaVarName<"<dsopath>">, 1638 HelpText<"Load pass plugin from a dynamic shared object file (only with new pass manager).">; 1639def fpreserve_as_comments : Flag<["-"], "fpreserve-as-comments">, Group<f_Group>; 1640def fno_preserve_as_comments : Flag<["-"], "fno-preserve-as-comments">, Group<f_Group>, Flags<[CC1Option]>, 1641 HelpText<"Do not preserve comments in inline assembly">; 1642def fprofile_arcs : Flag<["-"], "fprofile-arcs">, Group<f_Group>; 1643def fno_profile_arcs : Flag<["-"], "fno-profile-arcs">, Group<f_Group>; 1644def framework : Separate<["-"], "framework">, Flags<[LinkerInput]>; 1645def frandom_seed_EQ : Joined<["-"], "frandom-seed=">, Group<clang_ignored_f_Group>; 1646def freg_struct_return : Flag<["-"], "freg-struct-return">, Group<f_Group>, Flags<[CC1Option]>, 1647 HelpText<"Override the default ABI to return small structs in registers">; 1648def frtti : Flag<["-"], "frtti">, Group<f_Group>; 1649def : Flag<["-"], "fsched-interblock">, Group<clang_ignored_f_Group>; 1650def fshort_enums : Flag<["-"], "fshort-enums">, Group<f_Group>, Flags<[CC1Option]>, 1651 HelpText<"Allocate to an enum type only as many bytes as it needs for the declared range of possible values">; 1652def fchar8__t : Flag<["-"], "fchar8_t">, Group<f_Group>, Flags<[CC1Option]>, 1653 HelpText<"Enable C++ builtin type char8_t">; 1654def fno_char8__t : Flag<["-"], "fno-char8_t">, Group<f_Group>, Flags<[CC1Option]>, 1655 HelpText<"Disable C++ builtin type char8_t">; 1656def fshort_wchar : Flag<["-"], "fshort-wchar">, Group<f_Group>, 1657 HelpText<"Force wchar_t to be a short unsigned int">; 1658def fno_short_wchar : Flag<["-"], "fno-short-wchar">, Group<f_Group>, 1659 HelpText<"Force wchar_t to be an unsigned int">; 1660def fshow_overloads_EQ : Joined<["-"], "fshow-overloads=">, Group<f_Group>, Flags<[CC1Option]>, 1661 HelpText<"Which overload candidates to show when overload resolution fails: " 1662 "best|all; defaults to all">, Values<"best,all">; 1663def fshow_column : Flag<["-"], "fshow-column">, Group<f_Group>, Flags<[CC1Option]>; 1664def fshow_source_location : Flag<["-"], "fshow-source-location">, Group<f_Group>; 1665def fspell_checking : Flag<["-"], "fspell-checking">, Group<f_Group>; 1666def fspell_checking_limit_EQ : Joined<["-"], "fspell-checking-limit=">, Group<f_Group>; 1667def fsigned_bitfields : Flag<["-"], "fsigned-bitfields">, Group<f_Group>; 1668def fsigned_char : Flag<["-"], "fsigned-char">, Group<f_Group>; 1669def fno_signed_char : Flag<["-"], "fno-signed-char">, Group<f_Group>, 1670 Flags<[CC1Option]>, HelpText<"Char is unsigned">; 1671def fsplit_stack : Flag<["-"], "fsplit-stack">, Group<f_Group>; 1672def fstack_protector_all : Flag<["-"], "fstack-protector-all">, Group<f_Group>, 1673 HelpText<"Enable stack protectors for all functions">; 1674def fstack_protector_strong : Flag<["-"], "fstack-protector-strong">, Group<f_Group>, 1675 HelpText<"Enable stack protectors for some functions vulnerable to stack smashing. " 1676 "Compared to -fstack-protector, this uses a stronger heuristic " 1677 "that includes functions containing arrays of any size (and any type), " 1678 "as well as any calls to alloca or the taking of an address from a local variable">; 1679def fstack_protector : Flag<["-"], "fstack-protector">, Group<f_Group>, 1680 HelpText<"Enable stack protectors for some functions vulnerable to stack smashing. " 1681 "This uses a loose heuristic which considers functions vulnerable " 1682 "if they contain a char (or 8bit integer) array or constant sized calls to " 1683 "alloca, which are of greater size than ssp-buffer-size (default: 8 bytes). " 1684 "All variable sized calls to alloca are considered vulnerable">; 1685def ftrivial_auto_var_init : Joined<["-"], "ftrivial-auto-var-init=">, Group<f_Group>, 1686 Flags<[CC1Option]>, HelpText<"Initialize trivial automatic stack variables: uninitialized (default)" 1687 " | pattern">, Values<"uninitialized,pattern">; 1688def enable_trivial_var_init_zero : Joined<["-"], "enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clang">, 1689 Flags<[CC1Option]>, 1690 HelpText<"Trivial automatic variable initialization to zero is only here for benchmarks, it'll eventually be removed, and I'm OK with that because I'm only using it to benchmark">; 1691def fstandalone_debug : Flag<["-"], "fstandalone-debug">, Group<f_Group>, Flags<[CoreOption]>, 1692 HelpText<"Emit full debug info for all types used by the program">; 1693def fno_standalone_debug : Flag<["-"], "fno-standalone-debug">, Group<f_Group>, Flags<[CoreOption]>, 1694 HelpText<"Limit debug information produced to reduce size of debug binary">; 1695def flimit_debug_info : Flag<["-"], "flimit-debug-info">, Flags<[CoreOption]>, Alias<fno_standalone_debug>; 1696def fno_limit_debug_info : Flag<["-"], "fno-limit-debug-info">, Flags<[CoreOption]>, Alias<fstandalone_debug>; 1697def fdebug_macro : Flag<["-"], "fdebug-macro">, Group<f_Group>, Flags<[CoreOption]>, 1698 HelpText<"Emit macro debug information">; 1699def fno_debug_macro : Flag<["-"], "fno-debug-macro">, Group<f_Group>, Flags<[CoreOption]>, 1700 HelpText<"Do not emit macro debug information">; 1701def fstrict_aliasing : Flag<["-"], "fstrict-aliasing">, Group<f_Group>, 1702 Flags<[DriverOption, CoreOption]>; 1703def fstrict_enums : Flag<["-"], "fstrict-enums">, Group<f_Group>, Flags<[CC1Option]>, 1704 HelpText<"Enable optimizations based on the strict definition of an enum's " 1705 "value range">; 1706def fstrict_vtable_pointers: Flag<["-"], "fstrict-vtable-pointers">, 1707 Group<f_Group>, Flags<[CC1Option]>, 1708 HelpText<"Enable optimizations based on the strict rules for overwriting " 1709 "polymorphic C++ objects">; 1710def fstrict_overflow : Flag<["-"], "fstrict-overflow">, Group<f_Group>; 1711def fsyntax_only : Flag<["-"], "fsyntax-only">, 1712 Flags<[DriverOption,CoreOption,CC1Option]>, Group<Action_Group>; 1713def ftabstop_EQ : Joined<["-"], "ftabstop=">, Group<f_Group>; 1714def ftemplate_depth_EQ : Joined<["-"], "ftemplate-depth=">, Group<f_Group>; 1715def ftemplate_depth_ : Joined<["-"], "ftemplate-depth-">, Group<f_Group>; 1716def ftemplate_backtrace_limit_EQ : Joined<["-"], "ftemplate-backtrace-limit=">, 1717 Group<f_Group>; 1718def foperator_arrow_depth_EQ : Joined<["-"], "foperator-arrow-depth=">, 1719 Group<f_Group>; 1720 1721def fsave_optimization_record : Flag<["-"], "fsave-optimization-record">, 1722 Group<f_Group>, HelpText<"Generate a YAML optimization record file">; 1723def fsave_optimization_record_EQ : Joined<["-"], "fsave-optimization-record=">, 1724 Group<f_Group>, HelpText<"Generate an optimization record file in a specific format (default: YAML)">; 1725def fno_save_optimization_record : Flag<["-"], "fno-save-optimization-record">, 1726 Group<f_Group>, Flags<[NoArgumentUnused]>; 1727def foptimization_record_file_EQ : Joined<["-"], "foptimization-record-file=">, 1728 Group<f_Group>, 1729 HelpText<"Specify the file name of any generated YAML optimization record">; 1730def foptimization_record_passes_EQ : Joined<["-"], "foptimization-record-passes=">, 1731 Group<f_Group>, 1732 HelpText<"Only include passes which match a specified regular expression in the generated optimization record (by default, include all passes)">; 1733 1734 1735def ftest_coverage : Flag<["-"], "ftest-coverage">, Group<f_Group>; 1736def fvectorize : Flag<["-"], "fvectorize">, Group<f_Group>, 1737 HelpText<"Enable the loop vectorization passes">; 1738def fno_vectorize : Flag<["-"], "fno-vectorize">, Group<f_Group>; 1739def : Flag<["-"], "ftree-vectorize">, Alias<fvectorize>; 1740def : Flag<["-"], "fno-tree-vectorize">, Alias<fno_vectorize>; 1741def fslp_vectorize : Flag<["-"], "fslp-vectorize">, Group<f_Group>, 1742 HelpText<"Enable the superword-level parallelism vectorization passes">; 1743def fno_slp_vectorize : Flag<["-"], "fno-slp-vectorize">, Group<f_Group>; 1744def : Flag<["-"], "ftree-slp-vectorize">, Alias<fslp_vectorize>; 1745def : Flag<["-"], "fno-tree-slp-vectorize">, Alias<fno_slp_vectorize>; 1746def Wlarge_by_value_copy_def : Flag<["-"], "Wlarge-by-value-copy">, 1747 HelpText<"Warn if a function definition returns or accepts an object larger " 1748 "in bytes than a given value">, Flags<[HelpHidden]>; 1749def Wlarge_by_value_copy_EQ : Joined<["-"], "Wlarge-by-value-copy=">, Flags<[CC1Option]>; 1750 1751// These "special" warning flags are effectively processed as f_Group flags by the driver: 1752// Just silence warnings about -Wlarger-than for now. 1753def Wlarger_than_EQ : Joined<["-"], "Wlarger-than=">, Group<clang_ignored_f_Group>; 1754def Wlarger_than_ : Joined<["-"], "Wlarger-than-">, Alias<Wlarger_than_EQ>; 1755def Wframe_larger_than_EQ : Joined<["-"], "Wframe-larger-than=">, Group<f_Group>, Flags<[DriverOption]>; 1756 1757def : Flag<["-"], "fterminated-vtables">, Alias<fapple_kext>; 1758def fthreadsafe_statics : Flag<["-"], "fthreadsafe-statics">, Group<f_Group>; 1759def ftime_report : Flag<["-"], "ftime-report">, Group<f_Group>, Flags<[CC1Option]>; 1760def ftime_trace : Flag<["-"], "ftime-trace">, Group<f_Group>, Flags<[CC1Option, CoreOption]>; 1761def ftlsmodel_EQ : Joined<["-"], "ftls-model=">, Group<f_Group>, Flags<[CC1Option]>; 1762def ftrapv : Flag<["-"], "ftrapv">, Group<f_Group>, Flags<[CC1Option]>, 1763 HelpText<"Trap on integer overflow">; 1764def ftrapv_handler_EQ : Joined<["-"], "ftrapv-handler=">, Group<f_Group>, 1765 MetaVarName<"<function name>">, 1766 HelpText<"Specify the function to be called on overflow">; 1767def ftrapv_handler : Separate<["-"], "ftrapv-handler">, Group<f_Group>, Flags<[CC1Option]>; 1768def ftrap_function_EQ : Joined<["-"], "ftrap-function=">, Group<f_Group>, Flags<[CC1Option]>, 1769 HelpText<"Issue call to specified function rather than a trap instruction">; 1770def funit_at_a_time : Flag<["-"], "funit-at-a-time">, Group<f_Group>; 1771def funroll_loops : Flag<["-"], "funroll-loops">, Group<f_Group>, 1772 HelpText<"Turn on loop unroller">, Flags<[CC1Option]>; 1773def fno_unroll_loops : Flag<["-"], "fno-unroll-loops">, Group<f_Group>, 1774 HelpText<"Turn off loop unroller">, Flags<[CC1Option]>; 1775def freroll_loops : Flag<["-"], "freroll-loops">, Group<f_Group>, 1776 HelpText<"Turn on loop reroller">, Flags<[CC1Option]>; 1777def fno_reroll_loops : Flag<["-"], "fno-reroll-loops">, Group<f_Group>, 1778 HelpText<"Turn off loop reroller">; 1779def ftrigraphs : Flag<["-"], "ftrigraphs">, Group<f_Group>, 1780 HelpText<"Process trigraph sequences">, Flags<[CC1Option]>; 1781def fno_trigraphs : Flag<["-"], "fno-trigraphs">, Group<f_Group>, 1782 HelpText<"Do not process trigraph sequences">, Flags<[CC1Option]>; 1783def funsigned_bitfields : Flag<["-"], "funsigned-bitfields">, Group<f_Group>; 1784def funsigned_char : Flag<["-"], "funsigned-char">, Group<f_Group>; 1785def fno_unsigned_char : Flag<["-"], "fno-unsigned-char">; 1786def funwind_tables : Flag<["-"], "funwind-tables">, Group<f_Group>; 1787def fuse_cxa_atexit : Flag<["-"], "fuse-cxa-atexit">, Group<f_Group>; 1788def fregister_global_dtors_with_atexit : Flag<["-"], "fregister-global-dtors-with-atexit">, Group<f_Group>, Flags<[CC1Option]>, 1789 HelpText<"Use atexit or __cxa_atexit to register global destructors">; 1790def fuse_init_array : Flag<["-"], "fuse-init-array">, Group<f_Group>, Flags<[CC1Option]>, 1791 HelpText<"Use .init_array instead of .ctors">; 1792def fno_var_tracking : Flag<["-"], "fno-var-tracking">, Group<clang_ignored_f_Group>; 1793def fverbose_asm : Flag<["-"], "fverbose-asm">, Group<f_Group>; 1794def fvisibility_EQ : Joined<["-"], "fvisibility=">, Group<f_Group>, 1795 HelpText<"Set the default symbol visibility for all global declarations">, Values<"hidden,default">; 1796def fvisibility_inlines_hidden : Flag<["-"], "fvisibility-inlines-hidden">, Group<f_Group>, 1797 HelpText<"Give inline C++ member functions hidden visibility by default">, 1798 Flags<[CC1Option]>; 1799def fvisibility_ms_compat : Flag<["-"], "fvisibility-ms-compat">, Group<f_Group>, 1800 HelpText<"Give global types 'default' visibility and global functions and " 1801 "variables 'hidden' visibility by default">; 1802def fvisibility_global_new_delete_hidden : Flag<["-"], "fvisibility-global-new-delete-hidden">, Group<f_Group>, 1803 HelpText<"Give global C++ operator new and delete declarations hidden visibility">, Flags<[CC1Option]>; 1804def fwhole_program_vtables : Flag<["-"], "fwhole-program-vtables">, Group<f_Group>, 1805 Flags<[CoreOption, CC1Option]>, 1806 HelpText<"Enables whole-program vtable optimization. Requires -flto">; 1807def fno_whole_program_vtables : Flag<["-"], "fno-whole-program-vtables">, Group<f_Group>, 1808 Flags<[CoreOption]>; 1809def fsplit_lto_unit : Flag<["-"], "fsplit-lto-unit">, Group<f_Group>, 1810 Flags<[CoreOption, CC1Option]>, 1811 HelpText<"Enables splitting of the LTO unit.">; 1812def fno_split_lto_unit : Flag<["-"], "fno-split-lto-unit">, Group<f_Group>, 1813 Flags<[CoreOption]>; 1814def fforce_emit_vtables : Flag<["-"], "fforce-emit-vtables">, Group<f_Group>, 1815 Flags<[CC1Option]>, 1816 HelpText<"Emits more virtual tables to improve devirtualization">; 1817def fno_force_emit_vtables : Flag<["-"], "fno-force-emit-vtables">, Group<f_Group>, 1818 Flags<[CoreOption]>; 1819def fwrapv : Flag<["-"], "fwrapv">, Group<f_Group>, Flags<[CC1Option]>, 1820 HelpText<"Treat signed integer overflow as two's complement">; 1821def fwritable_strings : Flag<["-"], "fwritable-strings">, Group<f_Group>, Flags<[CC1Option]>, 1822 HelpText<"Store string literals as writable data">; 1823def fzero_initialized_in_bss : Flag<["-"], "fzero-initialized-in-bss">, Group<f_Group>; 1824def ffunction_sections : Flag<["-"], "ffunction-sections">, Group<f_Group>, 1825 Flags<[CC1Option]>, 1826 HelpText<"Place each function in its own section (ELF Only)">; 1827def fno_function_sections : Flag<["-"], "fno-function-sections">, 1828 Group<f_Group>, Flags<[CC1Option]>; 1829def fdata_sections : Flag <["-"], "fdata-sections">, Group<f_Group>, 1830 Flags<[CC1Option]>, HelpText<"Place each data in its own section (ELF Only)">; 1831def fno_data_sections : Flag <["-"], "fno-data-sections">, Group<f_Group>, 1832 Flags<[CC1Option]>; 1833def fstack_size_section : Flag<["-"], "fstack-size-section">, Group<f_Group>, Flags<[CC1Option]>, 1834 HelpText<"Emit section containing metadata on function stack sizes">; 1835def fno_stack_size_section : Flag<["-"], "fno-stack-size-section">, Group<f_Group>, Flags<[CC1Option]>, 1836 HelpText<"Don't emit section containing metadata on function stack sizes">; 1837 1838def funique_section_names : Flag <["-"], "funique-section-names">, 1839 Group<f_Group>, Flags<[CC1Option]>, 1840 HelpText<"Use unique names for text and data sections (ELF Only)">; 1841def fno_unique_section_names : Flag <["-"], "fno-unique-section-names">, 1842 Group<f_Group>, Flags<[CC1Option]>; 1843 1844def fstrict_return : Flag<["-"], "fstrict-return">, Group<f_Group>, 1845 Flags<[CC1Option]>, 1846 HelpText<"Always treat control flow paths that fall off the end of a " 1847 "non-void function as unreachable">; 1848def fno_strict_return : Flag<["-"], "fno-strict-return">, Group<f_Group>, 1849 Flags<[CC1Option]>; 1850 1851def fallow_editor_placeholders : Flag<["-"], "fallow-editor-placeholders">, 1852 Group<f_Group>, Flags<[CC1Option]>, 1853 HelpText<"Treat editor placeholders as valid source code">; 1854def fno_allow_editor_placeholders : Flag<["-"], 1855 "fno-allow-editor-placeholders">, Group<f_Group>; 1856 1857def fdebug_types_section: Flag <["-"], "fdebug-types-section">, Group<f_Group>, 1858 Flags<[CC1Option]>, HelpText<"Place debug types in their own section (ELF Only)">; 1859def fno_debug_types_section: Flag<["-"], "fno-debug-types-section">, Group<f_Group>, 1860 Flags<[CC1Option]>; 1861def fdebug_ranges_base_address: Flag <["-"], "fdebug-ranges-base-address">, Group<f_Group>, 1862 Flags<[CC1Option]>, HelpText<"Use DWARF base address selection entries in debug_ranges">; 1863def fno_debug_ranges_base_address: Flag <["-"], "fno-debug-ranges-base-address">, Group<f_Group>, 1864 Flags<[CC1Option]>; 1865def fsplit_dwarf_inlining: Flag <["-"], "fsplit-dwarf-inlining">, Group<f_Group>, 1866 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">; 1867def fno_split_dwarf_inlining: Flag<["-"], "fno-split-dwarf-inlining">, Group<f_Group>, 1868 Flags<[CC1Option]>; 1869def fdebug_prefix_map_EQ 1870 : Joined<["-"], "fdebug-prefix-map=">, Group<f_Group>, 1871 Flags<[CC1Option,CC1AsOption]>, 1872 HelpText<"remap file source paths in debug info">; 1873def g_Flag : Flag<["-"], "g">, Group<g_Group>, 1874 HelpText<"Generate source-level debug information">; 1875def gline_tables_only : Flag<["-"], "gline-tables-only">, Group<gN_Group>, 1876 Flags<[CoreOption]>, HelpText<"Emit debug line number tables only">; 1877def gline_directives_only : Flag<["-"], "gline-directives-only">, Group<gN_Group>, 1878 Flags<[CoreOption]>, HelpText<"Emit debug line info directives only">; 1879def gmlt : Flag<["-"], "gmlt">, Alias<gline_tables_only>; 1880def g0 : Flag<["-"], "g0">, Group<gN_Group>; 1881def g1 : Flag<["-"], "g1">, Group<gN_Group>, Alias<gline_tables_only>; 1882def g2 : Flag<["-"], "g2">, Group<gN_Group>; 1883def g3 : Flag<["-"], "g3">, Group<gN_Group>; 1884def ggdb : Flag<["-"], "ggdb">, Group<gTune_Group>; 1885def ggdb0 : Flag<["-"], "ggdb0">, Group<ggdbN_Group>; 1886def ggdb1 : Flag<["-"], "ggdb1">, Group<ggdbN_Group>; 1887def ggdb2 : Flag<["-"], "ggdb2">, Group<ggdbN_Group>; 1888def ggdb3 : Flag<["-"], "ggdb3">, Group<ggdbN_Group>; 1889def glldb : Flag<["-"], "glldb">, Group<gTune_Group>; 1890def gsce : Flag<["-"], "gsce">, Group<gTune_Group>; 1891def gdwarf_2 : Flag<["-"], "gdwarf-2">, Group<g_Group>, 1892 HelpText<"Generate source-level debug information with dwarf version 2">; 1893def gdwarf_3 : Flag<["-"], "gdwarf-3">, Group<g_Group>, 1894 HelpText<"Generate source-level debug information with dwarf version 3">; 1895def gdwarf_4 : Flag<["-"], "gdwarf-4">, Group<g_Group>, 1896 HelpText<"Generate source-level debug information with dwarf version 4">; 1897def gdwarf_5 : Flag<["-"], "gdwarf-5">, Group<g_Group>, 1898 HelpText<"Generate source-level debug information with dwarf version 5">; 1899 1900def gcodeview : Flag<["-"], "gcodeview">, 1901 HelpText<"Generate CodeView debug information">, 1902 Flags<[CC1Option, CC1AsOption, CoreOption]>; 1903def gcodeview_ghash : Flag<["-"], "gcodeview-ghash">, 1904 HelpText<"Emit type record hashes in a .debug$H section">, 1905 Flags<[CC1Option, CoreOption]>; 1906def gno_codeview_ghash : Flag<["-"], "gno-codeview-ghash">, Flags<[CoreOption]>; 1907 1908// Equivalent to our default dwarf version. Forces usual dwarf emission when 1909// CodeView is enabled. 1910def gdwarf : Flag<["-"], "gdwarf">, Alias<gdwarf_4>, Flags<[CoreOption]>; 1911 1912def gfull : Flag<["-"], "gfull">, Group<g_Group>; 1913def gused : Flag<["-"], "gused">, Group<g_Group>; 1914def gstabs : Joined<["-"], "gstabs">, Group<g_Group>, Flags<[Unsupported]>; 1915def gcoff : Joined<["-"], "gcoff">, Group<g_Group>, Flags<[Unsupported]>; 1916def gxcoff : Joined<["-"], "gxcoff">, Group<g_Group>, Flags<[Unsupported]>; 1917def gvms : Joined<["-"], "gvms">, Group<g_Group>, Flags<[Unsupported]>; 1918def gtoggle : Flag<["-"], "gtoggle">, Group<g_flags_Group>, Flags<[Unsupported]>; 1919def grecord_command_line : Flag<["-"], "grecord-command-line">, 1920 Group<g_flags_Group>; 1921def gno_record_command_line : Flag<["-"], "gno-record-command-line">, 1922 Group<g_flags_Group>; 1923def : Flag<["-"], "grecord-gcc-switches">, Alias<grecord_command_line>; 1924def : Flag<["-"], "gno-record-gcc-switches">, Alias<gno_record_command_line>; 1925def gstrict_dwarf : Flag<["-"], "gstrict-dwarf">, Group<g_flags_Group>; 1926def gno_strict_dwarf : Flag<["-"], "gno-strict-dwarf">, Group<g_flags_Group>; 1927def gcolumn_info : Flag<["-"], "gcolumn-info">, Group<g_flags_Group>, Flags<[CoreOption]>; 1928def gno_column_info : Flag<["-"], "gno-column-info">, Group<g_flags_Group>, Flags<[CoreOption]>; 1929def gsplit_dwarf : Flag<["-"], "gsplit-dwarf">, Group<g_flags_Group>; 1930def gsplit_dwarf_EQ : Joined<["-"], "gsplit-dwarf=">, Group<g_flags_Group>, 1931 HelpText<"Set DWARF fission mode to either 'split' or 'single'">, 1932 Values<"split,single">; 1933def ggnu_pubnames : Flag<["-"], "ggnu-pubnames">, Group<g_flags_Group>, Flags<[CC1Option]>; 1934def gno_gnu_pubnames : Flag<["-"], "gno-gnu-pubnames">, Group<g_flags_Group>, Flags<[CC1Option]>; 1935def gpubnames : Flag<["-"], "gpubnames">, Group<g_flags_Group>, Flags<[CC1Option]>; 1936def gno_pubnames : Flag<["-"], "gno-pubnames">, Group<g_flags_Group>, Flags<[CC1Option]>; 1937def gdwarf_aranges : Flag<["-"], "gdwarf-aranges">, Group<g_flags_Group>; 1938def gmodules : Flag <["-"], "gmodules">, Group<gN_Group>, 1939 HelpText<"Generate debug info with external references to clang modules" 1940 " or precompiled headers">; 1941def gz : Flag<["-"], "gz">, Group<g_flags_Group>, 1942 HelpText<"DWARF debug sections compression type">; 1943def gz_EQ : Joined<["-"], "gz=">, Group<g_flags_Group>, 1944 HelpText<"DWARF debug sections compression type">; 1945def gembed_source : Flag<["-"], "gembed-source">, Group<g_flags_Group>, Flags<[CC1Option]>, 1946 HelpText<"Embed source text in DWARF debug sections">; 1947def gno_embed_source : Flag<["-"], "gno-embed-source">, Group<g_flags_Group>, 1948 Flags<[DriverOption]>, 1949 HelpText<"Restore the default behavior of not embedding source text in DWARF debug sections">; 1950def headerpad__max__install__names : Joined<["-"], "headerpad_max_install_names">; 1951def help : Flag<["-", "--"], "help">, Flags<[CC1Option,CC1AsOption]>, 1952 HelpText<"Display available options">; 1953def index_header_map : Flag<["-"], "index-header-map">, Flags<[CC1Option]>, 1954 HelpText<"Make the next included directory (-I or -F) an indexer header map">; 1955def idirafter : JoinedOrSeparate<["-"], "idirafter">, Group<clang_i_Group>, Flags<[CC1Option]>, 1956 HelpText<"Add directory to AFTER include search path">; 1957def iframework : JoinedOrSeparate<["-"], "iframework">, Group<clang_i_Group>, Flags<[CC1Option]>, 1958 HelpText<"Add directory to SYSTEM framework search path">; 1959def iframeworkwithsysroot : JoinedOrSeparate<["-"], "iframeworkwithsysroot">, 1960 Group<clang_i_Group>, 1961 HelpText<"Add directory to SYSTEM framework search path, " 1962 "absolute paths are relative to -isysroot">, 1963 MetaVarName<"<directory>">, Flags<[CC1Option]>; 1964def imacros : JoinedOrSeparate<["-", "--"], "imacros">, Group<clang_i_Group>, Flags<[CC1Option]>, 1965 HelpText<"Include macros from file before parsing">, MetaVarName<"<file>">; 1966def image__base : Separate<["-"], "image_base">; 1967def include_ : JoinedOrSeparate<["-", "--"], "include">, Group<clang_i_Group>, EnumName<"include">, 1968 MetaVarName<"<file>">, HelpText<"Include file before parsing">, Flags<[CC1Option]>; 1969def include_pch : Separate<["-"], "include-pch">, Group<clang_i_Group>, Flags<[CC1Option]>, 1970 HelpText<"Include precompiled header file">, MetaVarName<"<file>">; 1971def relocatable_pch : Flag<["-", "--"], "relocatable-pch">, Flags<[CC1Option]>, 1972 HelpText<"Whether to build a relocatable precompiled header">; 1973def verify_pch : Flag<["-"], "verify-pch">, Group<Action_Group>, Flags<[CC1Option]>, 1974 HelpText<"Load and verify that a pre-compiled header file is not stale">; 1975def init : Separate<["-"], "init">; 1976def install__name : Separate<["-"], "install_name">; 1977def iprefix : JoinedOrSeparate<["-"], "iprefix">, Group<clang_i_Group>, Flags<[CC1Option]>, 1978 HelpText<"Set the -iwithprefix/-iwithprefixbefore prefix">, MetaVarName<"<dir>">; 1979def iquote : JoinedOrSeparate<["-"], "iquote">, Group<clang_i_Group>, Flags<[CC1Option]>, 1980 HelpText<"Add directory to QUOTE include search path">, MetaVarName<"<directory>">; 1981def isysroot : JoinedOrSeparate<["-"], "isysroot">, Group<clang_i_Group>, Flags<[CC1Option]>, 1982 HelpText<"Set the system root directory (usually /)">, MetaVarName<"<dir>">; 1983def isystem : JoinedOrSeparate<["-"], "isystem">, Group<clang_i_Group>, 1984 Flags<[CC1Option]>, 1985 HelpText<"Add directory to SYSTEM include search path">, MetaVarName<"<directory>">; 1986def isystem_after : JoinedOrSeparate<["-"], "isystem-after">, 1987 Group<clang_i_Group>, Flags<[DriverOption]>, MetaVarName<"<directory>">, 1988 HelpText<"Add directory to end of the SYSTEM include search path">; 1989def iwithprefixbefore : JoinedOrSeparate<["-"], "iwithprefixbefore">, Group<clang_i_Group>, 1990 HelpText<"Set directory to include search path with prefix">, MetaVarName<"<dir>">, 1991 Flags<[CC1Option]>; 1992def iwithprefix : JoinedOrSeparate<["-"], "iwithprefix">, Group<clang_i_Group>, Flags<[CC1Option]>, 1993 HelpText<"Set directory to SYSTEM include search path with prefix">, MetaVarName<"<dir>">; 1994def iwithsysroot : JoinedOrSeparate<["-"], "iwithsysroot">, Group<clang_i_Group>, 1995 HelpText<"Add directory to SYSTEM include search path, " 1996 "absolute paths are relative to -isysroot">, MetaVarName<"<directory>">, 1997 Flags<[CC1Option]>; 1998def ivfsoverlay : JoinedOrSeparate<["-"], "ivfsoverlay">, Group<clang_i_Group>, Flags<[CC1Option]>, 1999 HelpText<"Overlay the virtual filesystem described by file over the real file system">; 2000def imultilib : Separate<["-"], "imultilib">, Group<gfortran_Group>; 2001def keep__private__externs : Flag<["-"], "keep_private_externs">; 2002def l : JoinedOrSeparate<["-"], "l">, Flags<[LinkerInput, RenderJoined]>, 2003 Group<Link_Group>; 2004def lazy__framework : Separate<["-"], "lazy_framework">, Flags<[LinkerInput]>; 2005def lazy__library : Separate<["-"], "lazy_library">, Flags<[LinkerInput]>; 2006def mlittle_endian : Flag<["-"], "mlittle-endian">, Flags<[DriverOption]>; 2007def EL : Flag<["-"], "EL">, Alias<mlittle_endian>; 2008def mbig_endian : Flag<["-"], "mbig-endian">, Flags<[DriverOption]>; 2009def EB : Flag<["-"], "EB">, Alias<mbig_endian>; 2010def m16 : Flag<["-"], "m16">, Group<m_Group>, Flags<[DriverOption, CoreOption]>; 2011def m32 : Flag<["-"], "m32">, Group<m_Group>, Flags<[DriverOption, CoreOption]>; 2012def mqdsp6_compat : Flag<["-"], "mqdsp6-compat">, Group<m_Group>, Flags<[DriverOption,CC1Option]>, 2013 HelpText<"Enable hexagon-qdsp6 backward compatibility">; 2014def m64 : Flag<["-"], "m64">, Group<m_Group>, Flags<[DriverOption, CoreOption]>; 2015def mx32 : Flag<["-"], "mx32">, Group<m_Group>, Flags<[DriverOption, CoreOption]>; 2016def mabi_EQ : Joined<["-"], "mabi=">, Group<m_Group>; 2017def miamcu : Flag<["-"], "miamcu">, Group<m_Group>, Flags<[DriverOption, CoreOption]>, 2018 HelpText<"Use Intel MCU ABI">; 2019def mno_iamcu : Flag<["-"], "mno-iamcu">, Group<m_Group>, Flags<[DriverOption, CoreOption]>; 2020def malign_functions_EQ : Joined<["-"], "malign-functions=">, Group<clang_ignored_m_Group>; 2021def malign_loops_EQ : Joined<["-"], "malign-loops=">, Group<clang_ignored_m_Group>; 2022def malign_jumps_EQ : Joined<["-"], "malign-jumps=">, Group<clang_ignored_m_Group>; 2023def mfancy_math_387 : Flag<["-"], "mfancy-math-387">, Group<clang_ignored_m_Group>; 2024def mlong_calls : Flag<["-"], "mlong-calls">, Group<m_Group>, 2025 HelpText<"Generate branches with extended addressability, usually via indirect jumps.">; 2026def mlong_double_64 : Flag<["-"], "mlong-double-64">, Group<f_Group>, Flags<[CC1Option]>, 2027 HelpText<"Force long double to be 64 bits">; 2028def mlong_double_128 : Flag<["-"], "mlong-double-128">, Group<f_Group>, Flags<[CC1Option]>, 2029 HelpText<"Force long double to be 128 bits">; 2030def mno_long_calls : Flag<["-"], "mno-long-calls">, Group<m_Group>, 2031 HelpText<"Restore the default behaviour of not generating long calls">; 2032def mexecute_only : Flag<["-"], "mexecute-only">, Group<m_arm_Features_Group>, 2033 HelpText<"Disallow generation of data access to code sections (ARM only)">; 2034def mno_execute_only : Flag<["-"], "mno-execute-only">, Group<m_arm_Features_Group>, 2035 HelpText<"Allow generation of data access to code sections (ARM only)">; 2036def mtp_mode_EQ : Joined<["-"], "mtp=">, Group<m_arm_Features_Group>, Values<"soft,cp15,el0,el1,el2,el3">, 2037 HelpText<"Thread pointer access method (AArch32/AArch64 only)">; 2038def mpure_code : Flag<["-"], "mpure-code">, Alias<mexecute_only>; // Alias for GCC compatibility 2039def mno_pure_code : Flag<["-"], "mno-pure-code">, Alias<mno_execute_only>; 2040def mtvos_version_min_EQ : Joined<["-"], "mtvos-version-min=">, Group<m_Group>; 2041def mappletvos_version_min_EQ : Joined<["-"], "mappletvos-version-min=">, Alias<mtvos_version_min_EQ>; 2042def mtvos_simulator_version_min_EQ : Joined<["-"], "mtvos-simulator-version-min=">; 2043def mappletvsimulator_version_min_EQ : Joined<["-"], "mappletvsimulator-version-min=">, Alias<mtvos_simulator_version_min_EQ>; 2044def mwatchos_version_min_EQ : Joined<["-"], "mwatchos-version-min=">, Group<m_Group>; 2045def mwatchos_simulator_version_min_EQ : Joined<["-"], "mwatchos-simulator-version-min=">; 2046def mwatchsimulator_version_min_EQ : Joined<["-"], "mwatchsimulator-version-min=">, Alias<mwatchos_simulator_version_min_EQ>; 2047def march_EQ : Joined<["-"], "march=">, Group<m_Group>, Flags<[CoreOption]>; 2048def masm_EQ : Joined<["-"], "masm=">, Group<m_Group>, Flags<[DriverOption]>; 2049def mcmodel_EQ : Joined<["-"], "mcmodel=">, Group<m_Group>; 2050def mimplicit_it_EQ : Joined<["-"], "mimplicit-it=">, Group<m_Group>; 2051def mdefault_build_attributes : Joined<["-"], "mdefault-build-attributes">, Group<m_Group>; 2052def mno_default_build_attributes : Joined<["-"], "mno-default-build-attributes">, Group<m_Group>; 2053def mconstant_cfstrings : Flag<["-"], "mconstant-cfstrings">, Group<clang_ignored_m_Group>; 2054def mconsole : Joined<["-"], "mconsole">, Group<m_Group>, Flags<[DriverOption]>; 2055def mwindows : Joined<["-"], "mwindows">, Group<m_Group>, Flags<[DriverOption]>; 2056def mdll : Joined<["-"], "mdll">, Group<m_Group>, Flags<[DriverOption]>; 2057def municode : Joined<["-"], "municode">, Group<m_Group>, Flags<[DriverOption]>; 2058def mthreads : Joined<["-"], "mthreads">, Group<m_Group>, Flags<[DriverOption]>; 2059def mcpu_EQ : Joined<["-"], "mcpu=">, Group<m_Group>; 2060def mmcu_EQ : Joined<["-"], "mmcu=">, Group<m_Group>; 2061def mdynamic_no_pic : Joined<["-"], "mdynamic-no-pic">, Group<m_Group>; 2062def mfix_and_continue : Flag<["-"], "mfix-and-continue">, Group<clang_ignored_m_Group>; 2063def mieee_fp : Flag<["-"], "mieee-fp">, Group<clang_ignored_m_Group>; 2064def minline_all_stringops : Flag<["-"], "minline-all-stringops">, Group<clang_ignored_m_Group>; 2065def mno_inline_all_stringops : Flag<["-"], "mno-inline-all-stringops">, Group<clang_ignored_m_Group>; 2066def malign_double : Flag<["-"], "malign-double">, Group<m_Group>, Flags<[CC1Option]>, 2067 HelpText<"Align doubles to two words in structs (x86 only)">; 2068def mfloat_abi_EQ : Joined<["-"], "mfloat-abi=">, Group<m_Group>, Values<"soft,softfp,hard">; 2069def mfpmath_EQ : Joined<["-"], "mfpmath=">, Group<m_Group>; 2070def mfpu_EQ : Joined<["-"], "mfpu=">, Group<m_Group>; 2071def mhwdiv_EQ : Joined<["-"], "mhwdiv=">, Group<m_Group>; 2072def mhwmult_EQ : Joined<["-"], "mhwmult=">, Group<m_Group>; 2073def mglobal_merge : Flag<["-"], "mglobal-merge">, Group<m_Group>, Flags<[CC1Option]>, 2074 HelpText<"Enable merging of globals">; 2075def mhard_float : Flag<["-"], "mhard-float">, Group<m_Group>; 2076def miphoneos_version_min_EQ : Joined<["-"], "miphoneos-version-min=">, Group<m_Group>; 2077def mios_version_min_EQ : Joined<["-"], "mios-version-min=">, 2078 Alias<miphoneos_version_min_EQ>, HelpText<"Set iOS deployment target">; 2079def mios_simulator_version_min_EQ : Joined<["-"], "mios-simulator-version-min=">; 2080def miphonesimulator_version_min_EQ : Joined<["-"], "miphonesimulator-version-min=">, Alias<mios_simulator_version_min_EQ>; 2081def mkernel : Flag<["-"], "mkernel">, Group<m_Group>; 2082def mlinker_version_EQ : Joined<["-"], "mlinker-version=">, 2083 Flags<[DriverOption]>; 2084def mllvm : Separate<["-"], "mllvm">, Flags<[CC1Option,CC1AsOption,CoreOption]>, 2085 HelpText<"Additional arguments to forward to LLVM's option processing">; 2086def mmacosx_version_min_EQ : Joined<["-"], "mmacosx-version-min=">, 2087 Group<m_Group>, HelpText<"Set Mac OS X deployment target">; 2088def mmacos_version_min_EQ : Joined<["-"], "mmacos-version-min=">, 2089 Group<m_Group>, Alias<mmacosx_version_min_EQ>; 2090def mms_bitfields : Flag<["-"], "mms-bitfields">, Group<m_Group>, Flags<[CC1Option]>, 2091 HelpText<"Set the default structure layout to be compatible with the Microsoft compiler standard">; 2092def moutline : Flag<["-"], "moutline">, Group<f_clang_Group>, Flags<[CC1Option]>, 2093 HelpText<"Enable function outlining (AArch64 only)">; 2094def mno_outline : Flag<["-"], "mno-outline">, Group<f_clang_Group>, Flags<[CC1Option]>, 2095 HelpText<"Disable function outlining (AArch64 only)">; 2096def mno_ms_bitfields : Flag<["-"], "mno-ms-bitfields">, Group<m_Group>, 2097 HelpText<"Do not set the default structure layout to be compatible with the Microsoft compiler standard">; 2098def mstackrealign : Flag<["-"], "mstackrealign">, Group<m_Group>, Flags<[CC1Option]>, 2099 HelpText<"Force realign the stack at entry to every function">; 2100def mstack_alignment : Joined<["-"], "mstack-alignment=">, Group<m_Group>, Flags<[CC1Option]>, 2101 HelpText<"Set the stack alignment">; 2102def mstack_probe_size : Joined<["-"], "mstack-probe-size=">, Group<m_Group>, Flags<[CC1Option]>, 2103 HelpText<"Set the stack probe size">; 2104def mstack_arg_probe : Flag<["-"], "mstack-arg-probe">, Group<m_Group>, 2105 HelpText<"Enable stack probes">; 2106def mno_stack_arg_probe : Flag<["-"], "mno-stack-arg-probe">, Group<m_Group>, Flags<[CC1Option]>, 2107 HelpText<"Disable stack probes which are enabled by default">; 2108def mthread_model : Separate<["-"], "mthread-model">, Group<m_Group>, Flags<[CC1Option]>, 2109 HelpText<"The thread model to use, e.g. posix, single (posix by default)">, Values<"posix,single">; 2110def meabi : Separate<["-"], "meabi">, Group<m_Group>, Flags<[CC1Option]>, 2111 HelpText<"Set EABI type, e.g. 4, 5 or gnu (default depends on triple)">, Values<"default,4,5,gnu">; 2112 2113def mno_constant_cfstrings : Flag<["-"], "mno-constant-cfstrings">, Group<m_Group>; 2114def mno_global_merge : Flag<["-"], "mno-global-merge">, Group<m_Group>, Flags<[CC1Option]>, 2115 HelpText<"Disable merging of globals">; 2116def mno_pascal_strings : Flag<["-"], "mno-pascal-strings">, 2117 Alias<fno_pascal_strings>; 2118def mno_red_zone : Flag<["-"], "mno-red-zone">, Group<m_Group>; 2119def mno_tls_direct_seg_refs : Flag<["-"], "mno-tls-direct-seg-refs">, Group<m_Group>, Flags<[CC1Option]>, 2120 HelpText<"Disable direct TLS access through segment registers">; 2121def mno_relax_all : Flag<["-"], "mno-relax-all">, Group<m_Group>; 2122def mno_rtd: Flag<["-"], "mno-rtd">, Group<m_Group>; 2123def mno_soft_float : Flag<["-"], "mno-soft-float">, Group<m_Group>; 2124def mno_stackrealign : Flag<["-"], "mno-stackrealign">, Group<m_Group>; 2125 2126def mretpoline : Flag<["-"], "mretpoline">, Group<m_Group>, Flags<[CoreOption,DriverOption]>; 2127def mno_retpoline : Flag<["-"], "mno-retpoline">, Group<m_Group>, Flags<[CoreOption,DriverOption]>; 2128def mspeculative_load_hardening : Flag<["-"], "mspeculative-load-hardening">, 2129 Group<m_Group>, Flags<[CoreOption,CC1Option]>; 2130def mno_speculative_load_hardening : Flag<["-"], "mno-speculative-load-hardening">, 2131 Group<m_Group>, Flags<[CoreOption]>; 2132 2133def mrelax : Flag<["-"], "mrelax">, Group<m_riscv_Features_Group>, 2134 HelpText<"Enable linker relaxation">; 2135def mno_relax : Flag<["-"], "mno-relax">, Group<m_riscv_Features_Group>, 2136 HelpText<"Disable linker relaxation">; 2137def msave_restore : Flag<["-"], "msave-restore">, Group<m_riscv_Features_Group>, 2138 HelpText<"Enable using library calls for save and restore">; 2139def mno_save_restore : Flag<["-"], "mno-save-restore">, Group<m_riscv_Features_Group>, 2140 HelpText<"Disable using library calls for save and restore">; 2141 2142def munaligned_access : Flag<["-"], "munaligned-access">, Group<m_arm_Features_Group>, 2143 HelpText<"Allow memory accesses to be unaligned (AArch32/AArch64 only)">; 2144def mno_unaligned_access : Flag<["-"], "mno-unaligned-access">, Group<m_arm_Features_Group>, 2145 HelpText<"Force all memory accesses to be aligned (AArch32/AArch64 only)">; 2146def mstrict_align : Flag<["-"], "mstrict-align">, Alias<mno_unaligned_access>, Flags<[CC1Option,HelpHidden]>, 2147 HelpText<"Force all memory accesses to be aligned (same as mno-unaligned-access)">; 2148def mno_thumb : Flag<["-"], "mno-thumb">, Group<m_arm_Features_Group>; 2149def mrestrict_it: Flag<["-"], "mrestrict-it">, Group<m_arm_Features_Group>, 2150 HelpText<"Disallow generation of deprecated IT blocks for ARMv8. It is on by default for ARMv8 Thumb mode.">; 2151def mno_restrict_it: Flag<["-"], "mno-restrict-it">, Group<m_arm_Features_Group>, 2152 HelpText<"Allow generation of deprecated IT blocks for ARMv8. It is off by default for ARMv8 Thumb mode">; 2153def marm : Flag<["-"], "marm">, Alias<mno_thumb>; 2154def ffixed_r9 : Flag<["-"], "ffixed-r9">, Group<m_arm_Features_Group>, 2155 HelpText<"Reserve the r9 register (ARM only)">; 2156def mno_movt : Flag<["-"], "mno-movt">, Group<m_arm_Features_Group>, 2157 HelpText<"Disallow use of movt/movw pairs (ARM only)">; 2158def mcrc : Flag<["-"], "mcrc">, Group<m_Group>, 2159 HelpText<"Allow use of CRC instructions (ARM/Mips only)">; 2160def mnocrc : Flag<["-"], "mnocrc">, Group<m_arm_Features_Group>, 2161 HelpText<"Disallow use of CRC instructions (ARM only)">; 2162def mno_neg_immediates: Flag<["-"], "mno-neg-immediates">, Group<m_arm_Features_Group>, 2163 HelpText<"Disallow converting instructions with negative immediates to their negation or inversion.">; 2164def mcmse : Flag<["-"], "mcmse">, Group<m_arm_Features_Group>, 2165 Flags<[DriverOption,CC1Option]>, 2166 HelpText<"Allow use of CMSE (Armv8-M Security Extensions)">; 2167 2168def mgeneral_regs_only : Flag<["-"], "mgeneral-regs-only">, Group<m_aarch64_Features_Group>, 2169 HelpText<"Generate code which only uses the general purpose registers (AArch64 only)">; 2170def mfix_cortex_a53_835769 : Flag<["-"], "mfix-cortex-a53-835769">, 2171 Group<m_aarch64_Features_Group>, 2172 HelpText<"Workaround Cortex-A53 erratum 835769 (AArch64 only)">; 2173def mno_fix_cortex_a53_835769 : Flag<["-"], "mno-fix-cortex-a53-835769">, 2174 Group<m_aarch64_Features_Group>, 2175 HelpText<"Don't workaround Cortex-A53 erratum 835769 (AArch64 only)">; 2176foreach i = {1-7,9-15,18,20-28} in 2177 def ffixed_x#i : Flag<["-"], "ffixed-x"#i>, Group<m_aarch64_Features_Group>, 2178 HelpText<"Reserve the "#i#" register (AArch64 only)">; 2179 2180foreach i = {8-15,18} in 2181 def fcall_saved_x#i : Flag<["-"], "fcall-saved-x"#i>, Group<m_aarch64_Features_Group>, 2182 HelpText<"Make the x"#i#" register call-saved (AArch64 only)">; 2183 2184def msign_return_address_EQ : Joined<["-"], "msign-return-address=">, 2185 Flags<[CC1Option]>, Group<m_Group>, Values<"none,all,non-leaf">, 2186 HelpText<"Select return address signing scope">; 2187def mbranch_protection_EQ : Joined<["-"], "mbranch-protection=">, 2188 HelpText<"Enforce targets of indirect branches and function returns">; 2189 2190def msimd128 : Flag<["-"], "msimd128">, Group<m_wasm_Features_Group>; 2191def munimplemented_simd128 : Flag<["-"], "munimplemented-simd128">, Group<m_wasm_Features_Group>; 2192def mno_unimplemented_simd128 : Flag<["-"], "mno-unimplemented-simd128">, Group<m_wasm_Features_Group>; 2193def mno_simd128 : Flag<["-"], "mno-simd128">, Group<m_wasm_Features_Group>; 2194def mnontrapping_fptoint : Flag<["-"], "mnontrapping-fptoint">, Group<m_wasm_Features_Group>; 2195def mno_nontrapping_fptoint : Flag<["-"], "mno-nontrapping-fptoint">, Group<m_wasm_Features_Group>; 2196def msign_ext : Flag<["-"], "msign-ext">, Group<m_wasm_Features_Group>; 2197def mno_sign_ext : Flag<["-"], "mno-sign-ext">, Group<m_wasm_Features_Group>; 2198def mexception_handing : Flag<["-"], "mexception-handling">, Group<m_wasm_Features_Group>; 2199def mno_exception_handing : Flag<["-"], "mno-exception-handling">, Group<m_wasm_Features_Group>; 2200def matomics : Flag<["-"], "matomics">, Group<m_wasm_Features_Group>; 2201def mno_atomics : Flag<["-"], "mno-atomics">, Group<m_wasm_Features_Group>; 2202def mbulk_memory : Flag<["-"], "mbulk-memory">, Group<m_wasm_Features_Group>; 2203def mno_bulk_memory : Flag<["-"], "mno-bulk-memory">, Group<m_wasm_Features_Group>; 2204def mmutable_globals : Flag<["-"], "mmutable-globals">, Group<m_wasm_Features_Group>; 2205def mno_mutable_globals : Flag<["-"], "mno-mutable-globals">, Group<m_wasm_Features_Group>; 2206def mmultivalue : Flag<["-"], "mmultivalue">, Group<m_wasm_Features_Group>; 2207def mno_multivalue : Flag<["-"], "mno-multivalue">, Group<m_wasm_Features_Group>; 2208def mtail_call : Flag<["-"], "mtail-call">, Group<m_wasm_Features_Group>; 2209def mno_tail_call : Flag<["-"], "mno-tail-call">, Group<m_wasm_Features_Group>; 2210 2211def mamdgpu_debugger_abi : Joined<["-"], "mamdgpu-debugger-abi=">, 2212 Flags<[HelpHidden]>, 2213 Group<m_Group>, 2214 HelpText<"Generate additional code for specified <version> of debugger ABI (AMDGPU only)">, 2215 MetaVarName<"<version>">; 2216 2217def mcode_object_v3 : Flag<["-"], "mcode-object-v3">, Group<m_amdgpu_Features_Group>, 2218 HelpText<"Enable code object v3 (AMDGPU only)">; 2219def mno_code_object_v3 : Flag<["-"], "mno-code-object-v3">, Group<m_amdgpu_Features_Group>, 2220 HelpText<"Disable code object v3 (AMDGPU only)">; 2221def mxnack : Flag<["-"], "mxnack">, Group<m_amdgpu_Features_Group>, 2222 HelpText<"Enable XNACK (AMDGPU only)">; 2223def mno_xnack : Flag<["-"], "mno-xnack">, Group<m_amdgpu_Features_Group>, 2224 HelpText<"Disable XNACK (AMDGPU only)">; 2225def msram_ecc : Flag<["-"], "msram-ecc">, Group<m_amdgpu_Features_Group>, 2226 HelpText<"Enable SRAM ECC (AMDGPU only)">; 2227def mno_sram_ecc : Flag<["-"], "mno-sram-ecc">, Group<m_amdgpu_Features_Group>, 2228 HelpText<"Disable SRAM ECC (AMDGPU only)">; 2229 2230def mcumode : Flag<["-"], "mcumode">, Group<m_amdgpu_Features_Group>, 2231 HelpText<"CU wavefront execution mode is used (AMDGPU only)">; 2232def mno_cumode : Flag<["-"], "mno-cumode">, Group<m_amdgpu_Features_Group>, 2233 HelpText<"WGP wavefront execution mode is used (AMDGPU only)">; 2234 2235def mwavefrontsize64 : Flag<["-"], "mwavefrontsize64">, 2236 Group<m_Group>, HelpText<"Wavefront size 64 is used">; 2237def mno_wavefrontsize64 : Flag<["-"], "mno-wavefrontsize64">, 2238 Group<m_Group>, HelpText<"Wavefront size 32 is used">; 2239 2240def faltivec : Flag<["-"], "faltivec">, Group<f_Group>, Flags<[DriverOption]>; 2241def fno_altivec : Flag<["-"], "fno-altivec">, Group<f_Group>, Flags<[DriverOption]>; 2242def maltivec : Flag<["-"], "maltivec">, Group<m_ppc_Features_Group>; 2243def mno_altivec : Flag<["-"], "mno-altivec">, Group<m_ppc_Features_Group>; 2244def mspe : Flag<["-"], "mspe">, Group<m_ppc_Features_Group>; 2245def mno_spe : Flag<["-"], "mno-spe">, Group<m_ppc_Features_Group>; 2246def mvsx : Flag<["-"], "mvsx">, Group<m_ppc_Features_Group>; 2247def mno_vsx : Flag<["-"], "mno-vsx">, Group<m_ppc_Features_Group>; 2248def msecure_plt : Flag<["-"], "msecure-plt">, Group<m_ppc_Features_Group>; 2249def mpower8_vector : Flag<["-"], "mpower8-vector">, 2250 Group<m_ppc_Features_Group>; 2251def mno_power8_vector : Flag<["-"], "mno-power8-vector">, 2252 Group<m_ppc_Features_Group>; 2253def mpower9_vector : Flag<["-"], "mpower9-vector">, 2254 Group<m_ppc_Features_Group>; 2255def mno_power9_vector : Flag<["-"], "mno-power9-vector">, 2256 Group<m_ppc_Features_Group>; 2257def mpower8_crypto : Flag<["-"], "mcrypto">, 2258 Group<m_ppc_Features_Group>; 2259def mnopower8_crypto : Flag<["-"], "mno-crypto">, 2260 Group<m_ppc_Features_Group>; 2261def mdirect_move : Flag<["-"], "mdirect-move">, 2262 Group<m_ppc_Features_Group>; 2263def mnodirect_move : Flag<["-"], "mno-direct-move">, 2264 Group<m_ppc_Features_Group>; 2265def mhtm : Flag<["-"], "mhtm">, Group<m_ppc_Features_Group>; 2266def mno_htm : Flag<["-"], "mno-htm">, Group<m_ppc_Features_Group>; 2267def mfprnd : Flag<["-"], "mfprnd">, Group<m_ppc_Features_Group>; 2268def mno_fprnd : Flag<["-"], "mno-fprnd">, Group<m_ppc_Features_Group>; 2269def mcmpb : Flag<["-"], "mcmpb">, Group<m_ppc_Features_Group>; 2270def mno_cmpb : Flag<["-"], "mno-cmpb">, Group<m_ppc_Features_Group>; 2271def misel : Flag<["-"], "misel">, Group<m_ppc_Features_Group>; 2272def mno_isel : Flag<["-"], "mno-isel">, Group<m_ppc_Features_Group>; 2273def mmfocrf : Flag<["-"], "mmfocrf">, Group<m_ppc_Features_Group>; 2274def mmfcrf : Flag<["-"], "mmfcrf">, Alias<mmfocrf>; 2275def mno_mfocrf : Flag<["-"], "mno-mfocrf">, Group<m_ppc_Features_Group>; 2276def mno_mfcrf : Flag<["-"], "mno-mfcrf">, Alias<mno_mfocrf>; 2277def mpopcntd : Flag<["-"], "mpopcntd">, Group<m_ppc_Features_Group>; 2278def mno_popcntd : Flag<["-"], "mno-popcntd">, Group<m_ppc_Features_Group>; 2279def mqpx : Flag<["-"], "mqpx">, Group<m_ppc_Features_Group>; 2280def mno_qpx : Flag<["-"], "mno-qpx">, Group<m_ppc_Features_Group>; 2281def mcrbits : Flag<["-"], "mcrbits">, Group<m_ppc_Features_Group>; 2282def mno_crbits : Flag<["-"], "mno-crbits">, Group<m_ppc_Features_Group>; 2283def minvariant_function_descriptors : 2284 Flag<["-"], "minvariant-function-descriptors">, Group<m_ppc_Features_Group>; 2285def mno_invariant_function_descriptors : 2286 Flag<["-"], "mno-invariant-function-descriptors">, 2287 Group<m_ppc_Features_Group>; 2288def mfloat128: Flag<["-"], "mfloat128">, 2289 Group<m_ppc_Features_Group>; 2290def mno_float128 : Flag<["-"], "mno-float128">, 2291 Group<m_ppc_Features_Group>; 2292def mlongcall: Flag<["-"], "mlongcall">, 2293 Group<m_ppc_Features_Group>; 2294def mno_longcall : Flag<["-"], "mno-longcall">, 2295 Group<m_ppc_Features_Group>; 2296 2297def mvx : Flag<["-"], "mvx">, Group<m_Group>; 2298def mno_vx : Flag<["-"], "mno-vx">, Group<m_Group>; 2299 2300def fzvector : Flag<["-"], "fzvector">, Group<f_Group>, Flags<[CC1Option]>, 2301 HelpText<"Enable System z vector language extension">; 2302def fno_zvector : Flag<["-"], "fno-zvector">, Group<f_Group>, 2303 Flags<[CC1Option]>; 2304def mzvector : Flag<["-"], "mzvector">, Alias<fzvector>; 2305def mno_zvector : Flag<["-"], "mno-zvector">, Alias<fno_zvector>; 2306 2307def mbackchain : Flag<["-"], "mbackchain">, Group<m_Group>, Flags<[DriverOption,CC1Option]>, 2308 HelpText<"Link stack frames through backchain on System Z">; 2309def mno_backchain : Flag<["-"], "mno-backchain">, Group<m_Group>, Flags<[DriverOption,CC1Option]>; 2310 2311def mno_warn_nonportable_cfstrings : Flag<["-"], "mno-warn-nonportable-cfstrings">, Group<m_Group>; 2312def mno_omit_leaf_frame_pointer : Flag<["-"], "mno-omit-leaf-frame-pointer">, Group<m_Group>; 2313def momit_leaf_frame_pointer : Flag<["-"], "momit-leaf-frame-pointer">, Group<m_Group>, 2314 HelpText<"Omit frame pointer setup for leaf functions">, Flags<[CC1Option]>; 2315def moslib_EQ : Joined<["-"], "moslib=">, Group<m_Group>; 2316def mpascal_strings : Flag<["-"], "mpascal-strings">, Alias<fpascal_strings>; 2317def mred_zone : Flag<["-"], "mred-zone">, Group<m_Group>; 2318def mtls_direct_seg_refs : Flag<["-"], "mtls-direct-seg-refs">, Group<m_Group>, 2319 HelpText<"Enable direct TLS access through segment registers (default)">; 2320def mregparm_EQ : Joined<["-"], "mregparm=">, Group<m_Group>; 2321def mrelax_all : Flag<["-"], "mrelax-all">, Group<m_Group>, Flags<[CC1Option,CC1AsOption]>, 2322 HelpText<"(integrated-as) Relax all machine instructions">; 2323def mincremental_linker_compatible : Flag<["-"], "mincremental-linker-compatible">, Group<m_Group>, 2324 Flags<[CC1Option,CC1AsOption]>, 2325 HelpText<"(integrated-as) Emit an object file which can be used with an incremental linker">; 2326def mno_incremental_linker_compatible : Flag<["-"], "mno-incremental-linker-compatible">, Group<m_Group>, 2327 HelpText<"(integrated-as) Emit an object file which cannot be used with an incremental linker">; 2328def mrtd : Flag<["-"], "mrtd">, Group<m_Group>, Flags<[CC1Option]>, 2329 HelpText<"Make StdCall calling convention the default">; 2330def msmall_data_threshold_EQ : Joined <["-"], "msmall-data-threshold=">, 2331 Group<m_Group>, Alias<G>; 2332def msoft_float : Flag<["-"], "msoft-float">, Group<m_Group>, Flags<[CC1Option]>, 2333 HelpText<"Use software floating point">; 2334def mno_implicit_float : Flag<["-"], "mno-implicit-float">, Group<m_Group>, 2335 HelpText<"Don't generate implicit floating point instructions">; 2336def mimplicit_float : Flag<["-"], "mimplicit-float">, Group<m_Group>; 2337def mrecip : Flag<["-"], "mrecip">, Group<m_Group>; 2338def mrecip_EQ : CommaJoined<["-"], "mrecip=">, Group<m_Group>, Flags<[CC1Option]>; 2339def mprefer_vector_width_EQ : Joined<["-"], "mprefer-vector-width=">, Group<m_Group>, Flags<[CC1Option]>, 2340 HelpText<"Specifies preferred vector width for auto-vectorization. Defaults to 'none' which allows target specific decisions.">; 2341def mpie_copy_relocations : Flag<["-"], "mpie-copy-relocations">, Group<m_Group>, 2342 Flags<[CC1Option]>, 2343 HelpText<"Use copy relocations support for PIE builds">; 2344def mno_pie_copy_relocations : Flag<["-"], "mno-pie-copy-relocations">, Group<m_Group>; 2345def mfentry : Flag<["-"], "mfentry">, HelpText<"Insert calls to fentry at function entry (x86 only)">, 2346 Flags<[CC1Option]>, Group<m_Group>; 2347def mips16 : Flag<["-"], "mips16">, Group<m_mips_Features_Group>; 2348def mno_mips16 : Flag<["-"], "mno-mips16">, Group<m_mips_Features_Group>; 2349def mmicromips : Flag<["-"], "mmicromips">, Group<m_mips_Features_Group>; 2350def mno_micromips : Flag<["-"], "mno-micromips">, Group<m_mips_Features_Group>; 2351def mxgot : Flag<["-"], "mxgot">, Group<m_mips_Features_Group>; 2352def mno_xgot : Flag<["-"], "mno-xgot">, Group<m_mips_Features_Group>; 2353def mldc1_sdc1 : Flag<["-"], "mldc1-sdc1">, Group<m_mips_Features_Group>; 2354def mno_ldc1_sdc1 : Flag<["-"], "mno-ldc1-sdc1">, Group<m_mips_Features_Group>; 2355def mcheck_zero_division : Flag<["-"], "mcheck-zero-division">, 2356 Group<m_mips_Features_Group>; 2357def mno_check_zero_division : Flag<["-"], "mno-check-zero-division">, 2358 Group<m_mips_Features_Group>; 2359def mcompact_branches_EQ : Joined<["-"], "mcompact-branches=">, 2360 Group<m_mips_Features_Group>; 2361def mbranch_likely : Flag<["-"], "mbranch-likely">, Group<m_Group>, 2362 IgnoredGCCCompat; 2363def mno_branch_likely : Flag<["-"], "mno-branch-likely">, Group<m_Group>, 2364 IgnoredGCCCompat; 2365def mindirect_jump_EQ : Joined<["-"], "mindirect-jump=">, 2366 Group<m_mips_Features_Group>, 2367 HelpText<"Change indirect jump instructions to inhibit speculation">; 2368def mdsp : Flag<["-"], "mdsp">, Group<m_mips_Features_Group>; 2369def mno_dsp : Flag<["-"], "mno-dsp">, Group<m_mips_Features_Group>; 2370def mdspr2 : Flag<["-"], "mdspr2">, Group<m_mips_Features_Group>; 2371def mno_dspr2 : Flag<["-"], "mno-dspr2">, Group<m_mips_Features_Group>; 2372def msingle_float : Flag<["-"], "msingle-float">, Group<m_mips_Features_Group>; 2373def mdouble_float : Flag<["-"], "mdouble-float">, Group<m_mips_Features_Group>; 2374def mmadd4 : Flag<["-"], "mmadd4">, Group<m_mips_Features_Group>, 2375 HelpText<"Enable the generation of 4-operand madd.s, madd.d and related instructions.">; 2376def mno_madd4 : Flag<["-"], "mno-madd4">, Group<m_mips_Features_Group>, 2377 HelpText<"Disable the generation of 4-operand madd.s, madd.d and related instructions.">; 2378def mmsa : Flag<["-"], "mmsa">, Group<m_mips_Features_Group>, 2379 HelpText<"Enable MSA ASE (MIPS only)">; 2380def mno_msa : Flag<["-"], "mno-msa">, Group<m_mips_Features_Group>, 2381 HelpText<"Disable MSA ASE (MIPS only)">; 2382def mmt : Flag<["-"], "mmt">, Group<m_mips_Features_Group>, 2383 HelpText<"Enable MT ASE (MIPS only)">; 2384def mno_mt : Flag<["-"], "mno-mt">, Group<m_mips_Features_Group>, 2385 HelpText<"Disable MT ASE (MIPS only)">; 2386def mfp64 : Flag<["-"], "mfp64">, Group<m_mips_Features_Group>, 2387 HelpText<"Use 64-bit floating point registers (MIPS only)">; 2388def mfp32 : Flag<["-"], "mfp32">, Group<m_mips_Features_Group>, 2389 HelpText<"Use 32-bit floating point registers (MIPS only)">; 2390def mgpopt : Flag<["-"], "mgpopt">, Group<m_mips_Features_Group>, 2391 HelpText<"Use GP relative accesses for symbols known to be in a small" 2392 " data section (MIPS)">; 2393def mno_gpopt : Flag<["-"], "mno-gpopt">, Group<m_mips_Features_Group>, 2394 HelpText<"Do not use GP relative accesses for symbols known to be in a small" 2395 " data section (MIPS)">; 2396def mlocal_sdata : Flag<["-"], "mlocal-sdata">, 2397 Group<m_mips_Features_Group>, 2398 HelpText<"Extend the -G behaviour to object local data (MIPS)">; 2399def mno_local_sdata : Flag<["-"], "mno-local-sdata">, 2400 Group<m_mips_Features_Group>, 2401 HelpText<"Do not extend the -G behaviour to object local data (MIPS)">; 2402def mextern_sdata : Flag<["-"], "mextern-sdata">, 2403 Group<m_mips_Features_Group>, 2404 HelpText<"Assume that externally defined data is in the small data if it" 2405 " meets the -G <size> threshold (MIPS)">; 2406def mno_extern_sdata : Flag<["-"], "mno-extern-sdata">, 2407 Group<m_mips_Features_Group>, 2408 HelpText<"Do not assume that externally defined data is in the small data if" 2409 " it meets the -G <size> threshold (MIPS)">; 2410def membedded_data : Flag<["-"], "membedded-data">, 2411 Group<m_mips_Features_Group>, 2412 HelpText<"Place constants in the .rodata section instead of the .sdata " 2413 "section even if they meet the -G <size> threshold (MIPS)">; 2414def mno_embedded_data : Flag<["-"], "mno-embedded-data">, 2415 Group<m_mips_Features_Group>, 2416 HelpText<"Do not place constants in the .rodata section instead of the " 2417 ".sdata if they meet the -G <size> threshold (MIPS)">; 2418def mnan_EQ : Joined<["-"], "mnan=">, Group<m_mips_Features_Group>; 2419def mabs_EQ : Joined<["-"], "mabs=">, Group<m_mips_Features_Group>; 2420def mabicalls : Flag<["-"], "mabicalls">, Group<m_mips_Features_Group>, 2421 HelpText<"Enable SVR4-style position-independent code (Mips only)">; 2422def mno_abicalls : Flag<["-"], "mno-abicalls">, Group<m_mips_Features_Group>, 2423 HelpText<"Disable SVR4-style position-independent code (Mips only)">; 2424def mno_crc : Flag<["-"], "mno-crc">, Group<m_mips_Features_Group>, 2425 HelpText<"Disallow use of CRC instructions (Mips only)">; 2426def mvirt : Flag<["-"], "mvirt">, Group<m_mips_Features_Group>; 2427def mno_virt : Flag<["-"], "mno-virt">, Group<m_mips_Features_Group>; 2428def mginv : Flag<["-"], "mginv">, Group<m_mips_Features_Group>; 2429def mno_ginv : Flag<["-"], "mno-ginv">, Group<m_mips_Features_Group>; 2430def mips1 : Flag<["-"], "mips1">, 2431 Alias<march_EQ>, AliasArgs<["mips1"]>, Group<m_mips_Features_Group>, 2432 HelpText<"Equivalent to -march=mips1">, Flags<[HelpHidden]>; 2433def mips2 : Flag<["-"], "mips2">, 2434 Alias<march_EQ>, AliasArgs<["mips2"]>, Group<m_mips_Features_Group>, 2435 HelpText<"Equivalent to -march=mips2">, Flags<[HelpHidden]>; 2436def mips3 : Flag<["-"], "mips3">, 2437 Alias<march_EQ>, AliasArgs<["mips3"]>, Group<m_mips_Features_Group>, 2438 HelpText<"Equivalent to -march=mips3">, Flags<[HelpHidden]>; 2439def mips4 : Flag<["-"], "mips4">, 2440 Alias<march_EQ>, AliasArgs<["mips4"]>, Group<m_mips_Features_Group>, 2441 HelpText<"Equivalent to -march=mips4">, Flags<[HelpHidden]>; 2442def mips5 : Flag<["-"], "mips5">, 2443 Alias<march_EQ>, AliasArgs<["mips5"]>, Group<m_mips_Features_Group>, 2444 HelpText<"Equivalent to -march=mips5">, Flags<[HelpHidden]>; 2445def mips32 : Flag<["-"], "mips32">, 2446 Alias<march_EQ>, AliasArgs<["mips32"]>, Group<m_mips_Features_Group>, 2447 HelpText<"Equivalent to -march=mips32">, Flags<[HelpHidden]>; 2448def mips32r2 : Flag<["-"], "mips32r2">, 2449 Alias<march_EQ>, AliasArgs<["mips32r2"]>, Group<m_mips_Features_Group>, 2450 HelpText<"Equivalent to -march=mips32r2">, Flags<[HelpHidden]>; 2451def mips32r3 : Flag<["-"], "mips32r3">, 2452 Alias<march_EQ>, AliasArgs<["mips32r3"]>, Group<m_mips_Features_Group>, 2453 HelpText<"Equivalent to -march=mips32r3">, Flags<[HelpHidden]>; 2454def mips32r5 : Flag<["-"], "mips32r5">, 2455 Alias<march_EQ>, AliasArgs<["mips32r5"]>, Group<m_mips_Features_Group>, 2456 HelpText<"Equivalent to -march=mips32r5">, Flags<[HelpHidden]>; 2457def mips32r6 : Flag<["-"], "mips32r6">, 2458 Alias<march_EQ>, AliasArgs<["mips32r6"]>, Group<m_mips_Features_Group>, 2459 HelpText<"Equivalent to -march=mips32r6">, Flags<[HelpHidden]>; 2460def mips64 : Flag<["-"], "mips64">, 2461 Alias<march_EQ>, AliasArgs<["mips64"]>, Group<m_mips_Features_Group>, 2462 HelpText<"Equivalent to -march=mips64">, Flags<[HelpHidden]>; 2463def mips64r2 : Flag<["-"], "mips64r2">, 2464 Alias<march_EQ>, AliasArgs<["mips64r2"]>, Group<m_mips_Features_Group>, 2465 HelpText<"Equivalent to -march=mips64r2">, Flags<[HelpHidden]>; 2466def mips64r3 : Flag<["-"], "mips64r3">, 2467 Alias<march_EQ>, AliasArgs<["mips64r3"]>, Group<m_mips_Features_Group>, 2468 HelpText<"Equivalent to -march=mips64r3">, Flags<[HelpHidden]>; 2469def mips64r5 : Flag<["-"], "mips64r5">, 2470 Alias<march_EQ>, AliasArgs<["mips64r5"]>, Group<m_mips_Features_Group>, 2471 HelpText<"Equivalent to -march=mips64r5">, Flags<[HelpHidden]>; 2472def mips64r6 : Flag<["-"], "mips64r6">, 2473 Alias<march_EQ>, AliasArgs<["mips64r6"]>, Group<m_mips_Features_Group>, 2474 HelpText<"Equivalent to -march=mips64r6">, Flags<[HelpHidden]>; 2475def mfpxx : Flag<["-"], "mfpxx">, Group<m_mips_Features_Group>, 2476 HelpText<"Avoid FPU mode dependent operations when used with the O32 ABI">, 2477 Flags<[HelpHidden]>; 2478def modd_spreg : Flag<["-"], "modd-spreg">, Group<m_mips_Features_Group>, 2479 HelpText<"Enable odd single-precision floating point registers">, 2480 Flags<[HelpHidden]>; 2481def mno_odd_spreg : Flag<["-"], "mno-odd-spreg">, Group<m_mips_Features_Group>, 2482 HelpText<"Disable odd single-precision floating point registers">, 2483 Flags<[HelpHidden]>; 2484def mrelax_pic_calls : Flag<["-"], "mrelax-pic-calls">, 2485 Group<m_mips_Features_Group>, 2486 HelpText<"Produce relaxation hints for linkers to try optimizing PIC " 2487 "call sequences into direct calls (MIPS only)">, Flags<[HelpHidden]>; 2488def mno_relax_pic_calls : Flag<["-"], "mno-relax-pic-calls">, 2489 Group<m_mips_Features_Group>, 2490 HelpText<"Do not produce relaxation hints for linkers to try optimizing PIC " 2491 "call sequences into direct calls (MIPS only)">, Flags<[HelpHidden]>; 2492def mglibc : Flag<["-"], "mglibc">, Group<m_libc_Group>, Flags<[HelpHidden]>; 2493def muclibc : Flag<["-"], "muclibc">, Group<m_libc_Group>, Flags<[HelpHidden]>; 2494def module_file_info : Flag<["-"], "module-file-info">, Flags<[DriverOption,CC1Option]>, Group<Action_Group>, 2495 HelpText<"Provide information about a particular module file">; 2496def mthumb : Flag<["-"], "mthumb">, Group<m_Group>; 2497def mtune_EQ : Joined<["-"], "mtune=">, Group<m_Group>; 2498def multi__module : Flag<["-"], "multi_module">; 2499def multiply__defined__unused : Separate<["-"], "multiply_defined_unused">; 2500def multiply__defined : Separate<["-"], "multiply_defined">; 2501def mwarn_nonportable_cfstrings : Flag<["-"], "mwarn-nonportable-cfstrings">, Group<m_Group>; 2502def no_canonical_prefixes : Flag<["-"], "no-canonical-prefixes">, Flags<[HelpHidden, CoreOption]>, 2503 HelpText<"Use relative instead of canonical paths">; 2504def no_cpp_precomp : Flag<["-"], "no-cpp-precomp">, Group<clang_ignored_f_Group>; 2505def no_integrated_cpp : Flag<["-", "--"], "no-integrated-cpp">, Flags<[DriverOption]>; 2506def no_pedantic : Flag<["-", "--"], "no-pedantic">, Group<pedantic_Group>; 2507def no__dead__strip__inits__and__terms : Flag<["-"], "no_dead_strip_inits_and_terms">; 2508def nobuiltininc : Flag<["-"], "nobuiltininc">, Flags<[CC1Option, CoreOption]>, 2509 HelpText<"Disable builtin #include directories">; 2510def nocudainc : Flag<["-"], "nocudainc">; 2511def nocudalib : Flag<["-"], "nocudalib">; 2512def nodefaultlibs : Flag<["-"], "nodefaultlibs">; 2513def nofixprebinding : Flag<["-"], "nofixprebinding">; 2514def nolibc : Flag<["-"], "nolibc">; 2515def nomultidefs : Flag<["-"], "nomultidefs">; 2516def nopie : Flag<["-"], "nopie">; 2517def no_pie : Flag<["-"], "no-pie">, Alias<nopie>; 2518def noprebind : Flag<["-"], "noprebind">; 2519def noprofilelib : Flag<["-"], "noprofilelib">; 2520def noseglinkedit : Flag<["-"], "noseglinkedit">; 2521def nostartfiles : Flag<["-"], "nostartfiles">; 2522def nostdinc : Flag<["-"], "nostdinc">, Flags<[CoreOption]>; 2523def nostdlibinc : Flag<["-"], "nostdlibinc">; 2524def nostdincxx : Flag<["-"], "nostdinc++">, Flags<[CC1Option]>, 2525 HelpText<"Disable standard #include directories for the C++ standard library">; 2526def nostdlib : Flag<["-"], "nostdlib">; 2527def nostdlibxx : Flag<["-"], "nostdlib++">; 2528def object : Flag<["-"], "object">; 2529def o : JoinedOrSeparate<["-"], "o">, Flags<[DriverOption, RenderAsInput, CC1Option, CC1AsOption]>, 2530 HelpText<"Write output to <file>">, MetaVarName<"<file>">; 2531def pagezero__size : JoinedOrSeparate<["-"], "pagezero_size">; 2532def pass_exit_codes : Flag<["-", "--"], "pass-exit-codes">, Flags<[Unsupported]>; 2533def pedantic_errors : Flag<["-", "--"], "pedantic-errors">, Group<pedantic_Group>, Flags<[CC1Option]>; 2534def pedantic : Flag<["-", "--"], "pedantic">, Group<pedantic_Group>, Flags<[CC1Option]>; 2535def pg : Flag<["-"], "pg">, HelpText<"Enable mcount instrumentation">, Flags<[CC1Option]>; 2536def pipe : Flag<["-", "--"], "pipe">, 2537 HelpText<"Use pipes between commands, when possible">; 2538def prebind__all__twolevel__modules : Flag<["-"], "prebind_all_twolevel_modules">; 2539def prebind : Flag<["-"], "prebind">; 2540def preload : Flag<["-"], "preload">; 2541def print_file_name_EQ : Joined<["-", "--"], "print-file-name=">, 2542 HelpText<"Print the full library path of <file>">, MetaVarName<"<file>">; 2543def print_ivar_layout : Flag<["-"], "print-ivar-layout">, Flags<[CC1Option]>, 2544 HelpText<"Enable Objective-C Ivar layout bitmap print trace">; 2545def print_libgcc_file_name : Flag<["-", "--"], "print-libgcc-file-name">, 2546 HelpText<"Print the library path for the currently used compiler runtime " 2547 "library (\"libgcc.a\" or \"libclang_rt.builtins.*.a\")">; 2548def print_multi_directory : Flag<["-", "--"], "print-multi-directory">; 2549def print_multi_lib : Flag<["-", "--"], "print-multi-lib">; 2550def print_multi_os_directory : Flag<["-", "--"], "print-multi-os-directory">, 2551 Flags<[Unsupported]>; 2552def print_target_triple : Flag<["-", "--"], "print-target-triple">, 2553 HelpText<"Print the normalized target triple">; 2554def print_effective_triple : Flag<["-", "--"], "print-effective-triple">, 2555 HelpText<"Print the effective target triple">; 2556def print_prog_name_EQ : Joined<["-", "--"], "print-prog-name=">, 2557 HelpText<"Print the full program path of <name>">, MetaVarName<"<name>">; 2558def print_resource_dir : Flag<["-", "--"], "print-resource-dir">, 2559 HelpText<"Print the resource directory pathname">; 2560def print_search_dirs : Flag<["-", "--"], "print-search-dirs">, 2561 HelpText<"Print the paths used for finding libraries and programs">; 2562def private__bundle : Flag<["-"], "private_bundle">; 2563def pthreads : Flag<["-"], "pthreads">; 2564def pthread : Flag<["-"], "pthread">, Flags<[CC1Option]>, 2565 HelpText<"Support POSIX threads in generated code">; 2566def no_pthread : Flag<["-"], "no-pthread">, Flags<[CC1Option]>; 2567def p : Flag<["-"], "p">; 2568def pie : Flag<["-"], "pie">; 2569def static_pie : Flag<["-"], "static-pie">; 2570def read__only__relocs : Separate<["-"], "read_only_relocs">; 2571def remap : Flag<["-"], "remap">; 2572def rewrite_objc : Flag<["-"], "rewrite-objc">, Flags<[DriverOption,CC1Option]>, 2573 HelpText<"Rewrite Objective-C source to C++">, Group<Action_Group>; 2574def rewrite_legacy_objc : Flag<["-"], "rewrite-legacy-objc">, Flags<[DriverOption]>, 2575 HelpText<"Rewrite Legacy Objective-C source to C++">; 2576def rdynamic : Flag<["-"], "rdynamic">; 2577def resource_dir : Separate<["-"], "resource-dir">, 2578 Flags<[DriverOption, CC1Option, CoreOption, HelpHidden]>, 2579 HelpText<"The directory which holds the compiler resource files">; 2580def resource_dir_EQ : Joined<["-"], "resource-dir=">, Flags<[DriverOption, CoreOption]>, 2581 Alias<resource_dir>; 2582def rpath : Separate<["-"], "rpath">, Flags<[LinkerInput]>, Group<Link_Group>; 2583def rtlib_EQ : Joined<["-", "--"], "rtlib=">, 2584 HelpText<"Compiler runtime library to use">; 2585def frtlib_add_rpath: Flag<["-"], "frtlib-add-rpath">, Flags<[NoArgumentUnused]>, 2586 HelpText<"Add -rpath with architecture-specific resource directory to the linker flags">; 2587def fno_rtlib_add_rpath: Flag<["-"], "fno-rtlib-add-rpath">, Flags<[NoArgumentUnused]>, 2588 HelpText<"Do not add -rpath with architecture-specific resource directory to the linker flags">; 2589def r : Flag<["-"], "r">, Flags<[LinkerInput,NoArgumentUnused]>, 2590 Group<Link_Group>; 2591def save_temps_EQ : Joined<["-", "--"], "save-temps=">, Flags<[CC1Option, DriverOption]>, 2592 HelpText<"Save intermediate compilation results.">; 2593def save_temps : Flag<["-", "--"], "save-temps">, Flags<[DriverOption]>, 2594 Alias<save_temps_EQ>, AliasArgs<["cwd"]>, 2595 HelpText<"Save intermediate compilation results">; 2596def save_stats_EQ : Joined<["-", "--"], "save-stats=">, Flags<[DriverOption]>, 2597 HelpText<"Save llvm statistics.">; 2598def save_stats : Flag<["-", "--"], "save-stats">, Flags<[DriverOption]>, 2599 Alias<save_stats_EQ>, AliasArgs<["cwd"]>, 2600 HelpText<"Save llvm statistics.">; 2601def via_file_asm : Flag<["-", "--"], "via-file-asm">, InternalDebugOpt, 2602 HelpText<"Write assembly to file for input to assemble jobs">; 2603def sectalign : MultiArg<["-"], "sectalign", 3>; 2604def sectcreate : MultiArg<["-"], "sectcreate", 3>; 2605def sectobjectsymbols : MultiArg<["-"], "sectobjectsymbols", 2>; 2606def sectorder : MultiArg<["-"], "sectorder", 3>; 2607def seg1addr : JoinedOrSeparate<["-"], "seg1addr">; 2608def seg__addr__table__filename : Separate<["-"], "seg_addr_table_filename">; 2609def seg__addr__table : Separate<["-"], "seg_addr_table">; 2610def segaddr : MultiArg<["-"], "segaddr", 2>; 2611def segcreate : MultiArg<["-"], "segcreate", 3>; 2612def seglinkedit : Flag<["-"], "seglinkedit">; 2613def segprot : MultiArg<["-"], "segprot", 3>; 2614def segs__read__only__addr : Separate<["-"], "segs_read_only_addr">; 2615def segs__read__write__addr : Separate<["-"], "segs_read_write_addr">; 2616def segs__read__ : Joined<["-"], "segs_read_">; 2617def shared_libgcc : Flag<["-"], "shared-libgcc">; 2618def shared : Flag<["-", "--"], "shared">; 2619def single__module : Flag<["-"], "single_module">; 2620def specs_EQ : Joined<["-", "--"], "specs=">; 2621def specs : Separate<["-", "--"], "specs">, Flags<[Unsupported]>; 2622def static_libgcc : Flag<["-"], "static-libgcc">; 2623def static_libstdcxx : Flag<["-"], "static-libstdc++">; 2624def static : Flag<["-", "--"], "static">, Flags<[NoArgumentUnused]>; 2625def std_default_EQ : Joined<["-"], "std-default=">; 2626def std_EQ : Joined<["-", "--"], "std=">, Flags<[CC1Option]>, 2627 Group<CompileOnly_Group>, HelpText<"Language standard to compile for">, 2628 ValuesCode<[{ 2629 const char *Values = 2630 #define LANGSTANDARD(id, name, lang, desc, features) name "," 2631 #define LANGSTANDARD_ALIAS(id, alias) alias "," 2632 #include "clang/Frontend/LangStandards.def" 2633 ; 2634 }]>; 2635def stdlib_EQ : Joined<["-", "--"], "stdlib=">, Flags<[CC1Option]>, 2636 HelpText<"C++ standard library to use">, Values<"libc++,libstdc++,platform">; 2637def unwindlib_EQ : Joined<["-", "--"], "unwindlib=">, Flags<[CC1Option]>, 2638 HelpText<"Unwind library to use">, Values<"libgcc,unwindlib,platform">; 2639def sub__library : JoinedOrSeparate<["-"], "sub_library">; 2640def sub__umbrella : JoinedOrSeparate<["-"], "sub_umbrella">; 2641def system_header_prefix : Joined<["--"], "system-header-prefix=">, 2642 Group<clang_i_Group>, Flags<[CC1Option]>, MetaVarName<"<prefix>">, 2643 HelpText<"Treat all #include paths starting with <prefix> as including a " 2644 "system header.">; 2645def : Separate<["--"], "system-header-prefix">, Alias<system_header_prefix>; 2646def no_system_header_prefix : Joined<["--"], "no-system-header-prefix=">, 2647 Group<clang_i_Group>, Flags<[CC1Option]>, MetaVarName<"<prefix>">, 2648 HelpText<"Treat all #include paths starting with <prefix> as not including a " 2649 "system header.">; 2650def : Separate<["--"], "no-system-header-prefix">, Alias<no_system_header_prefix>; 2651def s : Flag<["-"], "s">, Group<Link_Group>; 2652def target : Joined<["--"], "target=">, Flags<[DriverOption, CoreOption]>, 2653 HelpText<"Generate code for the given target">; 2654def print_supported_cpus : Flag<["-", "--"], "print-supported-cpus">, 2655 Group<CompileOnly_Group>, Flags<[CC1Option, CoreOption]>, 2656 HelpText<"Print supported cpu models for the given target (if target is not specified," 2657 " it will print the supported cpus for the default target)">; 2658def mcpu_EQ_QUESTION : Flag<["-"], "mcpu=?">, Alias<print_supported_cpus>; 2659def mtune_EQ_QUESTION : Flag<["-"], "mtune=?">, Alias<print_supported_cpus>; 2660def gcc_toolchain : Joined<["--"], "gcc-toolchain=">, Flags<[DriverOption]>, 2661 HelpText<"Use the gcc toolchain at the given directory">; 2662def time : Flag<["-"], "time">, 2663 HelpText<"Time individual commands">; 2664def traditional_cpp : Flag<["-", "--"], "traditional-cpp">, Flags<[CC1Option]>, 2665 HelpText<"Enable some traditional CPP emulation">; 2666def traditional : Flag<["-", "--"], "traditional">; 2667def trigraphs : Flag<["-", "--"], "trigraphs">, Alias<ftrigraphs>, 2668 HelpText<"Process trigraph sequences">; 2669def twolevel__namespace__hints : Flag<["-"], "twolevel_namespace_hints">; 2670def twolevel__namespace : Flag<["-"], "twolevel_namespace">; 2671def t : Flag<["-"], "t">, Group<Link_Group>; 2672def umbrella : Separate<["-"], "umbrella">; 2673def undefined : JoinedOrSeparate<["-"], "undefined">, Group<u_Group>; 2674def undef : Flag<["-"], "undef">, Group<u_Group>, Flags<[CC1Option]>, 2675 HelpText<"undef all system defines">; 2676def unexported__symbols__list : Separate<["-"], "unexported_symbols_list">; 2677def u : JoinedOrSeparate<["-"], "u">, Group<u_Group>; 2678def v : Flag<["-"], "v">, Flags<[CC1Option, CoreOption]>, 2679 HelpText<"Show commands to run and use verbose output">; 2680def verify_debug_info : Flag<["--"], "verify-debug-info">, Flags<[DriverOption]>, 2681 HelpText<"Verify the binary representation of debug output">; 2682def weak_l : Joined<["-"], "weak-l">, Flags<[LinkerInput]>; 2683def weak__framework : Separate<["-"], "weak_framework">, Flags<[LinkerInput]>; 2684def weak__library : Separate<["-"], "weak_library">, Flags<[LinkerInput]>; 2685def weak__reference__mismatches : Separate<["-"], "weak_reference_mismatches">; 2686def whatsloaded : Flag<["-"], "whatsloaded">; 2687def whyload : Flag<["-"], "whyload">; 2688def w : Flag<["-"], "w">, HelpText<"Suppress all warnings">, Flags<[CC1Option]>; 2689def x : JoinedOrSeparate<["-"], "x">, Flags<[DriverOption,CC1Option]>, 2690 HelpText<"Treat subsequent input files as having type <language>">, 2691 MetaVarName<"<language>">; 2692def y : Joined<["-"], "y">; 2693 2694def fintegrated_as : Flag<["-"], "fintegrated-as">, Flags<[DriverOption]>, 2695 Group<f_Group>, HelpText<"Enable the integrated assembler">; 2696def fno_integrated_as : Flag<["-"], "fno-integrated-as">, 2697 Flags<[CC1Option, DriverOption]>, Group<f_Group>, 2698 HelpText<"Disable the integrated assembler">; 2699def : Flag<["-"], "integrated-as">, Alias<fintegrated_as>, Flags<[DriverOption]>; 2700def : Flag<["-"], "no-integrated-as">, Alias<fno_integrated_as>, 2701 Flags<[CC1Option, DriverOption]>; 2702 2703def working_directory : JoinedOrSeparate<["-"], "working-directory">, Flags<[CC1Option]>, 2704 HelpText<"Resolve file paths relative to the specified directory">; 2705def working_directory_EQ : Joined<["-"], "working-directory=">, Flags<[CC1Option]>, 2706 Alias<working_directory>; 2707 2708// Double dash options, which are usually an alias for one of the previous 2709// options. 2710 2711def _mhwdiv_EQ : Joined<["--"], "mhwdiv=">, Alias<mhwdiv_EQ>; 2712def _mhwdiv : Separate<["--"], "mhwdiv">, Alias<mhwdiv_EQ>; 2713def _CLASSPATH_EQ : Joined<["--"], "CLASSPATH=">, Alias<fclasspath_EQ>; 2714def _CLASSPATH : Separate<["--"], "CLASSPATH">, Alias<fclasspath_EQ>; 2715def _all_warnings : Flag<["--"], "all-warnings">, Alias<Wall>; 2716def _analyze_auto : Flag<["--"], "analyze-auto">, Flags<[DriverOption]>; 2717def _analyzer_no_default_checks : Flag<["--"], "analyzer-no-default-checks">, Flags<[DriverOption]>; 2718def _analyzer_output : JoinedOrSeparate<["--"], "analyzer-output">, Flags<[DriverOption]>, 2719 HelpText<"Static analyzer report output format (html|plist|plist-multi-file|plist-html|text).">; 2720def _analyze : Flag<["--"], "analyze">, Flags<[DriverOption, CoreOption]>, 2721 HelpText<"Run the static analyzer">; 2722def _assemble : Flag<["--"], "assemble">, Alias<S>; 2723def _assert_EQ : Joined<["--"], "assert=">, Alias<A>; 2724def _assert : Separate<["--"], "assert">, Alias<A>; 2725def _bootclasspath_EQ : Joined<["--"], "bootclasspath=">, Alias<fbootclasspath_EQ>; 2726def _bootclasspath : Separate<["--"], "bootclasspath">, Alias<fbootclasspath_EQ>; 2727def _classpath_EQ : Joined<["--"], "classpath=">, Alias<fclasspath_EQ>; 2728def _classpath : Separate<["--"], "classpath">, Alias<fclasspath_EQ>; 2729def _comments_in_macros : Flag<["--"], "comments-in-macros">, Alias<CC>; 2730def _comments : Flag<["--"], "comments">, Alias<C>; 2731def _compile : Flag<["--"], "compile">, Alias<c>; 2732def _constant_cfstrings : Flag<["--"], "constant-cfstrings">; 2733def _debug_EQ : Joined<["--"], "debug=">, Alias<g_Flag>; 2734def _debug : Flag<["--"], "debug">, Alias<g_Flag>; 2735def _define_macro_EQ : Joined<["--"], "define-macro=">, Alias<D>; 2736def _define_macro : Separate<["--"], "define-macro">, Alias<D>; 2737def _dependencies : Flag<["--"], "dependencies">, Alias<M>; 2738def _dyld_prefix_EQ : Joined<["--"], "dyld-prefix=">; 2739def _dyld_prefix : Separate<["--"], "dyld-prefix">, Alias<_dyld_prefix_EQ>; 2740def _encoding_EQ : Joined<["--"], "encoding=">, Alias<fencoding_EQ>; 2741def _encoding : Separate<["--"], "encoding">, Alias<fencoding_EQ>; 2742def _entry : Flag<["--"], "entry">, Alias<e>; 2743def _extdirs_EQ : Joined<["--"], "extdirs=">, Alias<fextdirs_EQ>; 2744def _extdirs : Separate<["--"], "extdirs">, Alias<fextdirs_EQ>; 2745def _extra_warnings : Flag<["--"], "extra-warnings">, Alias<W_Joined>; 2746def _for_linker_EQ : Joined<["--"], "for-linker=">, Alias<Xlinker>; 2747def _for_linker : Separate<["--"], "for-linker">, Alias<Xlinker>; 2748def _force_link_EQ : Joined<["--"], "force-link=">, Alias<u>; 2749def _force_link : Separate<["--"], "force-link">, Alias<u>; 2750def _help_hidden : Flag<["--"], "help-hidden">, 2751 HelpText<"Display help for hidden options">; 2752def _imacros_EQ : Joined<["--"], "imacros=">, Alias<imacros>; 2753def _include_barrier : Flag<["--"], "include-barrier">, Alias<I_>; 2754def _include_directory_after_EQ : Joined<["--"], "include-directory-after=">, Alias<idirafter>; 2755def _include_directory_after : Separate<["--"], "include-directory-after">, Alias<idirafter>; 2756def _include_directory_EQ : Joined<["--"], "include-directory=">, Alias<I>; 2757def _include_directory : Separate<["--"], "include-directory">, Alias<I>; 2758def _include_prefix_EQ : Joined<["--"], "include-prefix=">, Alias<iprefix>; 2759def _include_prefix : Separate<["--"], "include-prefix">, Alias<iprefix>; 2760def _include_with_prefix_after_EQ : Joined<["--"], "include-with-prefix-after=">, Alias<iwithprefix>; 2761def _include_with_prefix_after : Separate<["--"], "include-with-prefix-after">, Alias<iwithprefix>; 2762def _include_with_prefix_before_EQ : Joined<["--"], "include-with-prefix-before=">, Alias<iwithprefixbefore>; 2763def _include_with_prefix_before : Separate<["--"], "include-with-prefix-before">, Alias<iwithprefixbefore>; 2764def _include_with_prefix_EQ : Joined<["--"], "include-with-prefix=">, Alias<iwithprefix>; 2765def _include_with_prefix : Separate<["--"], "include-with-prefix">, Alias<iwithprefix>; 2766def _include_EQ : Joined<["--"], "include=">, Alias<include_>; 2767def _language_EQ : Joined<["--"], "language=">, Alias<x>; 2768def _language : Separate<["--"], "language">, Alias<x>; 2769def _library_directory_EQ : Joined<["--"], "library-directory=">, Alias<L>; 2770def _library_directory : Separate<["--"], "library-directory">, Alias<L>; 2771def _no_line_commands : Flag<["--"], "no-line-commands">, Alias<P>; 2772def _no_standard_includes : Flag<["--"], "no-standard-includes">, Alias<nostdinc>; 2773def _no_standard_libraries : Flag<["--"], "no-standard-libraries">, Alias<nostdlib>; 2774def _no_undefined : Flag<["--"], "no-undefined">, Flags<[LinkerInput]>; 2775def _no_warnings : Flag<["--"], "no-warnings">, Alias<w>; 2776def _optimize_EQ : Joined<["--"], "optimize=">, Alias<O>; 2777def _optimize : Flag<["--"], "optimize">, Alias<O>; 2778def _output_class_directory_EQ : Joined<["--"], "output-class-directory=">, Alias<foutput_class_dir_EQ>; 2779def _output_class_directory : Separate<["--"], "output-class-directory">, Alias<foutput_class_dir_EQ>; 2780def _output_EQ : Joined<["--"], "output=">, Alias<o>; 2781def _output : Separate<["--"], "output">, Alias<o>; 2782def _param : Separate<["--"], "param">, Group<CompileOnly_Group>; 2783def _param_EQ : Joined<["--"], "param=">, Alias<_param>; 2784def _precompile : Flag<["--"], "precompile">, Flags<[DriverOption]>, 2785 Group<Action_Group>, HelpText<"Only precompile the input">; 2786def _prefix_EQ : Joined<["--"], "prefix=">, Alias<B>; 2787def _prefix : Separate<["--"], "prefix">, Alias<B>; 2788def _preprocess : Flag<["--"], "preprocess">, Alias<E>; 2789def _print_diagnostic_categories : Flag<["--"], "print-diagnostic-categories">; 2790def _print_file_name : Separate<["--"], "print-file-name">, Alias<print_file_name_EQ>; 2791def _print_missing_file_dependencies : Flag<["--"], "print-missing-file-dependencies">, Alias<MG>; 2792def _print_prog_name : Separate<["--"], "print-prog-name">, Alias<print_prog_name_EQ>; 2793def _profile_blocks : Flag<["--"], "profile-blocks">, Alias<a>; 2794def _profile : Flag<["--"], "profile">, Alias<p>; 2795def _resource_EQ : Joined<["--"], "resource=">, Alias<fcompile_resource_EQ>; 2796def _resource : Separate<["--"], "resource">, Alias<fcompile_resource_EQ>; 2797def _rtlib : Separate<["--"], "rtlib">, Alias<rtlib_EQ>; 2798def _serialize_diags : Separate<["-", "--"], "serialize-diagnostics">, Flags<[DriverOption]>, 2799 HelpText<"Serialize compiler diagnostics to a file">; 2800// We give --version different semantics from -version. 2801def _version : Flag<["--"], "version">, Flags<[CoreOption, CC1Option]>, 2802 HelpText<"Print version information">; 2803def _signed_char : Flag<["--"], "signed-char">, Alias<fsigned_char>; 2804def _std : Separate<["--"], "std">, Alias<std_EQ>; 2805def _stdlib : Separate<["--"], "stdlib">, Alias<stdlib_EQ>; 2806def _sysroot_EQ : Joined<["--"], "sysroot=">; 2807def _sysroot : Separate<["--"], "sysroot">, Alias<_sysroot_EQ>; 2808def _target_help : Flag<["--"], "target-help">; 2809def _trace_includes : Flag<["--"], "trace-includes">, Alias<H>; 2810def _undefine_macro_EQ : Joined<["--"], "undefine-macro=">, Alias<U>; 2811def _undefine_macro : Separate<["--"], "undefine-macro">, Alias<U>; 2812def _unsigned_char : Flag<["--"], "unsigned-char">, Alias<funsigned_char>; 2813def _user_dependencies : Flag<["--"], "user-dependencies">, Alias<MM>; 2814def _verbose : Flag<["--"], "verbose">, Alias<v>; 2815def _warn__EQ : Joined<["--"], "warn-=">, Alias<W_Joined>; 2816def _warn_ : Joined<["--"], "warn-">, Alias<W_Joined>; 2817def _write_dependencies : Flag<["--"], "write-dependencies">, Alias<MD>; 2818def _write_user_dependencies : Flag<["--"], "write-user-dependencies">, Alias<MMD>; 2819def _ : Joined<["--"], "">, Flags<[Unsupported]>; 2820 2821// Hexagon feature flags. 2822def mieee_rnd_near : Flag<["-"], "mieee-rnd-near">, 2823 Group<m_hexagon_Features_Group>; 2824def mv5 : Flag<["-"], "mv5">, Group<m_hexagon_Features_Group>, Alias<mcpu_EQ>, 2825 AliasArgs<["hexagonv5"]>; 2826def mv55 : Flag<["-"], "mv55">, Group<m_hexagon_Features_Group>, 2827 Alias<mcpu_EQ>, AliasArgs<["hexagonv55"]>; 2828def mv60 : Flag<["-"], "mv60">, Group<m_hexagon_Features_Group>, 2829 Alias<mcpu_EQ>, AliasArgs<["hexagonv60"]>; 2830def mv62 : Flag<["-"], "mv62">, Group<m_hexagon_Features_Group>, 2831 Alias<mcpu_EQ>, AliasArgs<["hexagonv62"]>; 2832def mv65 : Flag<["-"], "mv65">, Group<m_hexagon_Features_Group>, 2833 Alias<mcpu_EQ>, AliasArgs<["hexagonv65"]>; 2834def mv66 : Flag<["-"], "mv66">, Group<m_hexagon_Features_Group>, 2835 Alias<mcpu_EQ>, AliasArgs<["hexagonv66"]>; 2836def mhexagon_hvx : Flag<["-"], "mhvx">, Group<m_hexagon_Features_HVX_Group>, 2837 HelpText<"Enable Hexagon Vector eXtensions">; 2838def mhexagon_hvx_EQ : Joined<["-"], "mhvx=">, 2839 Group<m_hexagon_Features_HVX_Group>, 2840 HelpText<"Enable Hexagon Vector eXtensions">; 2841def mno_hexagon_hvx : Flag<["-"], "mno-hvx">, 2842 Group<m_hexagon_Features_HVX_Group>, 2843 HelpText<"Disable Hexagon Vector eXtensions">; 2844def mhexagon_hvx_length_EQ : Joined<["-"], "mhvx-length=">, 2845 Group<m_hexagon_Features_HVX_Group>, HelpText<"Set Hexagon Vector Length">, 2846 Values<"64B,128B">; 2847def ffixed_r19: Flag<["-"], "ffixed-r19">, 2848 HelpText<"Reserve register r19 (Hexagon only)">; 2849def mmemops : Flag<["-"], "mmemops">, Group<m_hexagon_Features_Group>, 2850 Flags<[CC1Option]>, HelpText<"Enable generation of memop instructions">; 2851def mno_memops : Flag<["-"], "mno-memops">, Group<m_hexagon_Features_Group>, 2852 Flags<[CC1Option]>, HelpText<"Disable generation of memop instructions">; 2853def mpackets : Flag<["-"], "mpackets">, Group<m_hexagon_Features_Group>, 2854 Flags<[CC1Option]>, HelpText<"Enable generation of instruction packets">; 2855def mno_packets : Flag<["-"], "mno-packets">, Group<m_hexagon_Features_Group>, 2856 Flags<[CC1Option]>, HelpText<"Disable generation of instruction packets">; 2857def mnvj : Flag<["-"], "mnvj">, Group<m_hexagon_Features_Group>, 2858 Flags<[CC1Option]>, HelpText<"Enable generation of new-value jumps">; 2859def mno_nvj : Flag<["-"], "mno-nvj">, Group<m_hexagon_Features_Group>, 2860 Flags<[CC1Option]>, HelpText<"Disable generation of new-value jumps">; 2861def mnvs : Flag<["-"], "mnvs">, Group<m_hexagon_Features_Group>, 2862 Flags<[CC1Option]>, HelpText<"Enable generation of new-value stores">; 2863def mno_nvs : Flag<["-"], "mno-nvs">, Group<m_hexagon_Features_Group>, 2864 Flags<[CC1Option]>, HelpText<"Disable generation of new-value stores">; 2865 2866 2867// X86 feature flags 2868def mx87 : Flag<["-"], "mx87">, Group<m_x86_Features_Group>; 2869def mno_x87 : Flag<["-"], "mno-x87">, Group<m_x86_Features_Group>; 2870def m80387 : Flag<["-"], "m80387">, Alias<mx87>; 2871def mno_80387 : Flag<["-"], "mno-80387">, Alias<mno_x87>; 2872def mmmx : Flag<["-"], "mmmx">, Group<m_x86_Features_Group>; 2873def mno_mmx : Flag<["-"], "mno-mmx">, Group<m_x86_Features_Group>; 2874def m3dnow : Flag<["-"], "m3dnow">, Group<m_x86_Features_Group>; 2875def mno_3dnow : Flag<["-"], "mno-3dnow">, Group<m_x86_Features_Group>; 2876def m3dnowa : Flag<["-"], "m3dnowa">, Group<m_x86_Features_Group>; 2877def mno_3dnowa : Flag<["-"], "mno-3dnowa">, Group<m_x86_Features_Group>; 2878def msse : Flag<["-"], "msse">, Group<m_x86_Features_Group>; 2879def mno_sse : Flag<["-"], "mno-sse">, Group<m_x86_Features_Group>; 2880def msse2 : Flag<["-"], "msse2">, Group<m_x86_Features_Group>; 2881def mno_sse2 : Flag<["-"], "mno-sse2">, Group<m_x86_Features_Group>; 2882def msse3 : Flag<["-"], "msse3">, Group<m_x86_Features_Group>; 2883def mno_sse3 : Flag<["-"], "mno-sse3">, Group<m_x86_Features_Group>; 2884def mssse3 : Flag<["-"], "mssse3">, Group<m_x86_Features_Group>; 2885def mno_ssse3 : Flag<["-"], "mno-ssse3">, Group<m_x86_Features_Group>; 2886def msse4_1 : Flag<["-"], "msse4.1">, Group<m_x86_Features_Group>; 2887def mno_sse4_1 : Flag<["-"], "mno-sse4.1">, Group<m_x86_Features_Group>; 2888def msse4_2 : Flag<["-"], "msse4.2">, Group<m_x86_Features_Group>; 2889def mno_sse4_2 : Flag<["-"], "mno-sse4.2">, Group<m_x86_Features_Group>; 2890def msse4 : Flag<["-"], "msse4">, Alias<msse4_2>; 2891// -mno-sse4 turns off sse4.1 which has the effect of turning off everything 2892// later than 4.1. -msse4 turns on 4.2 which has the effect of turning on 2893// everything earlier than 4.2. 2894def mno_sse4 : Flag<["-"], "mno-sse4">, Alias<mno_sse4_1>; 2895def msse4a : Flag<["-"], "msse4a">, Group<m_x86_Features_Group>; 2896def mno_sse4a : Flag<["-"], "mno-sse4a">, Group<m_x86_Features_Group>; 2897def mavx : Flag<["-"], "mavx">, Group<m_x86_Features_Group>; 2898def mno_avx : Flag<["-"], "mno-avx">, Group<m_x86_Features_Group>; 2899def mavx2 : Flag<["-"], "mavx2">, Group<m_x86_Features_Group>; 2900def mno_avx2 : Flag<["-"], "mno-avx2">, Group<m_x86_Features_Group>; 2901def mavx512f : Flag<["-"], "mavx512f">, Group<m_x86_Features_Group>; 2902def mno_avx512f : Flag<["-"], "mno-avx512f">, Group<m_x86_Features_Group>; 2903def mavx512bf16 : Flag<["-"], "mavx512bf16">, Group<m_x86_Features_Group>; 2904def mno_avx512bf16 : Flag<["-"], "mno-avx512bf16">, Group<m_x86_Features_Group>; 2905def mavx512bitalg : Flag<["-"], "mavx512bitalg">, Group<m_x86_Features_Group>; 2906def mno_avx512bitalg : Flag<["-"], "mno-avx512bitalg">, Group<m_x86_Features_Group>; 2907def mavx512bw : Flag<["-"], "mavx512bw">, Group<m_x86_Features_Group>; 2908def mno_avx512bw : Flag<["-"], "mno-avx512bw">, Group<m_x86_Features_Group>; 2909def mavx512cd : Flag<["-"], "mavx512cd">, Group<m_x86_Features_Group>; 2910def mno_avx512cd : Flag<["-"], "mno-avx512cd">, Group<m_x86_Features_Group>; 2911def mavx512dq : Flag<["-"], "mavx512dq">, Group<m_x86_Features_Group>; 2912def mno_avx512dq : Flag<["-"], "mno-avx512dq">, Group<m_x86_Features_Group>; 2913def mavx512er : Flag<["-"], "mavx512er">, Group<m_x86_Features_Group>; 2914def mno_avx512er : Flag<["-"], "mno-avx512er">, Group<m_x86_Features_Group>; 2915def mavx512ifma : Flag<["-"], "mavx512ifma">, Group<m_x86_Features_Group>; 2916def mno_avx512ifma : Flag<["-"], "mno-avx512ifma">, Group<m_x86_Features_Group>; 2917def mavx512pf : Flag<["-"], "mavx512pf">, Group<m_x86_Features_Group>; 2918def mno_avx512pf : Flag<["-"], "mno-avx512pf">, Group<m_x86_Features_Group>; 2919def mavx512vbmi : Flag<["-"], "mavx512vbmi">, Group<m_x86_Features_Group>; 2920def mno_avx512vbmi : Flag<["-"], "mno-avx512vbmi">, Group<m_x86_Features_Group>; 2921def mavx512vbmi2 : Flag<["-"], "mavx512vbmi2">, Group<m_x86_Features_Group>; 2922def mno_avx512vbmi2 : Flag<["-"], "mno-avx512vbmi2">, Group<m_x86_Features_Group>; 2923def mavx512vl : Flag<["-"], "mavx512vl">, Group<m_x86_Features_Group>; 2924def mno_avx512vl : Flag<["-"], "mno-avx512vl">, Group<m_x86_Features_Group>; 2925def mavx512vnni : Flag<["-"], "mavx512vnni">, Group<m_x86_Features_Group>; 2926def mno_avx512vnni : Flag<["-"], "mno-avx512vnni">, Group<m_x86_Features_Group>; 2927def mavx512vpopcntdq : Flag<["-"], "mavx512vpopcntdq">, Group<m_x86_Features_Group>; 2928def mno_avx512vpopcntdq : Flag<["-"], "mno-avx512vpopcntdq">, Group<m_x86_Features_Group>; 2929def mavx512vp2intersect : Flag<["-"], "mavx512vp2intersect">, Group<m_x86_Features_Group>; 2930def mno_avx512vp2intersect : Flag<["-"], "mno-avx512vp2intersect">, Group<m_x86_Features_Group>; 2931def madx : Flag<["-"], "madx">, Group<m_x86_Features_Group>; 2932def mno_adx : Flag<["-"], "mno-adx">, Group<m_x86_Features_Group>; 2933def maes : Flag<["-"], "maes">, Group<m_x86_Features_Group>; 2934def mno_aes : Flag<["-"], "mno-aes">, Group<m_x86_Features_Group>; 2935def mbmi : Flag<["-"], "mbmi">, Group<m_x86_Features_Group>; 2936def mno_bmi : Flag<["-"], "mno-bmi">, Group<m_x86_Features_Group>; 2937def mbmi2 : Flag<["-"], "mbmi2">, Group<m_x86_Features_Group>; 2938def mno_bmi2 : Flag<["-"], "mno-bmi2">, Group<m_x86_Features_Group>; 2939def mcldemote : Flag<["-"], "mcldemote">, Group<m_x86_Features_Group>; 2940def mno_cldemote : Flag<["-"], "mno-cldemote">, Group<m_x86_Features_Group>; 2941def mclflushopt : Flag<["-"], "mclflushopt">, Group<m_x86_Features_Group>; 2942def mno_clflushopt : Flag<["-"], "mno-clflushopt">, Group<m_x86_Features_Group>; 2943def mclwb : Flag<["-"], "mclwb">, Group<m_x86_Features_Group>; 2944def mno_clwb : Flag<["-"], "mno-clwb">, Group<m_x86_Features_Group>; 2945def mwbnoinvd : Flag<["-"], "mwbnoinvd">, Group<m_x86_Features_Group>; 2946def mno_wbnoinvd : Flag<["-"], "mno-wbnoinvd">, Group<m_x86_Features_Group>; 2947def mclzero : Flag<["-"], "mclzero">, Group<m_x86_Features_Group>; 2948def mno_clzero : Flag<["-"], "mno-clzero">, Group<m_x86_Features_Group>; 2949def mcx16 : Flag<["-"], "mcx16">, Group<m_x86_Features_Group>; 2950def mno_cx16 : Flag<["-"], "mno-cx16">, Group<m_x86_Features_Group>; 2951def menqcmd : Flag<["-"], "menqcmd">, Group<m_x86_Features_Group>; 2952def mno_enqcmd : Flag<["-"], "mno-enqcmd">, Group<m_x86_Features_Group>; 2953def mf16c : Flag<["-"], "mf16c">, Group<m_x86_Features_Group>; 2954def mno_f16c : Flag<["-"], "mno-f16c">, Group<m_x86_Features_Group>; 2955def mfma : Flag<["-"], "mfma">, Group<m_x86_Features_Group>; 2956def mno_fma : Flag<["-"], "mno-fma">, Group<m_x86_Features_Group>; 2957def mfma4 : Flag<["-"], "mfma4">, Group<m_x86_Features_Group>; 2958def mno_fma4 : Flag<["-"], "mno-fma4">, Group<m_x86_Features_Group>; 2959def mfsgsbase : Flag<["-"], "mfsgsbase">, Group<m_x86_Features_Group>; 2960def mno_fsgsbase : Flag<["-"], "mno-fsgsbase">, Group<m_x86_Features_Group>; 2961def mfxsr : Flag<["-"], "mfxsr">, Group<m_x86_Features_Group>; 2962def mno_fxsr : Flag<["-"], "mno-fxsr">, Group<m_x86_Features_Group>; 2963def minvpcid : Flag<["-"], "minvpcid">, Group<m_x86_Features_Group>; 2964def mno_invpcid : Flag<["-"], "mno-invpcid">, Group<m_x86_Features_Group>; 2965def mgfni : Flag<["-"], "mgfni">, Group<m_x86_Features_Group>; 2966def mno_gfni : Flag<["-"], "mno-gfni">, Group<m_x86_Features_Group>; 2967def mlwp : Flag<["-"], "mlwp">, Group<m_x86_Features_Group>; 2968def mno_lwp : Flag<["-"], "mno-lwp">, Group<m_x86_Features_Group>; 2969def mlzcnt : Flag<["-"], "mlzcnt">, Group<m_x86_Features_Group>; 2970def mno_lzcnt : Flag<["-"], "mno-lzcnt">, Group<m_x86_Features_Group>; 2971def mmovbe : Flag<["-"], "mmovbe">, Group<m_x86_Features_Group>; 2972def mno_movbe : Flag<["-"], "mno-movbe">, Group<m_x86_Features_Group>; 2973def mmovdiri : Flag<["-"], "mmovdiri">, Group<m_x86_Features_Group>; 2974def mno_movdiri : Flag<["-"], "mno-movdiri">, Group<m_x86_Features_Group>; 2975def mmovdir64b : Flag<["-"], "mmovdir64b">, Group<m_x86_Features_Group>; 2976def mno_movdir64b : Flag<["-"], "mno-movdir64b">, Group<m_x86_Features_Group>; 2977def mmpx : Flag<["-"], "mmpx">, Group<m_x86_Features_Group>; 2978def mno_mpx : Flag<["-"], "mno-mpx">, Group<m_x86_Features_Group>; 2979def mmwaitx : Flag<["-"], "mmwaitx">, Group<m_x86_Features_Group>; 2980def mno_mwaitx : Flag<["-"], "mno-mwaitx">, Group<m_x86_Features_Group>; 2981def mpku : Flag<["-"], "mpku">, Group<m_x86_Features_Group>; 2982def mno_pku : Flag<["-"], "mno-pku">, Group<m_x86_Features_Group>; 2983def mpclmul : Flag<["-"], "mpclmul">, Group<m_x86_Features_Group>; 2984def mno_pclmul : Flag<["-"], "mno-pclmul">, Group<m_x86_Features_Group>; 2985def mpconfig : Flag<["-"], "mpconfig">, Group<m_x86_Features_Group>; 2986def mno_pconfig : Flag<["-"], "mno-pconfig">, Group<m_x86_Features_Group>; 2987def mpopcnt : Flag<["-"], "mpopcnt">, Group<m_x86_Features_Group>; 2988def mno_popcnt : Flag<["-"], "mno-popcnt">, Group<m_x86_Features_Group>; 2989def mprefetchwt1 : Flag<["-"], "mprefetchwt1">, Group<m_x86_Features_Group>; 2990def mno_prefetchwt1 : Flag<["-"], "mno-prefetchwt1">, Group<m_x86_Features_Group>; 2991def mprfchw : Flag<["-"], "mprfchw">, Group<m_x86_Features_Group>; 2992def mno_prfchw : Flag<["-"], "mno-prfchw">, Group<m_x86_Features_Group>; 2993def mptwrite : Flag<["-"], "mptwrite">, Group<m_x86_Features_Group>; 2994def mno_ptwrite : Flag<["-"], "mno-ptwrite">, Group<m_x86_Features_Group>; 2995def mrdpid : Flag<["-"], "mrdpid">, Group<m_x86_Features_Group>; 2996def mno_rdpid : Flag<["-"], "mno-rdpid">, Group<m_x86_Features_Group>; 2997def mrdrnd : Flag<["-"], "mrdrnd">, Group<m_x86_Features_Group>; 2998def mno_rdrnd : Flag<["-"], "mno-rdrnd">, Group<m_x86_Features_Group>; 2999def mrtm : Flag<["-"], "mrtm">, Group<m_x86_Features_Group>; 3000def mno_rtm : Flag<["-"], "mno-rtm">, Group<m_x86_Features_Group>; 3001def mrdseed : Flag<["-"], "mrdseed">, Group<m_x86_Features_Group>; 3002def mno_rdseed : Flag<["-"], "mno-rdseed">, Group<m_x86_Features_Group>; 3003def msahf : Flag<["-"], "msahf">, Group<m_x86_Features_Group>; 3004def mno_sahf : Flag<["-"], "mno-sahf">, Group<m_x86_Features_Group>; 3005def msgx : Flag<["-"], "msgx">, Group<m_x86_Features_Group>; 3006def mno_sgx : Flag<["-"], "mno-sgx">, Group<m_x86_Features_Group>; 3007def msha : Flag<["-"], "msha">, Group<m_x86_Features_Group>; 3008def mno_sha : Flag<["-"], "mno-sha">, Group<m_x86_Features_Group>; 3009def mtbm : Flag<["-"], "mtbm">, Group<m_x86_Features_Group>; 3010def mno_tbm : Flag<["-"], "mno-tbm">, Group<m_x86_Features_Group>; 3011def mvaes : Flag<["-"], "mvaes">, Group<m_x86_Features_Group>; 3012def mno_vaes : Flag<["-"], "mno-vaes">, Group<m_x86_Features_Group>; 3013def mvpclmulqdq : Flag<["-"], "mvpclmulqdq">, Group<m_x86_Features_Group>; 3014def mno_vpclmulqdq : Flag<["-"], "mno-vpclmulqdq">, Group<m_x86_Features_Group>; 3015def mwaitpkg : Flag<["-"], "mwaitpkg">, Group<m_x86_Features_Group>; 3016def mno_waitpkg : Flag<["-"], "mno-waitpkg">, Group<m_x86_Features_Group>; 3017def mxop : Flag<["-"], "mxop">, Group<m_x86_Features_Group>; 3018def mno_xop : Flag<["-"], "mno-xop">, Group<m_x86_Features_Group>; 3019def mxsave : Flag<["-"], "mxsave">, Group<m_x86_Features_Group>; 3020def mno_xsave : Flag<["-"], "mno-xsave">, Group<m_x86_Features_Group>; 3021def mxsavec : Flag<["-"], "mxsavec">, Group<m_x86_Features_Group>; 3022def mno_xsavec : Flag<["-"], "mno-xsavec">, Group<m_x86_Features_Group>; 3023def mxsaveopt : Flag<["-"], "mxsaveopt">, Group<m_x86_Features_Group>; 3024def mno_xsaveopt : Flag<["-"], "mno-xsaveopt">, Group<m_x86_Features_Group>; 3025def mxsaves : Flag<["-"], "mxsaves">, Group<m_x86_Features_Group>; 3026def mno_xsaves : Flag<["-"], "mno-xsaves">, Group<m_x86_Features_Group>; 3027def mshstk : Flag<["-"], "mshstk">, Group<m_x86_Features_Group>; 3028def mno_shstk : Flag<["-"], "mno-shstk">, Group<m_x86_Features_Group>; 3029def mretpoline_external_thunk : Flag<["-"], "mretpoline-external-thunk">, Group<m_x86_Features_Group>; 3030def mno_retpoline_external_thunk : Flag<["-"], "mno-retpoline-external-thunk">, Group<m_x86_Features_Group>; 3031 3032// These are legacy user-facing driver-level option spellings. They are always 3033// aliases for options that are spelled using the more common Unix / GNU flag 3034// style of double-dash and equals-joined flags. 3035def gcc_toolchain_legacy_spelling : Separate<["-"], "gcc-toolchain">, Alias<gcc_toolchain>; 3036def target_legacy_spelling : Separate<["-"], "target">, Alias<target>; 3037 3038// Special internal option to handle -Xlinker --no-demangle. 3039def Z_Xlinker__no_demangle : Flag<["-"], "Z-Xlinker-no-demangle">, 3040 Flags<[Unsupported, NoArgumentUnused]>; 3041 3042// Special internal option to allow forwarding arbitrary arguments to linker. 3043def Zlinker_input : Separate<["-"], "Zlinker-input">, 3044 Flags<[Unsupported, NoArgumentUnused]>; 3045 3046// Reserved library options. 3047def Z_reserved_lib_stdcxx : Flag<["-"], "Z-reserved-lib-stdc++">, 3048 Flags<[LinkerInput, NoArgumentUnused, Unsupported]>, Group<reserved_lib_Group>; 3049def Z_reserved_lib_cckext : Flag<["-"], "Z-reserved-lib-cckext">, 3050 Flags<[LinkerInput, NoArgumentUnused, Unsupported]>, Group<reserved_lib_Group>; 3051 3052// Ignored options 3053// FIXME: multiclasess produce suffixes, not prefixes. This is fine for now 3054// since it is only used in ignored options. 3055multiclass BooleanFFlag<string name> { 3056 def _f : Flag<["-"], "f"#name>; 3057 def _fno : Flag<["-"], "fno-"#name>; 3058} 3059 3060defm : BooleanFFlag<"keep-inline-functions">, Group<clang_ignored_gcc_optimization_f_Group>; 3061 3062def fprofile_dir : Joined<["-"], "fprofile-dir=">, Group<f_Group>; 3063 3064def fuse_ld_EQ : Joined<["-"], "fuse-ld=">, Group<f_Group>, Flags<[CoreOption]>; 3065 3066defm align_labels : BooleanFFlag<"align-labels">, Group<clang_ignored_gcc_optimization_f_Group>; 3067def falign_labels_EQ : Joined<["-"], "falign-labels=">, Group<clang_ignored_gcc_optimization_f_Group>; 3068defm align_loops : BooleanFFlag<"align-loops">, Group<clang_ignored_gcc_optimization_f_Group>; 3069def falign_loops_EQ : Joined<["-"], "falign-loops=">, Group<clang_ignored_gcc_optimization_f_Group>; 3070defm align_jumps : BooleanFFlag<"align-jumps">, Group<clang_ignored_gcc_optimization_f_Group>; 3071def falign_jumps_EQ : Joined<["-"], "falign-jumps=">, Group<clang_ignored_gcc_optimization_f_Group>; 3072 3073// FIXME: This option should be supported and wired up to our diognostics, but 3074// ignore it for now to avoid breaking builds that use it. 3075def fdiagnostics_show_location_EQ : Joined<["-"], "fdiagnostics-show-location=">, Group<clang_ignored_f_Group>; 3076 3077defm fcheck_new : BooleanFFlag<"check-new">, Group<clang_ignored_f_Group>; 3078defm caller_saves : BooleanFFlag<"caller-saves">, Group<clang_ignored_gcc_optimization_f_Group>; 3079defm reorder_blocks : BooleanFFlag<"reorder-blocks">, Group<clang_ignored_gcc_optimization_f_Group>; 3080defm eliminate_unused_debug_types : BooleanFFlag<"eliminate-unused-debug-types">, Group<clang_ignored_f_Group>; 3081defm branch_count_reg : BooleanFFlag<"branch-count-reg">, Group<clang_ignored_gcc_optimization_f_Group>; 3082defm default_inline : BooleanFFlag<"default-inline">, Group<clang_ignored_gcc_optimization_f_Group>; 3083defm fat_lto_objects : BooleanFFlag<"fat-lto-objects">, Group<clang_ignored_gcc_optimization_f_Group>; 3084defm float_store : BooleanFFlag<"float-store">, Group<clang_ignored_gcc_optimization_f_Group>; 3085defm friend_injection : BooleanFFlag<"friend-injection">, Group<clang_ignored_f_Group>; 3086defm function_attribute_list : BooleanFFlag<"function-attribute-list">, Group<clang_ignored_f_Group>; 3087defm gcse : BooleanFFlag<"gcse">, Group<clang_ignored_gcc_optimization_f_Group>; 3088defm gcse_after_reload: BooleanFFlag<"gcse-after-reload">, Group<clang_ignored_gcc_optimization_f_Group>; 3089defm gcse_las: BooleanFFlag<"gcse-las">, Group<clang_ignored_gcc_optimization_f_Group>; 3090defm gcse_sm: BooleanFFlag<"gcse-sm">, Group<clang_ignored_gcc_optimization_f_Group>; 3091defm gnu : BooleanFFlag<"gnu">, Group<clang_ignored_f_Group>; 3092defm implicit_templates : BooleanFFlag<"implicit-templates">, Group<clang_ignored_f_Group>; 3093defm implement_inlines : BooleanFFlag<"implement-inlines">, Group<clang_ignored_f_Group>; 3094defm merge_constants : BooleanFFlag<"merge-constants">, Group<clang_ignored_gcc_optimization_f_Group>; 3095defm modulo_sched : BooleanFFlag<"modulo-sched">, Group<clang_ignored_gcc_optimization_f_Group>; 3096defm modulo_sched_allow_regmoves : BooleanFFlag<"modulo-sched-allow-regmoves">, 3097 Group<clang_ignored_gcc_optimization_f_Group>; 3098defm inline_functions_called_once : BooleanFFlag<"inline-functions-called-once">, 3099 Group<clang_ignored_gcc_optimization_f_Group>; 3100def finline_limit_EQ : Joined<["-"], "finline-limit=">, Group<clang_ignored_gcc_optimization_f_Group>; 3101defm finline_limit : BooleanFFlag<"inline-limit">, Group<clang_ignored_gcc_optimization_f_Group>; 3102defm inline_small_functions : BooleanFFlag<"inline-small-functions">, 3103 Group<clang_ignored_gcc_optimization_f_Group>; 3104defm ipa_cp : BooleanFFlag<"ipa-cp">, 3105 Group<clang_ignored_gcc_optimization_f_Group>; 3106defm ivopts : BooleanFFlag<"ivopts">, Group<clang_ignored_gcc_optimization_f_Group>; 3107defm non_call_exceptions : BooleanFFlag<"non-call-exceptions">, Group<clang_ignored_f_Group>; 3108defm peel_loops : BooleanFFlag<"peel-loops">, Group<clang_ignored_gcc_optimization_f_Group>; 3109defm permissive : BooleanFFlag<"permissive">, Group<clang_ignored_f_Group>; 3110defm prefetch_loop_arrays : BooleanFFlag<"prefetch-loop-arrays">, Group<clang_ignored_gcc_optimization_f_Group>; 3111defm printf : BooleanFFlag<"printf">, Group<clang_ignored_f_Group>; 3112defm profile : BooleanFFlag<"profile">, Group<clang_ignored_f_Group>; 3113defm profile_correction : BooleanFFlag<"profile-correction">, Group<clang_ignored_gcc_optimization_f_Group>; 3114defm profile_generate_sampling : BooleanFFlag<"profile-generate-sampling">, Group<clang_ignored_f_Group>; 3115defm profile_reusedist : BooleanFFlag<"profile-reusedist">, Group<clang_ignored_f_Group>; 3116defm profile_values : BooleanFFlag<"profile-values">, Group<clang_ignored_gcc_optimization_f_Group>; 3117defm regs_graph : BooleanFFlag<"regs-graph">, Group<clang_ignored_f_Group>; 3118defm rename_registers : BooleanFFlag<"rename-registers">, Group<clang_ignored_gcc_optimization_f_Group>; 3119defm ripa : BooleanFFlag<"ripa">, Group<clang_ignored_f_Group>; 3120defm rounding_math : BooleanFFlag<"rounding-math">, Group<clang_ignored_gcc_optimization_f_Group>; 3121defm schedule_insns : BooleanFFlag<"schedule-insns">, Group<clang_ignored_gcc_optimization_f_Group>; 3122defm schedule_insns2 : BooleanFFlag<"schedule-insns2">, Group<clang_ignored_gcc_optimization_f_Group>; 3123defm see : BooleanFFlag<"see">, Group<clang_ignored_f_Group>; 3124defm signaling_nans : BooleanFFlag<"signaling-nans">, Group<clang_ignored_gcc_optimization_f_Group>; 3125defm single_precision_constant : BooleanFFlag<"single-precision-constant">, 3126 Group<clang_ignored_gcc_optimization_f_Group>; 3127defm spec_constr_count : BooleanFFlag<"spec-constr-count">, Group<clang_ignored_f_Group>; 3128defm stack_check : BooleanFFlag<"stack-check">, Group<clang_ignored_f_Group>; 3129defm strength_reduce : 3130 BooleanFFlag<"strength-reduce">, Group<clang_ignored_gcc_optimization_f_Group>; 3131defm tls_model : BooleanFFlag<"tls-model">, Group<clang_ignored_f_Group>; 3132defm tracer : BooleanFFlag<"tracer">, Group<clang_ignored_gcc_optimization_f_Group>; 3133defm tree_dce : BooleanFFlag<"tree-dce">, Group<clang_ignored_gcc_optimization_f_Group>; 3134defm tree_loop_im : BooleanFFlag<"tree_loop_im">, Group<clang_ignored_gcc_optimization_f_Group>; 3135defm tree_loop_ivcanon : BooleanFFlag<"tree_loop_ivcanon">, Group<clang_ignored_gcc_optimization_f_Group>; 3136defm tree_loop_linear : BooleanFFlag<"tree_loop_linear">, Group<clang_ignored_gcc_optimization_f_Group>; 3137defm tree_salias : BooleanFFlag<"tree-salias">, Group<clang_ignored_f_Group>; 3138defm tree_ter : BooleanFFlag<"tree-ter">, Group<clang_ignored_gcc_optimization_f_Group>; 3139defm tree_vectorizer_verbose : BooleanFFlag<"tree-vectorizer-verbose">, Group<clang_ignored_f_Group>; 3140defm tree_vrp : BooleanFFlag<"tree-vrp">, Group<clang_ignored_gcc_optimization_f_Group>; 3141defm unroll_all_loops : BooleanFFlag<"unroll-all-loops">, Group<clang_ignored_gcc_optimization_f_Group>; 3142defm unsafe_loop_optimizations : BooleanFFlag<"unsafe-loop-optimizations">, 3143 Group<clang_ignored_gcc_optimization_f_Group>; 3144defm unswitch_loops : BooleanFFlag<"unswitch-loops">, Group<clang_ignored_gcc_optimization_f_Group>; 3145defm use_linker_plugin : BooleanFFlag<"use-linker-plugin">, Group<clang_ignored_gcc_optimization_f_Group>; 3146defm vect_cost_model : BooleanFFlag<"vect-cost-model">, Group<clang_ignored_gcc_optimization_f_Group>; 3147defm variable_expansion_in_unroller : BooleanFFlag<"variable-expansion-in-unroller">, 3148 Group<clang_ignored_gcc_optimization_f_Group>; 3149defm web : BooleanFFlag<"web">, Group<clang_ignored_gcc_optimization_f_Group>; 3150defm whole_program : BooleanFFlag<"whole-program">, Group<clang_ignored_gcc_optimization_f_Group>; 3151defm devirtualize : BooleanFFlag<"devirtualize">, Group<clang_ignored_gcc_optimization_f_Group>; 3152defm devirtualize_speculatively : BooleanFFlag<"devirtualize-speculatively">, 3153 Group<clang_ignored_gcc_optimization_f_Group>; 3154 3155// Generic gfortran options. 3156def A_DASH : Joined<["-"], "A-">, Group<gfortran_Group>; 3157def J : JoinedOrSeparate<["-"], "J">, Flags<[RenderJoined]>, Group<gfortran_Group>; 3158def cpp : Flag<["-"], "cpp">, Group<gfortran_Group>; 3159def nocpp : Flag<["-"], "nocpp">, Group<gfortran_Group>; 3160def static_libgfortran : Flag<["-"], "static-libgfortran">, Group<gfortran_Group>; 3161 3162// "f" options with values for gfortran. 3163def fblas_matmul_limit_EQ : Joined<["-"], "fblas-matmul-limit=">, Group<gfortran_Group>; 3164def fcheck_EQ : Joined<["-"], "fcheck=">, Group<gfortran_Group>; 3165def fcoarray_EQ : Joined<["-"], "fcoarray=">, Group<gfortran_Group>; 3166def fconvert_EQ : Joined<["-"], "fconvert=">, Group<gfortran_Group>; 3167def ffixed_line_length_VALUE : Joined<["-"], "ffixed-line-length-">, Group<gfortran_Group>; 3168def ffpe_trap_EQ : Joined<["-"], "ffpe-trap=">, Group<gfortran_Group>; 3169def ffree_line_length_VALUE : Joined<["-"], "ffree-line-length-">, Group<gfortran_Group>; 3170def finit_character_EQ : Joined<["-"], "finit-character=">, Group<gfortran_Group>; 3171def finit_integer_EQ : Joined<["-"], "finit-integer=">, Group<gfortran_Group>; 3172def finit_logical_EQ : Joined<["-"], "finit-logical=">, Group<gfortran_Group>; 3173def finit_real_EQ : Joined<["-"], "finit-real=">, Group<gfortran_Group>; 3174def fmax_array_constructor_EQ : Joined<["-"], "fmax-array-constructor=">, Group<gfortran_Group>; 3175def fmax_errors_EQ : Joined<["-"], "fmax-errors=">, Group<gfortran_Group>; 3176def fmax_stack_var_size_EQ : Joined<["-"], "fmax-stack-var-size=">, Group<gfortran_Group>; 3177def fmax_subrecord_length_EQ : Joined<["-"], "fmax-subrecord-length=">, Group<gfortran_Group>; 3178def frecord_marker_EQ : Joined<["-"], "frecord-marker=">, Group<gfortran_Group>; 3179 3180// "f" flags for gfortran. 3181defm aggressive_function_elimination : BooleanFFlag<"aggressive-function-elimination">, Group<gfortran_Group>; 3182defm align_commons : BooleanFFlag<"align-commons">, Group<gfortran_Group>; 3183defm all_intrinsics : BooleanFFlag<"all-intrinsics">, Group<gfortran_Group>; 3184defm automatic : BooleanFFlag<"automatic">, Group<gfortran_Group>; 3185defm backslash : BooleanFFlag<"backslash">, Group<gfortran_Group>; 3186defm backtrace : BooleanFFlag<"backtrace">, Group<gfortran_Group>; 3187defm bounds_check : BooleanFFlag<"bounds-check">, Group<gfortran_Group>; 3188defm check_array_temporaries : BooleanFFlag<"check-array-temporaries">, Group<gfortran_Group>; 3189defm cray_pointer : BooleanFFlag<"cray-pointer">, Group<gfortran_Group>; 3190defm d_lines_as_code : BooleanFFlag<"d-lines-as-code">, Group<gfortran_Group>; 3191defm d_lines_as_comments : BooleanFFlag<"d-lines-as-comments">, Group<gfortran_Group>; 3192defm default_double_8 : BooleanFFlag<"default-double-8">, Group<gfortran_Group>; 3193defm default_integer_8 : BooleanFFlag<"default-integer-8">, Group<gfortran_Group>; 3194defm default_real_8 : BooleanFFlag<"default-real-8">, Group<gfortran_Group>; 3195defm dollar_ok : BooleanFFlag<"dollar-ok">, Group<gfortran_Group>; 3196defm dump_fortran_optimized : BooleanFFlag<"dump-fortran-optimized">, Group<gfortran_Group>; 3197defm dump_fortran_original : BooleanFFlag<"dump-fortran-original">, Group<gfortran_Group>; 3198defm dump_parse_tree : BooleanFFlag<"dump-parse-tree">, Group<gfortran_Group>; 3199defm external_blas : BooleanFFlag<"external-blas">, Group<gfortran_Group>; 3200defm f2c : BooleanFFlag<"f2c">, Group<gfortran_Group>; 3201defm fixed_form : BooleanFFlag<"fixed-form">, Group<gfortran_Group>; 3202defm free_form : BooleanFFlag<"free-form">, Group<gfortran_Group>; 3203defm frontend_optimize : BooleanFFlag<"frontend-optimize">, Group<gfortran_Group>; 3204defm implicit_none : BooleanFFlag<"implicit-none">, Group<gfortran_Group>; 3205defm init_local_zero : BooleanFFlag<"init-local-zero">, Group<gfortran_Group>; 3206defm integer_4_integer_8 : BooleanFFlag<"integer-4-integer-8">, Group<gfortran_Group>; 3207defm intrinsic_modules_path : BooleanFFlag<"intrinsic-modules-path">, Group<gfortran_Group>; 3208defm max_identifier_length : BooleanFFlag<"max-identifier-length">, Group<gfortran_Group>; 3209defm module_private : BooleanFFlag<"module-private">, Group<gfortran_Group>; 3210defm pack_derived : BooleanFFlag<"pack-derived">, Group<gfortran_Group>; 3211defm protect_parens : BooleanFFlag<"protect-parens">, Group<gfortran_Group>; 3212defm range_check : BooleanFFlag<"range-check">, Group<gfortran_Group>; 3213defm real_4_real_10 : BooleanFFlag<"real-4-real-10">, Group<gfortran_Group>; 3214defm real_4_real_16 : BooleanFFlag<"real-4-real-16">, Group<gfortran_Group>; 3215defm real_4_real_8 : BooleanFFlag<"real-4-real-8">, Group<gfortran_Group>; 3216defm real_8_real_10 : BooleanFFlag<"real-8-real-10">, Group<gfortran_Group>; 3217defm real_8_real_16 : BooleanFFlag<"real-8-real-16">, Group<gfortran_Group>; 3218defm real_8_real_4 : BooleanFFlag<"real-8-real-4">, Group<gfortran_Group>; 3219defm realloc_lhs : BooleanFFlag<"realloc-lhs">, Group<gfortran_Group>; 3220defm recursive : BooleanFFlag<"recursive">, Group<gfortran_Group>; 3221defm repack_arrays : BooleanFFlag<"repack-arrays">, Group<gfortran_Group>; 3222defm second_underscore : BooleanFFlag<"second-underscore">, Group<gfortran_Group>; 3223defm sign_zero : BooleanFFlag<"sign-zero">, Group<gfortran_Group>; 3224defm stack_arrays : BooleanFFlag<"stack-arrays">, Group<gfortran_Group>; 3225defm underscoring : BooleanFFlag<"underscoring">, Group<gfortran_Group>; 3226defm whole_file : BooleanFFlag<"whole-file">, Group<gfortran_Group>; 3227 3228 3229include "CC1Options.td" 3230 3231include "CLCompatOptions.td" 3232