xref: /dflybsd-src/contrib/gcc-8.0/gcc/common.opt (revision 38fd149817dfbff97799f62fcb70be98c4e32523)
1*38fd1498Szrj; Options for the language- and target-independent parts of the compiler.
2*38fd1498Szrj
3*38fd1498Szrj; Copyright (C) 2003-2018 Free Software Foundation, Inc.
4*38fd1498Szrj;
5*38fd1498Szrj; This file is part of GCC.
6*38fd1498Szrj;
7*38fd1498Szrj; GCC is free software; you can redistribute it and/or modify it under
8*38fd1498Szrj; the terms of the GNU General Public License as published by the Free
9*38fd1498Szrj; Software Foundation; either version 3, or (at your option) any later
10*38fd1498Szrj; version.
11*38fd1498Szrj;
12*38fd1498Szrj; GCC is distributed in the hope that it will be useful, but WITHOUT ANY
13*38fd1498Szrj; WARRANTY; without even the implied warranty of MERCHANTABILITY or
14*38fd1498Szrj; FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
15*38fd1498Szrj; for more details.
16*38fd1498Szrj;
17*38fd1498Szrj; You should have received a copy of the GNU General Public License
18*38fd1498Szrj; along with GCC; see the file COPYING3.  If not see
19*38fd1498Szrj; <http://www.gnu.org/licenses/>.
20*38fd1498Szrj
21*38fd1498Szrj; See the GCC internals manual (options.texi) for a description of this file's format.
22*38fd1498Szrj
23*38fd1498Szrj; Please try to keep this file in ASCII collating order.
24*38fd1498Szrj
25*38fd1498SzrjVariable
26*38fd1498Szrjint target_flags
27*38fd1498Szrj
28*38fd1498SzrjVariable
29*38fd1498Szrjint optimize
30*38fd1498Szrj
31*38fd1498SzrjVariable
32*38fd1498Szrjint optimize_size
33*38fd1498Szrj
34*38fd1498SzrjVariable
35*38fd1498Szrjint optimize_debug
36*38fd1498Szrj
37*38fd1498Szrj; Not used directly to control optimizations, only to save -Ofast
38*38fd1498Szrj; setting for "optimize" attributes.
39*38fd1498SzrjVariable
40*38fd1498Szrjint optimize_fast
41*38fd1498Szrj
42*38fd1498Szrj; True if this is the lto front end.  This is used to disable gimple
43*38fd1498Szrj; generation and lowering passes that are normally run on the output
44*38fd1498Szrj; of a front end.  These passes must be bypassed for lto since they
45*38fd1498Szrj; have already been done before the gimple was written.
46*38fd1498SzrjVariable
47*38fd1498Szrjbool in_lto_p = false
48*38fd1498Szrj
49*38fd1498Szrj; This variable is set to non-0 only by LTO front-end.  1 indicates that
50*38fd1498Szrj; the output produced will be used for incrmeental linking (thus weak symbols
51*38fd1498Szrj; can still be bound).
52*38fd1498SzrjVariable
53*38fd1498Szrjint flag_incremental_link = 0
54*38fd1498Szrj
55*38fd1498Szrj; 0 means straightforward implementation of complex divide acceptable.
56*38fd1498Szrj; 1 means wide ranges of inputs must work for complex divide.
57*38fd1498Szrj; 2 means C99-like requirements for complex multiply and divide.
58*38fd1498SzrjVariable
59*38fd1498Szrjint flag_complex_method = 1
60*38fd1498Szrj
61*38fd1498Szrj; Language specific warning pass for unused results.
62*38fd1498SzrjVariable
63*38fd1498Szrjbool flag_warn_unused_result = false
64*38fd1498Szrj
65*38fd1498SzrjVariable
66*38fd1498Szrjint *param_values
67*38fd1498Szrj
68*38fd1498Szrj; Nonzero if we should write GIMPLE bytecode for link-time optimization.
69*38fd1498SzrjVariable
70*38fd1498Szrjint flag_generate_lto
71*38fd1498Szrj
72*38fd1498Szrj; Nonzero if we should write GIMPLE bytecode for offload compilation.
73*38fd1498SzrjVariable
74*38fd1498Szrjint flag_generate_offload = 0
75*38fd1498Szrj
76*38fd1498Szrj; True to warn about any objects definitions whose size is larger
77*38fd1498Szrj; than N bytes.  Also want about function definitions whose returned
78*38fd1498Szrj; values are larger than N bytes, where N is 'larger_than_size'.
79*38fd1498SzrjVariable
80*38fd1498Szrjbool warn_larger_than
81*38fd1498Szrj
82*38fd1498SzrjVariable
83*38fd1498SzrjHOST_WIDE_INT larger_than_size
84*38fd1498Szrj
85*38fd1498Szrj; True to warn about any function whose frame size is larger
86*38fd1498Szrj; than N bytes.
87*38fd1498SzrjVariable
88*38fd1498Szrjbool warn_frame_larger_than
89*38fd1498Szrj
90*38fd1498SzrjVariable
91*38fd1498SzrjHOST_WIDE_INT frame_larger_than_size
92*38fd1498Szrj
93*38fd1498Szrj; Nonzero means we should be saving declaration info into a .X file.
94*38fd1498SzrjVariable
95*38fd1498Szrjint flag_gen_aux_info = 0
96*38fd1498Szrj
97*38fd1498Szrj; Nonzero if we are compiling code for a shared library, zero for
98*38fd1498Szrj; executable.
99*38fd1498SzrjVariable
100*38fd1498Szrjint flag_shlib
101*38fd1498Szrj
102*38fd1498Szrj; These two are really VEC(char_p,heap) *.
103*38fd1498Szrj
104*38fd1498SzrjVariable
105*38fd1498Szrjvoid *flag_instrument_functions_exclude_functions
106*38fd1498Szrj
107*38fd1498SzrjVariable
108*38fd1498Szrjvoid *flag_instrument_functions_exclude_files
109*38fd1498Szrj
110*38fd1498Szrj; Generic structs (e.g. templates not explicitly specialized)
111*38fd1498Szrj; may not have a compilation unit associated with them, and so
112*38fd1498Szrj; may need to be treated differently from ordinary structs.
113*38fd1498Szrj;
114*38fd1498Szrj; Structs only handled by reference (indirectly), will also usually
115*38fd1498Szrj; not need as much debugging information.
116*38fd1498Szrj
117*38fd1498SzrjVariable
118*38fd1498Szrjenum debug_struct_file debug_struct_ordinary[DINFO_USAGE_NUM_ENUMS] = { DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY }
119*38fd1498Szrj
120*38fd1498SzrjVariable
121*38fd1498Szrjenum debug_struct_file debug_struct_generic[DINFO_USAGE_NUM_ENUMS] = { DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY }
122*38fd1498Szrj
123*38fd1498Szrj; True if we should exit after parsing options.
124*38fd1498SzrjVariable
125*38fd1498Szrjbool exit_after_options
126*38fd1498Szrj
127*38fd1498Szrj; Type(s) of debugging information we are producing (if any).  See
128*38fd1498Szrj; flag-types.h for the definitions of the different possible types of
129*38fd1498Szrj; debugging information.
130*38fd1498SzrjVariable
131*38fd1498Szrjenum debug_info_type write_symbols = NO_DEBUG
132*38fd1498Szrj
133*38fd1498Szrj; Level of debugging information we are producing.  See flag-types.h
134*38fd1498Szrj; for the definitions of the different possible levels.
135*38fd1498SzrjVariable
136*38fd1498Szrjenum debug_info_levels debug_info_level = DINFO_LEVEL_NONE
137*38fd1498Szrj
138*38fd1498Szrj; Nonzero means use GNU-only extensions in the generated symbolic
139*38fd1498Szrj; debugging information.  Currently, this only has an effect when
140*38fd1498Szrj; write_symbols is set to DBX_DEBUG or XCOFF_DEBUG.
141*38fd1498SzrjVariable
142*38fd1498Szrjbool use_gnu_debug_info_extensions
143*38fd1498Szrj
144*38fd1498Szrj; Original value of maximum field alignment in bytes, specified via
145*38fd1498Szrj; -fpack-struct=<value>.
146*38fd1498SzrjVariable
147*38fd1498Szrjunsigned int initial_max_fld_align = TARGET_DEFAULT_PACK_STRUCT
148*38fd1498Szrj
149*38fd1498Szrj; Type of stack check.
150*38fd1498SzrjVariable
151*38fd1498Szrjenum stack_check_type flag_stack_check = NO_STACK_CHECK
152*38fd1498Szrj
153*38fd1498Szrj; True if stack usage information needs to be computed.
154*38fd1498SzrjVariable
155*38fd1498Szrjbool flag_stack_usage_info = false
156*38fd1498Szrj
157*38fd1498Szrj; -dA causes debug commentary information to be produced in
158*38fd1498Szrj; the generated assembly code (to make it more readable).  This option
159*38fd1498Szrj; is generally only of use to those who actually need to read the
160*38fd1498Szrj; generated assembly code (perhaps while debugging the compiler itself).
161*38fd1498Szrj; Currently, this switch is only used by dwarf2out.c; however, it is intended
162*38fd1498Szrj; to be a catchall for printing debug information in the assembler file.
163*38fd1498SzrjVariable
164*38fd1498Szrjint flag_debug_asm
165*38fd1498Szrj
166*38fd1498Szrj; How many NOP insns to place at each function entry by default
167*38fd1498SzrjVariable
168*38fd1498SzrjHOST_WIDE_INT function_entry_patch_area_size
169*38fd1498Szrj
170*38fd1498Szrj; And how far the real asm entry point is into this area
171*38fd1498SzrjVariable
172*38fd1498SzrjHOST_WIDE_INT function_entry_patch_area_start
173*38fd1498Szrj
174*38fd1498Szrj; Balance between GNAT encodings and standard DWARF to emit.
175*38fd1498SzrjVariable
176*38fd1498Szrjenum dwarf_gnat_encodings gnat_encodings = DWARF_GNAT_ENCODINGS_DEFAULT
177*38fd1498Szrj
178*38fd1498Szrj; -dP causes the rtl to be emitted as a comment in assembly.
179*38fd1498SzrjVariable
180*38fd1498Szrjint flag_dump_rtl_in_asm
181*38fd1498Szrj
182*38fd1498Szrj; Whether -da was passed (used only in handle_common_deferred_options).
183*38fd1498SzrjVariable
184*38fd1498Szrjbool flag_dump_all_passed
185*38fd1498Szrj
186*38fd1498Szrj; Other flags saying which kinds of debugging dump have been requested.
187*38fd1498Szrj
188*38fd1498SzrjVariable
189*38fd1498Szrjint rtl_dump_and_exit
190*38fd1498Szrj
191*38fd1498SzrjVariable
192*38fd1498Szrjint flag_print_asm_name
193*38fd1498Szrj
194*38fd1498Szrj; Name of top-level original source file (what was input to cpp).
195*38fd1498Szrj; This comes from the #-command at the beginning of the actual input.
196*38fd1498Szrj; If there isn't any there, then this is the cc1 input file name.
197*38fd1498SzrjVariable
198*38fd1498Szrjconst char *main_input_filename
199*38fd1498Szrj
200*38fd1498Szrj; Pointer to base name in main_input_filename, with directories and a
201*38fd1498Szrj; single final extension removed, and the length of this base
202*38fd1498Szrj; name.
203*38fd1498Szrj
204*38fd1498SzrjVariable
205*38fd1498Szrjconst char *main_input_basename
206*38fd1498Szrj
207*38fd1498SzrjVariable
208*38fd1498Szrjint main_input_baselength
209*38fd1498Szrj
210*38fd1498Szrj; Which options have been printed by --help.
211*38fd1498SzrjVariable
212*38fd1498Szrjchar *help_printed
213*38fd1498Szrj
214*38fd1498Szrj; Which enums have been printed by --help.  0 = not printed, no
215*38fd1498Szrj; relevant options seen, 1 = relevant option seen, not yet printed, 2
216*38fd1498Szrj; = printed.
217*38fd1498SzrjVariable
218*38fd1498Szrjchar *help_enum_printed
219*38fd1498Szrj
220*38fd1498Szrj; The number of columns for --help output.
221*38fd1498SzrjVariable
222*38fd1498Szrjunsigned int help_columns
223*38fd1498Szrj
224*38fd1498Szrj; Whether this options structure has been through finish_options
225*38fd1498SzrjVariable
226*38fd1498Szrjbool flag_opts_finished
227*38fd1498Szrj
228*38fd1498Szrj; What the sanitizer should instrument
229*38fd1498SzrjVariable
230*38fd1498Szrjunsigned int flag_sanitize
231*38fd1498Szrj
232*38fd1498Szrj; What sanitizers should recover from errors
233*38fd1498SzrjVariable
234*38fd1498Szrjunsigned int flag_sanitize_recover = (SANITIZE_UNDEFINED | SANITIZE_UNDEFINED_NONDEFAULT | SANITIZE_KERNEL_ADDRESS) & ~(SANITIZE_UNREACHABLE | SANITIZE_RETURN)
235*38fd1498Szrj
236*38fd1498Szrj; What the coverage sanitizers should instrument
237*38fd1498SzrjVariable
238*38fd1498Szrjunsigned int flag_sanitize_coverage
239*38fd1498Szrj
240*38fd1498Szrj; Flag whether a prefix has been added to dump_base_name
241*38fd1498SzrjVariable
242*38fd1498Szrjbool dump_base_name_prefixed = false
243*38fd1498Szrj
244*38fd1498Szrj; Flag whether HSA generation has been explicitely disabled
245*38fd1498SzrjVariable
246*38fd1498Szrjbool flag_disable_hsa = false
247*38fd1498Szrj
248*38fd1498Szrj###
249*38fd1498SzrjDriver
250*38fd1498Szrj
251*38fd1498Szrj-assemble
252*38fd1498SzrjDriver Alias(S)
253*38fd1498Szrj
254*38fd1498Szrj-compile
255*38fd1498SzrjDriver Alias(c)
256*38fd1498Szrj
257*38fd1498Szrj-coverage
258*38fd1498SzrjDriver Alias(coverage)
259*38fd1498Szrj
260*38fd1498Szrj-debug
261*38fd1498SzrjCommon Alias(g)
262*38fd1498Szrj
263*38fd1498Szrj-dump
264*38fd1498SzrjCommon Separate Alias(d)
265*38fd1498Szrj
266*38fd1498Szrj-dump=
267*38fd1498SzrjCommon Joined Alias(d)
268*38fd1498Szrj
269*38fd1498Szrj-dumpbase
270*38fd1498SzrjCommon Separate Alias(dumpbase)
271*38fd1498Szrj
272*38fd1498Szrj-dumpdir
273*38fd1498SzrjCommon Separate Alias(dumpdir)
274*38fd1498Szrj
275*38fd1498Szrj-entry
276*38fd1498SzrjDriver Separate Alias(e)
277*38fd1498Szrj
278*38fd1498Szrj-entry=
279*38fd1498SzrjDriver Joined Alias(e)
280*38fd1498Szrj
281*38fd1498Szrj-extra-warnings
282*38fd1498SzrjCommon Warning Alias(Wextra)
283*38fd1498Szrj
284*38fd1498Szrj-for-assembler
285*38fd1498SzrjDriver Separate Alias(Xassembler)
286*38fd1498Szrj
287*38fd1498Szrj-for-assembler=
288*38fd1498SzrjDriver JoinedOrMissing Alias(Xassembler)
289*38fd1498Szrj
290*38fd1498Szrj-for-linker
291*38fd1498SzrjDriver Separate Alias(Xlinker)
292*38fd1498Szrj
293*38fd1498Szrj-for-linker=
294*38fd1498SzrjDriver JoinedOrMissing Alias(Xlinker)
295*38fd1498Szrj
296*38fd1498Szrj-force-link
297*38fd1498SzrjDriver Separate Alias(u)
298*38fd1498Szrj
299*38fd1498Szrj-force-link=
300*38fd1498SzrjDriver Joined Alias(u)
301*38fd1498Szrj
302*38fd1498Szrj-help
303*38fd1498SzrjCommon Driver Var(help_flag)
304*38fd1498SzrjDisplay this information.
305*38fd1498Szrj
306*38fd1498Szrj-help=
307*38fd1498SzrjCommon Driver Report Joined
308*38fd1498Szrj--help=<class>	Display descriptions of a specific class of options.  <class> is one or more of optimizers, target, warnings, undocumented, params.
309*38fd1498Szrj
310*38fd1498Szrj-language
311*38fd1498SzrjDriver Separate Alias(x)
312*38fd1498Szrj
313*38fd1498Szrj-language=
314*38fd1498SzrjDriver Joined Alias(x)
315*38fd1498Szrj
316*38fd1498Szrj-library-directory
317*38fd1498SzrjDriver Separate Alias(L)
318*38fd1498Szrj
319*38fd1498Szrj-library-directory=
320*38fd1498SzrjDriver Joined Alias(L)
321*38fd1498Szrj
322*38fd1498Szrj-no-canonical-prefixes
323*38fd1498SzrjDriver Alias(no-canonical-prefixes)
324*38fd1498Szrj
325*38fd1498Szrj-no-standard-libraries
326*38fd1498SzrjDriver Alias(nostdlib)
327*38fd1498Szrj
328*38fd1498Szrj-no-sysroot-suffix
329*38fd1498SzrjDriver Var(no_sysroot_suffix)
330*38fd1498Szrj
331*38fd1498Szrj-no-warnings
332*38fd1498SzrjCommon Alias(w)
333*38fd1498Szrj
334*38fd1498Szrj-optimize
335*38fd1498SzrjCommon Alias(O)
336*38fd1498Szrj
337*38fd1498Szrj-output
338*38fd1498SzrjCommon Driver Separate Alias(o) MissingArgError(missing filename after %qs)
339*38fd1498Szrj
340*38fd1498Szrj-output=
341*38fd1498SzrjCommon Driver Joined Alias(o) MissingArgError(missing filename after %qs)
342*38fd1498Szrj
343*38fd1498Szrj-pass-exit-codes
344*38fd1498SzrjDriver Alias(pass-exit-codes)
345*38fd1498Szrj
346*38fd1498Szrj-pedantic
347*38fd1498SzrjCommon Alias(Wpedantic)
348*38fd1498Szrj
349*38fd1498Szrj-pedantic-errors
350*38fd1498SzrjCommon Alias(pedantic-errors)
351*38fd1498Szrj
352*38fd1498Szrj-pie
353*38fd1498SzrjDriver Alias(pie)
354*38fd1498Szrj
355*38fd1498Szrj-static-pie
356*38fd1498SzrjDriver Alias(static-pie)
357*38fd1498Szrj
358*38fd1498Szrj-pipe
359*38fd1498SzrjDriver Alias(pipe)
360*38fd1498Szrj
361*38fd1498Szrj-prefix
362*38fd1498SzrjDriver Separate Alias(B)
363*38fd1498Szrj
364*38fd1498Szrj-prefix=
365*38fd1498SzrjDriver JoinedOrMissing Alias(B)
366*38fd1498Szrj
367*38fd1498Szrj-preprocess
368*38fd1498SzrjDriver Alias(E)
369*38fd1498Szrj
370*38fd1498Szrj-print-file-name
371*38fd1498SzrjDriver Separate Alias(print-file-name=)
372*38fd1498Szrj
373*38fd1498Szrj-print-file-name=
374*38fd1498SzrjDriver JoinedOrMissing Alias(print-file-name=)
375*38fd1498Szrj
376*38fd1498Szrj-print-libgcc-file-name
377*38fd1498SzrjDriver Alias(print-libgcc-file-name)
378*38fd1498Szrj
379*38fd1498Szrj-print-multi-directory
380*38fd1498SzrjDriver Alias(print-multi-directory)
381*38fd1498Szrj
382*38fd1498Szrj-print-multi-lib
383*38fd1498SzrjDriver Alias(print-multi-lib)
384*38fd1498Szrj
385*38fd1498Szrj-print-multi-os-directory
386*38fd1498SzrjDriver Alias(print-multi-os-directory)
387*38fd1498Szrj
388*38fd1498Szrj-print-multiarch
389*38fd1498SzrjDriver Alias(print-multiarch)
390*38fd1498Szrj
391*38fd1498Szrj-print-prog-name
392*38fd1498SzrjDriver Separate Alias(print-prog-name=)
393*38fd1498Szrj
394*38fd1498Szrj-print-prog-name=
395*38fd1498SzrjDriver JoinedOrMissing Alias(print-prog-name=)
396*38fd1498Szrj
397*38fd1498Szrj-print-search-dirs
398*38fd1498SzrjDriver Alias(print-search-dirs)
399*38fd1498Szrj
400*38fd1498Szrj-print-sysroot
401*38fd1498SzrjDriver Alias(print-sysroot)
402*38fd1498Szrj
403*38fd1498Szrj-print-sysroot-headers-suffix
404*38fd1498SzrjDriver Alias(print-sysroot-headers-suffix)
405*38fd1498Szrj
406*38fd1498Szrj-profile
407*38fd1498SzrjCommon Alias(p)
408*38fd1498Szrj
409*38fd1498Szrj-save-temps
410*38fd1498SzrjDriver Alias(save-temps)
411*38fd1498Szrj
412*38fd1498Szrj-shared
413*38fd1498SzrjDriver Alias(shared)
414*38fd1498Szrj
415*38fd1498Szrj-specs
416*38fd1498SzrjDriver Separate Alias(specs=)
417*38fd1498Szrj
418*38fd1498Szrj-specs=
419*38fd1498SzrjDriver Joined Alias(specs=)
420*38fd1498Szrj
421*38fd1498Szrj-static
422*38fd1498SzrjDriver Alias(static)
423*38fd1498Szrj
424*38fd1498Szrj-symbolic
425*38fd1498SzrjDriver Alias(symbolic)
426*38fd1498Szrj
427*38fd1498Szrj-target-help
428*38fd1498SzrjCommon Driver
429*38fd1498SzrjAlias for --help=target.
430*38fd1498Szrj
431*38fd1498Szrj-time
432*38fd1498SzrjDriver Alias(time)
433*38fd1498Szrj
434*38fd1498Szrj-verbose
435*38fd1498SzrjDriver Alias(v)
436*38fd1498Szrj
437*38fd1498Szrj;; The driver used to convert options such as --help into forms such
438*38fd1498Szrj;; as -fhelp; the following four entries are for compatibility with
439*38fd1498Szrj;; any direct uses of those (undocumented) -f forms
440*38fd1498Szrjfhelp
441*38fd1498SzrjCommon Driver Alias(-help)
442*38fd1498Szrj
443*38fd1498Szrjfhelp=
444*38fd1498SzrjCommon Driver Joined Alias(-help=)
445*38fd1498Szrj
446*38fd1498Szrjftarget-help
447*38fd1498SzrjCommon Driver Alias(-target-help)
448*38fd1498Szrj
449*38fd1498Szrjfversion
450*38fd1498SzrjCommon Driver Alias(-version)
451*38fd1498Szrj
452*38fd1498Szrj-param
453*38fd1498SzrjCommon Separate
454*38fd1498Szrj--param <param>=<value>	Set parameter <param> to value.  See below for a complete list of parameters.
455*38fd1498Szrj
456*38fd1498Szrj-param=
457*38fd1498SzrjCommon Joined Alias(-param)
458*38fd1498Szrj
459*38fd1498Szrj-sysroot
460*38fd1498SzrjDriver Separate Alias(-sysroot=)
461*38fd1498Szrj
462*38fd1498Szrj-sysroot=
463*38fd1498SzrjDriver JoinedOrMissing
464*38fd1498Szrj
465*38fd1498Szrj-version
466*38fd1498SzrjCommon Driver
467*38fd1498Szrj
468*38fd1498SzrjB
469*38fd1498SzrjDriver Joined Separate
470*38fd1498Szrj
471*38fd1498SzrjE
472*38fd1498SzrjDriver
473*38fd1498Szrj
474*38fd1498SzrjL
475*38fd1498SzrjDriver Joined Separate
476*38fd1498Szrj
477*38fd1498SzrjN
478*38fd1498SzrjDriver
479*38fd1498Szrj
480*38fd1498SzrjO
481*38fd1498SzrjCommon JoinedOrMissing Optimization
482*38fd1498Szrj-O<number>	Set optimization level to <number>.
483*38fd1498Szrj
484*38fd1498SzrjOs
485*38fd1498SzrjCommon Optimization
486*38fd1498SzrjOptimize for space rather than speed.
487*38fd1498Szrj
488*38fd1498SzrjOfast
489*38fd1498SzrjCommon Optimization
490*38fd1498SzrjOptimize for speed disregarding exact standards compliance.
491*38fd1498Szrj
492*38fd1498SzrjOg
493*38fd1498SzrjCommon Optimization
494*38fd1498SzrjOptimize for debugging experience rather than speed or size.
495*38fd1498Szrj
496*38fd1498SzrjQ
497*38fd1498SzrjDriver
498*38fd1498Szrj
499*38fd1498SzrjQn
500*38fd1498SzrjDriver Negative(Qy)
501*38fd1498Szrj
502*38fd1498SzrjQy
503*38fd1498SzrjDriver Negative(Qn)
504*38fd1498Szrj
505*38fd1498SzrjR
506*38fd1498SzrjDriver Joined Separate
507*38fd1498Szrj
508*38fd1498SzrjS
509*38fd1498SzrjDriver
510*38fd1498Szrj
511*38fd1498SzrjT
512*38fd1498SzrjDriver Joined Separate
513*38fd1498Szrj
514*38fd1498SzrjTbss
515*38fd1498SzrjDriver Separate
516*38fd1498Szrj
517*38fd1498SzrjTbss=
518*38fd1498SzrjDriver Joined
519*38fd1498Szrj
520*38fd1498SzrjTdata
521*38fd1498SzrjDriver Separate
522*38fd1498Szrj
523*38fd1498SzrjTdata=
524*38fd1498SzrjDriver Joined
525*38fd1498Szrj
526*38fd1498SzrjTtext
527*38fd1498SzrjDriver Separate
528*38fd1498Szrj
529*38fd1498SzrjTtext=
530*38fd1498SzrjDriver Joined
531*38fd1498Szrj
532*38fd1498SzrjW
533*38fd1498SzrjCommon RejectNegative Warning Alias(Wextra)
534*38fd1498SzrjThis switch is deprecated; use -Wextra instead.
535*38fd1498Szrj
536*38fd1498SzrjWa,
537*38fd1498SzrjDriver JoinedOrMissing RejectNegative
538*38fd1498Szrj
539*38fd1498SzrjWl,
540*38fd1498SzrjDriver JoinedOrMissing RejectNegative
541*38fd1498Szrj
542*38fd1498SzrjWp,
543*38fd1498SzrjDriver JoinedOrMissing RejectNegative
544*38fd1498Szrj
545*38fd1498SzrjWaggregate-return
546*38fd1498SzrjCommon Var(warn_aggregate_return) Warning
547*38fd1498SzrjWarn about returning structures, unions or arrays.
548*38fd1498Szrj
549*38fd1498SzrjWaggressive-loop-optimizations
550*38fd1498SzrjCommon Var(warn_aggressive_loop_optimizations) Init(1) Warning
551*38fd1498SzrjWarn if a loop with constant number of iterations triggers undefined behavior.
552*38fd1498Szrj
553*38fd1498SzrjWarray-bounds
554*38fd1498SzrjCommon Var(warn_array_bounds) Warning
555*38fd1498SzrjWarn if an array is accessed out of bounds.
556*38fd1498Szrj
557*38fd1498SzrjWarray-bounds=
558*38fd1498SzrjCommon Joined RejectNegative UInteger Var(warn_array_bounds) Warning IntegerRange(0, 2)
559*38fd1498SzrjWarn if an array is accessed out of bounds.
560*38fd1498Szrj
561*38fd1498SzrjWattributes
562*38fd1498SzrjCommon Var(warn_attributes) Init(1) Warning
563*38fd1498SzrjWarn about inappropriate attribute usage.
564*38fd1498Szrj
565*38fd1498SzrjWattribute-alias
566*38fd1498SzrjCommon Var(warn_attributes) Init(1) Warning
567*38fd1498SzrjWarn about type safety and similar errors in attribute alias and related.
568*38fd1498Szrj
569*38fd1498SzrjWcast-align
570*38fd1498SzrjCommon Var(warn_cast_align) Warning
571*38fd1498SzrjWarn about pointer casts which increase alignment.
572*38fd1498Szrj
573*38fd1498SzrjWcast-align=strict
574*38fd1498SzrjCommon Var(warn_cast_align,2) Warning
575*38fd1498SzrjWarn about pointer casts which increase alignment.
576*38fd1498Szrj
577*38fd1498SzrjWcpp
578*38fd1498SzrjCommon Var(warn_cpp) Init(1) Warning
579*38fd1498SzrjWarn when a #warning directive is encountered.
580*38fd1498Szrj
581*38fd1498SzrjWdeprecated-declarations
582*38fd1498SzrjCommon Var(warn_deprecated_decl) Init(1) Warning
583*38fd1498SzrjWarn about uses of __attribute__((deprecated)) declarations.
584*38fd1498Szrj
585*38fd1498SzrjWdisabled-optimization
586*38fd1498SzrjCommon Var(warn_disabled_optimization) Warning
587*38fd1498SzrjWarn when an optimization pass is disabled.
588*38fd1498Szrj
589*38fd1498SzrjWerror
590*38fd1498SzrjCommon Var(warnings_are_errors)
591*38fd1498SzrjTreat all warnings as errors.
592*38fd1498Szrj
593*38fd1498SzrjWerror=
594*38fd1498SzrjCommon Joined
595*38fd1498SzrjTreat specified warning as error.
596*38fd1498Szrj
597*38fd1498SzrjWextra
598*38fd1498SzrjCommon Var(extra_warnings) Warning
599*38fd1498SzrjPrint extra (possibly unwanted) warnings.
600*38fd1498Szrj
601*38fd1498SzrjWfatal-errors
602*38fd1498SzrjCommon Var(flag_fatal_errors)
603*38fd1498SzrjExit on the first error occurred.
604*38fd1498Szrj
605*38fd1498SzrjWframe-larger-than=
606*38fd1498SzrjCommon RejectNegative Joined UInteger Warning
607*38fd1498Szrj-Wframe-larger-than=<number>	Warn if a function's stack frame requires more than <number> bytes.
608*38fd1498Szrj
609*38fd1498SzrjWfree-nonheap-object
610*38fd1498SzrjCommon Var(warn_free_nonheap_object) Init(1) Warning
611*38fd1498SzrjWarn when attempting to free a non-heap object.
612*38fd1498Szrj
613*38fd1498SzrjWhsa
614*38fd1498SzrjCommon Var(warn_hsa) Init(1) Warning
615*38fd1498SzrjWarn when a function cannot be expanded to HSAIL.
616*38fd1498Szrj
617*38fd1498SzrjWimplicit-fallthrough
618*38fd1498SzrjCommon Alias(Wimplicit-fallthrough=,3,0) Warning
619*38fd1498Szrj
620*38fd1498SzrjWimplicit-fallthrough=
621*38fd1498SzrjCommon Var(warn_implicit_fallthrough) RejectNegative Joined UInteger Warning IntegerRange(0, 5)
622*38fd1498SzrjWarn when a switch case falls through.
623*38fd1498Szrj
624*38fd1498SzrjWinline
625*38fd1498SzrjCommon Var(warn_inline) Warning
626*38fd1498SzrjWarn when an inlined function cannot be inlined.
627*38fd1498Szrj
628*38fd1498SzrjWinvalid-memory-model
629*38fd1498SzrjCommon Var(warn_invalid_memory_model) Init(1) Warning
630*38fd1498SzrjWarn when an atomic memory model parameter is known to be outside the valid range.
631*38fd1498Szrj
632*38fd1498SzrjWlarger-than-
633*38fd1498SzrjCommon RejectNegative Joined Warning Undocumented Alias(Wlarger-than=)
634*38fd1498Szrj
635*38fd1498SzrjWlarger-than=
636*38fd1498SzrjCommon RejectNegative Joined UInteger Warning
637*38fd1498Szrj-Wlarger-than=<number>	Warn if an object is larger than <number> bytes.
638*38fd1498Szrj
639*38fd1498SzrjWnonnull-compare
640*38fd1498SzrjVar(warn_nonnull_compare) Warning
641*38fd1498SzrjWarn if comparing pointer parameter with nonnull attribute with NULL.
642*38fd1498Szrj
643*38fd1498SzrjWnull-dereference
644*38fd1498SzrjCommon Var(warn_null_dereference) Warning
645*38fd1498SzrjWarn if dereferencing a NULL pointer may lead to erroneous or undefined behavior.
646*38fd1498Szrj
647*38fd1498SzrjWunsafe-loop-optimizations
648*38fd1498SzrjCommon Var(warn_unsafe_loop_optimizations) Warning
649*38fd1498SzrjWarn if the loop cannot be optimized due to nontrivial assumptions.
650*38fd1498Szrj
651*38fd1498SzrjWmissing-noreturn
652*38fd1498SzrjCommon Warning Alias(Wsuggest-attribute=noreturn)
653*38fd1498Szrj
654*38fd1498SzrjWodr
655*38fd1498SzrjCommon Var(warn_odr_violations) Init(1) Warning
656*38fd1498SzrjWarn about some C++ One Definition Rule violations during link time optimization.
657*38fd1498Szrj
658*38fd1498SzrjWoverflow
659*38fd1498SzrjCommon Var(warn_overflow) Init(1) Warning
660*38fd1498SzrjWarn about overflow in arithmetic expressions.
661*38fd1498Szrj
662*38fd1498SzrjWlto-type-mismatch
663*38fd1498SzrjCommon Var(warn_lto_type_mismatch) Init(1) Warning
664*38fd1498SzrjDuring link time optimization warn about mismatched types of global declarations.
665*38fd1498Szrj
666*38fd1498SzrjWpacked
667*38fd1498SzrjCommon Var(warn_packed) Warning
668*38fd1498SzrjWarn when the packed attribute has no effect on struct layout.
669*38fd1498Szrj
670*38fd1498SzrjWpadded
671*38fd1498SzrjCommon Var(warn_padded) Warning
672*38fd1498SzrjWarn when padding is required to align structure members.
673*38fd1498Szrj
674*38fd1498SzrjWpedantic
675*38fd1498SzrjCommon Var(pedantic) Init(0) Warning
676*38fd1498SzrjIssue warnings needed for strict compliance to the standard.
677*38fd1498Szrj
678*38fd1498SzrjWreturn-local-addr
679*38fd1498SzrjCommon Var(warn_return_local_addr) Init(1) Warning
680*38fd1498SzrjWarn about returning a pointer/reference to a local or temporary variable.
681*38fd1498Szrj
682*38fd1498SzrjWshadow
683*38fd1498SzrjCommon Var(warn_shadow) Warning
684*38fd1498SzrjWarn when one variable shadows another.  Same as -Wshadow=global.
685*38fd1498Szrj
686*38fd1498SzrjWshadow=global
687*38fd1498SzrjCommon Warning Alias(Wshadow)
688*38fd1498SzrjWarn when one variable shadows another (globally).
689*38fd1498Szrj
690*38fd1498SzrjWshadow=local
691*38fd1498SzrjCommon Var(warn_shadow_local) Warning EnabledBy(Wshadow)
692*38fd1498SzrjWarn when one local variable shadows another local variable or parameter.
693*38fd1498Szrj
694*38fd1498SzrjWshadow-local
695*38fd1498SzrjCommon Warning Undocumented Alias(Wshadow=local)
696*38fd1498Szrj
697*38fd1498SzrjWshadow=compatible-local
698*38fd1498SzrjCommon Var(warn_shadow_compatible_local) Warning EnabledBy(Wshadow=local)
699*38fd1498SzrjWarn when one local variable shadows another local variable or parameter of compatible type.
700*38fd1498Szrj
701*38fd1498SzrjWshadow-compatible-local
702*38fd1498SzrjCommon Warning Undocumented Alias(Wshadow=compatible-local)
703*38fd1498Szrj
704*38fd1498SzrjWstack-protector
705*38fd1498SzrjCommon Var(warn_stack_protect) Warning
706*38fd1498SzrjWarn when not issuing stack smashing protection for some reason.
707*38fd1498Szrj
708*38fd1498SzrjWstack-usage=
709*38fd1498SzrjCommon Joined RejectNegative UInteger Var(warn_stack_usage) Warning
710*38fd1498Szrj-Wstack-usage=<number>	Warn if stack usage might be larger than specified amount.
711*38fd1498Szrj
712*38fd1498SzrjWstrict-aliasing
713*38fd1498SzrjCommon Warning
714*38fd1498SzrjWarn about code which might break strict aliasing rules.
715*38fd1498Szrj
716*38fd1498SzrjWstrict-aliasing=
717*38fd1498SzrjCommon Joined RejectNegative UInteger Var(warn_strict_aliasing) Warning
718*38fd1498SzrjWarn about code which might break strict aliasing rules.
719*38fd1498Szrj
720*38fd1498SzrjWstrict-overflow
721*38fd1498SzrjCommon Warning
722*38fd1498SzrjWarn about optimizations that assume that signed overflow is undefined.
723*38fd1498Szrj
724*38fd1498SzrjWstrict-overflow=
725*38fd1498SzrjCommon Joined RejectNegative UInteger Var(warn_strict_overflow) Warning
726*38fd1498SzrjWarn about optimizations that assume that signed overflow is undefined.
727*38fd1498Szrj
728*38fd1498SzrjWsuggest-attribute=cold
729*38fd1498SzrjCommon Var(warn_suggest_attribute_cold) Warning
730*38fd1498SzrjWarn about functions which might be candidates for __attribute__((cold)).
731*38fd1498Szrj
732*38fd1498SzrjWsuggest-attribute=const
733*38fd1498SzrjCommon Var(warn_suggest_attribute_const) Warning
734*38fd1498SzrjWarn about functions which might be candidates for __attribute__((const)).
735*38fd1498Szrj
736*38fd1498SzrjWsuggest-attribute=pure
737*38fd1498SzrjCommon Var(warn_suggest_attribute_pure) Warning
738*38fd1498SzrjWarn about functions which might be candidates for __attribute__((pure)).
739*38fd1498Szrj
740*38fd1498SzrjWsuggest-attribute=noreturn
741*38fd1498SzrjCommon Var(warn_suggest_attribute_noreturn) Warning
742*38fd1498SzrjWarn about functions which might be candidates for __attribute__((noreturn)).
743*38fd1498Szrj
744*38fd1498SzrjWsuggest-attribute=malloc
745*38fd1498SzrjCommon Var(warn_suggest_attribute_malloc) Warning
746*38fd1498SzrjWarn about functions which might be candidates for __attribute__((malloc)).
747*38fd1498Szrj
748*38fd1498SzrjWsuggest-final-types
749*38fd1498SzrjCommon Var(warn_suggest_final_types) Warning
750*38fd1498SzrjWarn about C++ polymorphic types where adding final keyword would improve code quality.
751*38fd1498Szrj
752*38fd1498SzrjWsuggest-final-methods
753*38fd1498SzrjCommon Var(warn_suggest_final_methods) Warning
754*38fd1498SzrjWarn about C++ virtual methods where adding final keyword would improve code quality.
755*38fd1498Szrj
756*38fd1498SzrjWswitch-unreachable
757*38fd1498SzrjCommon Var(warn_switch_unreachable) Warning Init(1)
758*38fd1498SzrjWarn about statements between switch's controlling expression and the first
759*38fd1498Szrjcase.
760*38fd1498Szrj
761*38fd1498SzrjWsystem-headers
762*38fd1498SzrjCommon Var(warn_system_headers) Warning
763*38fd1498SzrjDo not suppress warnings from system headers.
764*38fd1498Szrj
765*38fd1498SzrjWtrampolines
766*38fd1498SzrjCommon Var(warn_trampolines) Warning
767*38fd1498SzrjWarn whenever a trampoline is generated.
768*38fd1498Szrj
769*38fd1498SzrjWtype-limits
770*38fd1498SzrjCommon Var(warn_type_limits) Warning EnabledBy(Wextra)
771*38fd1498SzrjWarn if a comparison is always true or always false due to the limited range of the data type.
772*38fd1498Szrj
773*38fd1498SzrjWuninitialized
774*38fd1498SzrjCommon Var(warn_uninitialized) Warning EnabledBy(Wextra)
775*38fd1498SzrjWarn about uninitialized automatic variables.
776*38fd1498Szrj
777*38fd1498SzrjWmaybe-uninitialized
778*38fd1498SzrjCommon Var(warn_maybe_uninitialized) Warning EnabledBy(Wuninitialized)
779*38fd1498SzrjWarn about maybe uninitialized automatic variables.
780*38fd1498Szrj
781*38fd1498SzrjWunreachable-code
782*38fd1498SzrjCommon Ignore Warning
783*38fd1498SzrjDoes nothing. Preserved for backward compatibility.
784*38fd1498Szrj
785*38fd1498SzrjWunused
786*38fd1498SzrjCommon Var(warn_unused) Init(0) Warning
787*38fd1498SzrjEnable all -Wunused- warnings.
788*38fd1498Szrj
789*38fd1498SzrjWunused-but-set-parameter
790*38fd1498SzrjCommon Var(warn_unused_but_set_parameter) Warning EnabledBy(Wunused && Wextra)
791*38fd1498SzrjWarn when a function parameter is only set, otherwise unused.
792*38fd1498Szrj
793*38fd1498SzrjWunused-but-set-variable
794*38fd1498SzrjCommon Var(warn_unused_but_set_variable) Warning EnabledBy(Wunused)
795*38fd1498SzrjWarn when a variable is only set, otherwise unused.
796*38fd1498Szrj
797*38fd1498SzrjWunused-function
798*38fd1498SzrjCommon Var(warn_unused_function) Warning EnabledBy(Wunused)
799*38fd1498SzrjWarn when a function is unused.
800*38fd1498Szrj
801*38fd1498SzrjWunused-label
802*38fd1498SzrjCommon Var(warn_unused_label) Warning EnabledBy(Wunused)
803*38fd1498SzrjWarn when a label is unused.
804*38fd1498Szrj
805*38fd1498SzrjWunused-parameter
806*38fd1498SzrjCommon Var(warn_unused_parameter) Warning EnabledBy(Wunused && Wextra)
807*38fd1498SzrjWarn when a function parameter is unused.
808*38fd1498Szrj
809*38fd1498SzrjWunused-value
810*38fd1498SzrjCommon Var(warn_unused_value) Warning EnabledBy(Wunused)
811*38fd1498SzrjWarn when an expression value is unused.
812*38fd1498Szrj
813*38fd1498SzrjWunused-variable
814*38fd1498SzrjCommon Var(warn_unused_variable) Warning EnabledBy(Wunused)
815*38fd1498SzrjWarn when a variable is unused.
816*38fd1498Szrj
817*38fd1498SzrjWcoverage-mismatch
818*38fd1498SzrjCommon Var(warn_coverage_mismatch) Init(1) Warning
819*38fd1498SzrjWarn in case profiles in -fprofile-use do not match.
820*38fd1498Szrj
821*38fd1498SzrjWvector-operation-performance
822*38fd1498SzrjCommon Var(warn_vector_operation_performance) Warning
823*38fd1498SzrjWarn when a vector operation is compiled outside the SIMD.
824*38fd1498Szrj
825*38fd1498SzrjXassembler
826*38fd1498SzrjDriver Separate
827*38fd1498Szrj
828*38fd1498SzrjXlinker
829*38fd1498SzrjDriver Separate
830*38fd1498Szrj
831*38fd1498SzrjXpreprocessor
832*38fd1498SzrjDriver Separate
833*38fd1498Szrj
834*38fd1498SzrjZ
835*38fd1498SzrjDriver
836*38fd1498Szrj
837*38fd1498Szrjaux-info
838*38fd1498SzrjCommon Separate Var(aux_info_file_name)
839*38fd1498Szrj-aux-info <file>	Emit declaration information into <file>.
840*38fd1498Szrj
841*38fd1498Szrjaux-info=
842*38fd1498SzrjCommon Joined Alias(aux-info)
843*38fd1498Szrj
844*38fd1498Szrjauxbase
845*38fd1498SzrjCommon Separate RejectDriver Var(aux_base_name)
846*38fd1498Szrj
847*38fd1498Szrjauxbase-strip
848*38fd1498SzrjCommon Separate RejectDriver
849*38fd1498Szrj
850*38fd1498Szrjcoverage
851*38fd1498SzrjDriver
852*38fd1498Szrj
853*38fd1498Szrjc
854*38fd1498SzrjDriver
855*38fd1498Szrj
856*38fd1498Szrjd
857*38fd1498SzrjCommon Joined
858*38fd1498Szrj-d<letters>	Enable dumps from specific passes of the compiler.
859*38fd1498Szrj
860*38fd1498Szrjdumpbase
861*38fd1498SzrjCommon Separate Var(dump_base_name)
862*38fd1498Szrj-dumpbase <file>	Set the file basename to be used for dumps.
863*38fd1498Szrj
864*38fd1498Szrjdumpdir
865*38fd1498SzrjCommon Separate Var(dump_dir_name)
866*38fd1498Szrj-dumpdir <dir>	Set the directory name to be used for dumps.
867*38fd1498Szrj
868*38fd1498Szrjdumpmachine
869*38fd1498SzrjDriver
870*38fd1498Szrj
871*38fd1498Szrjdumpspecs
872*38fd1498SzrjDriver
873*38fd1498Szrj
874*38fd1498Szrjdumpversion
875*38fd1498SzrjDriver
876*38fd1498Szrj
877*38fd1498Szrjdumpfullversion
878*38fd1498SzrjDriver
879*38fd1498Szrj
880*38fd1498Szrje
881*38fd1498SzrjDriver Joined Separate
882*38fd1498Szrj
883*38fd1498Szrj; This option has historically been passed down to the linker by an
884*38fd1498Szrj; accident of a %{e*} spec, so ensure it continues to be passed down
885*38fd1498Szrj; as a single option.  The supported option for this purpose is
886*38fd1498Szrj; -rdynamic.  See PR 47390.
887*38fd1498Szrjexport-dynamic
888*38fd1498SzrjDriver Undocumented
889*38fd1498Szrj
890*38fd1498Szrj; The version of the C++ ABI in use.  The following values are allowed:
891*38fd1498Szrj;
892*38fd1498Szrj; 0: The version of the ABI believed most conformant with the C++ ABI
893*38fd1498Szrj;    specification.  This ABI may change as bugs are discovered and fixed.
894*38fd1498Szrj;    Therefore, 0 will not necessarily indicate the same ABI in different
895*38fd1498Szrj;    versions of G++.
896*38fd1498Szrj;
897*38fd1498Szrj; 1: The version of the ABI first used in G++ 3.2.  No longer selectable.
898*38fd1498Szrj;
899*38fd1498Szrj; 2: The version of the ABI first used in G++ 3.4, and the default
900*38fd1498Szrj;    until GCC 4.9.
901*38fd1498Szrj;
902*38fd1498Szrj; 3: The version of the ABI that fixes the missing underscore
903*38fd1498Szrj;    in template non-type arguments of pointer type.
904*38fd1498Szrj;
905*38fd1498Szrj; 4: The version of the ABI that introduces unambiguous mangling of
906*38fd1498Szrj;    vector types.  First selectable in G++ 4.5.
907*38fd1498Szrj;
908*38fd1498Szrj; 5: The version of the ABI that ignores attribute const/noreturn
909*38fd1498Szrj;    in function pointer mangling, and corrects mangling of decltype and
910*38fd1498Szrj;    function parameters used in other parameters and the return type.
911*38fd1498Szrj;    First selectable in G++ 4.6.
912*38fd1498Szrj;
913*38fd1498Szrj; 6: The version of the ABI that doesn't promote scoped enums to int and
914*38fd1498Szrj;    changes the mangling of template argument packs, const/static_cast,
915*38fd1498Szrj;    prefix ++ and --, and a class scope function used as a template
916*38fd1498Szrj;    argument.
917*38fd1498Szrj;    First selectable in G++ 4.7.
918*38fd1498Szrj;
919*38fd1498Szrj; 7: The version of the ABI that treats nullptr_t as a builtin type and
920*38fd1498Szrj;    corrects the mangling of lambdas in default argument scope.
921*38fd1498Szrj;    First selectable in G++ 4.8.
922*38fd1498Szrj;
923*38fd1498Szrj; 8: The version of the ABI that corrects the substitution behavior of
924*38fd1498Szrj;    function types with function-cv-qualifiers.
925*38fd1498Szrj;    First selectable in G++ 4.9 and default in G++ 5.
926*38fd1498Szrj;
927*38fd1498Szrj; 9: The version of the ABI that corrects the alignment of nullptr_t.
928*38fd1498Szrj;    First selectable and default in G++ 5.2.
929*38fd1498Szrj;
930*38fd1498Szrj; 10: The version of the ABI that mangles attributes that affect type
931*38fd1498Szrj;     identity, such as ia32 calling convention attributes (stdcall, etc.)
932*38fd1498Szrj;     Default in G++ 6 (set in c_common_post_options).
933*38fd1498Szrj;
934*38fd1498Szrj; 11: The version of the ABI that corrects mangling of sizeof... expressions
935*38fd1498Szrj;     and introduces new inheriting constructor handling.
936*38fd1498Szrj;     Default in G++ 7.
937*38fd1498Szrj;
938*38fd1498Szrj; 12: Corrects the calling convention for classes with only deleted copy/move
939*38fd1498Szrj;     constructors and changes passing/returning of empty records.
940*38fd1498Szrj;     Default in G++ 8.
941*38fd1498Szrj;
942*38fd1498Szrj; Additional positive integers will be assigned as new versions of
943*38fd1498Szrj; the ABI become the default version of the ABI.
944*38fd1498Szrjfabi-version=
945*38fd1498SzrjCommon Joined RejectNegative UInteger Var(flag_abi_version) Init(0)
946*38fd1498SzrjThe version of the C++ ABI in use.
947*38fd1498Szrj
948*38fd1498Szrjfaggressive-loop-optimizations
949*38fd1498SzrjCommon Report Var(flag_aggressive_loop_optimizations) Optimization Init(1)
950*38fd1498SzrjAggressively optimize loops using language constraints.
951*38fd1498Szrj
952*38fd1498Szrjfalign-functions
953*38fd1498SzrjCommon Report Var(align_functions,0) Optimization UInteger
954*38fd1498SzrjAlign the start of functions.
955*38fd1498Szrj
956*38fd1498Szrjfalign-functions=
957*38fd1498SzrjCommon RejectNegative Joined UInteger Var(align_functions) Optimization
958*38fd1498Szrj
959*38fd1498Szrjflimit-function-alignment
960*38fd1498SzrjCommon Report Var(flag_limit_function_alignment) Optimization Init(0)
961*38fd1498Szrj
962*38fd1498Szrjfalign-jumps
963*38fd1498SzrjCommon Report Var(align_jumps,0) Optimization UInteger
964*38fd1498SzrjAlign labels which are only reached by jumping.
965*38fd1498Szrj
966*38fd1498Szrjfalign-jumps=
967*38fd1498SzrjCommon RejectNegative Joined UInteger Var(align_jumps) Optimization
968*38fd1498Szrj
969*38fd1498Szrjfalign-labels
970*38fd1498SzrjCommon Report Var(align_labels,0) Optimization UInteger
971*38fd1498SzrjAlign all labels.
972*38fd1498Szrj
973*38fd1498Szrjfalign-labels=
974*38fd1498SzrjCommon RejectNegative Joined UInteger Var(align_labels) Optimization
975*38fd1498Szrj
976*38fd1498Szrjfalign-loops
977*38fd1498SzrjCommon Report Var(align_loops,0) Optimization UInteger
978*38fd1498SzrjAlign the start of loops.
979*38fd1498Szrj
980*38fd1498Szrjfalign-loops=
981*38fd1498SzrjCommon RejectNegative Joined UInteger Var(align_loops) Optimization
982*38fd1498Szrj
983*38fd1498Szrjfargument-alias
984*38fd1498SzrjCommon Ignore
985*38fd1498SzrjDoes nothing. Preserved for backward compatibility.
986*38fd1498Szrj
987*38fd1498Szrjfargument-noalias
988*38fd1498SzrjCommon Ignore
989*38fd1498SzrjDoes nothing. Preserved for backward compatibility.
990*38fd1498Szrj
991*38fd1498Szrjfargument-noalias-global
992*38fd1498SzrjCommon Ignore
993*38fd1498SzrjDoes nothing. Preserved for backward compatibility.
994*38fd1498Szrj
995*38fd1498Szrjfargument-noalias-anything
996*38fd1498SzrjCommon Ignore
997*38fd1498SzrjDoes nothing. Preserved for backward compatibility.
998*38fd1498Szrj
999*38fd1498Szrjfsanitize=
1000*38fd1498SzrjCommon Driver Report Joined
1001*38fd1498SzrjSelect what to sanitize.
1002*38fd1498Szrj
1003*38fd1498Szrjfsanitize-coverage=
1004*38fd1498SzrjCommon Report Joined
1005*38fd1498SzrjSelect type of coverage sanitization.
1006*38fd1498Szrj
1007*38fd1498Szrjfasan-shadow-offset=
1008*38fd1498SzrjCommon Joined RejectNegative Var(common_deferred_options) Defer
1009*38fd1498Szrj-fasan-shadow-offset=<number>	Use custom shadow memory offset.
1010*38fd1498Szrj
1011*38fd1498Szrjfsanitize-sections=
1012*38fd1498SzrjCommon Joined RejectNegative Var(common_deferred_options) Defer
1013*38fd1498Szrj-fsanitize-sections=<sec1,sec2,...>	Sanitize global variables
1014*38fd1498Szrjin user-defined sections.
1015*38fd1498Szrj
1016*38fd1498Szrjfsanitize-recover=
1017*38fd1498SzrjCommon Report Joined
1018*38fd1498SzrjAfter diagnosing undefined behavior attempt to continue execution.
1019*38fd1498Szrj
1020*38fd1498Szrjfsanitize-recover
1021*38fd1498SzrjCommon Report
1022*38fd1498SzrjThis switch is deprecated; use -fsanitize-recover= instead.
1023*38fd1498Szrj
1024*38fd1498Szrjfsanitize-address-use-after-scope
1025*38fd1498SzrjCommon Driver Report Var(flag_sanitize_address_use_after_scope) Init(0)
1026*38fd1498Szrj
1027*38fd1498Szrjfsanitize-undefined-trap-on-error
1028*38fd1498SzrjCommon Driver Report Var(flag_sanitize_undefined_trap_on_error) Init(0)
1029*38fd1498SzrjUse trap instead of a library function for undefined behavior sanitization.
1030*38fd1498Szrj
1031*38fd1498Szrjfasynchronous-unwind-tables
1032*38fd1498SzrjCommon Report Var(flag_asynchronous_unwind_tables) Optimization
1033*38fd1498SzrjGenerate unwind tables that are exact at each instruction boundary.
1034*38fd1498Szrj
1035*38fd1498Szrjfauto-inc-dec
1036*38fd1498SzrjCommon Report Var(flag_auto_inc_dec) Init(1) Optimization
1037*38fd1498SzrjGenerate auto-inc/dec instructions.
1038*38fd1498Szrj
1039*38fd1498Szrjfauto-profile
1040*38fd1498SzrjCommon Report Var(flag_auto_profile)
1041*38fd1498SzrjUse sample profile information for call graph node weights. The default
1042*38fd1498Szrjprofile file is fbdata.afdo in 'pwd'.
1043*38fd1498Szrj
1044*38fd1498Szrjfauto-profile=
1045*38fd1498SzrjCommon Joined RejectNegative Var(auto_profile_file)
1046*38fd1498SzrjUse sample profile information for call graph node weights. The profile
1047*38fd1498Szrjfile is specified in the argument.
1048*38fd1498Szrj
1049*38fd1498Szrj; -fcheck-bounds causes gcc to generate array bounds checks.
1050*38fd1498Szrj; For C, C++ and ObjC: defaults off.
1051*38fd1498Szrj; For Java: defaults to on.
1052*38fd1498Szrj; For Fortran: defaults to off.
1053*38fd1498Szrjfbounds-check
1054*38fd1498SzrjCommon Report Var(flag_bounds_check)
1055*38fd1498SzrjGenerate code to check bounds before indexing arrays.
1056*38fd1498Szrj
1057*38fd1498Szrjfbranch-count-reg
1058*38fd1498SzrjCommon Report Var(flag_branch_on_count_reg) Optimization
1059*38fd1498SzrjReplace add, compare, branch with branch on count register.
1060*38fd1498Szrj
1061*38fd1498Szrjfbranch-probabilities
1062*38fd1498SzrjCommon Report Var(flag_branch_probabilities) Optimization
1063*38fd1498SzrjUse profiling information for branch probabilities.
1064*38fd1498Szrj
1065*38fd1498Szrjfbranch-target-load-optimize
1066*38fd1498SzrjCommon Report Var(flag_branch_target_load_optimize) Optimization
1067*38fd1498SzrjPerform branch target load optimization before prologue / epilogue threading.
1068*38fd1498Szrj
1069*38fd1498Szrjfbranch-target-load-optimize2
1070*38fd1498SzrjCommon Report Var(flag_branch_target_load_optimize2) Optimization
1071*38fd1498SzrjPerform branch target load optimization after prologue / epilogue threading.
1072*38fd1498Szrj
1073*38fd1498Szrjfbtr-bb-exclusive
1074*38fd1498SzrjCommon Report Var(flag_btr_bb_exclusive) Optimization
1075*38fd1498SzrjRestrict target load migration not to re-use registers in any basic block.
1076*38fd1498Szrj
1077*38fd1498Szrjfcall-saved-
1078*38fd1498SzrjCommon Joined RejectNegative Var(common_deferred_options) Defer
1079*38fd1498Szrj-fcall-saved-<register>	Mark <register> as being preserved across functions.
1080*38fd1498Szrj
1081*38fd1498Szrjfcall-used-
1082*38fd1498SzrjCommon Joined RejectNegative Var(common_deferred_options) Defer
1083*38fd1498Szrj-fcall-used-<register>	Mark <register> as being corrupted by function calls.
1084*38fd1498Szrj
1085*38fd1498Szrj; Nonzero for -fcaller-saves: allocate values in regs that need to
1086*38fd1498Szrj; be saved across function calls, if that produces overall better code.
1087*38fd1498Szrj; Optional now, so people can test it.
1088*38fd1498Szrjfcaller-saves
1089*38fd1498SzrjCommon Report Var(flag_caller_saves) Optimization
1090*38fd1498SzrjSave registers around function calls.
1091*38fd1498Szrj
1092*38fd1498Szrjfcheck-data-deps
1093*38fd1498SzrjCommon Report Var(flag_check_data_deps)
1094*38fd1498SzrjThis switch is deprecated; do not use.
1095*38fd1498Szrj
1096*38fd1498Szrjfcheck-new
1097*38fd1498SzrjCommon Var(flag_check_new)
1098*38fd1498SzrjCheck the return value of new in C++.
1099*38fd1498Szrj
1100*38fd1498Szrjfchecking
1101*38fd1498SzrjCommon Var(flag_checking) Init(CHECKING_P ? ENABLE_EXTRA_CHECKING ? 2 : 1 : 0)
1102*38fd1498SzrjPerform internal consistency checkings.
1103*38fd1498Szrj
1104*38fd1498Szrjfchecking=
1105*38fd1498SzrjCommon Joined RejectNegative UInteger Var(flag_checking)
1106*38fd1498SzrjPerform internal consistency checkings.
1107*38fd1498Szrj
1108*38fd1498Szrjfcode-hoisting
1109*38fd1498SzrjCommon Report Var(flag_code_hoisting) Optimization
1110*38fd1498SzrjEnable code hoisting.
1111*38fd1498Szrj
1112*38fd1498Szrjfcombine-stack-adjustments
1113*38fd1498SzrjCommon Report Var(flag_combine_stack_adjustments) Optimization
1114*38fd1498SzrjLooks for opportunities to reduce stack adjustments and stack references.
1115*38fd1498Szrj
1116*38fd1498Szrjfcommon
1117*38fd1498SzrjCommon Report Var(flag_no_common,0)
1118*38fd1498SzrjDo not put uninitialized globals in the common section.
1119*38fd1498Szrj
1120*38fd1498Szrjfcompare-debug
1121*38fd1498SzrjDriver
1122*38fd1498Szrj; Converted by the driver to -fcompare-debug= options.
1123*38fd1498Szrj
1124*38fd1498Szrjfcompare-debug=
1125*38fd1498SzrjCommon Driver JoinedOrMissing RejectNegative Var(flag_compare_debug_opt)
1126*38fd1498Szrj-fcompare-debug[=<opts>]	Compile with and without e.g. -gtoggle, and compare the final-insns dump.
1127*38fd1498Szrj
1128*38fd1498Szrjfcompare-debug-second
1129*38fd1498SzrjCommon Driver RejectNegative Var(flag_compare_debug)
1130*38fd1498SzrjRun only the second compilation of -fcompare-debug.
1131*38fd1498Szrj
1132*38fd1498Szrjfcompare-elim
1133*38fd1498SzrjCommon Report Var(flag_compare_elim_after_reload) Optimization
1134*38fd1498SzrjPerform comparison elimination after register allocation has finished.
1135*38fd1498Szrj
1136*38fd1498Szrjfconserve-stack
1137*38fd1498SzrjCommon Var(flag_conserve_stack) Optimization
1138*38fd1498SzrjDo not perform optimizations increasing noticeably stack usage.
1139*38fd1498Szrj
1140*38fd1498Szrjfcprop-registers
1141*38fd1498SzrjCommon Report Var(flag_cprop_registers) Optimization
1142*38fd1498SzrjPerform a register copy-propagation optimization pass.
1143*38fd1498Szrj
1144*38fd1498Szrjfcrossjumping
1145*38fd1498SzrjCommon Report Var(flag_crossjumping) Optimization
1146*38fd1498SzrjPerform cross-jumping optimization.
1147*38fd1498Szrj
1148*38fd1498Szrjfcse-follow-jumps
1149*38fd1498SzrjCommon Report Var(flag_cse_follow_jumps) Optimization
1150*38fd1498SzrjWhen running CSE, follow jumps to their targets.
1151*38fd1498Szrj
1152*38fd1498Szrjfcse-skip-blocks
1153*38fd1498SzrjCommon Ignore
1154*38fd1498SzrjDoes nothing.  Preserved for backward compatibility.
1155*38fd1498Szrj
1156*38fd1498Szrjfcx-limited-range
1157*38fd1498SzrjCommon Report Var(flag_cx_limited_range) Optimization SetByCombined
1158*38fd1498SzrjOmit range reduction step when performing complex division.
1159*38fd1498Szrj
1160*38fd1498Szrjfcx-fortran-rules
1161*38fd1498SzrjCommon Report Var(flag_cx_fortran_rules) Optimization
1162*38fd1498SzrjComplex multiplication and division follow Fortran rules.
1163*38fd1498Szrj
1164*38fd1498Szrjfdata-sections
1165*38fd1498SzrjCommon Report Var(flag_data_sections)
1166*38fd1498SzrjPlace data items into their own section.
1167*38fd1498Szrj
1168*38fd1498Szrjfdbg-cnt-list
1169*38fd1498SzrjCommon Report Var(common_deferred_options) Defer
1170*38fd1498SzrjList all available debugging counters with their limits and counts.
1171*38fd1498Szrj
1172*38fd1498Szrjfdbg-cnt=
1173*38fd1498SzrjCommon RejectNegative Joined Var(common_deferred_options) Defer
1174*38fd1498Szrj-fdbg-cnt=<counter>:<limit>[,<counter>:<limit>,...]	Set the debug counter limit.
1175*38fd1498Szrj
1176*38fd1498Szrjfdebug-prefix-map=
1177*38fd1498SzrjCommon Joined RejectNegative Var(common_deferred_options) Defer
1178*38fd1498Szrj-fdebug-prefix-map=<old>=<new> Map one directory name to another in debug information.
1179*38fd1498Szrj
1180*38fd1498Szrjffile-prefix-map=
1181*38fd1498SzrjCommon Joined RejectNegative Var(common_deferred_options) Defer
1182*38fd1498Szrj-ffile-prefix-map=<old>=<new> Map one directory name to another in compilation result.
1183*38fd1498Szrj
1184*38fd1498Szrjfdebug-types-section
1185*38fd1498SzrjCommon Report Var(flag_debug_types_section) Init(0)
1186*38fd1498SzrjOutput .debug_types section when using DWARF v4 debuginfo.
1187*38fd1498Szrj
1188*38fd1498Szrj; Nonzero for -fdefer-pop: don't pop args after each function call
1189*38fd1498Szrj; instead save them up to pop many calls' args with one insns.
1190*38fd1498Szrjfdefer-pop
1191*38fd1498SzrjCommon Report Var(flag_defer_pop) Optimization
1192*38fd1498SzrjDefer popping functions args from stack until later.
1193*38fd1498Szrj
1194*38fd1498Szrjfdelayed-branch
1195*38fd1498SzrjCommon Report Var(flag_delayed_branch) Optimization
1196*38fd1498SzrjAttempt to fill delay slots of branch instructions.
1197*38fd1498Szrj
1198*38fd1498Szrjfdelete-dead-exceptions
1199*38fd1498SzrjCommon Report Var(flag_delete_dead_exceptions) Init(0) Optimization
1200*38fd1498SzrjDelete dead instructions that may throw exceptions.
1201*38fd1498Szrj
1202*38fd1498Szrjfdelete-null-pointer-checks
1203*38fd1498SzrjCommon Report Var(flag_delete_null_pointer_checks) Init(-1) Optimization
1204*38fd1498SzrjDelete useless null pointer checks.
1205*38fd1498Szrj
1206*38fd1498Szrjfdevirtualize-at-ltrans
1207*38fd1498SzrjCommon Report Var(flag_ltrans_devirtualize)
1208*38fd1498SzrjStream extra data to support more aggressive devirtualization in LTO local transformation mode.
1209*38fd1498Szrj
1210*38fd1498Szrjfdevirtualize-speculatively
1211*38fd1498SzrjCommon Report Var(flag_devirtualize_speculatively) Optimization
1212*38fd1498SzrjPerform speculative devirtualization.
1213*38fd1498Szrj
1214*38fd1498Szrjfdevirtualize
1215*38fd1498SzrjCommon Report Var(flag_devirtualize) Optimization
1216*38fd1498SzrjTry to convert virtual calls to direct ones.
1217*38fd1498Szrj
1218*38fd1498Szrjfdiagnostics-show-location=
1219*38fd1498SzrjCommon Joined RejectNegative Enum(diagnostic_prefixing_rule)
1220*38fd1498Szrj-fdiagnostics-show-location=[once|every-line]	How often to emit source location at the beginning of line-wrapped diagnostics.
1221*38fd1498Szrj
1222*38fd1498Szrj; Required for these enum values.
1223*38fd1498SzrjSourceInclude
1224*38fd1498Szrjpretty-print.h
1225*38fd1498Szrj
1226*38fd1498SzrjEnum
1227*38fd1498SzrjName(diagnostic_prefixing_rule) Type(int)
1228*38fd1498Szrj
1229*38fd1498SzrjEnumValue
1230*38fd1498SzrjEnum(diagnostic_prefixing_rule) String(once) Value(DIAGNOSTICS_SHOW_PREFIX_ONCE)
1231*38fd1498Szrj
1232*38fd1498SzrjEnumValue
1233*38fd1498SzrjEnum(diagnostic_prefixing_rule) String(every-line) Value(DIAGNOSTICS_SHOW_PREFIX_EVERY_LINE)
1234*38fd1498Szrj
1235*38fd1498Szrjfdiagnostics-show-caret
1236*38fd1498SzrjCommon Var(flag_diagnostics_show_caret) Init(1)
1237*38fd1498SzrjShow the source line with a caret indicating the column.
1238*38fd1498Szrj
1239*38fd1498Szrjfdiagnostics-color
1240*38fd1498SzrjCommon Alias(fdiagnostics-color=,always,never)
1241*38fd1498Szrj;
1242*38fd1498Szrj
1243*38fd1498Szrjfdiagnostics-color=
1244*38fd1498SzrjDriver Common Joined RejectNegative Var(flag_diagnostics_show_color) Enum(diagnostic_color_rule) Init(DIAGNOSTICS_COLOR_NO)
1245*38fd1498Szrj-fdiagnostics-color=[never|always|auto]	Colorize diagnostics.
1246*38fd1498Szrj
1247*38fd1498Szrj; Required for these enum values.
1248*38fd1498SzrjSourceInclude
1249*38fd1498Szrjdiagnostic-color.h
1250*38fd1498Szrj
1251*38fd1498SzrjEnum
1252*38fd1498SzrjName(diagnostic_color_rule) Type(int)
1253*38fd1498Szrj
1254*38fd1498SzrjEnumValue
1255*38fd1498SzrjEnum(diagnostic_color_rule) String(never) Value(DIAGNOSTICS_COLOR_NO)
1256*38fd1498Szrj
1257*38fd1498SzrjEnumValue
1258*38fd1498SzrjEnum(diagnostic_color_rule) String(always) Value(DIAGNOSTICS_COLOR_YES)
1259*38fd1498Szrj
1260*38fd1498SzrjEnumValue
1261*38fd1498SzrjEnum(diagnostic_color_rule) String(auto) Value(DIAGNOSTICS_COLOR_AUTO)
1262*38fd1498Szrj
1263*38fd1498Szrjfdiagnostics-parseable-fixits
1264*38fd1498SzrjCommon Var(flag_diagnostics_parseable_fixits)
1265*38fd1498SzrjPrint fix-it hints in machine-readable form.
1266*38fd1498Szrj
1267*38fd1498Szrjfdiagnostics-generate-patch
1268*38fd1498SzrjCommon Var(flag_diagnostics_generate_patch)
1269*38fd1498SzrjPrint fix-it hints to stderr in unified diff format.
1270*38fd1498Szrj
1271*38fd1498Szrjfdiagnostics-show-option
1272*38fd1498SzrjCommon Var(flag_diagnostics_show_option) Init(1)
1273*38fd1498SzrjAmend appropriate diagnostic messages with the command line option that controls them.
1274*38fd1498Szrj
1275*38fd1498Szrjfdisable-
1276*38fd1498SzrjCommon Joined RejectNegative Var(common_deferred_options) Defer
1277*38fd1498Szrj-fdisable-[tree|rtl|ipa]-<pass>=range1+range2 disables an optimization pass.
1278*38fd1498Szrj
1279*38fd1498Szrjfenable-
1280*38fd1498SzrjCommon Joined RejectNegative Var(common_deferred_options) Defer
1281*38fd1498Szrj-fenable-[tree|rtl|ipa]-<pass>=range1+range2 enables an optimization pass.
1282*38fd1498Szrj
1283*38fd1498Szrjfdump-
1284*38fd1498SzrjCommon Joined RejectNegative Var(common_deferred_options) Defer
1285*38fd1498Szrj-fdump-<type>	Dump various compiler internals to a file.
1286*38fd1498Szrj
1287*38fd1498Szrjfdump-final-insns
1288*38fd1498SzrjDriver RejectNegative
1289*38fd1498Szrj
1290*38fd1498Szrjfdump-final-insns=
1291*38fd1498SzrjCommon RejectNegative Joined Var(flag_dump_final_insns)
1292*38fd1498Szrj-fdump-final-insns=filename	Dump to filename the insns at the end of translation.
1293*38fd1498Szrj
1294*38fd1498Szrjfdump-go-spec=
1295*38fd1498SzrjCommon RejectNegative Joined Var(flag_dump_go_spec)
1296*38fd1498Szrj-fdump-go-spec=filename	Write all declarations to file as Go code.
1297*38fd1498Szrj
1298*38fd1498Szrjfdump-noaddr
1299*38fd1498SzrjCommon Report Var(flag_dump_noaddr)
1300*38fd1498SzrjSuppress output of addresses in debugging dumps.
1301*38fd1498Szrj
1302*38fd1498Szrjfreport-bug
1303*38fd1498SzrjCommon Driver Var(flag_report_bug)
1304*38fd1498SzrjCollect and dump debug information into temporary file if ICE in C/C++
1305*38fd1498Szrjcompiler occurred.
1306*38fd1498Szrj
1307*38fd1498Szrjfdump-internal-locations
1308*38fd1498SzrjCommon Var(flag_dump_locations) Init(0)
1309*38fd1498SzrjDump detailed information on GCC's internal representation of source code locations.
1310*38fd1498Szrj
1311*38fd1498Szrjfdump-passes
1312*38fd1498SzrjCommon Var(flag_dump_passes) Init(0)
1313*38fd1498SzrjDump optimization passes.
1314*38fd1498Szrj
1315*38fd1498Szrjfdump-unnumbered
1316*38fd1498SzrjCommon Report Var(flag_dump_unnumbered)
1317*38fd1498SzrjSuppress output of instruction numbers, line number notes and addresses in debugging dumps.
1318*38fd1498Szrj
1319*38fd1498Szrjfdump-unnumbered-links
1320*38fd1498SzrjCommon Report Var(flag_dump_unnumbered_links)
1321*38fd1498SzrjSuppress output of previous and next insn numbers in debugging dumps.
1322*38fd1498Szrj
1323*38fd1498Szrjfdwarf2-cfi-asm
1324*38fd1498SzrjCommon Report Var(flag_dwarf2_cfi_asm) Init(HAVE_GAS_CFI_DIRECTIVE)
1325*38fd1498SzrjEnable CFI tables via GAS assembler directives.
1326*38fd1498Szrj
1327*38fd1498Szrjfearly-inlining
1328*38fd1498SzrjCommon Report Var(flag_early_inlining) Init(1) Optimization
1329*38fd1498SzrjPerform early inlining.
1330*38fd1498Szrj
1331*38fd1498Szrjfeliminate-dwarf2-dups
1332*38fd1498SzrjCommon Ignore
1333*38fd1498SzrjDoes nothing.  Preserved for backward compatibility.
1334*38fd1498Szrj
1335*38fd1498Szrjfipa-sra
1336*38fd1498SzrjCommon Report Var(flag_ipa_sra) Init(0) Optimization
1337*38fd1498SzrjPerform interprocedural reduction of aggregates.
1338*38fd1498Szrj
1339*38fd1498Szrjfeliminate-unused-debug-symbols
1340*38fd1498SzrjCommon Report Var(flag_debug_only_used_symbols)
1341*38fd1498SzrjPerform unused symbol elimination in debug info.
1342*38fd1498Szrj
1343*38fd1498Szrjfeliminate-unused-debug-types
1344*38fd1498SzrjCommon Report Var(flag_eliminate_unused_debug_types) Init(1)
1345*38fd1498SzrjPerform unused type elimination in debug info.
1346*38fd1498Szrj
1347*38fd1498Szrjfemit-class-debug-always
1348*38fd1498SzrjCommon Report Var(flag_emit_class_debug_always) Init(0)
1349*38fd1498SzrjDo not suppress C++ class debug information.
1350*38fd1498Szrj
1351*38fd1498Szrjfexceptions
1352*38fd1498SzrjCommon Report Var(flag_exceptions) Optimization
1353*38fd1498SzrjEnable exception handling.
1354*38fd1498Szrj
1355*38fd1498Szrjfexpensive-optimizations
1356*38fd1498SzrjCommon Report Var(flag_expensive_optimizations) Optimization
1357*38fd1498SzrjPerform a number of minor, expensive optimizations.
1358*38fd1498Szrj
1359*38fd1498Szrjfexcess-precision=
1360*38fd1498SzrjCommon Joined RejectNegative Enum(excess_precision) Var(flag_excess_precision_cmdline) Init(EXCESS_PRECISION_DEFAULT) SetByCombined
1361*38fd1498Szrj-fexcess-precision=[fast|standard]	Specify handling of excess floating-point precision.
1362*38fd1498Szrj
1363*38fd1498SzrjEnum
1364*38fd1498SzrjName(excess_precision) Type(enum excess_precision) UnknownError(unknown excess precision style %qs)
1365*38fd1498Szrj
1366*38fd1498SzrjEnumValue
1367*38fd1498SzrjEnum(excess_precision) String(fast) Value(EXCESS_PRECISION_FAST)
1368*38fd1498Szrj
1369*38fd1498SzrjEnumValue
1370*38fd1498SzrjEnum(excess_precision) String(standard) Value(EXCESS_PRECISION_STANDARD)
1371*38fd1498Szrj
1372*38fd1498Szrj; Whether we permit the extended set of values for FLT_EVAL_METHOD
1373*38fd1498Szrj; introduced in ISO/IEC TS 18661-3, or limit ourselves to those in C99/C11.
1374*38fd1498Szrjfpermitted-flt-eval-methods=
1375*38fd1498SzrjCommon Joined RejectNegative Enum(permitted_flt_eval_methods) Var(flag_permitted_flt_eval_methods) Init(PERMITTED_FLT_EVAL_METHODS_DEFAULT)
1376*38fd1498Szrj-fpermitted-flt-eval-methods=[c11|ts-18661]	Specify which values of FLT_EVAL_METHOD are permitted.
1377*38fd1498Szrj
1378*38fd1498SzrjEnum
1379*38fd1498SzrjName(permitted_flt_eval_methods) Type(enum permitted_flt_eval_methods) UnknownError(unknown specification for the set of FLT_EVAL_METHOD values to permit %qs)
1380*38fd1498Szrj
1381*38fd1498SzrjEnumValue
1382*38fd1498SzrjEnum(permitted_flt_eval_methods) String(c11) Value(PERMITTED_FLT_EVAL_METHODS_C11)
1383*38fd1498Szrj
1384*38fd1498SzrjEnumValue
1385*38fd1498SzrjEnum(permitted_flt_eval_methods) String(ts-18661-3) Value(PERMITTED_FLT_EVAL_METHODS_TS_18661)
1386*38fd1498Szrj
1387*38fd1498Szrjffast-math
1388*38fd1498SzrjCommon Optimization
1389*38fd1498Szrj
1390*38fd1498Szrjffat-lto-objects
1391*38fd1498SzrjCommon Var(flag_fat_lto_objects)
1392*38fd1498SzrjOutput lto objects containing both the intermediate language and binary output.
1393*38fd1498Szrj
1394*38fd1498Szrjffinite-math-only
1395*38fd1498SzrjCommon Report Var(flag_finite_math_only) Optimization SetByCombined
1396*38fd1498SzrjAssume no NaNs or infinities are generated.
1397*38fd1498Szrj
1398*38fd1498Szrjffixed-
1399*38fd1498SzrjCommon Joined RejectNegative Var(common_deferred_options) Defer
1400*38fd1498Szrj-ffixed-<register>	Mark <register> as being unavailable to the compiler.
1401*38fd1498Szrj
1402*38fd1498Szrjffloat-store
1403*38fd1498SzrjCommon Report Var(flag_float_store) Optimization
1404*38fd1498SzrjDon't allocate floats and doubles in extended-precision registers.
1405*38fd1498Szrj
1406*38fd1498Szrjfforce-addr
1407*38fd1498SzrjCommon Ignore
1408*38fd1498SzrjDoes nothing.  Preserved for backward compatibility.
1409*38fd1498Szrj
1410*38fd1498Szrjfforward-propagate
1411*38fd1498SzrjCommon Report Var(flag_forward_propagate) Optimization
1412*38fd1498SzrjPerform a forward propagation pass on RTL.
1413*38fd1498Szrj
1414*38fd1498Szrjffp-contract=
1415*38fd1498SzrjCommon Joined RejectNegative Enum(fp_contract_mode) Var(flag_fp_contract_mode) Init(FP_CONTRACT_FAST) Optimization
1416*38fd1498Szrj-ffp-contract=[off|on|fast]	Perform floating-point expression contraction.
1417*38fd1498Szrj
1418*38fd1498SzrjEnum
1419*38fd1498SzrjName(fp_contract_mode) Type(enum fp_contract_mode) UnknownError(unknown floating point contraction style %qs)
1420*38fd1498Szrj
1421*38fd1498SzrjEnumValue
1422*38fd1498SzrjEnum(fp_contract_mode) String(off) Value(FP_CONTRACT_OFF)
1423*38fd1498Szrj
1424*38fd1498Szrj; Not implemented, fall back to conservative FP_CONTRACT_OFF.
1425*38fd1498SzrjEnumValue
1426*38fd1498SzrjEnum(fp_contract_mode) String(on) Value(FP_CONTRACT_OFF)
1427*38fd1498Szrj
1428*38fd1498SzrjEnumValue
1429*38fd1498SzrjEnum(fp_contract_mode) String(fast) Value(FP_CONTRACT_FAST)
1430*38fd1498Szrj
1431*38fd1498Szrjffp-int-builtin-inexact
1432*38fd1498SzrjCommon Report Var(flag_fp_int_builtin_inexact) Init(1) Optimization
1433*38fd1498SzrjAllow built-in functions ceil, floor, round, trunc to raise \"inexact\" exceptions.
1434*38fd1498Szrj
1435*38fd1498Szrj; Nonzero means don't put addresses of constant functions in registers.
1436*38fd1498Szrj; Used for compiling the Unix kernel, where strange substitutions are
1437*38fd1498Szrj; done on the assembly output.
1438*38fd1498Szrjffunction-cse
1439*38fd1498SzrjCommon Report Var(flag_no_function_cse,0) Optimization
1440*38fd1498SzrjAllow function addresses to be held in registers.
1441*38fd1498Szrj
1442*38fd1498Szrjffunction-sections
1443*38fd1498SzrjCommon Report Var(flag_function_sections)
1444*38fd1498SzrjPlace each function into its own section.
1445*38fd1498Szrj
1446*38fd1498Szrjfgcse
1447*38fd1498SzrjCommon Report Var(flag_gcse) Optimization
1448*38fd1498SzrjPerform global common subexpression elimination.
1449*38fd1498Szrj
1450*38fd1498Szrjfgcse-lm
1451*38fd1498SzrjCommon Report Var(flag_gcse_lm) Init(1) Optimization
1452*38fd1498SzrjPerform enhanced load motion during global common subexpression elimination.
1453*38fd1498Szrj
1454*38fd1498Szrjfgcse-sm
1455*38fd1498SzrjCommon Report Var(flag_gcse_sm) Init(0) Optimization
1456*38fd1498SzrjPerform store motion after global common subexpression elimination.
1457*38fd1498Szrj
1458*38fd1498Szrjfgcse-las
1459*38fd1498SzrjCommon Report Var(flag_gcse_las) Init(0) Optimization
1460*38fd1498SzrjPerform redundant load after store elimination in global common subexpression
1461*38fd1498Szrjelimination.
1462*38fd1498Szrj
1463*38fd1498Szrjfgcse-after-reload
1464*38fd1498SzrjCommon Report Var(flag_gcse_after_reload) Optimization
1465*38fd1498SzrjPerform global common subexpression elimination after register allocation has
1466*38fd1498Szrjfinished.
1467*38fd1498Szrj
1468*38fd1498SzrjEnum
1469*38fd1498SzrjName(dwarf_gnat_encodings) Type(int)
1470*38fd1498Szrj
1471*38fd1498SzrjEnumValue
1472*38fd1498SzrjEnum(dwarf_gnat_encodings) String(all) Value(DWARF_GNAT_ENCODINGS_ALL)
1473*38fd1498Szrj
1474*38fd1498SzrjEnumValue
1475*38fd1498SzrjEnum(dwarf_gnat_encodings) String(gdb) Value(DWARF_GNAT_ENCODINGS_GDB)
1476*38fd1498Szrj
1477*38fd1498SzrjEnumValue
1478*38fd1498SzrjEnum(dwarf_gnat_encodings) String(minimal) Value(DWARF_GNAT_ENCODINGS_MINIMAL)
1479*38fd1498Szrj
1480*38fd1498Szrjfgnat-encodings=
1481*38fd1498SzrjCommon Enum(dwarf_gnat_encodings) Joined RejectNegative Report Undocumented Var(gnat_encodings)
1482*38fd1498Szrj-fgnat-encodings=[all|gdb|minimal]	Select the balance between GNAT encodings and standard DWARF emitted in the debug information
1483*38fd1498Szrj
1484*38fd1498Szrj; This option is not documented yet as its semantics will change.
1485*38fd1498Szrjfgraphite
1486*38fd1498SzrjCommon Report Var(flag_graphite) Optimization
1487*38fd1498SzrjEnable in and out of Graphite representation.
1488*38fd1498Szrj
1489*38fd1498Szrjfgraphite-identity
1490*38fd1498SzrjCommon Report Var(flag_graphite_identity) Optimization
1491*38fd1498SzrjEnable Graphite Identity transformation.
1492*38fd1498Szrj
1493*38fd1498Szrjfhoist-adjacent-loads
1494*38fd1498SzrjCommon Report Var(flag_hoist_adjacent_loads) Optimization
1495*38fd1498SzrjEnable hoisting adjacent loads to encourage generating conditional move
1496*38fd1498Szrjinstructions.
1497*38fd1498Szrj
1498*38fd1498Szrjfkeep-gc-roots-live
1499*38fd1498SzrjCommon Undocumented Report Var(flag_keep_gc_roots_live) Optimization
1500*38fd1498Szrj; Always keep a pointer to a live memory block
1501*38fd1498Szrj
1502*38fd1498Szrjfloop-parallelize-all
1503*38fd1498SzrjCommon Report Var(flag_loop_parallelize_all) Optimization
1504*38fd1498SzrjMark all loops as parallel.
1505*38fd1498Szrj
1506*38fd1498Szrjfloop-strip-mine
1507*38fd1498SzrjCommon Alias(floop-nest-optimize)
1508*38fd1498SzrjEnable loop nest transforms.  Same as -floop-nest-optimize.
1509*38fd1498Szrj
1510*38fd1498Szrjfloop-interchange
1511*38fd1498SzrjCommon Report Var(flag_loop_interchange) Optimization
1512*38fd1498SzrjEnable loop interchange on trees.
1513*38fd1498Szrj
1514*38fd1498Szrjfloop-block
1515*38fd1498SzrjCommon Alias(floop-nest-optimize)
1516*38fd1498SzrjEnable loop nest transforms.  Same as -floop-nest-optimize.
1517*38fd1498Szrj
1518*38fd1498Szrjfloop-unroll-and-jam
1519*38fd1498SzrjCommon Report Var(flag_unroll_jam) Optimization
1520*38fd1498SzrjPerform unroll-and-jam on loops.
1521*38fd1498Szrj
1522*38fd1498Szrjfgnu-tm
1523*38fd1498SzrjCommon Report Var(flag_tm)
1524*38fd1498SzrjEnable support for GNU transactional memory.
1525*38fd1498Szrj
1526*38fd1498Szrjfgnu-unique
1527*38fd1498SzrjCommon Report Var(flag_gnu_unique) Init(1)
1528*38fd1498SzrjUse STB_GNU_UNIQUE if supported by the assembler.
1529*38fd1498Szrj
1530*38fd1498Szrjfloop-flatten
1531*38fd1498SzrjCommon Ignore
1532*38fd1498SzrjDoes nothing. Preserved for backward compatibility.
1533*38fd1498Szrj
1534*38fd1498Szrjfloop-nest-optimize
1535*38fd1498SzrjCommon Report Var(flag_loop_nest_optimize) Optimization
1536*38fd1498SzrjEnable the loop nest optimizer.
1537*38fd1498Szrj
1538*38fd1498Szrjfstrict-volatile-bitfields
1539*38fd1498SzrjCommon Report Var(flag_strict_volatile_bitfields) Init(-1) Optimization
1540*38fd1498SzrjForce bitfield accesses to match their type width.
1541*38fd1498Szrj
1542*38fd1498Szrjfstore-merging
1543*38fd1498SzrjCommon Report Var(flag_store_merging) Optimization
1544*38fd1498SzrjMerge adjacent stores.
1545*38fd1498Szrj
1546*38fd1498Szrjfguess-branch-probability
1547*38fd1498SzrjCommon Report Var(flag_guess_branch_prob) Optimization
1548*38fd1498SzrjEnable guessing of branch probabilities.
1549*38fd1498Szrj
1550*38fd1498Szrj; Nonzero means ignore `#ident' directives.  0 means handle them.
1551*38fd1498Szrj; Generate position-independent code for executables if possible
1552*38fd1498Szrj; On SVR4 targets, it also controls whether or not to emit a
1553*38fd1498Szrj; string identifying the compiler.
1554*38fd1498Szrjfident
1555*38fd1498SzrjCommon Report Var(flag_no_ident,0)
1556*38fd1498SzrjProcess #ident directives.
1557*38fd1498Szrj
1558*38fd1498Szrjfif-conversion
1559*38fd1498SzrjCommon Report Var(flag_if_conversion) Optimization
1560*38fd1498SzrjPerform conversion of conditional jumps to branchless equivalents.
1561*38fd1498Szrj
1562*38fd1498Szrjfif-conversion2
1563*38fd1498SzrjCommon Report Var(flag_if_conversion2) Optimization
1564*38fd1498SzrjPerform conversion of conditional jumps to conditional execution.
1565*38fd1498Szrj
1566*38fd1498Szrjfstack-reuse=
1567*38fd1498SzrjCommon Joined RejectNegative Enum(stack_reuse_level) Var(flag_stack_reuse) Init(SR_ALL) Optimization
1568*38fd1498Szrj-fstack-reuse=[all|named_vars|none]	Set stack reuse level for local variables.
1569*38fd1498Szrj
1570*38fd1498SzrjEnum
1571*38fd1498SzrjName(stack_reuse_level) Type(enum stack_reuse_level) UnknownError(unknown Stack Reuse Level %qs)
1572*38fd1498Szrj
1573*38fd1498SzrjEnumValue
1574*38fd1498SzrjEnum(stack_reuse_level) String(all) Value(SR_ALL)
1575*38fd1498Szrj
1576*38fd1498SzrjEnumValue
1577*38fd1498SzrjEnum(stack_reuse_level) String(named_vars) Value(SR_NAMED_VARS)
1578*38fd1498Szrj
1579*38fd1498SzrjEnumValue
1580*38fd1498SzrjEnum(stack_reuse_level) String(none) Value(SR_NONE)
1581*38fd1498Szrj
1582*38fd1498Szrjftree-loop-if-convert
1583*38fd1498SzrjCommon Report Var(flag_tree_loop_if_convert) Init(-1) Optimization
1584*38fd1498SzrjConvert conditional jumps in innermost loops to branchless equivalents.
1585*38fd1498Szrj
1586*38fd1498Szrjftree-loop-if-convert-stores
1587*38fd1498SzrjCommon Ignore
1588*38fd1498SzrjDoes nothing. Preserved for backward compatibility.
1589*38fd1498Szrj
1590*38fd1498Szrj; -finhibit-size-directive inhibits output of .size for ELF.
1591*38fd1498Szrj; This is used only for compiling crtstuff.c,
1592*38fd1498Szrj; and it may be extended to other effects
1593*38fd1498Szrj; needed for crtstuff.c on other systems.
1594*38fd1498Szrjfinhibit-size-directive
1595*38fd1498SzrjCommon Report Var(flag_inhibit_size_directive)
1596*38fd1498SzrjDo not generate .size directives.
1597*38fd1498Szrj
1598*38fd1498Szrjfindirect-inlining
1599*38fd1498SzrjCommon Report Var(flag_indirect_inlining) Optimization
1600*38fd1498SzrjPerform indirect inlining.
1601*38fd1498Szrj
1602*38fd1498Szrj; General flag to enable inlining.  Specifying -fno-inline will disable
1603*38fd1498Szrj; all inlining apart from always-inline functions.
1604*38fd1498Szrjfinline
1605*38fd1498SzrjCommon Report Var(flag_no_inline,0) Init(0) Optimization
1606*38fd1498SzrjEnable inlining of function declared \"inline\", disabling disables all inlining.
1607*38fd1498Szrj
1608*38fd1498Szrjfinline-small-functions
1609*38fd1498SzrjCommon Report Var(flag_inline_small_functions) Optimization
1610*38fd1498SzrjIntegrate functions into their callers when code size is known not to grow.
1611*38fd1498Szrj
1612*38fd1498Szrjfinline-functions
1613*38fd1498SzrjCommon Report Var(flag_inline_functions) Optimization
1614*38fd1498SzrjIntegrate functions not declared \"inline\" into their callers when profitable.
1615*38fd1498Szrj
1616*38fd1498Szrjfinline-functions-called-once
1617*38fd1498SzrjCommon Report Var(flag_inline_functions_called_once) Optimization
1618*38fd1498SzrjIntegrate functions only required by their single caller.
1619*38fd1498Szrj
1620*38fd1498Szrjfinline-limit-
1621*38fd1498SzrjCommon RejectNegative Joined Alias(finline-limit=)
1622*38fd1498Szrj
1623*38fd1498Szrjfinline-limit=
1624*38fd1498SzrjCommon RejectNegative Joined UInteger
1625*38fd1498Szrj-finline-limit=<number>	Limit the size of inlined functions to <number>.
1626*38fd1498Szrj
1627*38fd1498Szrjfinline-atomics
1628*38fd1498SzrjCommon Report Var(flag_inline_atomics) Init(1) Optimization
1629*38fd1498SzrjInline __atomic operations when a lock free instruction sequence is available.
1630*38fd1498Szrj
1631*38fd1498Szrjfcf-protection
1632*38fd1498SzrjCommon RejectNegative Alias(fcf-protection=,full)
1633*38fd1498Szrj
1634*38fd1498Szrjfcf-protection=
1635*38fd1498SzrjCommon Report Joined RejectNegative Enum(cf_protection_level) Var(flag_cf_protection) Init(CF_NONE)
1636*38fd1498Szrj-fcf-protection=[full|branch|return|none]	Instrument functions with checks to verify jump/call/return control-flow transfer
1637*38fd1498Szrjinstructions have valid targets.
1638*38fd1498Szrj
1639*38fd1498SzrjEnum
1640*38fd1498SzrjName(cf_protection_level) Type(enum cf_protection_level) UnknownError(unknown Control-Flow Protection Level %qs)
1641*38fd1498Szrj
1642*38fd1498SzrjEnumValue
1643*38fd1498SzrjEnum(cf_protection_level) String(full) Value(CF_FULL)
1644*38fd1498Szrj
1645*38fd1498SzrjEnumValue
1646*38fd1498SzrjEnum(cf_protection_level) String(branch) Value(CF_BRANCH)
1647*38fd1498Szrj
1648*38fd1498SzrjEnumValue
1649*38fd1498SzrjEnum(cf_protection_level) String(return) Value(CF_RETURN)
1650*38fd1498Szrj
1651*38fd1498SzrjEnumValue
1652*38fd1498SzrjEnum(cf_protection_level) String(none) Value(CF_NONE)
1653*38fd1498Szrj
1654*38fd1498Szrjfinstrument-functions
1655*38fd1498SzrjCommon Report Var(flag_instrument_function_entry_exit)
1656*38fd1498SzrjInstrument function entry and exit with profiling calls.
1657*38fd1498Szrj
1658*38fd1498Szrjfinstrument-functions-exclude-function-list=
1659*38fd1498SzrjCommon RejectNegative Joined
1660*38fd1498Szrj-finstrument-functions-exclude-function-list=name,...  Do not instrument listed functions.
1661*38fd1498Szrj
1662*38fd1498Szrjfinstrument-functions-exclude-file-list=
1663*38fd1498SzrjCommon RejectNegative Joined
1664*38fd1498Szrj-finstrument-functions-exclude-file-list=filename,...  Do not instrument functions listed in files.
1665*38fd1498Szrj
1666*38fd1498Szrjfipa-cp
1667*38fd1498SzrjCommon Report Var(flag_ipa_cp) Optimization
1668*38fd1498SzrjPerform interprocedural constant propagation.
1669*38fd1498Szrj
1670*38fd1498Szrjfipa-cp-clone
1671*38fd1498SzrjCommon Report Var(flag_ipa_cp_clone) Optimization
1672*38fd1498SzrjPerform cloning to make Interprocedural constant propagation stronger.
1673*38fd1498Szrj
1674*38fd1498Szrjfipa-cp-alignment
1675*38fd1498SzrjCommon Ignore
1676*38fd1498SzrjDoes nothing.  Preserved for backward compatibility.
1677*38fd1498Szrj
1678*38fd1498Szrjfipa-bit-cp
1679*38fd1498SzrjCommon Report Var(flag_ipa_bit_cp) Optimization
1680*38fd1498SzrjPerform interprocedural bitwise constant propagation.
1681*38fd1498Szrj
1682*38fd1498Szrjfipa-profile
1683*38fd1498SzrjCommon Report Var(flag_ipa_profile) Init(0) Optimization
1684*38fd1498SzrjPerform interprocedural profile propagation.
1685*38fd1498Szrj
1686*38fd1498Szrjfipa-pta
1687*38fd1498SzrjCommon Report Var(flag_ipa_pta) Init(0) Optimization
1688*38fd1498SzrjPerform interprocedural points-to analysis.
1689*38fd1498Szrj
1690*38fd1498Szrjfipa-pure-const
1691*38fd1498SzrjCommon Report Var(flag_ipa_pure_const) Init(0) Optimization
1692*38fd1498SzrjDiscover pure and const functions.
1693*38fd1498Szrj
1694*38fd1498Szrjfipa-icf
1695*38fd1498SzrjCommon Report Var(flag_ipa_icf) Optimization
1696*38fd1498SzrjPerform Identical Code Folding for functions and read-only variables.
1697*38fd1498Szrj
1698*38fd1498Szrjfipa-icf-functions
1699*38fd1498SzrjCommon Report Var(flag_ipa_icf_functions) Optimization
1700*38fd1498SzrjPerform Identical Code Folding for functions.
1701*38fd1498Szrj
1702*38fd1498Szrjfipa-icf-variables
1703*38fd1498SzrjCommon Report Var(flag_ipa_icf_variables) Optimization
1704*38fd1498SzrjPerform Identical Code Folding for variables.
1705*38fd1498Szrj
1706*38fd1498Szrjfipa-reference
1707*38fd1498SzrjCommon Report Var(flag_ipa_reference) Init(0) Optimization
1708*38fd1498SzrjDiscover readonly and non addressable static variables.
1709*38fd1498Szrj
1710*38fd1498Szrjfipa-matrix-reorg
1711*38fd1498SzrjCommon Ignore
1712*38fd1498SzrjDoes nothing. Preserved for backward compatibility.
1713*38fd1498Szrj
1714*38fd1498Szrjfipa-struct-reorg
1715*38fd1498SzrjCommon Ignore
1716*38fd1498SzrjDoes nothing. Preserved for backward compatibility.
1717*38fd1498Szrj
1718*38fd1498Szrjfipa-vrp
1719*38fd1498SzrjCommon Report Var(flag_ipa_vrp) Optimization
1720*38fd1498SzrjPerform IPA Value Range Propagation.
1721*38fd1498Szrj
1722*38fd1498Szrjfira-algorithm=
1723*38fd1498SzrjCommon Joined RejectNegative Enum(ira_algorithm) Var(flag_ira_algorithm) Init(IRA_ALGORITHM_CB) Optimization
1724*38fd1498Szrj-fira-algorithm=[CB|priority]	Set the used IRA algorithm.
1725*38fd1498Szrj
1726*38fd1498SzrjEnum
1727*38fd1498SzrjName(ira_algorithm) Type(enum ira_algorithm) UnknownError(unknown IRA algorithm %qs)
1728*38fd1498Szrj
1729*38fd1498SzrjEnumValue
1730*38fd1498SzrjEnum(ira_algorithm) String(CB) Value(IRA_ALGORITHM_CB)
1731*38fd1498Szrj
1732*38fd1498SzrjEnumValue
1733*38fd1498SzrjEnum(ira_algorithm) String(priority) Value(IRA_ALGORITHM_PRIORITY)
1734*38fd1498Szrj
1735*38fd1498Szrjfira-region=
1736*38fd1498SzrjCommon Joined RejectNegative Enum(ira_region) Var(flag_ira_region) Init(IRA_REGION_AUTODETECT) Optimization
1737*38fd1498Szrj-fira-region=[one|all|mixed]	Set regions for IRA.
1738*38fd1498Szrj
1739*38fd1498SzrjEnum
1740*38fd1498SzrjName(ira_region) Type(enum ira_region) UnknownError(unknown IRA region %qs)
1741*38fd1498Szrj
1742*38fd1498SzrjEnumValue
1743*38fd1498SzrjEnum(ira_region) String(one) Value(IRA_REGION_ONE)
1744*38fd1498Szrj
1745*38fd1498SzrjEnumValue
1746*38fd1498SzrjEnum(ira_region) String(all) Value(IRA_REGION_ALL)
1747*38fd1498Szrj
1748*38fd1498SzrjEnumValue
1749*38fd1498SzrjEnum(ira_region) String(mixed) Value(IRA_REGION_MIXED)
1750*38fd1498Szrj
1751*38fd1498Szrjfira-hoist-pressure
1752*38fd1498SzrjCommon Report Var(flag_ira_hoist_pressure) Init(1) Optimization
1753*38fd1498SzrjUse IRA based register pressure calculation
1754*38fd1498Szrjin RTL hoist optimizations.
1755*38fd1498Szrj
1756*38fd1498Szrjfira-loop-pressure
1757*38fd1498SzrjCommon Report Var(flag_ira_loop_pressure) Optimization
1758*38fd1498SzrjUse IRA based register pressure calculation
1759*38fd1498Szrjin RTL loop optimizations.
1760*38fd1498Szrj
1761*38fd1498Szrjfira-share-save-slots
1762*38fd1498SzrjCommon Report Var(flag_ira_share_save_slots) Init(1) Optimization
1763*38fd1498SzrjShare slots for saving different hard registers.
1764*38fd1498Szrj
1765*38fd1498Szrjfira-share-spill-slots
1766*38fd1498SzrjCommon Report Var(flag_ira_share_spill_slots) Init(1) Optimization
1767*38fd1498SzrjShare stack slots for spilled pseudo-registers.
1768*38fd1498Szrj
1769*38fd1498Szrjfira-verbose=
1770*38fd1498SzrjCommon RejectNegative Joined UInteger Var(flag_ira_verbose) Init(5)
1771*38fd1498Szrj-fira-verbose=<number>	Control IRA's level of diagnostic messages.
1772*38fd1498Szrj
1773*38fd1498Szrjfivopts
1774*38fd1498SzrjCommon Report Var(flag_ivopts) Init(1) Optimization
1775*38fd1498SzrjOptimize induction variables on trees.
1776*38fd1498Szrj
1777*38fd1498Szrjfjump-tables
1778*38fd1498SzrjCommon Var(flag_jump_tables) Init(1) Optimization
1779*38fd1498SzrjUse jump tables for sufficiently large switch statements.
1780*38fd1498Szrj
1781*38fd1498Szrjfkeep-inline-functions
1782*38fd1498SzrjCommon Report Var(flag_keep_inline_functions)
1783*38fd1498SzrjGenerate code for functions even if they are fully inlined.
1784*38fd1498Szrj
1785*38fd1498Szrjfkeep-static-functions
1786*38fd1498SzrjCommon Report Var(flag_keep_static_functions)
1787*38fd1498SzrjGenerate code for static functions even if they are never called.
1788*38fd1498Szrj
1789*38fd1498Szrjfkeep-static-consts
1790*38fd1498SzrjCommon Report Var(flag_keep_static_consts) Init(1)
1791*38fd1498SzrjEmit static const variables even if they are not used.
1792*38fd1498Szrj
1793*38fd1498Szrjfleading-underscore
1794*38fd1498SzrjCommon Report Var(flag_leading_underscore) Init(-1)
1795*38fd1498SzrjGive external symbols a leading underscore.
1796*38fd1498Szrj
1797*38fd1498Szrjfloop-optimize
1798*38fd1498SzrjCommon Ignore
1799*38fd1498SzrjDoes nothing.  Preserved for backward compatibility.
1800*38fd1498Szrj
1801*38fd1498Szrjflra-remat
1802*38fd1498SzrjCommon Report Var(flag_lra_remat) Optimization
1803*38fd1498SzrjDo CFG-sensitive rematerialization in LRA.
1804*38fd1498Szrj
1805*38fd1498Szrjflto
1806*38fd1498SzrjCommon
1807*38fd1498SzrjEnable link-time optimization.
1808*38fd1498Szrj
1809*38fd1498Szrjflto=
1810*38fd1498SzrjCommon RejectNegative Joined Var(flag_lto)
1811*38fd1498SzrjLink-time optimization with number of parallel jobs or jobserver.
1812*38fd1498Szrj
1813*38fd1498SzrjEnum
1814*38fd1498SzrjName(lto_partition_model) Type(enum lto_partition_model) UnknownError(unknown LTO partitioning model %qs)
1815*38fd1498Szrj
1816*38fd1498SzrjEnumValue
1817*38fd1498SzrjEnum(lto_partition_model) String(none) Value(LTO_PARTITION_NONE)
1818*38fd1498Szrj
1819*38fd1498SzrjEnumValue
1820*38fd1498SzrjEnum(lto_partition_model) String(one) Value(LTO_PARTITION_ONE)
1821*38fd1498Szrj
1822*38fd1498SzrjEnumValue
1823*38fd1498SzrjEnum(lto_partition_model) String(balanced) Value(LTO_PARTITION_BALANCED)
1824*38fd1498Szrj
1825*38fd1498SzrjEnumValue
1826*38fd1498SzrjEnum(lto_partition_model) String(1to1) Value(LTO_PARTITION_1TO1)
1827*38fd1498Szrj
1828*38fd1498SzrjEnumValue
1829*38fd1498SzrjEnum(lto_partition_model) String(max) Value(LTO_PARTITION_MAX)
1830*38fd1498Szrj
1831*38fd1498Szrjflto-partition=
1832*38fd1498SzrjCommon Joined RejectNegative Enum(lto_partition_model) Var(flag_lto_partition) Init(LTO_PARTITION_BALANCED)
1833*38fd1498SzrjSpecify the algorithm to partition symbols and vars at linktime.
1834*38fd1498Szrj
1835*38fd1498Szrj; The initial value of -1 comes from Z_DEFAULT_COMPRESSION in zlib.h.
1836*38fd1498Szrjflto-compression-level=
1837*38fd1498SzrjCommon Joined RejectNegative UInteger Var(flag_lto_compression_level) Init(-1) IntegerRange(0, 9)
1838*38fd1498Szrj-flto-compression-level=<number>	Use zlib compression level <number> for IL.
1839*38fd1498Szrj
1840*38fd1498Szrjflto-odr-type-merging
1841*38fd1498SzrjCommon Report Var(flag_lto_odr_type_mering) Init(1)
1842*38fd1498SzrjMerge C++ types using One Definition Rule.
1843*38fd1498Szrj
1844*38fd1498Szrjflto-report
1845*38fd1498SzrjCommon Report Var(flag_lto_report) Init(0)
1846*38fd1498SzrjReport various link-time optimization statistics.
1847*38fd1498Szrj
1848*38fd1498Szrjflto-report-wpa
1849*38fd1498SzrjCommon Report Var(flag_lto_report_wpa) Init(0)
1850*38fd1498SzrjReport various link-time optimization statistics for WPA only.
1851*38fd1498Szrj
1852*38fd1498Szrjfmath-errno
1853*38fd1498SzrjCommon Report Var(flag_errno_math) Init(1) Optimization SetByCombined
1854*38fd1498SzrjSet errno after built-in math functions.
1855*38fd1498Szrj
1856*38fd1498Szrjfmax-errors=
1857*38fd1498SzrjCommon Joined RejectNegative UInteger Var(flag_max_errors)
1858*38fd1498Szrj-fmax-errors=<number>	Maximum number of errors to report.
1859*38fd1498Szrj
1860*38fd1498Szrjfmem-report
1861*38fd1498SzrjCommon Report Var(mem_report)
1862*38fd1498SzrjReport on permanent memory allocation.
1863*38fd1498Szrj
1864*38fd1498Szrjfmem-report-wpa
1865*38fd1498SzrjCommon Report Var(mem_report_wpa)
1866*38fd1498SzrjReport on permanent memory allocation in WPA only.
1867*38fd1498Szrj
1868*38fd1498Szrj; This will attempt to merge constant section constants, if 1 only
1869*38fd1498Szrj; string constants and constants from constant pool, if 2 also constant
1870*38fd1498Szrj; variables.
1871*38fd1498Szrjfmerge-all-constants
1872*38fd1498SzrjCommon Report Var(flag_merge_constants,2) Init(1)
1873*38fd1498SzrjAttempt to merge identical constants and constant variables.
1874*38fd1498Szrj
1875*38fd1498Szrjfmerge-constants
1876*38fd1498SzrjCommon Report Var(flag_merge_constants,1)
1877*38fd1498SzrjAttempt to merge identical constants across compilation units.
1878*38fd1498Szrj
1879*38fd1498Szrjfmerge-debug-strings
1880*38fd1498SzrjCommon Report Var(flag_merge_debug_strings) Init(1)
1881*38fd1498SzrjAttempt to merge identical debug strings across compilation units.
1882*38fd1498Szrj
1883*38fd1498Szrjfmessage-length=
1884*38fd1498SzrjCommon RejectNegative Joined UInteger
1885*38fd1498Szrj-fmessage-length=<number>	Limit diagnostics to <number> characters per line.  0 suppresses line-wrapping.
1886*38fd1498Szrj
1887*38fd1498Szrjfmodulo-sched
1888*38fd1498SzrjCommon Report Var(flag_modulo_sched) Optimization
1889*38fd1498SzrjPerform SMS based modulo scheduling before the first scheduling pass.
1890*38fd1498Szrj
1891*38fd1498Szrjfmodulo-sched-allow-regmoves
1892*38fd1498SzrjCommon Report Var(flag_modulo_sched_allow_regmoves) Optimization
1893*38fd1498SzrjPerform SMS based modulo scheduling with register moves allowed.
1894*38fd1498Szrj
1895*38fd1498Szrjfmove-loop-invariants
1896*38fd1498SzrjCommon Report Var(flag_move_loop_invariants) Optimization
1897*38fd1498SzrjMove loop invariant computations out of loops.
1898*38fd1498Szrj
1899*38fd1498Szrjfdce
1900*38fd1498SzrjCommon Var(flag_dce) Init(1) Optimization
1901*38fd1498SzrjUse the RTL dead code elimination pass.
1902*38fd1498Szrj
1903*38fd1498Szrjfdse
1904*38fd1498SzrjCommon Var(flag_dse) Init(1) Optimization
1905*38fd1498SzrjUse the RTL dead store elimination pass.
1906*38fd1498Szrj
1907*38fd1498Szrjfreschedule-modulo-scheduled-loops
1908*38fd1498SzrjCommon Report Var(flag_resched_modulo_sched) Optimization
1909*38fd1498SzrjEnable/Disable the traditional scheduling in loops that already passed modulo scheduling.
1910*38fd1498Szrj
1911*38fd1498Szrjfnon-call-exceptions
1912*38fd1498SzrjCommon Report Var(flag_non_call_exceptions) Optimization
1913*38fd1498SzrjSupport synchronous non-call exceptions.
1914*38fd1498Szrj
1915*38fd1498Szrjfoffload=
1916*38fd1498SzrjCommon Driver Joined MissingArgError(options or targets missing after %qs)
1917*38fd1498Szrj-foffload=<targets>=<options>  Specify offloading targets and options for them.
1918*38fd1498Szrj
1919*38fd1498Szrjfoffload-abi=
1920*38fd1498SzrjCommon Joined RejectNegative Enum(offload_abi) Var(flag_offload_abi) Init(OFFLOAD_ABI_UNSET)
1921*38fd1498Szrj-foffload-abi=[lp64|ilp32]     Set the ABI to use in an offload compiler.
1922*38fd1498Szrj
1923*38fd1498SzrjEnum
1924*38fd1498SzrjName(offload_abi) Type(enum offload_abi) UnknownError(unknown offload ABI %qs)
1925*38fd1498Szrj
1926*38fd1498SzrjEnumValue
1927*38fd1498SzrjEnum(offload_abi) String(ilp32) Value(OFFLOAD_ABI_ILP32)
1928*38fd1498Szrj
1929*38fd1498SzrjEnumValue
1930*38fd1498SzrjEnum(offload_abi) String(lp64) Value(OFFLOAD_ABI_LP64)
1931*38fd1498Szrj
1932*38fd1498Szrjfomit-frame-pointer
1933*38fd1498SzrjCommon Report Var(flag_omit_frame_pointer) Optimization
1934*38fd1498SzrjWhen possible do not generate stack frames.
1935*38fd1498Szrj
1936*38fd1498Szrjfopt-info
1937*38fd1498SzrjCommon Report Var(flag_opt_info) Optimization
1938*38fd1498SzrjEnable all optimization info dumps on stderr.
1939*38fd1498Szrj
1940*38fd1498Szrjfopt-info-
1941*38fd1498SzrjCommon Joined RejectNegative Var(common_deferred_options) Defer
1942*38fd1498Szrj-fopt-info[-<type>=filename]	Dump compiler optimization details.
1943*38fd1498Szrj
1944*38fd1498Szrjfoptimize-register-move
1945*38fd1498SzrjCommon Ignore
1946*38fd1498SzrjDoes nothing. Preserved for backward compatibility.
1947*38fd1498Szrj
1948*38fd1498Szrjfoptimize-sibling-calls
1949*38fd1498SzrjCommon Report Var(flag_optimize_sibling_calls) Optimization
1950*38fd1498SzrjOptimize sibling and tail recursive calls.
1951*38fd1498Szrj
1952*38fd1498Szrjfpartial-inlining
1953*38fd1498SzrjCommon Report Var(flag_partial_inlining) Optimization
1954*38fd1498SzrjPerform partial inlining.
1955*38fd1498Szrj
1956*38fd1498Szrjfpre-ipa-mem-report
1957*38fd1498SzrjCommon Report Var(pre_ipa_mem_report)
1958*38fd1498SzrjReport on memory allocation before interprocedural optimization.
1959*38fd1498Szrj
1960*38fd1498Szrjfpost-ipa-mem-report
1961*38fd1498SzrjCommon Report Var(post_ipa_mem_report)
1962*38fd1498SzrjReport on memory allocation before interprocedural optimization.
1963*38fd1498Szrj
1964*38fd1498Szrjfpack-struct
1965*38fd1498SzrjCommon Report Var(flag_pack_struct) Optimization
1966*38fd1498SzrjPack structure members together without holes.
1967*38fd1498Szrj
1968*38fd1498Szrjfpack-struct=
1969*38fd1498SzrjCommon RejectNegative Joined UInteger Optimization
1970*38fd1498Szrj-fpack-struct=<number>	Set initial maximum structure member alignment.
1971*38fd1498Szrj
1972*38fd1498Szrjfpcc-struct-return
1973*38fd1498SzrjCommon Report Var(flag_pcc_struct_return,1) Init(DEFAULT_PCC_STRUCT_RETURN)
1974*38fd1498SzrjReturn small aggregates in memory, not registers.
1975*38fd1498Szrj
1976*38fd1498Szrjfpeel-loops
1977*38fd1498SzrjCommon Report Var(flag_peel_loops) Optimization
1978*38fd1498SzrjPerform loop peeling.
1979*38fd1498Szrj
1980*38fd1498Szrjfpeephole
1981*38fd1498SzrjCommon Report Var(flag_no_peephole,0) Optimization
1982*38fd1498SzrjEnable machine specific peephole optimizations.
1983*38fd1498Szrj
1984*38fd1498Szrjfpeephole2
1985*38fd1498SzrjCommon Report Var(flag_peephole2) Optimization
1986*38fd1498SzrjEnable an RTL peephole pass before sched2.
1987*38fd1498Szrj
1988*38fd1498SzrjfPIC
1989*38fd1498SzrjCommon Report Var(flag_pic,2) Negative(fPIE) Init(-1)
1990*38fd1498SzrjGenerate position-independent code if possible (large mode).
1991*38fd1498Szrj
1992*38fd1498SzrjfPIE
1993*38fd1498SzrjCommon Report Var(flag_pie,2) Negative(fpic) Init(-1)
1994*38fd1498SzrjGenerate position-independent code for executables if possible (large mode).
1995*38fd1498Szrj
1996*38fd1498Szrjfpic
1997*38fd1498SzrjCommon Report Var(flag_pic,1) Negative(fpie) Init(-1)
1998*38fd1498SzrjGenerate position-independent code if possible (small mode).
1999*38fd1498Szrj
2000*38fd1498Szrjfpie
2001*38fd1498SzrjCommon Report Var(flag_pie,1) Negative(fPIC) Init(-1)
2002*38fd1498SzrjGenerate position-independent code for executables if possible (small mode).
2003*38fd1498Szrj
2004*38fd1498Szrjfplt
2005*38fd1498SzrjCommon Report Var(flag_plt) Init(1) Optimization
2006*38fd1498SzrjUse PLT for PIC calls (-fno-plt: load the address from GOT at call site).
2007*38fd1498Szrj
2008*38fd1498Szrjfplugin=
2009*38fd1498SzrjCommon Joined RejectNegative Var(common_deferred_options) Defer
2010*38fd1498SzrjSpecify a plugin to load.
2011*38fd1498Szrj
2012*38fd1498Szrjfplugin-arg-
2013*38fd1498SzrjCommon Joined RejectNegative Var(common_deferred_options) Defer
2014*38fd1498Szrj-fplugin-arg-<name>-<key>[=<value>]	Specify argument <key>=<value> for plugin <name>.
2015*38fd1498Szrj
2016*38fd1498Szrjfpredictive-commoning
2017*38fd1498SzrjCommon Report Var(flag_predictive_commoning) Optimization
2018*38fd1498SzrjRun predictive commoning optimization.
2019*38fd1498Szrj
2020*38fd1498Szrjfprefetch-loop-arrays
2021*38fd1498SzrjCommon Report Var(flag_prefetch_loop_arrays) Init(-1) Optimization
2022*38fd1498SzrjGenerate prefetch instructions, if available, for arrays in loops.
2023*38fd1498Szrj
2024*38fd1498Szrjfprofile
2025*38fd1498SzrjCommon Report Var(profile_flag)
2026*38fd1498SzrjEnable basic program profiling code.
2027*38fd1498Szrj
2028*38fd1498Szrjfprofile-abs-path
2029*38fd1498SzrjCommon Report Var(profile_abs_path_flag)
2030*38fd1498SzrjGenerate absolute source path names for gcov.
2031*38fd1498Szrj
2032*38fd1498Szrjfprofile-arcs
2033*38fd1498SzrjCommon Report Var(profile_arc_flag)
2034*38fd1498SzrjInsert arc-based program profiling code.
2035*38fd1498Szrj
2036*38fd1498Szrjfprofile-dir=
2037*38fd1498SzrjCommon Joined RejectNegative Var(profile_data_prefix)
2038*38fd1498SzrjSet the top-level directory for storing the profile data.
2039*38fd1498SzrjThe default is 'pwd'.
2040*38fd1498Szrj
2041*38fd1498Szrjfprofile-correction
2042*38fd1498SzrjCommon Report Var(flag_profile_correction)
2043*38fd1498SzrjEnable correction of flow inconsistent profile data input.
2044*38fd1498Szrj
2045*38fd1498Szrjfprofile-update=
2046*38fd1498SzrjCommon Joined RejectNegative Enum(profile_update) Var(flag_profile_update) Init(PROFILE_UPDATE_SINGLE)
2047*38fd1498Szrj-fprofile-update=[single|atomic|prefer-atomic]	Set the profile update method.
2048*38fd1498Szrj
2049*38fd1498SzrjEnum
2050*38fd1498SzrjName(profile_update) Type(enum profile_update) UnknownError(unknown profile update method %qs)
2051*38fd1498Szrj
2052*38fd1498SzrjEnumValue
2053*38fd1498SzrjEnum(profile_update) String(single) Value(PROFILE_UPDATE_SINGLE)
2054*38fd1498Szrj
2055*38fd1498SzrjEnumValue
2056*38fd1498SzrjEnum(profile_update) String(atomic) Value(PROFILE_UPDATE_ATOMIC)
2057*38fd1498Szrj
2058*38fd1498SzrjEnumValue
2059*38fd1498SzrjEnum(profile_update) String(prefer-atomic) Value(PROFILE_UPDATE_PREFER_ATOMIC)
2060*38fd1498Szrj
2061*38fd1498Szrjfprofile-generate
2062*38fd1498SzrjCommon
2063*38fd1498SzrjEnable common options for generating profile info for profile feedback directed optimizations.
2064*38fd1498Szrj
2065*38fd1498Szrjfprofile-generate=
2066*38fd1498SzrjCommon Joined RejectNegative
2067*38fd1498SzrjEnable common options for generating profile info for profile feedback directed optimizations, and set -fprofile-dir=.
2068*38fd1498Szrj
2069*38fd1498Szrjfprofile-use
2070*38fd1498SzrjCommon Var(flag_profile_use)
2071*38fd1498SzrjEnable common options for performing profile feedback directed optimizations.
2072*38fd1498Szrj
2073*38fd1498Szrjfprofile-use=
2074*38fd1498SzrjCommon Joined RejectNegative
2075*38fd1498SzrjEnable common options for performing profile feedback directed optimizations, and set -fprofile-dir=.
2076*38fd1498Szrj
2077*38fd1498Szrjfprofile-values
2078*38fd1498SzrjCommon Report Var(flag_profile_values)
2079*38fd1498SzrjInsert code to profile values of expressions.
2080*38fd1498Szrj
2081*38fd1498Szrjfprofile-report
2082*38fd1498SzrjCommon Report Var(profile_report)
2083*38fd1498SzrjReport on consistency of profile.
2084*38fd1498Szrj
2085*38fd1498Szrjfprofile-reorder-functions
2086*38fd1498SzrjCommon Report Var(flag_profile_reorder_functions)
2087*38fd1498SzrjEnable function reordering that improves code placement.
2088*38fd1498Szrj
2089*38fd1498Szrjfpatchable-function-entry=
2090*38fd1498SzrjCommon Joined Optimization
2091*38fd1498SzrjInsert NOP instructions at each function entry.
2092*38fd1498Szrj
2093*38fd1498Szrjfrandom-seed
2094*38fd1498SzrjCommon Var(common_deferred_options) Defer
2095*38fd1498Szrj
2096*38fd1498Szrjfrandom-seed=
2097*38fd1498SzrjCommon Joined RejectNegative Var(common_deferred_options) Defer
2098*38fd1498Szrj-frandom-seed=<string>	Make compile reproducible using <string>.
2099*38fd1498Szrj
2100*38fd1498Szrj; This switch causes the command line that was used to create an
2101*38fd1498Szrj; object file to be recorded into the object file.  The exact format
2102*38fd1498Szrj; of this recording is target and binary file format dependent.
2103*38fd1498Szrj; It is related to the -fverbose-asm switch, but that switch only
2104*38fd1498Szrj; records information in the assembler output file as comments, so
2105*38fd1498Szrj; they never reach the object file.
2106*38fd1498Szrjfrecord-gcc-switches
2107*38fd1498SzrjCommon Report Var(flag_record_gcc_switches)
2108*38fd1498SzrjRecord gcc command line switches in the object file.
2109*38fd1498Szrj
2110*38fd1498Szrjfreg-struct-return
2111*38fd1498SzrjCommon Report Var(flag_pcc_struct_return,0) Optimization
2112*38fd1498SzrjReturn small aggregates in registers.
2113*38fd1498Szrj
2114*38fd1498Szrjfregmove
2115*38fd1498SzrjCommon Ignore
2116*38fd1498SzrjDoes nothing. Preserved for backward compatibility.
2117*38fd1498Szrj
2118*38fd1498Szrjflifetime-dse
2119*38fd1498SzrjCommon Report Var(flag_lifetime_dse,2) Init(2) Optimization
2120*38fd1498SzrjTell DSE that the storage for a C++ object is dead when the constructor
2121*38fd1498Szrjstarts and when the destructor finishes.
2122*38fd1498Szrj
2123*38fd1498Szrjflifetime-dse=
2124*38fd1498SzrjCommon Joined RejectNegative UInteger Var(flag_lifetime_dse) Optimization IntegerRange(0, 2)
2125*38fd1498Szrj
2126*38fd1498Szrjflive-range-shrinkage
2127*38fd1498SzrjCommon Report Var(flag_live_range_shrinkage) Init(0) Optimization
2128*38fd1498SzrjRelief of register pressure through live range shrinkage.
2129*38fd1498Szrj
2130*38fd1498Szrjfrename-registers
2131*38fd1498SzrjCommon Report Var(flag_rename_registers) Init(2) Optimization
2132*38fd1498SzrjPerform a register renaming optimization pass.
2133*38fd1498Szrj
2134*38fd1498Szrjfschedule-fusion
2135*38fd1498SzrjCommon Report Var(flag_schedule_fusion) Init(2) Optimization
2136*38fd1498SzrjPerform a target dependent instruction fusion optimization pass.
2137*38fd1498Szrj
2138*38fd1498Szrjfreorder-blocks
2139*38fd1498SzrjCommon Report Var(flag_reorder_blocks) Optimization
2140*38fd1498SzrjReorder basic blocks to improve code placement.
2141*38fd1498Szrj
2142*38fd1498Szrjfreorder-blocks-algorithm=
2143*38fd1498SzrjCommon Joined RejectNegative Enum(reorder_blocks_algorithm) Var(flag_reorder_blocks_algorithm) Init(REORDER_BLOCKS_ALGORITHM_SIMPLE) Optimization
2144*38fd1498Szrj-freorder-blocks-algorithm=[simple|stc]	Set the used basic block reordering algorithm.
2145*38fd1498Szrj
2146*38fd1498SzrjEnum
2147*38fd1498SzrjName(reorder_blocks_algorithm) Type(enum reorder_blocks_algorithm) UnknownError(unknown basic block reordering algorithm %qs)
2148*38fd1498Szrj
2149*38fd1498SzrjEnumValue
2150*38fd1498SzrjEnum(reorder_blocks_algorithm) String(simple) Value(REORDER_BLOCKS_ALGORITHM_SIMPLE)
2151*38fd1498Szrj
2152*38fd1498SzrjEnumValue
2153*38fd1498SzrjEnum(reorder_blocks_algorithm) String(stc) Value(REORDER_BLOCKS_ALGORITHM_STC)
2154*38fd1498Szrj
2155*38fd1498Szrjfreorder-blocks-and-partition
2156*38fd1498SzrjCommon Report Var(flag_reorder_blocks_and_partition) Optimization
2157*38fd1498SzrjReorder basic blocks and partition into hot and cold sections.
2158*38fd1498Szrj
2159*38fd1498Szrjfreorder-functions
2160*38fd1498SzrjCommon Report Var(flag_reorder_functions) Optimization
2161*38fd1498SzrjReorder functions to improve code placement.
2162*38fd1498Szrj
2163*38fd1498Szrjfrerun-cse-after-loop
2164*38fd1498SzrjCommon Report Var(flag_rerun_cse_after_loop) Optimization
2165*38fd1498SzrjAdd a common subexpression elimination pass after loop optimizations.
2166*38fd1498Szrj
2167*38fd1498Szrjfrerun-loop-opt
2168*38fd1498SzrjCommon Ignore
2169*38fd1498SzrjDoes nothing.  Preserved for backward compatibility.
2170*38fd1498Szrj
2171*38fd1498Szrjfrounding-math
2172*38fd1498SzrjCommon Report Var(flag_rounding_math) Optimization SetByCombined
2173*38fd1498SzrjDisable optimizations that assume default FP rounding behavior.
2174*38fd1498Szrj
2175*38fd1498Szrjfsched-interblock
2176*38fd1498SzrjCommon Report Var(flag_schedule_interblock) Init(1) Optimization
2177*38fd1498SzrjEnable scheduling across basic blocks.
2178*38fd1498Szrj
2179*38fd1498Szrjfsched-pressure
2180*38fd1498SzrjCommon Report Var(flag_sched_pressure) Init(0) Optimization
2181*38fd1498SzrjEnable register pressure sensitive insn scheduling.
2182*38fd1498Szrj
2183*38fd1498Szrjfsched-spec
2184*38fd1498SzrjCommon Report Var(flag_schedule_speculative) Init(1) Optimization
2185*38fd1498SzrjAllow speculative motion of non-loads.
2186*38fd1498Szrj
2187*38fd1498Szrjfsched-spec-load
2188*38fd1498SzrjCommon Report Var(flag_schedule_speculative_load) Optimization
2189*38fd1498SzrjAllow speculative motion of some loads.
2190*38fd1498Szrj
2191*38fd1498Szrjfsched-spec-load-dangerous
2192*38fd1498SzrjCommon Report Var(flag_schedule_speculative_load_dangerous) Optimization
2193*38fd1498SzrjAllow speculative motion of more loads.
2194*38fd1498Szrj
2195*38fd1498Szrjfsched-verbose=
2196*38fd1498SzrjCommon RejectNegative Joined UInteger Var(sched_verbose_param) Init(1)
2197*38fd1498Szrj-fsched-verbose=<number>	Set the verbosity level of the scheduler.
2198*38fd1498Szrj
2199*38fd1498Szrjfsched2-use-superblocks
2200*38fd1498SzrjCommon Report Var(flag_sched2_use_superblocks) Optimization
2201*38fd1498SzrjIf scheduling post reload, do superblock scheduling.
2202*38fd1498Szrj
2203*38fd1498Szrjfsched2-use-traces
2204*38fd1498SzrjCommon Ignore
2205*38fd1498SzrjDoes nothing.  Preserved for backward compatibility.
2206*38fd1498Szrj
2207*38fd1498Szrjfschedule-insns
2208*38fd1498SzrjCommon Report Var(flag_schedule_insns) Optimization
2209*38fd1498SzrjReschedule instructions before register allocation.
2210*38fd1498Szrj
2211*38fd1498Szrjfschedule-insns2
2212*38fd1498SzrjCommon Report Var(flag_schedule_insns_after_reload) Optimization
2213*38fd1498SzrjReschedule instructions after register allocation.
2214*38fd1498Szrj
2215*38fd1498Szrj; This flag should be on when a target implements non-trivial
2216*38fd1498Szrj; scheduling hooks, maybe saving some information for its own sake.
2217*38fd1498Szrj; On IA64, for example, this is used for correct bundling.
2218*38fd1498Szrjfselective-scheduling
2219*38fd1498SzrjCommon Report Var(flag_selective_scheduling) Optimization
2220*38fd1498SzrjSchedule instructions using selective scheduling algorithm.
2221*38fd1498Szrj
2222*38fd1498Szrjfselective-scheduling2
2223*38fd1498SzrjCommon Report Var(flag_selective_scheduling2) Optimization
2224*38fd1498SzrjRun selective scheduling after reload.
2225*38fd1498Szrj
2226*38fd1498Szrjfself-test=
2227*38fd1498SzrjCommon Undocumented Joined Var(flag_self_test)
2228*38fd1498SzrjRun self-tests, using the given path to locate test files.
2229*38fd1498Szrj
2230*38fd1498Szrjfsel-sched-pipelining
2231*38fd1498SzrjCommon Report Var(flag_sel_sched_pipelining) Init(0) Optimization
2232*38fd1498SzrjPerform software pipelining of inner loops during selective scheduling.
2233*38fd1498Szrj
2234*38fd1498Szrjfsel-sched-pipelining-outer-loops
2235*38fd1498SzrjCommon Report Var(flag_sel_sched_pipelining_outer_loops) Init(0) Optimization
2236*38fd1498SzrjPerform software pipelining of outer loops during selective scheduling.
2237*38fd1498Szrj
2238*38fd1498Szrjfsel-sched-reschedule-pipelined
2239*38fd1498SzrjCommon Report Var(flag_sel_sched_reschedule_pipelined) Init(0) Optimization
2240*38fd1498SzrjReschedule pipelined regions without pipelining.
2241*38fd1498Szrj
2242*38fd1498Szrjfsemantic-interposition
2243*38fd1498SzrjCommon Report Var(flag_semantic_interposition) Init(1)
2244*38fd1498SzrjAllow interposing function (or variables) by ones with different semantics (or initializer) respectively by dynamic linker.
2245*38fd1498Szrj
2246*38fd1498Szrj; sched_stalled_insns means that insns can be moved prematurely from the queue
2247*38fd1498Szrj; of stalled insns into the ready list.
2248*38fd1498Szrjfsched-stalled-insns
2249*38fd1498SzrjCommon Report Var(flag_sched_stalled_insns) Optimization UInteger
2250*38fd1498SzrjAllow premature scheduling of queued insns.
2251*38fd1498Szrj
2252*38fd1498Szrjfsched-stalled-insns=
2253*38fd1498SzrjCommon RejectNegative Joined UInteger Optimization
2254*38fd1498Szrj-fsched-stalled-insns=<number>	Set number of queued insns that can be prematurely scheduled.
2255*38fd1498Szrj
2256*38fd1498Szrj; sched_stalled_insns_dep controls how many recently scheduled cycles will
2257*38fd1498Szrj; be examined for a dependency on a stalled insn that is candidate for
2258*38fd1498Szrj; premature removal from the queue of stalled insns into the ready list (has
2259*38fd1498Szrj; an effect only if the flag 'sched_stalled_insns' is set).
2260*38fd1498Szrjfsched-stalled-insns-dep
2261*38fd1498SzrjCommon Report Var(flag_sched_stalled_insns_dep,1) Init(1) Optimization UInteger
2262*38fd1498SzrjSet dependence distance checking in premature scheduling of queued insns.
2263*38fd1498Szrj
2264*38fd1498Szrjfsched-stalled-insns-dep=
2265*38fd1498SzrjCommon RejectNegative Joined UInteger Optimization
2266*38fd1498Szrj-fsched-stalled-insns-dep=<number>	Set dependence distance checking in premature scheduling of queued insns.
2267*38fd1498Szrj
2268*38fd1498Szrjfsched-group-heuristic
2269*38fd1498SzrjCommon Report Var(flag_sched_group_heuristic) Init(1) Optimization
2270*38fd1498SzrjEnable the group heuristic in the scheduler.
2271*38fd1498Szrj
2272*38fd1498Szrjfsched-critical-path-heuristic
2273*38fd1498SzrjCommon Report Var(flag_sched_critical_path_heuristic) Init(1) Optimization
2274*38fd1498SzrjEnable the critical path heuristic in the scheduler.
2275*38fd1498Szrj
2276*38fd1498Szrjfsched-spec-insn-heuristic
2277*38fd1498SzrjCommon Report Var(flag_sched_spec_insn_heuristic) Init(1) Optimization
2278*38fd1498SzrjEnable the speculative instruction heuristic in the scheduler.
2279*38fd1498Szrj
2280*38fd1498Szrjfsched-rank-heuristic
2281*38fd1498SzrjCommon Report Var(flag_sched_rank_heuristic) Init(1) Optimization
2282*38fd1498SzrjEnable the rank heuristic in the scheduler.
2283*38fd1498Szrj
2284*38fd1498Szrjfsched-last-insn-heuristic
2285*38fd1498SzrjCommon Report Var(flag_sched_last_insn_heuristic) Init(1) Optimization
2286*38fd1498SzrjEnable the last instruction heuristic in the scheduler.
2287*38fd1498Szrj
2288*38fd1498Szrjfsched-dep-count-heuristic
2289*38fd1498SzrjCommon Report Var(flag_sched_dep_count_heuristic) Init(1) Optimization
2290*38fd1498SzrjEnable the dependent count heuristic in the scheduler.
2291*38fd1498Szrj
2292*38fd1498Szrjfsection-anchors
2293*38fd1498SzrjCommon Report Var(flag_section_anchors) Optimization
2294*38fd1498SzrjAccess data in the same section from shared anchor points.
2295*38fd1498Szrj
2296*38fd1498Szrjfsee
2297*38fd1498SzrjCommon Ignore
2298*38fd1498SzrjDoes nothing.  Preserved for backward compatibility.
2299*38fd1498Szrj
2300*38fd1498Szrjfzee
2301*38fd1498SzrjCommon Ignore
2302*38fd1498SzrjDoes nothing.  Preserved for backward compatibility.
2303*38fd1498Szrj
2304*38fd1498Szrjfree
2305*38fd1498SzrjCommon Report Var(flag_ree) Init(0)
2306*38fd1498SzrjTurn on Redundant Extensions Elimination pass.
2307*38fd1498Szrj
2308*38fd1498Szrjfshow-column
2309*38fd1498SzrjCommon Report Var(flag_show_column) Init(1)
2310*38fd1498SzrjShow column numbers in diagnostics, when available.  Default on.
2311*38fd1498Szrj
2312*38fd1498Szrjfshrink-wrap
2313*38fd1498SzrjCommon Report Var(flag_shrink_wrap) Optimization
2314*38fd1498SzrjEmit function prologues only before parts of the function that need it,
2315*38fd1498Szrjrather than at the top of the function.
2316*38fd1498Szrj
2317*38fd1498Szrjfshrink-wrap-separate
2318*38fd1498SzrjCommon Report Var(flag_shrink_wrap_separate) Init(1) Optimization
2319*38fd1498SzrjShrink-wrap parts of the prologue and epilogue separately.
2320*38fd1498Szrj
2321*38fd1498Szrjfsignaling-nans
2322*38fd1498SzrjCommon Report Var(flag_signaling_nans) Optimization SetByCombined
2323*38fd1498SzrjDisable optimizations observable by IEEE signaling NaNs.
2324*38fd1498Szrj
2325*38fd1498Szrjfsigned-zeros
2326*38fd1498SzrjCommon Report Var(flag_signed_zeros) Init(1) Optimization SetByCombined
2327*38fd1498SzrjDisable floating point optimizations that ignore the IEEE signedness of zero.
2328*38fd1498Szrj
2329*38fd1498Szrjfsingle-precision-constant
2330*38fd1498SzrjCommon Report Var(flag_single_precision_constant) Optimization
2331*38fd1498SzrjConvert floating point constants to single precision constants.
2332*38fd1498Szrj
2333*38fd1498Szrjfsplit-ivs-in-unroller
2334*38fd1498SzrjCommon Report Var(flag_split_ivs_in_unroller) Init(1) Optimization
2335*38fd1498SzrjSplit lifetimes of induction variables when loops are unrolled.
2336*38fd1498Szrj
2337*38fd1498Szrjfsplit-stack
2338*38fd1498SzrjCommon Report Var(flag_split_stack) Init(-1)
2339*38fd1498SzrjGenerate discontiguous stack frames.
2340*38fd1498Szrj
2341*38fd1498Szrjfsplit-wide-types
2342*38fd1498SzrjCommon Report Var(flag_split_wide_types) Optimization
2343*38fd1498SzrjSplit wide types into independent registers.
2344*38fd1498Szrj
2345*38fd1498Szrjfssa-backprop
2346*38fd1498SzrjCommon Report Var(flag_ssa_backprop) Init(1) Optimization
2347*38fd1498SzrjEnable backward propagation of use properties at the SSA level.
2348*38fd1498Szrj
2349*38fd1498Szrjfssa-phiopt
2350*38fd1498SzrjCommon Report Var(flag_ssa_phiopt) Optimization
2351*38fd1498SzrjOptimize conditional patterns using SSA PHI nodes.
2352*38fd1498Szrj
2353*38fd1498Szrjfstdarg-opt
2354*38fd1498SzrjCommon Report Var(flag_stdarg_opt) Init(1) Optimization
2355*38fd1498SzrjOptimize amount of stdarg registers saved to stack at start of function.
2356*38fd1498Szrj
2357*38fd1498Szrjfvariable-expansion-in-unroller
2358*38fd1498SzrjCommon Report Var(flag_variable_expansion_in_unroller) Optimization
2359*38fd1498SzrjApply variable expansion when loops are unrolled.
2360*38fd1498Szrj
2361*38fd1498Szrjfstack-check=
2362*38fd1498SzrjCommon Report RejectNegative Joined Optimization
2363*38fd1498Szrj-fstack-check=[no|generic|specific]	Insert stack checking code into the program.
2364*38fd1498Szrj
2365*38fd1498Szrjfstack-check
2366*38fd1498SzrjCommon Alias(fstack-check=, specific, no)
2367*38fd1498SzrjInsert stack checking code into the program.  Same as -fstack-check=specific.
2368*38fd1498Szrj
2369*38fd1498Szrjfstack-clash-protection
2370*38fd1498SzrjCommon Report Var(flag_stack_clash_protection) Optimization
2371*38fd1498SzrjInsert code to probe each page of stack space as it is allocated to protect
2372*38fd1498Szrjfrom stack-clash style attacks.
2373*38fd1498Szrj
2374*38fd1498Szrjfstack-limit
2375*38fd1498SzrjCommon Var(common_deferred_options) Defer
2376*38fd1498Szrj
2377*38fd1498Szrjfstack-limit-register=
2378*38fd1498SzrjCommon RejectNegative Joined Var(common_deferred_options) Defer
2379*38fd1498Szrj-fstack-limit-register=<register>	Trap if the stack goes past <register>.
2380*38fd1498Szrj
2381*38fd1498Szrjfstack-limit-symbol=
2382*38fd1498SzrjCommon RejectNegative Joined Var(common_deferred_options) Defer
2383*38fd1498Szrj-fstack-limit-symbol=<name>	Trap if the stack goes past symbol <name>.
2384*38fd1498Szrj
2385*38fd1498Szrjfstack-protector
2386*38fd1498SzrjCommon Report Var(flag_stack_protect, 1) Init(-1) Optimization
2387*38fd1498SzrjUse propolice as a stack protection method.
2388*38fd1498Szrj
2389*38fd1498Szrjfstack-protector-all
2390*38fd1498SzrjCommon Report RejectNegative Var(flag_stack_protect, 2) Init(-1) Optimization
2391*38fd1498SzrjUse a stack protection method for every function.
2392*38fd1498Szrj
2393*38fd1498Szrjfstack-protector-strong
2394*38fd1498SzrjCommon Report RejectNegative Var(flag_stack_protect, 3) Init(-1) Optimization
2395*38fd1498SzrjUse a smart stack protection method for certain functions.
2396*38fd1498Szrj
2397*38fd1498Szrjfstack-protector-explicit
2398*38fd1498SzrjCommon Report RejectNegative Var(flag_stack_protect, 4) Optimization
2399*38fd1498SzrjUse stack protection method only for functions with the stack_protect attribute.
2400*38fd1498Szrj
2401*38fd1498Szrjfstack-usage
2402*38fd1498SzrjCommon RejectNegative Var(flag_stack_usage)
2403*38fd1498SzrjOutput stack usage information on a per-function basis.
2404*38fd1498Szrj
2405*38fd1498Szrjfstrength-reduce
2406*38fd1498SzrjCommon Ignore
2407*38fd1498SzrjDoes nothing.  Preserved for backward compatibility.
2408*38fd1498Szrj
2409*38fd1498Szrj; Nonzero if we should do (language-dependent) alias analysis.
2410*38fd1498Szrj; Typically, this analysis will assume that expressions of certain
2411*38fd1498Szrj; types do not alias expressions of certain other types.  Only used
2412*38fd1498Szrj; if alias analysis (in general) is enabled.
2413*38fd1498Szrjfstrict-aliasing
2414*38fd1498SzrjCommon Report Var(flag_strict_aliasing) Optimization
2415*38fd1498SzrjAssume strict aliasing rules apply.
2416*38fd1498Szrj
2417*38fd1498Szrjfstrict-overflow
2418*38fd1498SzrjCommon Report
2419*38fd1498SzrjTreat signed overflow as undefined.  Negated as -fwrapv -fwrapv-pointer.
2420*38fd1498Szrj
2421*38fd1498Szrjfsync-libcalls
2422*38fd1498SzrjCommon Report Var(flag_sync_libcalls) Init(1)
2423*38fd1498SzrjImplement __atomic operations via libcalls to legacy __sync functions.
2424*38fd1498Szrj
2425*38fd1498Szrjfsyntax-only
2426*38fd1498SzrjCommon Report Var(flag_syntax_only)
2427*38fd1498SzrjCheck for syntax errors, then stop.
2428*38fd1498Szrj
2429*38fd1498Szrjftest-coverage
2430*38fd1498SzrjCommon Report Var(flag_test_coverage)
2431*38fd1498SzrjCreate data files needed by \"gcov\".
2432*38fd1498Szrj
2433*38fd1498Szrjfthread-jumps
2434*38fd1498SzrjCommon Report Var(flag_thread_jumps) Optimization
2435*38fd1498SzrjPerform jump threading optimizations.
2436*38fd1498Szrj
2437*38fd1498Szrjftime-report
2438*38fd1498SzrjCommon Report Var(time_report)
2439*38fd1498SzrjReport the time taken by each compiler pass.
2440*38fd1498Szrj
2441*38fd1498Szrjftime-report-details
2442*38fd1498SzrjCommon Report Var(time_report_details)
2443*38fd1498SzrjRecord times taken by sub-phases separately.
2444*38fd1498Szrj
2445*38fd1498Szrjftls-model=
2446*38fd1498SzrjCommon Joined RejectNegative Enum(tls_model) Var(flag_tls_default) Init(TLS_MODEL_GLOBAL_DYNAMIC)
2447*38fd1498Szrj-ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec]	Set the default thread-local storage code generation model.
2448*38fd1498Szrj
2449*38fd1498SzrjEnum
2450*38fd1498SzrjName(tls_model) Type(enum tls_model) UnknownError(unknown TLS model %qs)
2451*38fd1498Szrj
2452*38fd1498SzrjEnumValue
2453*38fd1498SzrjEnum(tls_model) String(global-dynamic) Value(TLS_MODEL_GLOBAL_DYNAMIC)
2454*38fd1498Szrj
2455*38fd1498SzrjEnumValue
2456*38fd1498SzrjEnum(tls_model) String(local-dynamic) Value(TLS_MODEL_LOCAL_DYNAMIC)
2457*38fd1498Szrj
2458*38fd1498SzrjEnumValue
2459*38fd1498SzrjEnum(tls_model) String(initial-exec) Value(TLS_MODEL_INITIAL_EXEC)
2460*38fd1498Szrj
2461*38fd1498SzrjEnumValue
2462*38fd1498SzrjEnum(tls_model) String(local-exec) Value(TLS_MODEL_LOCAL_EXEC)
2463*38fd1498Szrj
2464*38fd1498Szrjftoplevel-reorder
2465*38fd1498SzrjCommon Report Var(flag_toplevel_reorder) Init(2)
2466*38fd1498SzrjReorder top level functions, variables, and asms.
2467*38fd1498Szrj
2468*38fd1498Szrjftracer
2469*38fd1498SzrjCommon Report Var(flag_tracer) Optimization
2470*38fd1498SzrjPerform superblock formation via tail duplication.
2471*38fd1498Szrj
2472*38fd1498Szrjftrampolines
2473*38fd1498SzrjCommon Report Var(flag_trampolines) Init(0)
2474*38fd1498SzrjFor targets that normally need trampolines for nested functions, always
2475*38fd1498Szrjgenerate them instead of using descriptors.
2476*38fd1498Szrj
2477*38fd1498Szrj; Zero means that floating-point math operations cannot generate a
2478*38fd1498Szrj; (user-visible) trap.  This is the case, for example, in nonstop
2479*38fd1498Szrj; IEEE 754 arithmetic.
2480*38fd1498Szrjftrapping-math
2481*38fd1498SzrjCommon Report Var(flag_trapping_math) Init(1) Optimization SetByCombined
2482*38fd1498SzrjAssume floating-point operations can trap.
2483*38fd1498Szrj
2484*38fd1498Szrjftrapv
2485*38fd1498SzrjCommon Report Var(flag_trapv) Optimization
2486*38fd1498SzrjTrap for signed overflow in addition, subtraction and multiplication.
2487*38fd1498Szrj
2488*38fd1498Szrjftree-ccp
2489*38fd1498SzrjCommon Report Var(flag_tree_ccp) Optimization
2490*38fd1498SzrjEnable SSA-CCP optimization on trees.
2491*38fd1498Szrj
2492*38fd1498Szrjftree-bit-ccp
2493*38fd1498SzrjCommon Report Var(flag_tree_bit_ccp) Optimization
2494*38fd1498SzrjEnable SSA-BIT-CCP optimization on trees.
2495*38fd1498Szrj
2496*38fd1498Szrjftree-store-ccp
2497*38fd1498SzrjCommon Ignore
2498*38fd1498SzrjDoes nothing.  Preserved for backward compatibility.
2499*38fd1498Szrj
2500*38fd1498Szrjftree-ch
2501*38fd1498SzrjCommon Report Var(flag_tree_ch) Optimization
2502*38fd1498SzrjEnable loop header copying on trees.
2503*38fd1498Szrj
2504*38fd1498Szrjftree-coalesce-inlined-vars
2505*38fd1498SzrjCommon Ignore RejectNegative
2506*38fd1498SzrjDoes nothing.  Preserved for backward compatibility.
2507*38fd1498Szrj
2508*38fd1498Szrjftree-coalesce-vars
2509*38fd1498SzrjCommon Report Var(flag_tree_coalesce_vars) Optimization
2510*38fd1498SzrjEnable SSA coalescing of user variables.
2511*38fd1498Szrj
2512*38fd1498Szrjftree-copyrename
2513*38fd1498SzrjCommon Ignore
2514*38fd1498SzrjDoes nothing.  Preserved for backward compatibility.
2515*38fd1498Szrj
2516*38fd1498Szrjftree-copy-prop
2517*38fd1498SzrjCommon Report Var(flag_tree_copy_prop) Optimization
2518*38fd1498SzrjEnable copy propagation on trees.
2519*38fd1498Szrj
2520*38fd1498Szrjftree-store-copy-prop
2521*38fd1498SzrjCommon Ignore
2522*38fd1498SzrjDoes nothing.  Preserved for backward compatibility.
2523*38fd1498Szrj
2524*38fd1498Szrjftree-cselim
2525*38fd1498SzrjCommon Report Var(flag_tree_cselim) Init(2) Optimization
2526*38fd1498SzrjTransform condition stores into unconditional ones.
2527*38fd1498Szrj
2528*38fd1498Szrjftree-switch-conversion
2529*38fd1498SzrjCommon Report Var(flag_tree_switch_conversion) Optimization
2530*38fd1498SzrjPerform conversions of switch initializations.
2531*38fd1498Szrj
2532*38fd1498Szrjftree-dce
2533*38fd1498SzrjCommon Report Var(flag_tree_dce) Optimization
2534*38fd1498SzrjEnable SSA dead code elimination optimization on trees.
2535*38fd1498Szrj
2536*38fd1498Szrjftree-dominator-opts
2537*38fd1498SzrjCommon Report Var(flag_tree_dom) Optimization
2538*38fd1498SzrjEnable dominator optimizations.
2539*38fd1498Szrj
2540*38fd1498Szrjftree-tail-merge
2541*38fd1498SzrjCommon Report Var(flag_tree_tail_merge) Optimization
2542*38fd1498SzrjEnable tail merging on trees.
2543*38fd1498Szrj
2544*38fd1498Szrjftree-dse
2545*38fd1498SzrjCommon Report Var(flag_tree_dse) Optimization
2546*38fd1498SzrjEnable dead store elimination.
2547*38fd1498Szrj
2548*38fd1498Szrjftree-forwprop
2549*38fd1498SzrjCommon Report Var(flag_tree_forwprop) Init(1) Optimization
2550*38fd1498SzrjEnable forward propagation on trees.
2551*38fd1498Szrj
2552*38fd1498Szrjftree-fre
2553*38fd1498SzrjCommon Report Var(flag_tree_fre) Optimization
2554*38fd1498SzrjEnable Full Redundancy Elimination (FRE) on trees.
2555*38fd1498Szrj
2556*38fd1498Szrjfoptimize-strlen
2557*38fd1498SzrjCommon Report Var(flag_optimize_strlen) Optimization
2558*38fd1498SzrjEnable string length optimizations on trees.
2559*38fd1498Szrj
2560*38fd1498Szrjfisolate-erroneous-paths-dereference
2561*38fd1498SzrjCommon Report Var(flag_isolate_erroneous_paths_dereference) Optimization
2562*38fd1498SzrjDetect paths that trigger erroneous or undefined behavior due to
2563*38fd1498Szrjdereferencing a null pointer.  Isolate those paths from the main control
2564*38fd1498Szrjflow and turn the statement with erroneous or undefined behavior into a trap.
2565*38fd1498Szrj
2566*38fd1498Szrjfisolate-erroneous-paths-attribute
2567*38fd1498SzrjCommon Report Var(flag_isolate_erroneous_paths_attribute) Optimization
2568*38fd1498SzrjDetect paths that trigger erroneous or undefined behavior due to a null value
2569*38fd1498Szrjbeing used in a way forbidden by a returns_nonnull or nonnull
2570*38fd1498Szrjattribute.  Isolate those paths from the main control flow and turn the
2571*38fd1498Szrjstatement with erroneous or undefined behavior into a trap.
2572*38fd1498Szrj
2573*38fd1498Szrjftree-loop-distribution
2574*38fd1498SzrjCommon Report Var(flag_tree_loop_distribution) Optimization
2575*38fd1498SzrjEnable loop distribution on trees.
2576*38fd1498Szrj
2577*38fd1498Szrjftree-loop-distribute-patterns
2578*38fd1498SzrjCommon Report Var(flag_tree_loop_distribute_patterns) Optimization
2579*38fd1498SzrjEnable loop distribution for patterns transformed into a library call.
2580*38fd1498Szrj
2581*38fd1498Szrjftree-loop-im
2582*38fd1498SzrjCommon Report Var(flag_tree_loop_im) Init(1) Optimization
2583*38fd1498SzrjEnable loop invariant motion on trees.
2584*38fd1498Szrj
2585*38fd1498Szrjftree-loop-linear
2586*38fd1498SzrjCommon Alias(floop-nest-optimize)
2587*38fd1498SzrjEnable loop nest transforms.  Same as -floop-nest-optimize.
2588*38fd1498Szrj
2589*38fd1498Szrjftree-loop-ivcanon
2590*38fd1498SzrjCommon Report Var(flag_tree_loop_ivcanon) Init(1) Optimization
2591*38fd1498SzrjCreate canonical induction variables in loops.
2592*38fd1498Szrj
2593*38fd1498Szrjftree-loop-optimize
2594*38fd1498SzrjCommon Report Var(flag_tree_loop_optimize) Init(1) Optimization
2595*38fd1498SzrjEnable loop optimizations on tree level.
2596*38fd1498Szrj
2597*38fd1498Szrjftree-parallelize-loops=
2598*38fd1498SzrjCommon Report Joined RejectNegative UInteger Var(flag_tree_parallelize_loops) Init(1) Optimization
2599*38fd1498Szrj-ftree-parallelize-loops=<number>	Enable automatic parallelization of loops.
2600*38fd1498Szrj
2601*38fd1498Szrjftree-phiprop
2602*38fd1498SzrjCommon Report Var(flag_tree_phiprop) Init(1) Optimization
2603*38fd1498SzrjEnable hoisting loads from conditional pointers.
2604*38fd1498Szrj
2605*38fd1498Szrjftree-pre
2606*38fd1498SzrjCommon Report Var(flag_tree_pre) Optimization
2607*38fd1498SzrjEnable SSA-PRE optimization on trees.
2608*38fd1498Szrj
2609*38fd1498Szrjftree-partial-pre
2610*38fd1498SzrjCommon Report Var(flag_tree_partial_pre) Optimization
2611*38fd1498SzrjIn SSA-PRE optimization on trees, enable partial-partial redundancy elimination.
2612*38fd1498Szrj
2613*38fd1498Szrjftree-pta
2614*38fd1498SzrjCommon Report Var(flag_tree_pta) Optimization
2615*38fd1498SzrjPerform function-local points-to analysis on trees.
2616*38fd1498Szrj
2617*38fd1498Szrjftree-reassoc
2618*38fd1498SzrjCommon Report Var(flag_tree_reassoc) Init(1) Optimization
2619*38fd1498SzrjEnable reassociation on tree level.
2620*38fd1498Szrj
2621*38fd1498Szrjftree-salias
2622*38fd1498SzrjCommon Ignore
2623*38fd1498SzrjDoes nothing.  Preserved for backward compatibility.
2624*38fd1498Szrj
2625*38fd1498Szrjftree-sink
2626*38fd1498SzrjCommon Report Var(flag_tree_sink) Optimization
2627*38fd1498SzrjEnable SSA code sinking on trees.
2628*38fd1498Szrj
2629*38fd1498Szrjftree-slsr
2630*38fd1498SzrjCommon Report Var(flag_tree_slsr) Optimization
2631*38fd1498SzrjPerform straight-line strength reduction.
2632*38fd1498Szrj
2633*38fd1498Szrjftree-sra
2634*38fd1498SzrjCommon Report Var(flag_tree_sra) Optimization
2635*38fd1498SzrjPerform scalar replacement of aggregates.
2636*38fd1498Szrj
2637*38fd1498Szrjftree-ter
2638*38fd1498SzrjCommon Report Var(flag_tree_ter) Optimization
2639*38fd1498SzrjReplace temporary expressions in the SSA->normal pass.
2640*38fd1498Szrj
2641*38fd1498Szrjftree-lrs
2642*38fd1498SzrjCommon Report Var(flag_tree_live_range_split) Optimization
2643*38fd1498SzrjPerform live range splitting during the SSA->normal pass.
2644*38fd1498Szrj
2645*38fd1498Szrjftree-vrp
2646*38fd1498SzrjCommon Report Var(flag_tree_vrp) Init(0) Optimization
2647*38fd1498SzrjPerform Value Range Propagation on trees.
2648*38fd1498Szrj
2649*38fd1498Szrjfsplit-paths
2650*38fd1498SzrjCommon Report Var(flag_split_paths) Init(0) Optimization
2651*38fd1498SzrjSplit paths leading to loop backedges.
2652*38fd1498Szrj
2653*38fd1498Szrjfunconstrained-commons
2654*38fd1498SzrjCommon Var(flag_unconstrained_commons) Optimization
2655*38fd1498SzrjAssume common declarations may be overridden with ones with a larger
2656*38fd1498Szrjtrailing array.
2657*38fd1498Szrj
2658*38fd1498Szrjfunit-at-a-time
2659*38fd1498SzrjCommon Report Var(flag_unit_at_a_time) Init(1)
2660*38fd1498SzrjCompile whole compilation unit at a time.
2661*38fd1498Szrj
2662*38fd1498Szrjfunroll-loops
2663*38fd1498SzrjCommon Report Var(flag_unroll_loops) Optimization
2664*38fd1498SzrjPerform loop unrolling when iteration count is known.
2665*38fd1498Szrj
2666*38fd1498Szrjfunroll-all-loops
2667*38fd1498SzrjCommon Report Var(flag_unroll_all_loops) Optimization
2668*38fd1498SzrjPerform loop unrolling for all loops.
2669*38fd1498Szrj
2670*38fd1498Szrj; Nonzero means that loop optimizer may assume that the induction variables
2671*38fd1498Szrj; that control loops do not overflow and that the loops with nontrivial
2672*38fd1498Szrj; exit condition are not infinite
2673*38fd1498Szrjfunsafe-loop-optimizations
2674*38fd1498SzrjCommon Ignore
2675*38fd1498SzrjDoes nothing.  Preserved for backward compatibility.
2676*38fd1498Szrj
2677*38fd1498Szrjfassociative-math
2678*38fd1498SzrjCommon Report Var(flag_associative_math) SetByCombined Optimization
2679*38fd1498SzrjAllow optimization for floating-point arithmetic which may change the
2680*38fd1498Szrjresult of the operation due to rounding.
2681*38fd1498Szrj
2682*38fd1498Szrjfreciprocal-math
2683*38fd1498SzrjCommon Report Var(flag_reciprocal_math) SetByCombined Optimization
2684*38fd1498SzrjSame as -fassociative-math for expressions which include division.
2685*38fd1498Szrj
2686*38fd1498Szrj; Nonzero means that unsafe floating-point math optimizations are allowed
2687*38fd1498Szrj; for the sake of speed.  IEEE compliance is not guaranteed, and operations
2688*38fd1498Szrj; are allowed to assume that their arguments and results are "normal"
2689*38fd1498Szrj; (e.g., nonnegative for SQRT).
2690*38fd1498Szrjfunsafe-math-optimizations
2691*38fd1498SzrjCommon Report Var(flag_unsafe_math_optimizations) Optimization SetByCombined
2692*38fd1498SzrjAllow math optimizations that may violate IEEE or ISO standards.
2693*38fd1498Szrj
2694*38fd1498Szrjfunswitch-loops
2695*38fd1498SzrjCommon Report Var(flag_unswitch_loops) Optimization
2696*38fd1498SzrjPerform loop unswitching.
2697*38fd1498Szrj
2698*38fd1498Szrjfsplit-loops
2699*38fd1498SzrjCommon Report Var(flag_split_loops) Optimization
2700*38fd1498SzrjPerform loop splitting.
2701*38fd1498Szrj
2702*38fd1498Szrjfunwind-tables
2703*38fd1498SzrjCommon Report Var(flag_unwind_tables) Optimization
2704*38fd1498SzrjJust generate unwind tables for exception handling.
2705*38fd1498Szrj
2706*38fd1498Szrjfuse-ld=bfd
2707*38fd1498SzrjCommon Driver Negative(fuse-ld=gold)
2708*38fd1498SzrjUse the bfd linker instead of the default linker.
2709*38fd1498Szrj
2710*38fd1498Szrjfuse-ld=gold
2711*38fd1498SzrjCommon Driver Negative(fuse-ld=bfd)
2712*38fd1498SzrjUse the gold linker instead of the default linker.
2713*38fd1498Szrj
2714*38fd1498Szrjfuse-linker-plugin
2715*38fd1498SzrjCommon Undocumented Var(flag_use_linker_plugin)
2716*38fd1498Szrj
2717*38fd1498Szrj; Positive if we should track variables, negative if we should run
2718*38fd1498Szrj; the var-tracking pass only to discard debug annotations, zero if
2719*38fd1498Szrj; we're not to run it.  When flag_var_tracking == 2 (AUTODETECT_VALUE) it
2720*38fd1498Szrj; will be set according to optimize, debug_info_level and debug_hooks
2721*38fd1498Szrj; in process_options ().
2722*38fd1498Szrjfvar-tracking
2723*38fd1498SzrjCommon Report Var(flag_var_tracking) Init(2) PerFunction
2724*38fd1498SzrjPerform variable tracking.
2725*38fd1498Szrj
2726*38fd1498Szrj; Positive if we should track variables at assignments, negative if
2727*38fd1498Szrj; we should run the var-tracking pass only to discard debug
2728*38fd1498Szrj; annotations.  When flag_var_tracking_assignments ==
2729*38fd1498Szrj; AUTODETECT_VALUE it will be set according to flag_var_tracking.
2730*38fd1498Szrjfvar-tracking-assignments
2731*38fd1498SzrjCommon Report Var(flag_var_tracking_assignments) Init(2) PerFunction
2732*38fd1498SzrjPerform variable tracking by annotating assignments.
2733*38fd1498Szrj
2734*38fd1498Szrj; Nonzero if we should toggle flag_var_tracking_assignments after
2735*38fd1498Szrj; processing options and computing its default.  */
2736*38fd1498Szrjfvar-tracking-assignments-toggle
2737*38fd1498SzrjCommon Report Var(flag_var_tracking_assignments_toggle) PerFunction
2738*38fd1498SzrjToggle -fvar-tracking-assignments.
2739*38fd1498Szrj
2740*38fd1498Szrj; Positive if we should track uninitialized variables, negative if
2741*38fd1498Szrj; we should run the var-tracking pass only to discard debug
2742*38fd1498Szrj; annotations.  When flag_var_tracking_uninit == AUTODETECT_VALUE it
2743*38fd1498Szrj; will be set according to flag_var_tracking.
2744*38fd1498Szrjfvar-tracking-uninit
2745*38fd1498SzrjCommon Report Var(flag_var_tracking_uninit) PerFunction
2746*38fd1498SzrjPerform variable tracking and also tag variables that are uninitialized.
2747*38fd1498Szrj
2748*38fd1498Szrj; Alias to enable both -ftree-loop-vectorize and -ftree-slp-vectorize.
2749*38fd1498Szrjftree-vectorize
2750*38fd1498SzrjCommon Report Optimization
2751*38fd1498SzrjEnable vectorization on trees.
2752*38fd1498Szrj
2753*38fd1498Szrjftree-vectorizer-verbose=
2754*38fd1498SzrjCommon Joined RejectNegative Ignore
2755*38fd1498SzrjDoes nothing.  Preserved for backward compatibility.
2756*38fd1498Szrj
2757*38fd1498Szrjftree-loop-vectorize
2758*38fd1498SzrjCommon Report Var(flag_tree_loop_vectorize) Optimization EnabledBy(ftree-vectorize)
2759*38fd1498SzrjEnable loop vectorization on trees.
2760*38fd1498Szrj
2761*38fd1498Szrjftree-slp-vectorize
2762*38fd1498SzrjCommon Report Var(flag_tree_slp_vectorize) Optimization EnabledBy(ftree-vectorize)
2763*38fd1498SzrjEnable basic block vectorization (SLP) on trees.
2764*38fd1498Szrj
2765*38fd1498Szrjfvect-cost-model=
2766*38fd1498SzrjCommon Joined RejectNegative Enum(vect_cost_model) Var(flag_vect_cost_model) Init(VECT_COST_MODEL_DEFAULT) Optimization
2767*38fd1498SzrjSpecifies the cost model for vectorization.
2768*38fd1498Szrj-fvect-cost-model=[unlimited|dynamic|cheap]	Specifies the cost model for vectorization.
2769*38fd1498Szrj
2770*38fd1498Szrjfsimd-cost-model=
2771*38fd1498SzrjCommon Joined RejectNegative Enum(vect_cost_model) Var(flag_simd_cost_model) Init(VECT_COST_MODEL_UNLIMITED) Optimization
2772*38fd1498Szrj-fsimd-cost-model=[unlimited|dynamic|cheap]	Specifies the vectorization cost model for code marked with a simd directive.
2773*38fd1498Szrj
2774*38fd1498SzrjEnum
2775*38fd1498SzrjName(vect_cost_model) Type(enum vect_cost_model) UnknownError(unknown vectorizer cost model %qs)
2776*38fd1498Szrj
2777*38fd1498SzrjEnumValue
2778*38fd1498SzrjEnum(vect_cost_model) String(unlimited) Value(VECT_COST_MODEL_UNLIMITED)
2779*38fd1498Szrj
2780*38fd1498SzrjEnumValue
2781*38fd1498SzrjEnum(vect_cost_model) String(dynamic) Value(VECT_COST_MODEL_DYNAMIC)
2782*38fd1498Szrj
2783*38fd1498SzrjEnumValue
2784*38fd1498SzrjEnum(vect_cost_model) String(cheap) Value(VECT_COST_MODEL_CHEAP)
2785*38fd1498Szrj
2786*38fd1498Szrjfvect-cost-model
2787*38fd1498SzrjCommon Alias(fvect-cost-model=,dynamic,unlimited)
2788*38fd1498SzrjEnables the dynamic vectorizer cost model.  Preserved for backward compatibility.
2789*38fd1498Szrj
2790*38fd1498Szrjftree-vect-loop-version
2791*38fd1498SzrjCommon Ignore
2792*38fd1498SzrjDoes nothing. Preserved for backward compatibility.
2793*38fd1498Szrj
2794*38fd1498Szrjftree-scev-cprop
2795*38fd1498SzrjCommon Report Var(flag_tree_scev_cprop) Init(1) Optimization
2796*38fd1498SzrjEnable copy propagation of scalar-evolution information.
2797*38fd1498Szrj
2798*38fd1498Szrj; -fverbose-asm causes extra commentary information to be produced in
2799*38fd1498Szrj; the generated assembly code (to make it more readable).  This option
2800*38fd1498Szrj; is generally only of use to those who actually need to read the
2801*38fd1498Szrj; generated assembly code (perhaps while debugging the compiler itself).
2802*38fd1498Szrj; -fno-verbose-asm, the default, causes the extra information
2803*38fd1498Szrj; to not be added and is useful when comparing two assembler files.
2804*38fd1498Szrjfverbose-asm
2805*38fd1498SzrjCommon Report Var(flag_verbose_asm)
2806*38fd1498SzrjAdd extra commentary to assembler output.
2807*38fd1498Szrj
2808*38fd1498Szrjfvisibility=
2809*38fd1498SzrjCommon Joined RejectNegative Enum(symbol_visibility) Var(default_visibility) Init(VISIBILITY_DEFAULT)
2810*38fd1498Szrj-fvisibility=[default|internal|hidden|protected]	Set the default symbol visibility.
2811*38fd1498Szrj
2812*38fd1498SzrjEnum
2813*38fd1498SzrjName(symbol_visibility) Type(enum symbol_visibility) UnknownError(unrecognized visibility value %qs)
2814*38fd1498Szrj
2815*38fd1498SzrjEnumValue
2816*38fd1498SzrjEnum(symbol_visibility) String(default) Value(VISIBILITY_DEFAULT)
2817*38fd1498Szrj
2818*38fd1498SzrjEnumValue
2819*38fd1498SzrjEnum(symbol_visibility) String(internal) Value(VISIBILITY_INTERNAL)
2820*38fd1498Szrj
2821*38fd1498SzrjEnumValue
2822*38fd1498SzrjEnum(symbol_visibility) String(hidden) Value(VISIBILITY_HIDDEN)
2823*38fd1498Szrj
2824*38fd1498SzrjEnumValue
2825*38fd1498SzrjEnum(symbol_visibility) String(protected) Value(VISIBILITY_PROTECTED)
2826*38fd1498Szrj
2827*38fd1498Szrjfvtable-verify=
2828*38fd1498SzrjCommon Joined RejectNegative Enum(vtv_priority) Var(flag_vtable_verify) Init(VTV_NO_PRIORITY)
2829*38fd1498SzrjValidate vtable pointers before using them.
2830*38fd1498Szrj
2831*38fd1498SzrjEnum
2832*38fd1498SzrjName(vtv_priority) Type(enum vtv_priority) UnknownError(unknown vtable verify initialization priority %qs)
2833*38fd1498Szrj
2834*38fd1498SzrjEnumValue
2835*38fd1498SzrjEnum(vtv_priority) String(none) Value(VTV_NO_PRIORITY)
2836*38fd1498Szrj
2837*38fd1498SzrjEnumValue
2838*38fd1498SzrjEnum(vtv_priority) String(std) Value(VTV_STANDARD_PRIORITY)
2839*38fd1498Szrj
2840*38fd1498SzrjEnumValue
2841*38fd1498SzrjEnum(vtv_priority) String(preinit) Value(VTV_PREINIT_PRIORITY)
2842*38fd1498Szrj
2843*38fd1498Szrjfvtv-counts
2844*38fd1498SzrjCommon Var(flag_vtv_counts)
2845*38fd1498SzrjOutput vtable verification counters.
2846*38fd1498Szrj
2847*38fd1498Szrjfvtv-debug
2848*38fd1498SzrjCommon Var(flag_vtv_debug)
2849*38fd1498SzrjOutput vtable verification pointer sets information.
2850*38fd1498Szrj
2851*38fd1498Szrjfvpt
2852*38fd1498SzrjCommon Report Var(flag_value_profile_transformations) Optimization
2853*38fd1498SzrjUse expression value profiles in optimizations.
2854*38fd1498Szrj
2855*38fd1498Szrjfweb
2856*38fd1498SzrjCommon Report Var(flag_web) Init(2) Optimization
2857*38fd1498SzrjConstruct webs and split unrelated uses of single variable.
2858*38fd1498Szrj
2859*38fd1498Szrjftree-builtin-call-dce
2860*38fd1498SzrjCommon Report Var(flag_tree_builtin_call_dce) Init(0) Optimization
2861*38fd1498SzrjEnable conditional dead code elimination for builtin calls.
2862*38fd1498Szrj
2863*38fd1498Szrjfwhole-program
2864*38fd1498SzrjCommon Report Var(flag_whole_program) Init(0)
2865*38fd1498SzrjPerform whole program optimizations.
2866*38fd1498Szrj
2867*38fd1498Szrjfwrapv-pointer
2868*38fd1498SzrjCommon Report Var(flag_wrapv_pointer) Optimization
2869*38fd1498SzrjAssume pointer overflow wraps around.
2870*38fd1498Szrj
2871*38fd1498Szrjfwrapv
2872*38fd1498SzrjCommon Report Var(flag_wrapv) Optimization
2873*38fd1498SzrjAssume signed arithmetic overflow wraps around.
2874*38fd1498Szrj
2875*38fd1498Szrjfzero-initialized-in-bss
2876*38fd1498SzrjCommon Report Var(flag_zero_initialized_in_bss) Init(1)
2877*38fd1498SzrjPut zero initialized data in the bss section.
2878*38fd1498Szrj
2879*38fd1498Szrjg
2880*38fd1498SzrjCommon Driver RejectNegative JoinedOrMissing
2881*38fd1498SzrjGenerate debug information in default format.
2882*38fd1498Szrj
2883*38fd1498Szrjgas-loc-support
2884*38fd1498SzrjCommon Driver Var(dwarf2out_as_loc_support) Init(2)
2885*38fd1498SzrjAssume assembler support for (DWARF2+) .loc directives
2886*38fd1498Szrj
2887*38fd1498Szrjgas-locview-support
2888*38fd1498SzrjCommon Driver Var(dwarf2out_as_locview_support) Init(2)
2889*38fd1498SzrjAssume assembler support for view in (DWARF2+) .loc directives
2890*38fd1498Szrj
2891*38fd1498Szrjgcoff
2892*38fd1498SzrjCommon Driver Ignore Warn(switch %qs no longer supported)
2893*38fd1498SzrjDoes nothing.  Preserved for backward compatibility.
2894*38fd1498Szrj
2895*38fd1498Szrjgcoff1
2896*38fd1498SzrjCommon Driver Ignore Warn(switch %qs no longer supported)
2897*38fd1498SzrjDoes nothing.  Preserved for backward compatibility.
2898*38fd1498Szrj
2899*38fd1498Szrjgcoff2
2900*38fd1498SzrjCommon Driver Ignore Warn(switch %qs no longer supported)
2901*38fd1498SzrjDoes nothing.  Preserved for backward compatibility.
2902*38fd1498Szrj
2903*38fd1498Szrjgcoff3
2904*38fd1498SzrjCommon Driver Ignore Warn(switch %qs no longer supported)
2905*38fd1498SzrjDoes nothing.  Preserved for backward compatibility.
2906*38fd1498Szrj
2907*38fd1498Szrjgcolumn-info
2908*38fd1498SzrjCommon Driver Var(debug_column_info,1) Init(1)
2909*38fd1498SzrjRecord DW_AT_decl_column and DW_AT_call_column in DWARF.
2910*38fd1498Szrj
2911*38fd1498Szrjgdwarf
2912*38fd1498SzrjCommon Driver JoinedOrMissing Negative(gdwarf-)
2913*38fd1498SzrjGenerate debug information in default version of DWARF format.
2914*38fd1498Szrj
2915*38fd1498Szrjgdwarf-
2916*38fd1498SzrjCommon Driver Joined UInteger Var(dwarf_version) Init(4) Negative(gstabs)
2917*38fd1498SzrjGenerate debug information in DWARF v2 (or later) format.
2918*38fd1498Szrj
2919*38fd1498Szrjggdb
2920*38fd1498SzrjCommon Driver JoinedOrMissing
2921*38fd1498SzrjGenerate debug information in default extended format.
2922*38fd1498Szrj
2923*38fd1498Szrjginline-points
2924*38fd1498SzrjCommon Driver Var(debug_inline_points) Init(2)
2925*38fd1498SzrjGenerate extended entry point information for inlined functions
2926*38fd1498Szrj
2927*38fd1498Szrjginternal-reset-location-views
2928*38fd1498SzrjCommon Driver Var(debug_internal_reset_location_views) Init(2)
2929*38fd1498SzrjCompute locview reset points based on insn length estimates
2930*38fd1498Szrj
2931*38fd1498Szrjgno-
2932*38fd1498SzrjRejectNegative Joined Undocumented
2933*38fd1498Szrj; Catch the gno- prefix, so it doesn't backtrack to g<level>.
2934*38fd1498Szrj
2935*38fd1498Szrjgno-pubnames
2936*38fd1498SzrjCommon Driver Negative(gpubnames) Var(debug_generate_pub_sections, 0) Init(-1)
2937*38fd1498SzrjDon't generate DWARF pubnames and pubtypes sections.
2938*38fd1498Szrj
2939*38fd1498Szrjgpubnames
2940*38fd1498SzrjCommon Driver Negative(ggnu-pubnames) Var(debug_generate_pub_sections, 1)
2941*38fd1498SzrjGenerate DWARF pubnames and pubtypes sections.
2942*38fd1498Szrj
2943*38fd1498Szrjggnu-pubnames
2944*38fd1498SzrjCommon Driver Negative(gno-pubnames) Var(debug_generate_pub_sections, 2)
2945*38fd1498SzrjGenerate DWARF pubnames and pubtypes sections with GNU extensions.
2946*38fd1498Szrj
2947*38fd1498Szrjgrecord-gcc-switches
2948*38fd1498SzrjCommon Driver Var(dwarf_record_gcc_switches) Init(1)
2949*38fd1498SzrjRecord gcc command line switches in DWARF DW_AT_producer.
2950*38fd1498Szrj
2951*38fd1498Szrjgsplit-dwarf
2952*38fd1498SzrjCommon Driver Var(dwarf_split_debug_info) Init(0)
2953*38fd1498SzrjGenerate debug information in separate .dwo files.
2954*38fd1498Szrj
2955*38fd1498Szrjgstabs
2956*38fd1498SzrjCommon Driver JoinedOrMissing Negative(gstabs+)
2957*38fd1498SzrjGenerate debug information in STABS format.
2958*38fd1498Szrj
2959*38fd1498Szrjgstabs+
2960*38fd1498SzrjCommon Driver JoinedOrMissing Negative(gvms)
2961*38fd1498SzrjGenerate debug information in extended STABS format.
2962*38fd1498Szrj
2963*38fd1498Szrjgstatement-frontiers
2964*38fd1498SzrjCommon Driver Var(debug_nonbind_markers_p) Init(2)
2965*38fd1498SzrjEmit progressive recommended breakpoint locations.
2966*38fd1498Szrj
2967*38fd1498Szrjgstrict-dwarf
2968*38fd1498SzrjCommon Driver Report Var(dwarf_strict) Init(0)
2969*38fd1498SzrjDon't emit DWARF additions beyond selected version.
2970*38fd1498Szrj
2971*38fd1498Szrjgtoggle
2972*38fd1498SzrjCommon Driver Report Var(flag_gtoggle)
2973*38fd1498SzrjToggle debug information generation.
2974*38fd1498Szrj
2975*38fd1498Szrjgvariable-location-views
2976*38fd1498SzrjCommon Driver Var(debug_variable_location_views, 1) Init(2)
2977*38fd1498SzrjAugment variable location lists with progressive views.
2978*38fd1498Szrj
2979*38fd1498Szrjgvariable-location-views=incompat5
2980*38fd1498SzrjCommon Driver RejectNegative Var(debug_variable_location_views, -1) Init(2)
2981*38fd1498Szrj
2982*38fd1498Szrjgvms
2983*38fd1498SzrjCommon Driver JoinedOrMissing Negative(gxcoff)
2984*38fd1498SzrjGenerate debug information in VMS format.
2985*38fd1498Szrj
2986*38fd1498Szrjgxcoff
2987*38fd1498SzrjCommon Driver JoinedOrMissing Negative(gxcoff+)
2988*38fd1498SzrjGenerate debug information in XCOFF format.
2989*38fd1498Szrj
2990*38fd1498Szrjgxcoff+
2991*38fd1498SzrjCommon Driver JoinedOrMissing Negative(gdwarf)
2992*38fd1498SzrjGenerate debug information in extended XCOFF format.
2993*38fd1498Szrj
2994*38fd1498SzrjEnum
2995*38fd1498SzrjName(compressed_debug_sections) Type(int)
2996*38fd1498Szrj
2997*38fd1498Szrj; Since -gz= is completely handled in specs, the values aren't used and we
2998*38fd1498Szrj; assign arbitrary constants.
2999*38fd1498SzrjEnumValue
3000*38fd1498SzrjEnum(compressed_debug_sections) String(none) Value(0)
3001*38fd1498Szrj
3002*38fd1498SzrjEnumValue
3003*38fd1498SzrjEnum(compressed_debug_sections) String(zlib) Value(1)
3004*38fd1498Szrj
3005*38fd1498SzrjEnumValue
3006*38fd1498SzrjEnum(compressed_debug_sections) String(zlib-gnu) Value(2)
3007*38fd1498Szrj
3008*38fd1498Szrjgz
3009*38fd1498SzrjCommon Driver
3010*38fd1498SzrjGenerate compressed debug sections.
3011*38fd1498Szrj
3012*38fd1498Szrjgz=
3013*38fd1498SzrjCommon Driver RejectNegative Joined Enum(compressed_debug_sections)
3014*38fd1498Szrj-gz=<format>	Generate compressed debug sections in format <format>.
3015*38fd1498Szrj
3016*38fd1498Szrjh
3017*38fd1498SzrjDriver Joined Separate
3018*38fd1498Szrj
3019*38fd1498Szrjiplugindir=
3020*38fd1498SzrjCommon Joined Var(plugindir_string) Init(0)
3021*38fd1498Szrj-iplugindir=<dir>	Set <dir> to be the default plugin directory.
3022*38fd1498Szrj
3023*38fd1498Szrjimultiarch
3024*38fd1498SzrjCommon Joined Separate RejectDriver Var(imultiarch) Init(0)
3025*38fd1498Szrj-imultiarch <dir>	Set <dir> to be the multiarch include subdirectory.
3026*38fd1498Szrj
3027*38fd1498Szrjl
3028*38fd1498SzrjDriver Joined Separate
3029*38fd1498Szrj
3030*38fd1498Szrjn
3031*38fd1498SzrjDriver
3032*38fd1498Szrj
3033*38fd1498Szrjno-canonical-prefixes
3034*38fd1498SzrjDriver
3035*38fd1498Szrj
3036*38fd1498Szrjnodefaultlibs
3037*38fd1498SzrjDriver
3038*38fd1498Szrj
3039*38fd1498Szrjnostartfiles
3040*38fd1498SzrjDriver
3041*38fd1498Szrj
3042*38fd1498Szrjnostdlib
3043*38fd1498SzrjDriver
3044*38fd1498Szrj
3045*38fd1498Szrjo
3046*38fd1498SzrjCommon Driver Joined Separate Var(asm_file_name) MissingArgError(missing filename after %qs)
3047*38fd1498Szrj-o <file>	Place output into <file>.
3048*38fd1498Szrj
3049*38fd1498Szrjp
3050*38fd1498SzrjCommon Var(profile_flag)
3051*38fd1498SzrjEnable function profiling.
3052*38fd1498Szrj
3053*38fd1498Szrjpass-exit-codes
3054*38fd1498SzrjDriver Var(pass_exit_codes)
3055*38fd1498Szrj
3056*38fd1498Szrjpedantic
3057*38fd1498SzrjCommon Alias(Wpedantic)
3058*38fd1498Szrj
3059*38fd1498Szrjpedantic-errors
3060*38fd1498SzrjCommon Var(flag_pedantic_errors)
3061*38fd1498SzrjLike -pedantic but issue them as errors.
3062*38fd1498Szrj
3063*38fd1498Szrjpg
3064*38fd1498SzrjDriver
3065*38fd1498Szrj
3066*38fd1498Szrjpipe
3067*38fd1498SzrjDriver Var(use_pipes)
3068*38fd1498Szrj
3069*38fd1498Szrjprint-file-name=
3070*38fd1498SzrjDriver JoinedOrMissing Var(print_file_name)
3071*38fd1498Szrj
3072*38fd1498Szrjprint-libgcc-file-name
3073*38fd1498SzrjDriver
3074*38fd1498Szrj
3075*38fd1498Szrjprint-multi-directory
3076*38fd1498SzrjDriver Var(print_multi_directory)
3077*38fd1498Szrj
3078*38fd1498Szrjprint-multi-lib
3079*38fd1498SzrjDriver Var(print_multi_lib)
3080*38fd1498Szrj
3081*38fd1498Szrjprint-multi-os-directory
3082*38fd1498SzrjDriver Var(print_multi_os_directory)
3083*38fd1498Szrj
3084*38fd1498Szrjprint-multiarch
3085*38fd1498SzrjDriver Var(print_multiarch)
3086*38fd1498Szrj
3087*38fd1498Szrjprint-prog-name=
3088*38fd1498SzrjDriver JoinedOrMissing Var(print_prog_name)
3089*38fd1498Szrj
3090*38fd1498Szrjprint-search-dirs
3091*38fd1498SzrjDriver Var(print_search_dirs)
3092*38fd1498Szrj
3093*38fd1498Szrjprint-sysroot
3094*38fd1498SzrjDriver Var(print_sysroot)
3095*38fd1498Szrj
3096*38fd1498Szrjprint-sysroot-headers-suffix
3097*38fd1498SzrjDriver Var(print_sysroot_headers_suffix)
3098*38fd1498Szrj
3099*38fd1498Szrjquiet
3100*38fd1498SzrjCommon Var(quiet_flag) RejectDriver
3101*38fd1498SzrjDo not display functions compiled or elapsed time.
3102*38fd1498Szrj
3103*38fd1498Szrjr
3104*38fd1498SzrjDriver
3105*38fd1498Szrj
3106*38fd1498Szrjs
3107*38fd1498SzrjDriver
3108*38fd1498Szrj
3109*38fd1498Szrjsave-temps
3110*38fd1498SzrjDriver
3111*38fd1498Szrj
3112*38fd1498Szrjsave-temps=
3113*38fd1498SzrjDriver Joined
3114*38fd1498Szrj
3115*38fd1498Szrjt
3116*38fd1498SzrjDriver
3117*38fd1498Szrj
3118*38fd1498Szrjtime
3119*38fd1498SzrjDriver Var(report_times)
3120*38fd1498Szrj
3121*38fd1498Szrjtime=
3122*38fd1498SzrjDriver JoinedOrMissing
3123*38fd1498Szrj
3124*38fd1498Szrju
3125*38fd1498SzrjDriver Joined Separate
3126*38fd1498Szrj
3127*38fd1498Szrjundef
3128*38fd1498SzrjDriver
3129*38fd1498Szrj; C option, but driver must not handle as "-u ndef".
3130*38fd1498Szrj
3131*38fd1498Szrjv
3132*38fd1498SzrjCommon Driver Var(verbose_flag)
3133*38fd1498SzrjEnable verbose output.
3134*38fd1498Szrj
3135*38fd1498Szrjversion
3136*38fd1498SzrjCommon Var(version_flag) RejectDriver
3137*38fd1498SzrjDisplay the compiler's version.
3138*38fd1498Szrj
3139*38fd1498Szrjw
3140*38fd1498SzrjCommon Var(inhibit_warnings)
3141*38fd1498SzrjSuppress warnings.
3142*38fd1498Szrj
3143*38fd1498Szrjwrapper
3144*38fd1498SzrjDriver Separate Var(wrapper_string)
3145*38fd1498Szrj
3146*38fd1498Szrjx
3147*38fd1498SzrjDriver Joined Separate
3148*38fd1498Szrj
3149*38fd1498Szrjshared
3150*38fd1498SzrjDriver RejectNegative Negative(static-pie)
3151*38fd1498SzrjCreate a shared library.
3152*38fd1498Szrj
3153*38fd1498Szrjshared-libgcc
3154*38fd1498SzrjDriver
3155*38fd1498Szrj
3156*38fd1498Szrjspecs
3157*38fd1498SzrjDriver Separate Alias(specs=)
3158*38fd1498Szrj
3159*38fd1498Szrjspecs=
3160*38fd1498SzrjDriver Joined
3161*38fd1498Szrj
3162*38fd1498Szrjstatic
3163*38fd1498SzrjDriver
3164*38fd1498Szrj
3165*38fd1498Szrjstatic-libgcc
3166*38fd1498SzrjDriver
3167*38fd1498Szrj
3168*38fd1498Szrjstatic-libgfortran
3169*38fd1498SzrjDriver
3170*38fd1498Szrj; Documented for Fortran, but always accepted by driver.
3171*38fd1498Szrj
3172*38fd1498Szrjstatic-libstdc++
3173*38fd1498SzrjDriver
3174*38fd1498Szrj
3175*38fd1498Szrjstatic-libgo
3176*38fd1498SzrjDriver
3177*38fd1498Szrj; Documented for Go, but always accepted by driver.
3178*38fd1498Szrj
3179*38fd1498Szrjstatic-libasan
3180*38fd1498SzrjDriver
3181*38fd1498Szrj
3182*38fd1498Szrjstatic-libtsan
3183*38fd1498SzrjDriver
3184*38fd1498Szrj
3185*38fd1498Szrjstatic-liblsan
3186*38fd1498SzrjDriver
3187*38fd1498Szrj
3188*38fd1498Szrjstatic-libubsan
3189*38fd1498SzrjDriver
3190*38fd1498Szrj
3191*38fd1498Szrjsymbolic
3192*38fd1498SzrjDriver
3193*38fd1498Szrj
3194*38fd1498Szrjno-pie
3195*38fd1498SzrjDriver RejectNegative Negative(shared)
3196*38fd1498SzrjDon't create a dynamically linked position independent executable.
3197*38fd1498Szrj
3198*38fd1498Szrjpie
3199*38fd1498SzrjDriver RejectNegative Negative(no-pie)
3200*38fd1498SzrjCreate a dynamically linked position independent executable.
3201*38fd1498Szrj
3202*38fd1498Szrjstatic-pie
3203*38fd1498SzrjDriver RejectNegative Negative(pie)
3204*38fd1498SzrjCreate a static position independent executable.
3205*38fd1498Szrj
3206*38fd1498Szrjz
3207*38fd1498SzrjDriver Joined Separate
3208*38fd1498Szrj
3209*38fd1498Szrjfipa-ra
3210*38fd1498SzrjCommon Report Var(flag_ipa_ra) Optimization
3211*38fd1498SzrjUse caller save register across calls if possible.
3212*38fd1498Szrj
3213*38fd1498Szrj; This comment is to ensure we retain the blank line above.
3214