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