]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/common.opt
Add -Wuse-after-free [PR80532].
[thirdparty/gcc.git] / gcc / common.opt
CommitLineData
d7b42618 1; Options for the language- and target-independent parts of the compiler.
50431bc4 2
7adcbafe 3; Copyright (C) 2003-2022 Free Software Foundation, Inc.
d7b42618
NB
4;
5; This file is part of GCC.
6;
7; GCC is free software; you can redistribute it and/or modify it under
8; the terms of the GNU General Public License as published by the Free
9dcd6f09 9; Software Foundation; either version 3, or (at your option) any later
d7b42618 10; version.
c22cacf3 11;
d7b42618
NB
12; GCC is distributed in the hope that it will be useful, but WITHOUT ANY
13; WARRANTY; without even the implied warranty of MERCHANTABILITY or
14; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
15; for more details.
c22cacf3 16;
d7b42618 17; You should have received a copy of the GNU General Public License
9dcd6f09
NC
18; along with GCC; see the file COPYING3. If not see
19; <http://www.gnu.org/licenses/>.
d7b42618 20
71733172 21; See the GCC internals manual (options.texi) for a description of this file's format.
d7b42618
NB
22
23; Please try to keep this file in ASCII collating order.
24
e90afde6
JM
25Variable
26int target_flags
27
46625112
JM
28Variable
29int optimize
30
31Variable
32int optimize_size
33
bf7a7185
RG
34Variable
35int optimize_debug
36
0a8134ca
JM
37; Not used directly to control optimizations, only to save -Ofast
38; setting for "optimize" attributes.
39Variable
40int optimize_fast
41
a7d0d30f
JM
42; True if this is the lto front end. This is used to disable gimple
43; generation and lowering passes that are normally run on the output
44; of a front end. These passes must be bypassed for lto since they
45; have already been done before the gimple was written.
46Variable
47bool in_lto_p = false
48
1ff9ed6f 49; This variable is set to non-0 only by LTO front-end. 1 indicates that
46a27415 50; the output produced will be used for incremental linking (thus weak symbols
5b42d196
JH
51; can still be bound) and 2 indicates that the IL is going to be linked and
52; and output to LTO object file.
1ff9ed6f 53Variable
5b42d196 54enum incremental_link flag_incremental_link = INCREMENTAL_LINK_NONE
1ff9ed6f 55
a75bfaa6
JM
56; 0 means straightforward implementation of complex divide acceptable.
57; 1 means wide ranges of inputs must work for complex divide.
58; 2 means C99-like requirements for complex multiply and divide.
59Variable
60int flag_complex_method = 1
61
a64697d7
ML
62Variable
63int flag_default_complex_method = 1
64
a75bfaa6
JM
65; Language specific warning pass for unused results.
66Variable
67bool flag_warn_unused_result = false
68
d5478783
JM
69; Nonzero if we should write GIMPLE bytecode for link-time optimization.
70Variable
71int flag_generate_lto
72
f0d78df9
IV
73; Nonzero if we should write GIMPLE bytecode for offload compilation.
74Variable
75int flag_generate_offload = 0
76
d5478783
JM
77; Nonzero means we should be saving declaration info into a .X file.
78Variable
79int flag_gen_aux_info = 0
80
81; Nonzero if we are compiling code for a shared library, zero for
82; executable.
83Variable
84int flag_shlib
85
a1ad0d84 86; These three are really VEC(char_p,heap) *.
6a1f6c9c
JM
87
88Variable
89void *flag_instrument_functions_exclude_functions
90
91Variable
92void *flag_instrument_functions_exclude_files
93
a1ad0d84
MP
94Variable
95void *flag_ignored_attributes
96
69ccdddb
JM
97; Generic structs (e.g. templates not explicitly specialized)
98; may not have a compilation unit associated with them, and so
99; may need to be treated differently from ordinary structs.
100;
101; Structs only handled by reference (indirectly), will also usually
102; not need as much debugging information.
103
104Variable
105enum debug_struct_file debug_struct_ordinary[DINFO_USAGE_NUM_ENUMS] = { DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY }
106
107Variable
108enum debug_struct_file debug_struct_generic[DINFO_USAGE_NUM_ENUMS] = { DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY }
109
0576d21f
JM
110; True if we should exit after parsing options.
111Variable
112bool exit_after_options
113
114; Type(s) of debugging information we are producing (if any). See
115; flag-types.h for the definitions of the different possible types of
116; debugging information.
117Variable
459d84e9 118uint32_t write_symbols = NO_DEBUG
0576d21f
JM
119
120; Level of debugging information we are producing. See flag-types.h
121; for the definitions of the different possible levels.
122Variable
123enum debug_info_levels debug_info_level = DINFO_LEVEL_NONE
124
125; Nonzero means use GNU-only extensions in the generated symbolic
126; debugging information. Currently, this only has an effect when
d7d5f241 127; write_symbols is set to DBX_DEBUG or XCOFF_DEBUG.
0576d21f
JM
128Variable
129bool use_gnu_debug_info_extensions
130
b7e215a8
IB
131; Level of CTF debugging information we are producing. See flag-types.h
132; for the definitions of the different possible levels.
133Variable
134enum ctf_debug_info_levels ctf_debug_info_level = CTFINFO_LEVEL_NONE
135
299404a1
JM
136; Original value of maximum field alignment in bytes, specified via
137; -fpack-struct=<value>.
138Variable
139unsigned int initial_max_fld_align = TARGET_DEFAULT_PACK_STRUCT
140
5e471ea6
JM
141; Type of stack check.
142Variable
143enum stack_check_type flag_stack_check = NO_STACK_CHECK
144
a11e0df4
EB
145; True if stack usage information needs to be computed.
146Variable
147bool flag_stack_usage_info = false
148
299404a1
JM
149; -dA causes debug commentary information to be produced in
150; the generated assembly code (to make it more readable). This option
151; is generally only of use to those who actually need to read the
152; generated assembly code (perhaps while debugging the compiler itself).
153; Currently, this switch is only used by dwarf2out.c; however, it is intended
154; to be a catchall for printing debug information in the assembler file.
155Variable
156int flag_debug_asm
157
6592d14b
PMR
158; Balance between GNAT encodings and standard DWARF to emit.
159Variable
160enum dwarf_gnat_encodings gnat_encodings = DWARF_GNAT_ENCODINGS_DEFAULT
161
299404a1
JM
162; -dP causes the rtl to be emitted as a comment in assembly.
163Variable
164int flag_dump_rtl_in_asm
165
166; Whether -da was passed (used only in handle_common_deferred_options).
167Variable
168bool flag_dump_all_passed
169
170; Other flags saying which kinds of debugging dump have been requested.
171
172Variable
173int rtl_dump_and_exit
174
175Variable
176int flag_print_asm_name
177
a803773f
JM
178; Name of top-level original source file (what was input to cpp).
179; This comes from the #-command at the beginning of the actual input.
180; If there isn't any there, then this is the cc1 input file name.
181Variable
182const char *main_input_filename
183
184; Pointer to base name in main_input_filename, with directories and a
185; single final extension removed, and the length of this base
186; name.
187
188Variable
189const char *main_input_basename
190
191Variable
192int main_input_baselength
193
1dedc12d
AO
194; The base name used for auxiliary output files.
195; dump_base_name minus dump_base_ext.
196
197Variable
198const char *aux_base_name
199
299404a1
JM
200; Which options have been printed by --help.
201Variable
202char *help_printed
203
e6d4b984
JM
204; Which enums have been printed by --help. 0 = not printed, no
205; relevant options seen, 1 = relevant option seen, not yet printed, 2
206; = printed.
207Variable
208char *help_enum_printed
209
299404a1
JM
210; The number of columns for --help output.
211Variable
212unsigned int help_columns
213
214; Whether this options structure has been through finish_options
215Variable
216bool flag_opts_finished
217
de5a5fa1
MP
218; What the sanitizer should instrument
219Variable
220unsigned int flag_sanitize
221
d95a2703
JJ
222; What sanitizers should recover from errors
223Variable
3bd87832 224unsigned int flag_sanitize_recover = (SANITIZE_UNDEFINED | SANITIZE_UNDEFINED_NONDEFAULT | SANITIZE_KERNEL_ADDRESS | SANITIZE_KERNEL_HWADDRESS) & ~(SANITIZE_UNREACHABLE | SANITIZE_RETURN)
d95a2703 225
f6e50a7d
WW
226; What the coverage sanitizers should instrument
227Variable
228unsigned int flag_sanitize_coverage
95e7bbb8 229
91035653
JJ
230; Flag whether a prefix has been added to dump_base_name
231Variable
232bool dump_base_name_prefixed = false
233
d10f3e90 234; What subset of registers should be zeroed on function return
235Variable
236unsigned int flag_zero_call_used_regs
237
603349bf
JM
238###
239Driver
240
e200444e
JM
241-assemble
242Driver Alias(S)
243
244-compile
245Driver Alias(c)
246
d86c7648
ML
247-completion=
248Common Driver Joined Undocumented
249Provide bash completion for options starting with provided string.
250
e200444e
JM
251-coverage
252Driver Alias(coverage)
253
254-debug
255Common Alias(g)
256
257-dump
258Common Separate Alias(d)
259
260-dump=
261Common Joined Alias(d)
262
263-dumpbase
1dedc12d
AO
264Driver Common Separate Alias(dumpbase)
265
266-dumpbase-ext
267Driver Common Separate Alias(dumpbase-ext)
e200444e
JM
268
269-dumpdir
1dedc12d 270Driver Common Separate Alias(dumpdir)
e200444e
JM
271
272-entry
273Driver Separate Alias(e)
274
275-entry=
276Driver Joined Alias(e)
277
278-extra-warnings
279Common Warning Alias(Wextra)
280
281-for-assembler
282Driver Separate Alias(Xassembler)
283
284-for-assembler=
285Driver JoinedOrMissing Alias(Xassembler)
286
287-for-linker
288Driver Separate Alias(Xlinker)
289
290-for-linker=
291Driver JoinedOrMissing Alias(Xlinker)
292
293-force-link
294Driver Separate Alias(u)
295
296-force-link=
297Driver Joined Alias(u)
298
d185d268 299-help
e200444e 300Common Driver Var(help_flag)
a7b2e184 301Display this information.
d185d268 302
c662432e 303-help=
eece52b5 304Common Driver Joined
a7b2e184 305--help=<class> Display descriptions of a specific class of options. <class> is one or more of optimizers, target, warnings, undocumented, params.
903caebf 306
e200444e
JM
307-language
308Driver Separate Alias(x)
309
310-language=
311Driver Joined Alias(x)
312
313-library-directory
314Driver Separate Alias(L)
315
316-library-directory=
317Driver Joined Alias(L)
318
319-no-canonical-prefixes
320Driver Alias(no-canonical-prefixes)
321
322-no-standard-libraries
323Driver Alias(nostdlib)
324
28b4fc51
JM
325-no-sysroot-suffix
326Driver Var(no_sysroot_suffix)
327
e200444e
JM
328-no-warnings
329Common Alias(w)
330
331-optimize
332Common Alias(O)
333
334-output
335Common Driver Separate Alias(o) MissingArgError(missing filename after %qs)
336
337-output=
338Common Driver Joined Alias(o) MissingArgError(missing filename after %qs)
339
340-pass-exit-codes
341Driver Alias(pass-exit-codes)
342
343-pedantic
c1771a20 344Common Alias(Wpedantic)
e200444e
JM
345
346-pedantic-errors
347Common Alias(pedantic-errors)
348
349-pie
5460e1fc 350Driver Alias(pie)
e200444e 351
b4fed890
L
352-static-pie
353Driver Alias(static-pie)
354
e200444e
JM
355-pipe
356Driver Alias(pipe)
357
358-prefix
359Driver Separate Alias(B)
360
361-prefix=
362Driver JoinedOrMissing Alias(B)
363
364-preprocess
365Driver Alias(E)
366
367-print-file-name
368Driver Separate Alias(print-file-name=)
369
370-print-file-name=
371Driver JoinedOrMissing Alias(print-file-name=)
372
373-print-libgcc-file-name
374Driver Alias(print-libgcc-file-name)
375
376-print-multi-directory
377Driver Alias(print-multi-directory)
378
379-print-multi-lib
380Driver Alias(print-multi-lib)
381
382-print-multi-os-directory
383Driver Alias(print-multi-os-directory)
384
e0cdc09f
MK
385-print-multiarch
386Driver Alias(print-multiarch)
387
e200444e
JM
388-print-prog-name
389Driver Separate Alias(print-prog-name=)
390
391-print-prog-name=
392Driver JoinedOrMissing Alias(print-prog-name=)
393
394-print-search-dirs
395Driver Alias(print-search-dirs)
396
397-print-sysroot
398Driver Alias(print-sysroot)
399
400-print-sysroot-headers-suffix
401Driver Alias(print-sysroot-headers-suffix)
402
403-profile
404Common Alias(p)
405
406-save-temps
407Driver Alias(save-temps)
408
409-shared
5460e1fc 410Driver Alias(shared)
e200444e
JM
411
412-specs
413Driver Separate Alias(specs=)
414
415-specs=
416Driver Joined Alias(specs=)
417
418-static
419Driver Alias(static)
420
421-symbolic
422Driver Alias(symbolic)
423
d185d268 424-target-help
603349bf 425Common Driver
a7b2e184 426Alias for --help=target.
c662432e 427
e200444e
JM
428-time
429Driver Alias(time)
430
431-verbose
432Driver Alias(v)
433
434;; The driver used to convert options such as --help into forms such
435;; as -fhelp; the following four entries are for compatibility with
436;; any direct uses of those (undocumented) -f forms
c662432e 437fhelp
e200444e 438Common Driver Alias(-help)
c662432e
NC
439
440fhelp=
e200444e 441Common Driver Joined Alias(-help=)
c662432e
NC
442
443ftarget-help
e200444e 444Common Driver Alias(-target-help)
c662432e 445
41fd0f9b 446fversion
e200444e 447Common Driver Alias(-version)
41fd0f9b 448
e200444e
JM
449-sysroot
450Driver Separate Alias(-sysroot=)
451
603349bf
JM
452-sysroot=
453Driver JoinedOrMissing
454
d185d268 455-version
603349bf
JM
456Common Driver
457
458B
459Driver Joined Separate
460
461E
462Driver
d185d268 463
d9d16a19
JM
464L
465Driver Joined Separate
466
dd9f93dc
JM
467N
468Driver
469
903caebf 470O
ab442df7 471Common JoinedOrMissing Optimization
a7b2e184 472-O<number> Set optimization level to <number>.
903caebf
NB
473
474Os
ab442df7 475Common Optimization
a7b2e184 476Optimize for space rather than speed.
903caebf 477
be6d3f0e
RG
478Ofast
479Common Optimization
a7b2e184 480Optimize for speed disregarding exact standards compliance.
be6d3f0e 481
bf7a7185
RG
482Og
483Common Optimization
a7b2e184 484Optimize for debugging experience rather than speed or size.
bf7a7185 485
e742722f
RS
486Oz
487Common Optimization
488Optimize for space aggressively rather than speed.
489
dd9f93dc
JM
490Q
491Driver
492
493Qn
494Driver Negative(Qy)
495
496Qy
497Driver Negative(Qn)
498
6d721f67
JM
499R
500Driver Joined Separate
501
603349bf
JM
502S
503Driver
504
6d721f67
JM
505T
506Driver Joined Separate
507
508Tbss
509Driver Separate
510
e69d7376
JM
511Tbss=
512Driver Joined
513
6d721f67
JM
514Tdata
515Driver Separate
516
e69d7376
JM
517Tdata=
518Driver Joined
519
6d721f67
JM
520Ttext
521Driver Separate
522
e69d7376
JM
523Ttext=
524Driver Joined
525
903caebf 526W
5de8299c 527Common RejectNegative Warning Alias(Wextra)
a7b2e184 528This switch is deprecated; use -Wextra instead.
903caebf 529
603349bf 530Wa,
9ed32e27 531Driver JoinedOrMissing RejectNegative
603349bf
JM
532
533Wl,
9ed32e27 534Driver JoinedOrMissing RejectNegative
603349bf
JM
535
536Wp,
9ed32e27 537Driver JoinedOrMissing RejectNegative
603349bf 538
e01cc6dc 539Waggregate-return
c662432e 540Common Var(warn_aggregate_return) Warning
a7b2e184 541Warn about returning structures, unions or arrays.
e01cc6dc 542
fbd28bc3
JJ
543Waggressive-loop-optimizations
544Common Var(warn_aggressive_loop_optimizations) Init(1) Warning
a7b2e184 545Warn if a loop with constant number of iterations triggers undefined behavior.
fbd28bc3 546
590b1f2d 547Warray-bounds
21af5cdf 548Common Var(warn_array_bounds) Warning
a7b2e184 549Warn if an array is accessed out of bounds.
590b1f2d 550
de1b5c17 551Warray-bounds=
63010089 552Common Joined RejectNegative UInteger Var(warn_array_bounds) Warning IntegerRange(0, 2)
a7b2e184 553Warn if an array is accessed out of bounds.
de1b5c17 554
671a2836
MS
555Wuse-after-free
556Common Var(warn_use_after_free) Warning
557Warn for uses of pointers to deallocated strorage.
558
559Wuse-after-free=
560Common Joined RejectNegative UInteger Var(warn_use_after_free) Warning IntegerRange(0, 3)
561Warn for uses of pointers to deallocated strorage.
562
5c498b10 563Wattributes
c662432e 564Common Var(warn_attributes) Init(1) Warning
a7b2e184 565Warn about inappropriate attribute usage.
5c498b10 566
a1ad0d84
MP
567Wattributes=
568Common Joined
569Do not warn about specified attributes.
570
5ebfd62b
BE
571Wattribute-alias
572Common Alias(Wattribute_alias=, 1, 0) Warning
d3a02ae5 573Warn about type safety and similar errors and mismatches in declarations with alias attributes.
5ebfd62b 574
79a2c428
MS
575Wattribute-alias=
576Common Joined RejectNegative UInteger Var(warn_attribute_alias) Init(1) Warning IntegerRange(0, 2)
d3a02ae5 577Warn about type safety and similar errors and mismatches in declarations with alias attributes.
79a2c428 578
6902799c
IL
579Wcannot-profile
580Common Var(warn_cannot_profile) Init(1) Warning
581Warn when profiling instrumentation was requested, but could not be applied to
582a certain function.
583
e01cc6dc 584Wcast-align
c662432e 585Common Var(warn_cast_align) Warning
a7b2e184 586Warn about pointer casts which increase alignment.
e01cc6dc 587
1d933576
BE
588Wcast-align=strict
589Common Var(warn_cast_align,2) Warning
590Warn about pointer casts which increase alignment.
591
87cf0651
SB
592Wcpp
593Common Var(warn_cpp) Init(1) Warning
a7b2e184 594Warn when a #warning directive is encountered.
87cf0651 595
e217792b
NM
596Wattribute-warning
597Common Var(warn_attribute_warning) Init(1) Warning
598Warn about uses of __attribute__((warning)) declarations.
599
99063eee
RS
600Wdeprecated
601Common Var(warn_deprecated) Init(1) Warning
602Warn if a deprecated compiler feature, class, method, or field is used.
603
e01cc6dc 604Wdeprecated-declarations
c662432e 605Common Var(warn_deprecated_decl) Init(1) Warning
a7b2e184 606Warn about uses of __attribute__((deprecated)) declarations.
e01cc6dc
NB
607
608Wdisabled-optimization
c662432e 609Common Var(warn_disabled_optimization) Warning
a7b2e184 610Warn when an optimization pass is disabled.
e01cc6dc
NB
611
612Werror
50431bc4 613Common Var(warnings_are_errors)
a7b2e184 614Treat all warnings as errors.
e01cc6dc 615
79cf5994
DD
616Werror=
617Common Joined
a7b2e184 618Treat specified warning as error.
79cf5994 619
903caebf 620Wextra
62a67c94 621Common Var(extra_warnings) Warning
a7b2e184 622Print extra (possibly unwanted) warnings.
903caebf 623
c65a01af 624Wfatal-errors
50431bc4 625Common Var(flag_fatal_errors)
a7b2e184 626Exit on the first error occurred.
c65a01af 627
a214518f 628Wframe-larger-than=
00abf86c
MS
629Common RejectNegative Joined Host_Wide_Int ByteSize Warning Var(warn_frame_larger_than_size) Init(HOST_WIDE_INT_MAX)
630-Wframe-larger-than=<byte-size> Warn if a function's stack frame requires in excess of <byte-size>.
a214518f 631
ae962e57
MS
632Wno-frame-larger-than
633Common Alias(Wframe-larger-than=,18446744073709551615EiB,none) Warning
634Disable -Wframe-larger-than= warning. Equivalent to -Wframe-larger-than=<SIZE_MAX> or larger.
635
a3a704a4
MH
636Wfree-nonheap-object
637Common Var(warn_free_nonheap_object) Init(1) Warning
a7b2e184 638Warn when attempting to free a non-heap object.
a3a704a4 639
b2b40051 640Whsa
c56684fd
MJ
641Common Ignore Warning
642Does nothing. Preserved for backward compatibility.
b2b40051 643
81fea426 644Wimplicit-fallthrough
70f6d5e1
JJ
645Common Alias(Wimplicit-fallthrough=,3,0) Warning
646
647Wimplicit-fallthrough=
63010089 648Common Var(warn_implicit_fallthrough) RejectNegative Joined UInteger Warning IntegerRange(0, 5)
81fea426
MP
649Warn when a switch case falls through.
650
30ba058f
MS
651Winfinite-recursion
652Var(warn_infinite_recursion) Warning
653Warn for infinitely recursive calls.
654
e01cc6dc 655Winline
a924bffb 656Common Var(warn_inline) Warning Optimization
a7b2e184 657Warn when an inlined function cannot be inlined.
e01cc6dc 658
86951993
AM
659Winvalid-memory-model
660Common Var(warn_invalid_memory_model) Init(1) Warning
661Warn when an atomic memory model parameter is known to be outside the valid range.
662
e01cc6dc 663Wlarger-than-
5de8299c 664Common RejectNegative Joined Warning Undocumented Alias(Wlarger-than=)
e8fc888d
MLI
665
666Wlarger-than=
00abf86c
MS
667Common RejectNegative Joined Host_Wide_Int ByteSize Warning Var(warn_larger_than_size) Init(HOST_WIDE_INT_MAX)
668-Wlarger-than=<byte-size> Warn if an object's size exceeds <byte-size>.
e01cc6dc 669
ae962e57
MS
670Wno-larger-than
671Common Alias(Wlarger-than=,18446744073709551615EiB,none) Warning
672Disable -Wlarger-than= warning. Equivalent to -Wlarger-than=<SIZE_MAX> or larger.
673
bf14eba2
JJ
674Wnonnull-compare
675Var(warn_nonnull_compare) Warning
676Warn if comparing pointer parameter with nonnull attribute with NULL.
677
76787f70 678Wnull-dereference
c2d89095 679Common Var(warn_null_dereference) Warning
a7b2e184 680Warn if dereferencing a NULL pointer may lead to erroneous or undefined behavior.
76787f70 681
f9cc1a70 682Wunsafe-loop-optimizations
ee79110c
JJ
683Common Ignore Warning
684Does nothing. Preserved for backward compatibility.
f9cc1a70 685
e01cc6dc 686Wmissing-noreturn
54d62f51 687Common Warning Alias(Wsuggest-attribute=noreturn)
e01cc6dc 688
c59f7203 689Wodr
a0fd3373 690Common Var(warn_odr_violations) Init(1) Warning
a7b2e184 691Warn about some C++ One Definition Rule violations during link time optimization.
c59f7203 692
71834ad3 693Woverflow
c662432e 694Common Var(warn_overflow) Init(1) Warning
a7b2e184 695Warn about overflow in arithmetic expressions.
71834ad3 696
259d29e3
JH
697Wlto-type-mismatch
698Common Var(warn_lto_type_mismatch) Init(1) Warning
a7b2e184 699During link time optimization warn about mismatched types of global declarations.
259d29e3 700
e01cc6dc 701Wpacked
c662432e 702Common Var(warn_packed) Warning
a7b2e184 703Warn when the packed attribute has no effect on struct layout.
e01cc6dc
NB
704
705Wpadded
c662432e 706Common Var(warn_padded) Warning
a7b2e184 707Warn when padding is required to align structure members.
e01cc6dc 708
c1771a20 709Wpedantic
2b71f4a4 710Common Var(pedantic) Init(0) Warning
a7b2e184 711Issue warnings needed for strict compliance to the standard.
c1771a20 712
b4dfdc11
MG
713Wreturn-local-addr
714Common Var(warn_return_local_addr) Init(1) Warning
715Warn about returning a pointer/reference to a local or temporary variable.
716
e01cc6dc 717Wshadow
c662432e 718Common Var(warn_shadow) Warning
84ff4775
LCW
719Warn when one variable shadows another. Same as -Wshadow=global.
720
721Wshadow=global
722Common Warning Alias(Wshadow)
723Warn when one variable shadows another (globally).
724
725Wshadow=local
726Common Var(warn_shadow_local) Warning EnabledBy(Wshadow)
727Warn when one local variable shadows another local variable or parameter.
728
729Wshadow-local
730Common Warning Undocumented Alias(Wshadow=local)
731
732Wshadow=compatible-local
733Common Var(warn_shadow_compatible_local) Warning EnabledBy(Wshadow=local)
734Warn when one local variable shadows another local variable or parameter of compatible type.
735
736Wshadow-compatible-local
737Common Warning Undocumented Alias(Wshadow=compatible-local)
e01cc6dc 738
7d69de61 739Wstack-protector
c662432e 740Common Var(warn_stack_protect) Warning
a7b2e184 741Warn when not issuing stack smashing protection for some reason.
7d69de61 742
a11e0df4 743Wstack-usage=
00abf86c
MS
744Common Joined RejectNegative Host_Wide_Int ByteSize Var(warn_stack_usage) Warning Init(HOST_WIDE_INT_MAX)
745-Wstack-usage=<byte-size> Warn if stack usage might exceed <byte-size>.
a11e0df4 746
ae962e57
MS
747Wno-stack-usage
748Common Alias(Wstack-usage=,18446744073709551615EiB,none) Warning
749Disable Wstack-usage= warning. Equivalent to Wstack-usage=<SIZE_MAX> or larger.
750
e01cc6dc 751Wstrict-aliasing
c662432e 752Common Warning
a7b2e184 753Warn about code which might break strict aliasing rules.
e01cc6dc 754
5399d643 755Wstrict-aliasing=
65d4f2cd 756Common Joined RejectNegative UInteger Var(warn_strict_aliasing) Warning
a7b2e184 757Warn about code which might break strict aliasing rules.
5399d643 758
6ac01510 759Wstrict-overflow
21af5cdf 760Common Warning
a7b2e184 761Warn about optimizations that assume that signed overflow is undefined.
6ac01510
ILT
762
763Wstrict-overflow=
65d4f2cd 764Common Joined RejectNegative UInteger Var(warn_strict_overflow) Warning
a7b2e184 765Warn about optimizations that assume that signed overflow is undefined.
6ac01510 766
12b9f3ac
JH
767Wsuggest-attribute=cold
768Common Var(warn_suggest_attribute_cold) Warning
769Warn about functions which might be candidates for __attribute__((cold)).
770
5dc16b19
MLI
771Wsuggest-attribute=const
772Common Var(warn_suggest_attribute_const) Warning
a7b2e184 773Warn about functions which might be candidates for __attribute__((const)).
5dc16b19
MLI
774
775Wsuggest-attribute=pure
776Common Var(warn_suggest_attribute_pure) Warning
a7b2e184 777Warn about functions which might be candidates for __attribute__((pure)).
5dc16b19 778
7ea6b6cf
JH
779Wsuggest-attribute=noreturn
780Common Var(warn_suggest_attribute_noreturn) Warning
a7b2e184 781Warn about functions which might be candidates for __attribute__((noreturn)).
7ea6b6cf 782
0fab169b
PK
783Wsuggest-attribute=malloc
784Common Var(warn_suggest_attribute_malloc) Warning
785Warn about functions which might be candidates for __attribute__((malloc)).
786
91bc34a9
JH
787Wsuggest-final-types
788Common Var(warn_suggest_final_types) Warning
a7b2e184 789Warn about C++ polymorphic types where adding final keyword would improve code quality.
91bc34a9
JH
790
791Wsuggest-final-methods
792Common Var(warn_suggest_final_methods) Warning
a7b2e184 793Warn about C++ virtual methods where adding final keyword would improve code quality.
91bc34a9 794
a7dc5980
MP
795Wswitch-unreachable
796Common Var(warn_switch_unreachable) Warning Init(1)
797Warn about statements between switch's controlling expression and the first
798case.
799
e01cc6dc 800Wsystem-headers
c662432e 801Common Var(warn_system_headers) Warning
a7b2e184 802Do not suppress warnings from system headers.
e01cc6dc 803
8ffadef9
MG
804Wtrampolines
805Common Var(warn_trampolines) Warning
a7b2e184 806Warn whenever a trampoline is generated.
8ffadef9 807
faebccf9 808Wtype-limits
95744782 809Common Var(warn_type_limits) Warning EnabledBy(Wextra)
a7b2e184 810Warn if a comparison is always true or always false due to the limited range of the data type.
faebccf9 811
e01cc6dc 812Wuninitialized
7d5a5747 813Common Var(warn_uninitialized) Warning EnabledBy(Wextra)
a7b2e184 814Warn about uninitialized automatic variables.
e01cc6dc 815
2f964ad6 816Wmaybe-uninitialized
7d5a5747 817Common Var(warn_maybe_uninitialized) Warning EnabledBy(Wuninitialized)
a7b2e184 818Warn about maybe uninitialized automatic variables.
2f964ad6 819
e01cc6dc 820Wunreachable-code
f1a62b6f 821Common Ignore Warning
bc3c12a2 822Does nothing. Preserved for backward compatibility.
e01cc6dc 823
903caebf 824Wunused
e73f7547 825Common Var(warn_unused) Init(0) Warning
a7b2e184 826Enable all -Wunused- warnings.
903caebf 827
ebfbbdc5 828Wunused-but-set-parameter
d919140b 829Common Var(warn_unused_but_set_parameter) Warning EnabledBy(Wunused && Wextra)
a7b2e184 830Warn when a function parameter is only set, otherwise unused.
ebfbbdc5
JJ
831
832Wunused-but-set-variable
7d5a5747 833Common Var(warn_unused_but_set_variable) Warning EnabledBy(Wunused)
a7b2e184 834Warn when a variable is only set, otherwise unused.
ebfbbdc5 835
e01cc6dc 836Wunused-function
7d5a5747 837Common Var(warn_unused_function) Warning EnabledBy(Wunused)
a7b2e184 838Warn when a function is unused.
e01cc6dc
NB
839
840Wunused-label
7d5a5747 841Common Var(warn_unused_label) Warning EnabledBy(Wunused)
a7b2e184 842Warn when a label is unused.
e01cc6dc
NB
843
844Wunused-parameter
d919140b 845Common Var(warn_unused_parameter) Warning EnabledBy(Wunused && Wextra)
a7b2e184 846Warn when a function parameter is unused.
e01cc6dc
NB
847
848Wunused-value
7d5a5747 849Common Var(warn_unused_value) Warning EnabledBy(Wunused)
a7b2e184 850Warn when an expression value is unused.
e01cc6dc
NB
851
852Wunused-variable
7d5a5747 853Common Var(warn_unused_variable) Warning EnabledBy(Wunused)
a7b2e184 854Warn when a variable is unused.
e01cc6dc 855
16c1c158 856Wcoverage-mismatch
650cfcab 857Common Var(warn_coverage_mismatch) Init(1) Warning
a7b2e184 858Warn in case profiles in -fprofile-use do not match.
16c1c158 859
8bf728ae
ML
860Wcoverage-invalid-line-number
861Common Var(warn_coverage_invalid_linenum) Init(1) Warning
862Warn in case a function ends earlier than it begins due to an invalid linenum macros.
863
bc162b0e
IB
864Wmissing-profile
865Common Var(warn_missing_profile) Init(1) Warning
866Warn in case profiles in -fprofile-use do not exist.
867
cdbb5ba3
AS
868Wvector-operation-performance
869Common Var(warn_vector_operation_performance) Warning
a7b2e184 870Warn when a vector operation is compiled outside the SIMD.
cdbb5ba3 871
8833eab4
ML
872Wtsan
873Common Var(warn_tsan) Init(1) Warning
874Warn about unsupported features in ThreadSanitizer.
875
603349bf
JM
876Xassembler
877Driver Separate
878
879Xlinker
880Driver Separate
881
882Xpreprocessor
883Driver Separate
884
dd9f93dc
JM
885Z
886Driver
887
d185d268 888aux-info
d5478783 889Common Separate Var(aux_info_file_name)
a7b2e184 890-aux-info <file> Emit declaration information into <file>.
d185d268
NB
891
892aux-info=
5de8299c 893Common Joined Alias(aux-info)
d185d268 894
e200444e
JM
895coverage
896Driver
897
603349bf
JM
898c
899Driver
d185d268
NB
900
901d
902Common Joined
a7b2e184 903-d<letters> Enable dumps from specific passes of the compiler.
d185d268
NB
904
905dumpbase
1dedc12d 906Driver Common Separate Var(dump_base_name)
a7b2e184 907-dumpbase <file> Set the file basename to be used for dumps.
d185d268 908
1dedc12d
AO
909dumpbase-ext
910Driver Common Separate Var(dump_base_ext)
911-dumpbase-ext .<ext> Drop a trailing .<ext> from the dump basename to name auxiliary output files.
912
d7fb0a6d 913dumpdir
1dedc12d 914Driver Common Separate Var(dump_dir_name)
a7b2e184 915-dumpdir <dir> Set the directory name to be used for dumps.
d7fb0a6d 916
603349bf
JM
917dumpmachine
918Driver
919
920dumpspecs
921Driver
922
923dumpversion
924Driver
925
3c36aa6b
JJ
926dumpfullversion
927Driver
928
e200444e
JM
929e
930Driver Joined Separate
931
fa381cb2
JM
932; This option has historically been passed down to the linker by an
933; accident of a %{e*} spec, so ensure it continues to be passed down
934; as a single option. The supported option for this purpose is
935; -rdynamic. See PR 47390.
936export-dynamic
937Driver Undocumented
938
31b66477
KC
939; The version of the C++ ABI in use. The following values are allowed:
940;
941; 0: The version of the ABI believed most conformant with the C++ ABI
942; specification. This ABI may change as bugs are discovered and fixed.
943; Therefore, 0 will not necessarily indicate the same ABI in different
944; versions of G++.
945;
90d84934 946; 1: The version of the ABI first used in G++ 3.2. No longer selectable.
31b66477 947;
785f21af
JM
948; 2: The version of the ABI first used in G++ 3.4, and the default
949; until GCC 4.9.
abfe01ce
JM
950;
951; 3: The version of the ABI that fixes the missing underscore
952; in template non-type arguments of pointer type.
953;
954; 4: The version of the ABI that introduces unambiguous mangling of
55af847f 955; vector types. First selectable in G++ 4.5.
99a8d35b 956;
67e18edb 957; 5: The version of the ABI that ignores attribute const/noreturn
55af847f 958; in function pointer mangling, and corrects mangling of decltype and
67e18edb 959; function parameters used in other parameters and the return type.
55af847f 960; First selectable in G++ 4.6.
67e18edb 961;
4b6aaa99
JM
962; 6: The version of the ABI that doesn't promote scoped enums to int and
963; changes the mangling of template argument packs, const/static_cast,
964; prefix ++ and --, and a class scope function used as a template
965; argument.
967444bb
JM
966; First selectable in G++ 4.7.
967;
622aac0b
JM
968; 7: The version of the ABI that treats nullptr_t as a builtin type and
969; corrects the mangling of lambdas in default argument scope.
a3ddb738 970; First selectable in G++ 4.8.
0861bec8
JM
971;
972; 8: The version of the ABI that corrects the substitution behavior of
973; function types with function-cv-qualifiers.
603eaec4
JM
974; First selectable in G++ 4.9 and default in G++ 5.
975;
a03c9bf1
JM
976; 9: The version of the ABI that corrects the alignment of nullptr_t.
977; First selectable and default in G++ 5.2.
978;
979; 10: The version of the ABI that mangles attributes that affect type
980; identity, such as ia32 calling convention attributes (stdcall, etc.)
981; Default in G++ 6 (set in c_common_post_options).
0861bec8 982;
31f7f784
JM
983; 11: The version of the ABI that corrects mangling of sizeof... expressions
984; and introduces new inheriting constructor handling.
34bbc4c5
JM
985; Default in G++ 7.
986;
f3ec182d 987; 12: Corrects the calling convention for classes with only deleted copy/move
974aedcc 988; constructors and changes passing/returning of empty records.
34a7a230
JM
989; Default in G++ 8.1.
990;
991; 13: Fixes the accidental change in 12 to the calling convention for classes
992; with deleted copy constructor and trivial move constructor.
993; Default in G++ 8.2.
b1c9b3c3 994;
e0c866dd
KK
995; 14: Corrects the mangling of nullptr expression.
996; Default in G++ 10.
f3ec182d 997;
5f00df59
JM
998; 15: Corrects G++ 10 ABI tag regression [PR98481].
999; Available, but not default, in G++ 10.3.
1000;
1001; 16: Changes the mangling of __alignof__ to be distinct from that of alignof.
1002; Adds missing 'on' in mangling of operator names in some cases.
b1c9b3c3
PP
1003; Default in G++ 11.
1004;
a37e8ce3
JM
1005; 17: Fixes layout of classes that inherit from aggregate classes with default
1006; member initializers in C++14 and up.
1007; Default in G++ 12.
1008;
31b66477
KC
1009; Additional positive integers will be assigned as new versions of
1010; the ABI become the default version of the ABI.
57782ad8 1011fabi-version=
ca0e51a0 1012Common Joined RejectNegative UInteger Var(flag_abi_version) Init(0)
a7b2e184 1013The version of the C++ ABI in use.
57782ad8 1014
6e616110 1015faggressive-loop-optimizations
eece52b5 1016Common Var(flag_aggressive_loop_optimizations) Optimization Init(1)
a7b2e184 1017Aggressively optimize loops using language constraints.
6e616110 1018
6ff3a151 1019falign-functions
eece52b5 1020Common Var(flag_align_functions) Optimization
a7b2e184 1021Align the start of functions.
6ff3a151 1022
058de654 1023falign-functions=
c518c102 1024Common RejectNegative Joined Var(str_align_functions) Optimization
058de654 1025
8cac4d85 1026flimit-function-alignment
eece52b5 1027Common Var(flag_limit_function_alignment) Optimization Init(0)
8cac4d85 1028
6ff3a151 1029falign-jumps
eece52b5 1030Common Var(flag_align_jumps) Optimization
a7b2e184 1031Align labels which are only reached by jumping.
6ff3a151 1032
058de654 1033falign-jumps=
c518c102 1034Common RejectNegative Joined Var(str_align_jumps) Optimization
058de654 1035
6ff3a151 1036falign-labels
eece52b5 1037Common Var(flag_align_labels) Optimization
a7b2e184 1038Align all labels.
6ff3a151 1039
058de654 1040falign-labels=
c518c102 1041Common RejectNegative Joined Var(str_align_labels) Optimization
058de654 1042
6ff3a151 1043falign-loops
eece52b5 1044Common Var(flag_align_loops) Optimization
a7b2e184 1045Align the start of loops.
6ff3a151 1046
058de654 1047falign-loops=
8956e247 1048Common RejectNegative Joined Var(str_align_loops) Optimization
058de654 1049
e622a32d 1050fallow-store-data-races
eece52b5 1051Common Var(flag_store_data_races) Optimization
e622a32d
RB
1052Allow the compiler to introduce new data races on stores.
1053
757bf1df
DM
1054fanalyzer
1055Common Var(flag_analyzer)
1056Enable static analysis pass.
1057
6ff3a151 1058fargument-alias
2d2bd949 1059Common Ignore
0d3c82d6 1060Does nothing. Preserved for backward compatibility.
6ff3a151
NB
1061
1062fargument-noalias
2d2bd949 1063Common Ignore
0d3c82d6 1064Does nothing. Preserved for backward compatibility.
6ff3a151
NB
1065
1066fargument-noalias-global
2d2bd949 1067Common Ignore
0d3c82d6 1068Does nothing. Preserved for backward compatibility.
6ff3a151 1069
0698a1d2 1070fargument-noalias-anything
2d2bd949 1071Common Ignore
0d3c82d6 1072Does nothing. Preserved for backward compatibility.
0698a1d2 1073
de5a5fa1 1074fsanitize=
eece52b5 1075Common Driver Joined
a7b2e184 1076Select what to sanitize.
32b4b7f5 1077
f6e50a7d 1078fsanitize-coverage=
c1681f22 1079Common Joined RejectNegative Enum(sanitize_coverage)
cefc0906 1080Select type of coverage sanitization.
f6e50a7d 1081
c1681f22
ML
1082Enum
1083Name(sanitize_coverage) Type(int)
1084
1085EnumValue
1086Enum(sanitize_coverage) String(trace-pc) Value(SANITIZE_COV_TRACE_PC)
1087
1088EnumValue
1089Enum(sanitize_coverage) String(trace-cmp) Value(SANITIZE_COV_TRACE_CMP)
1090
fd960af2
YG
1091fasan-shadow-offset=
1092Common Joined RejectNegative Var(common_deferred_options) Defer
1093-fasan-shadow-offset=<number> Use custom shadow memory offset.
1094
18af8d16
YG
1095fsanitize-sections=
1096Common Joined RejectNegative Var(common_deferred_options) Defer
1097-fsanitize-sections=<sec1,sec2,...> Sanitize global variables
1098in user-defined sections.
1099
d95a2703 1100fsanitize-recover=
eece52b5 1101Common Joined
a7b2e184 1102After diagnosing undefined behavior attempt to continue execution.
1c33c9b7 1103
d95a2703 1104fsanitize-recover
eece52b5 1105Common
a7b2e184 1106This switch is deprecated; use -fsanitize-recover= instead.
d95a2703 1107
6dc4a604 1108fsanitize-address-use-after-scope
eece52b5 1109Common Driver Var(flag_sanitize_address_use_after_scope) Init(0)
6dc4a604 1110
1c33c9b7 1111fsanitize-undefined-trap-on-error
eece52b5 1112Common Driver Var(flag_sanitize_undefined_trap_on_error) Init(0)
a7b2e184 1113Use trap instead of a library function for undefined behavior sanitization.
1c33c9b7 1114
6ff3a151 1115fasynchronous-unwind-tables
eece52b5 1116Common Var(flag_asynchronous_unwind_tables) Optimization
a7b2e184 1117Generate unwind tables that are exact at each instruction boundary.
6ff3a151 1118
6fb5fa3c 1119fauto-inc-dec
eece52b5 1120Common Var(flag_auto_inc_dec) Init(1) Optimization
a7b2e184 1121Generate auto-inc/dec instructions.
6fb5fa3c 1122
be3c16c4 1123fauto-profile
eece52b5 1124Common Var(flag_auto_profile)
be3c16c4
DC
1125Use sample profile information for call graph node weights. The default
1126profile file is fbdata.afdo in 'pwd'.
1127
1128fauto-profile=
1129Common Joined RejectNegative Var(auto_profile_file)
1130Use sample profile information for call graph node weights. The profile
1131file is specified in the argument.
1132
31b66477
KC
1133; -fcheck-bounds causes gcc to generate array bounds checks.
1134; For C, C++ and ObjC: defaults off.
1135; For Java: defaults to on.
1136; For Fortran: defaults to off.
6ff3a151 1137fbounds-check
eece52b5 1138Common Var(flag_bounds_check)
a7b2e184 1139Generate code to check bounds before indexing arrays.
6ff3a151
NB
1140
1141fbranch-count-reg
eece52b5 1142Common Var(flag_branch_on_count_reg) Optimization
a7b2e184 1143Replace add, compare, branch with branch on count register.
6ff3a151
NB
1144
1145fbranch-probabilities
eece52b5 1146Common Var(flag_branch_probabilities) Optimization
a7b2e184 1147Use profiling information for branch probabilities.
6ff3a151 1148
de32c0cb 1149fbranch-target-load-optimize
f78f73cb
RS
1150Common Ignore
1151Does nothing. Preserved for backward compatibility.
de32c0cb
NB
1152
1153fbranch-target-load-optimize2
f78f73cb
RS
1154Common Ignore
1155Does nothing. Preserved for backward compatibility.
de32c0cb 1156
1194fc79 1157fbtr-bb-exclusive
f78f73cb
RS
1158Common Ignore
1159Does nothing. Preserved for backward compatibility.
1194fc79 1160
3cf3da88 1161fcallgraph-info
eece52b5 1162Common RejectNegative Var(flag_callgraph_info) Init(NO_CALLGRAPH_INFO);
3cf3da88
EB
1163Output callgraph information on a per-file basis.
1164
1165fcallgraph-info=
eece52b5 1166Common RejectNegative Joined
3cf3da88
EB
1167Output callgraph information on a per-file basis with decorations.
1168
058de654 1169fcall-saved-
21bf1558 1170Common Joined RejectNegative Var(common_deferred_options) Defer
a7b2e184 1171-fcall-saved-<register> Mark <register> as being preserved across functions.
058de654
NB
1172
1173fcall-used-
21bf1558 1174Common Joined RejectNegative Var(common_deferred_options) Defer
a7b2e184 1175-fcall-used-<register> Mark <register> as being corrupted by function calls.
058de654 1176
31b66477
KC
1177; Nonzero for -fcaller-saves: allocate values in regs that need to
1178; be saved across function calls, if that produces overall better code.
1179; Optional now, so people can test it.
de32c0cb 1180fcaller-saves
eece52b5 1181Common Var(flag_caller_saves) Optimization
a7b2e184 1182Save registers around function calls.
de32c0cb 1183
3d8864c0 1184fcheck-data-deps
c0c12356 1185Common Ignore
49b8fe6c 1186This switch is deprecated; do not use.
3d8864c0 1187
2284b034
MG
1188fcheck-new
1189Common Var(flag_check_new)
a7b2e184 1190Check the return value of new in C++.
2284b034 1191
6d27d749 1192fchecking
b06f87c7 1193Common Var(flag_checking) Init(CHECKING_P ? ENABLE_EXTRA_CHECKING ? 2 : 1 : 0)
6d27d749
RB
1194Perform internal consistency checkings.
1195
7db11a5a
JJ
1196fchecking=
1197Common Joined RejectNegative UInteger Var(flag_checking)
1198Perform internal consistency checkings.
1199
37ccb0ba 1200fcode-hoisting
eece52b5 1201Common Var(flag_code_hoisting) Optimization
37ccb0ba
SB
1202Enable code hoisting.
1203
ccaeeafe 1204fcombine-stack-adjustments
eece52b5 1205Common Var(flag_combine_stack_adjustments) Optimization
ccaeeafe
NC
1206Looks for opportunities to reduce stack adjustments and stack references.
1207
6ff3a151 1208fcommon
eece52b5 1209Common Var(flag_no_common,0) Init(1)
df73e971 1210Put uninitialized globals in the common section.
6ff3a151 1211
603349bf
JM
1212fcompare-debug
1213Driver
1214; Converted by the driver to -fcompare-debug= options.
1215
2153915d 1216fcompare-debug=
603349bf 1217Common Driver JoinedOrMissing RejectNegative Var(flag_compare_debug_opt)
a7b2e184 1218-fcompare-debug[=<opts>] Compile with and without e.g. -gtoggle, and compare the final-insns dump.
2153915d
AO
1219
1220fcompare-debug-second
5e471ea6 1221Common Driver RejectNegative Var(flag_compare_debug)
a7b2e184 1222Run only the second compilation of -fcompare-debug.
2153915d 1223
e692f276 1224fcompare-elim
eece52b5 1225Common Var(flag_compare_elim_after_reload) Optimization
a7b2e184 1226Perform comparison elimination after register allocation has finished.
e692f276 1227
b5b8b0ac
AO
1228fconserve-stack
1229Common Var(flag_conserve_stack) Optimization
a7b2e184 1230Do not perform optimizations increasing noticeably stack usage.
b5b8b0ac 1231
6ff3a151 1232fcprop-registers
eece52b5 1233Common Var(flag_cprop_registers) Optimization
a7b2e184 1234Perform a register copy-propagation optimization pass.
6ff3a151 1235
de32c0cb 1236fcrossjumping
eece52b5 1237Common Var(flag_crossjumping) Optimization
a7b2e184 1238Perform cross-jumping optimization.
de32c0cb
NB
1239
1240fcse-follow-jumps
eece52b5 1241Common Var(flag_cse_follow_jumps) Optimization
a7b2e184 1242When running CSE, follow jumps to their targets.
de32c0cb
NB
1243
1244fcse-skip-blocks
2d2bd949 1245Common Ignore
5f39ad47 1246Does nothing. Preserved for backward compatibility.
de32c0cb 1247
c7463669 1248fcx-limited-range
eece52b5 1249Common Var(flag_cx_limited_range) Optimization SetByCombined
a7b2e184 1250Omit range reduction step when performing complex division.
c7463669 1251
35085f76 1252fcx-fortran-rules
eece52b5 1253Common Var(flag_cx_fortran_rules) Optimization
a7b2e184 1254Complex multiplication and division follow Fortran rules.
35085f76 1255
6ff3a151 1256fdata-sections
eece52b5 1257Common Var(flag_data_sections)
a7b2e184 1258Place data items into their own section.
6ff3a151 1259
0a090f42 1260fdbg-cnt-list
eece52b5 1261Common Var(flag_dbg_cnt_list)
0a090f42
SP
1262List all available debugging counters with their limits and counts.
1263
6fb5fa3c 1264fdbg-cnt=
299404a1 1265Common RejectNegative Joined Var(common_deferred_options) Defer
83a49336 1266-fdbg-cnt=<counter>[:<lower_limit1>-]<upper_limit1>[:<lower_limit2>-<upper_limit2>:...][,<counter>:...] Set the debug counter limit.
6fb5fa3c 1267
c8aea42c 1268fdebug-prefix-map=
299404a1 1269Common Joined RejectNegative Var(common_deferred_options) Defer
b408e010 1270-fdebug-prefix-map=<old>=<new> Map one directory name to another in debug information.
7365279f
BK
1271
1272ffile-prefix-map=
1273Common Joined RejectNegative Var(common_deferred_options) Defer
b408e010 1274-ffile-prefix-map=<old>=<new> Map one directory name to another in compilation result.
c8aea42c 1275
76f9db36 1276fdebug-types-section
eece52b5 1277Common Var(flag_debug_types_section) Init(0)
76f9db36
JJ
1278Output .debug_types section when using DWARF v4 debuginfo.
1279
31b66477
KC
1280; Nonzero for -fdefer-pop: don't pop args after each function call
1281; instead save them up to pop many calls' args with one insns.
de32c0cb 1282fdefer-pop
eece52b5 1283Common Var(flag_defer_pop) Optimization
a7b2e184 1284Defer popping functions args from stack until later.
de32c0cb
NB
1285
1286fdelayed-branch
eece52b5 1287Common Var(flag_delayed_branch) Optimization
a7b2e184 1288Attempt to fill delay slots of branch instructions.
de32c0cb 1289
2da02156 1290fdelete-dead-exceptions
eece52b5 1291Common Var(flag_delete_dead_exceptions) Init(0) Optimization
a7b2e184 1292Delete dead instructions that may throw exceptions.
2da02156 1293
de32c0cb 1294fdelete-null-pointer-checks
eece52b5 1295Common Var(flag_delete_null_pointer_checks) Init(-1) Optimization
a7b2e184 1296Delete useless null pointer checks.
de32c0cb 1297
1e29e4d3 1298fdevirtualize-at-ltrans
eece52b5 1299Common Var(flag_ltrans_devirtualize)
a7b2e184 1300Stream extra data to support more aggressive devirtualization in LTO local transformation mode.
1e29e4d3 1301
bbc9396b 1302fdevirtualize-speculatively
eece52b5 1303Common Var(flag_devirtualize_speculatively) Optimization
a7b2e184 1304Perform speculative devirtualization.
bbc9396b 1305
ca1eedf6 1306fdevirtualize
eece52b5 1307Common Var(flag_devirtualize) Optimization
ca1eedf6
JH
1308Try to convert virtual calls to direct ones.
1309
de32c0cb 1310fdiagnostics-show-location=
e6d4b984 1311Common Joined RejectNegative Enum(diagnostic_prefixing_rule)
a7b2e184 1312-fdiagnostics-show-location=[once|every-line] How often to emit source location at the beginning of line-wrapped diagnostics.
de32c0cb 1313
e6d4b984
JM
1314; Required for these enum values.
1315SourceInclude
1316pretty-print.h
1317
1318Enum
1319Name(diagnostic_prefixing_rule) Type(int)
1320
1321EnumValue
1322Enum(diagnostic_prefixing_rule) String(once) Value(DIAGNOSTICS_SHOW_PREFIX_ONCE)
1323
1324EnumValue
1325Enum(diagnostic_prefixing_rule) String(every-line) Value(DIAGNOSTICS_SHOW_PREFIX_EVERY_LINE)
1326
9fec0042
MLI
1327fdiagnostics-show-caret
1328Common Var(flag_diagnostics_show_caret) Init(1)
a7b2e184 1329Show the source line with a caret indicating the column.
9fec0042 1330
96e6ae57
DM
1331fdiagnostics-show-labels
1332Common Var(flag_diagnostics_show_labels) Init(1)
04e5c73d 1333Show labels annotating ranges of source code when showing source.
96e6ae57 1334
56b61d7f
DM
1335fdiagnostics-show-line-numbers
1336Common Var(flag_diagnostics_show_line_numbers) Init(1)
04e5c73d 1337Show line numbers in the left margin when showing source.
56b61d7f 1338
4b84d650
JJ
1339fdiagnostics-color
1340Common Alias(fdiagnostics-color=,always,never)
1341;
1342
1343fdiagnostics-color=
97aa8bb6 1344Driver Common Joined RejectNegative Var(flag_diagnostics_show_color) Enum(diagnostic_color_rule) Init(DIAGNOSTICS_COLOR_NO)
a7b2e184 1345-fdiagnostics-color=[never|always|auto] Colorize diagnostics.
4b84d650
JJ
1346
1347; Required for these enum values.
1348SourceInclude
1349diagnostic-color.h
1350
1351Enum
1352Name(diagnostic_color_rule) Type(int)
1353
1354EnumValue
1355Enum(diagnostic_color_rule) String(never) Value(DIAGNOSTICS_COLOR_NO)
1356
1357EnumValue
1358Enum(diagnostic_color_rule) String(always) Value(DIAGNOSTICS_COLOR_YES)
1359
1360EnumValue
1361Enum(diagnostic_color_rule) String(auto) Value(DIAGNOSTICS_COLOR_AUTO)
1362
d2608235
DM
1363fdiagnostics-urls=
1364Driver Common Joined RejectNegative Var(flag_diagnostics_show_urls) Enum(diagnostic_url_rule) Init(DIAGNOSTICS_URL_AUTO)
1365-fdiagnostics-urls=[never|always|auto] Embed URLs in diagnostics.
1366
1367; Required for these enum values.
1368SourceInclude
1369diagnostic-url.h
1370
1371Enum
1372Name(diagnostic_url_rule) Type(int)
1373
1374EnumValue
1375Enum(diagnostic_url_rule) String(never) Value(DIAGNOSTICS_URL_NO)
1376
1377EnumValue
1378Enum(diagnostic_url_rule) String(always) Value(DIAGNOSTICS_URL_YES)
1379
1380EnumValue
1381Enum(diagnostic_url_rule) String(auto) Value(DIAGNOSTICS_URL_AUTO)
1382
004bb936
LH
1383fdiagnostics-column-unit=
1384Common Joined RejectNegative Enum(diagnostics_column_unit)
1385-fdiagnostics-column-unit=[display|byte] Select whether column numbers are output as display columns (default) or raw bytes.
1386
1387fdiagnostics-column-origin=
1388Common Joined RejectNegative UInteger
1389-fdiagnostics-column-origin=<number> Set the number of the first column. The default is 1-based as per GNU style, but some utilities may expect 0-based, for example.
1390
478dd60d
DM
1391fdiagnostics-format=
1392Common Joined RejectNegative Enum(diagnostics_output_format)
b408e010 1393-fdiagnostics-format=[text|json] Select output format.
478dd60d 1394
bd5e882c
DM
1395fdiagnostics-escape-format=
1396Common Joined RejectNegative Enum(diagnostics_escape_format)
1397-fdiagnostics-escape-format=[unicode|bytes] Select how to escape non-printable-ASCII bytes in the source for diagnostics that suggest it.
1398
478dd60d
DM
1399; Required for these enum values.
1400SourceInclude
1401diagnostic.h
1402
004bb936
LH
1403Enum
1404Name(diagnostics_column_unit) Type(int)
1405
1406EnumValue
1407Enum(diagnostics_column_unit) String(display) Value(DIAGNOSTICS_COLUMN_UNIT_DISPLAY)
1408
1409EnumValue
1410Enum(diagnostics_column_unit) String(byte) Value(DIAGNOSTICS_COLUMN_UNIT_BYTE)
1411
bd5e882c
DM
1412Enum
1413Name(diagnostics_escape_format) Type(int)
1414
1415EnumValue
1416Enum(diagnostics_escape_format) String(unicode) Value(DIAGNOSTICS_ESCAPE_FORMAT_UNICODE)
1417
1418EnumValue
1419Enum(diagnostics_escape_format) String(bytes) Value(DIAGNOSTICS_ESCAPE_FORMAT_BYTES)
1420
478dd60d
DM
1421Enum
1422Name(diagnostics_output_format) Type(int)
1423
1424EnumValue
1425Enum(diagnostics_output_format) String(text) Value(DIAGNOSTICS_OUTPUT_FORMAT_TEXT)
1426
1427EnumValue
1428Enum(diagnostics_output_format) String(json) Value(DIAGNOSTICS_OUTPUT_FORMAT_JSON)
1429
a93eac6a
DM
1430fdiagnostics-parseable-fixits
1431Common Var(flag_diagnostics_parseable_fixits)
8135a004 1432Print fix-it hints in machine-readable form.
a93eac6a 1433
717ebe91
DM
1434fdiagnostics-generate-patch
1435Common Var(flag_diagnostics_generate_patch)
1436Print fix-it hints to stderr in unified diff format.
1437
ccf08a6e 1438fdiagnostics-show-option
c7d0de89 1439Common Var(flag_diagnostics_show_option) Init(1)
a7b2e184 1440Amend appropriate diagnostic messages with the command line option that controls them.
ccf08a6e 1441
6d4a35ca
DM
1442fdiagnostics-show-cwe
1443Common Var(flag_diagnostics_show_cwe) Init(1)
1444Print CWE identifiers for diagnostic messages, where available.
1445
4bc1899b
DM
1446fdiagnostics-path-format=
1447Common Joined RejectNegative Var(flag_diagnostics_path_format) Enum(diagnostic_path_format) Init(DPF_INLINE_EVENTS)
1448Specify how to print any control-flow path associated with a diagnostic.
1449
129a1319
LH
1450fdiagnostics-plain-output
1451Driver Common RejectNegative
1452Turn off any diagnostics features that complicate the output, such as line numbers, color, and warning URLs.
1453
004bb936
LH
1454ftabstop=
1455Common Joined RejectNegative UInteger
1456-ftabstop=<number> Distance between tab stops for column reporting.
1457
4bc1899b
DM
1458Enum
1459Name(diagnostic_path_format) Type(int)
1460
1461EnumValue
1462Enum(diagnostic_path_format) String(none) Value(DPF_NONE)
1463
1464EnumValue
1465Enum(diagnostic_path_format) String(separate-events) Value(DPF_SEPARATE_EVENTS)
1466
1467EnumValue
1468Enum(diagnostic_path_format) String(inline-events) Value(DPF_INLINE_EVENTS)
1469
1470fdiagnostics-show-path-depths
1471Common Var(flag_diagnostics_show_path_depths) Init(0)
1472Show stack depths of events in paths.
1473
0141ab44
DM
1474fdiagnostics-minimum-margin-width=
1475Common Joined UInteger Var(diagnostics_minimum_margin_width) Init(6)
04e5c73d 1476Set minimum width of left margin of source code when showing source.
0141ab44 1477
226c52aa
XDL
1478fdisable-
1479Common Joined RejectNegative Var(common_deferred_options) Defer
b408e010 1480-fdisable-[tree|rtl|ipa]-<pass>=range1+range2 Disable an optimization pass.
226c52aa
XDL
1481
1482fenable-
1483Common Joined RejectNegative Var(common_deferred_options) Defer
b408e010 1484-fenable-[tree|rtl|ipa]-<pass>=range1+range2 Enable an optimization pass.
226c52aa 1485
6de9cd9a 1486fdump-
21bf1558 1487Common Joined RejectNegative Var(common_deferred_options) Defer
a7b2e184 1488-fdump-<type> Dump various compiler internals to a file.
6de9cd9a 1489
d1583032
JM
1490fdump-final-insns
1491Driver RejectNegative
1492
2153915d
AO
1493fdump-final-insns=
1494Common RejectNegative Joined Var(flag_dump_final_insns)
a7b2e184 1495-fdump-final-insns=filename Dump to filename the insns at the end of translation.
2153915d 1496
c6a13190
ILT
1497fdump-go-spec=
1498Common RejectNegative Joined Var(flag_dump_go_spec)
a7b2e184 1499-fdump-go-spec=filename Write all declarations to file as Go code.
c6a13190 1500
24a7799e 1501fdump-noaddr
eece52b5 1502Common Var(flag_dump_noaddr)
a7b2e184 1503Suppress output of addresses in debugging dumps.
24a7799e 1504
dc10fd96
JJ
1505freport-bug
1506Common Driver Var(flag_report_bug)
1507Collect and dump debug information into temporary file if ICE in C/C++
bd2c6270 1508compiler occurred.
dc10fd96 1509
ba4ad400
DM
1510fdump-internal-locations
1511Common Var(flag_dump_locations) Init(0)
a7b2e184 1512Dump detailed information on GCC's internal representation of source code locations.
ba4ad400 1513
deced1e2
XDL
1514fdump-passes
1515Common Var(flag_dump_passes) Init(0)
a7b2e184 1516Dump optimization passes.
deced1e2 1517
6ff3a151 1518fdump-unnumbered
eece52b5 1519Common Var(flag_dump_unnumbered)
a7b2e184 1520Suppress output of instruction numbers, line number notes and addresses in debugging dumps.
6ff3a151 1521
2aa7c49b 1522fdump-unnumbered-links
eece52b5 1523Common Var(flag_dump_unnumbered_links)
a7b2e184 1524Suppress output of previous and next insn numbers in debugging dumps.
2aa7c49b 1525
b5b8b0ac 1526fdwarf2-cfi-asm
eece52b5 1527Common Var(flag_dwarf2_cfi_asm) Init(HAVE_GAS_CFI_DIRECTIVE)
b5b8b0ac
AO
1528Enable CFI tables via GAS assembler directives.
1529
355866de 1530fearly-inlining
eece52b5 1531Common Var(flag_early_inlining) Init(1) Optimization
a7b2e184 1532Perform early inlining.
355866de 1533
de32c0cb 1534feliminate-dwarf2-dups
1823c4f6
RB
1535Common Ignore
1536Does nothing. Preserved for backward compatibility.
de32c0cb 1537
07ffa034 1538fipa-sra
eece52b5 1539Common Var(flag_ipa_sra) Init(0) Optimization
a7b2e184 1540Perform interprocedural reduction of aggregates.
07ffa034 1541
6a08f7b3 1542feliminate-unused-debug-symbols
eece52b5 1543Common Var(flag_debug_only_used_symbols) Init(1)
a7b2e184 1544Perform unused symbol elimination in debug info.
6a08f7b3 1545
de32c0cb 1546feliminate-unused-debug-types
eece52b5 1547Common Var(flag_eliminate_unused_debug_types) Init(1)
a7b2e184 1548Perform unused type elimination in debug info.
de32c0cb 1549
e713adf6 1550femit-class-debug-always
eece52b5 1551Common Var(flag_emit_class_debug_always) Init(0)
e713adf6
CD
1552Do not suppress C++ class debug information.
1553
6ff3a151 1554fexceptions
1313111f 1555Common Var(flag_exceptions) Optimization EnabledBy(fnon-call-exceptions)
a7b2e184 1556Enable exception handling.
6ff3a151 1557
de32c0cb 1558fexpensive-optimizations
eece52b5 1559Common Var(flag_expensive_optimizations) Optimization
a7b2e184 1560Perform a number of minor, expensive optimizations.
de32c0cb 1561
8ce94e44 1562fexcess-precision=
df375b03 1563Common Joined RejectNegative Enum(excess_precision) Var(flag_excess_precision) Init(EXCESS_PRECISION_DEFAULT) Optimization SetByCombined
f19a3270 1564-fexcess-precision=[fast|standard|16] Specify handling of excess floating-point precision.
8ce94e44 1565
e6d4b984
JM
1566Enum
1567Name(excess_precision) Type(enum excess_precision) UnknownError(unknown excess precision style %qs)
1568
1569EnumValue
1570Enum(excess_precision) String(fast) Value(EXCESS_PRECISION_FAST)
1571
1572EnumValue
1573Enum(excess_precision) String(standard) Value(EXCESS_PRECISION_STANDARD)
1574
f19a3270 1575EnumValue
1576Enum(excess_precision) String(16) Value(EXCESS_PRECISION_FLOAT16)
1577
04f0fcf7
JG
1578; Whether we permit the extended set of values for FLT_EVAL_METHOD
1579; introduced in ISO/IEC TS 18661-3, or limit ourselves to those in C99/C11.
1580fpermitted-flt-eval-methods=
1581Common Joined RejectNegative Enum(permitted_flt_eval_methods) Var(flag_permitted_flt_eval_methods) Init(PERMITTED_FLT_EVAL_METHODS_DEFAULT)
1582-fpermitted-flt-eval-methods=[c11|ts-18661] Specify which values of FLT_EVAL_METHOD are permitted.
1583
1584Enum
1585Name(permitted_flt_eval_methods) Type(enum permitted_flt_eval_methods) UnknownError(unknown specification for the set of FLT_EVAL_METHOD values to permit %qs)
1586
1587EnumValue
1588Enum(permitted_flt_eval_methods) String(c11) Value(PERMITTED_FLT_EVAL_METHODS_C11)
1589
1590EnumValue
1591Enum(permitted_flt_eval_methods) String(ts-18661-3) Value(PERMITTED_FLT_EVAL_METHODS_TS_18661)
1592
058de654 1593ffast-math
bfd67b47 1594Common Optimization
058de654 1595
cc8547a7 1596ffat-lto-objects
e9f67e62 1597Common Var(flag_fat_lto_objects)
cc8547a7
AK
1598Output lto objects containing both the intermediate language and binary output.
1599
6ff3a151 1600ffinite-math-only
eece52b5 1601Common Var(flag_finite_math_only) Optimization SetByCombined
a7b2e184 1602Assume no NaNs or infinities are generated.
6ff3a151 1603
c29c92c7 1604ffinite-loops
eece52b5 1605Common Var(flag_finite_loops) Optimization Init(0)
c29c92c7
FX
1606Assume that loops with an exit will terminate and not loop indefinitely.
1607
058de654 1608ffixed-
21bf1558 1609Common Joined RejectNegative Var(common_deferred_options) Defer
a7b2e184 1610-ffixed-<register> Mark <register> as being unavailable to the compiler.
058de654 1611
de32c0cb 1612ffloat-store
eece52b5 1613Common Var(flag_float_store) Optimization
a7b2e184 1614Don't allocate floats and doubles in extended-precision registers.
de32c0cb
NB
1615
1616fforce-addr
2d2bd949 1617Common Ignore
3de5e93a 1618Does nothing. Preserved for backward compatibility.
de32c0cb 1619
2ca2b607 1620fforward-propagate
eece52b5 1621Common Var(flag_forward_propagate) Optimization
a7b2e184 1622Perform a forward propagation pass on RTL.
a52b023a 1623
16949072 1624ffp-contract=
bea30e0d 1625Common Joined RejectNegative Enum(fp_contract_mode) Var(flag_fp_contract_mode) Init(FP_CONTRACT_FAST) Optimization
6a825afe 1626-ffp-contract=[off|on|fast] Perform floating-point expression contraction.
16949072 1627
e6d4b984
JM
1628Enum
1629Name(fp_contract_mode) Type(enum fp_contract_mode) UnknownError(unknown floating point contraction style %qs)
1630
1631EnumValue
1632Enum(fp_contract_mode) String(off) Value(FP_CONTRACT_OFF)
1633
1634; Not implemented, fall back to conservative FP_CONTRACT_OFF.
1635EnumValue
1636Enum(fp_contract_mode) String(on) Value(FP_CONTRACT_OFF)
1637
1638EnumValue
1639Enum(fp_contract_mode) String(fast) Value(FP_CONTRACT_FAST)
1640
0d2f700f 1641ffp-int-builtin-inexact
eece52b5 1642Common Var(flag_fp_int_builtin_inexact) Init(1) Optimization
0d2f700f
JM
1643Allow built-in functions ceil, floor, round, trunc to raise \"inexact\" exceptions.
1644
31b66477
KC
1645; Nonzero means don't put addresses of constant functions in registers.
1646; Used for compiling the Unix kernel, where strange substitutions are
1647; done on the assembly output.
de32c0cb 1648ffunction-cse
eece52b5 1649Common Var(flag_no_function_cse,0) Optimization
a7b2e184 1650Allow function addresses to be held in registers.
de32c0cb 1651
6ff3a151 1652ffunction-sections
eece52b5 1653Common Var(flag_function_sections)
a7b2e184 1654Place each function into its own section.
6ff3a151 1655
de32c0cb 1656fgcse
eece52b5 1657Common Var(flag_gcse) Optimization
a7b2e184 1658Perform global common subexpression elimination.
de32c0cb
NB
1659
1660fgcse-lm
eece52b5 1661Common Var(flag_gcse_lm) Init(1) Optimization
a7b2e184 1662Perform enhanced load motion during global common subexpression elimination.
de32c0cb
NB
1663
1664fgcse-sm
eece52b5 1665Common Var(flag_gcse_sm) Init(0) Optimization
a7b2e184 1666Perform store motion after global common subexpression elimination.
de32c0cb 1667
f5f2e3cd 1668fgcse-las
eece52b5 1669Common Var(flag_gcse_las) Init(0) Optimization
f9957958 1670Perform redundant load after store elimination in global common subexpression
a7b2e184 1671elimination.
f9957958
MH
1672
1673fgcse-after-reload
eece52b5 1674Common Var(flag_gcse_after_reload) Optimization
a7b2e184
MS
1675Perform global common subexpression elimination after register allocation has
1676finished.
f5f2e3cd 1677
6592d14b
PMR
1678Enum
1679Name(dwarf_gnat_encodings) Type(int)
1680
1681EnumValue
1682Enum(dwarf_gnat_encodings) String(all) Value(DWARF_GNAT_ENCODINGS_ALL)
1683
1684EnumValue
1685Enum(dwarf_gnat_encodings) String(gdb) Value(DWARF_GNAT_ENCODINGS_GDB)
1686
1687EnumValue
1688Enum(dwarf_gnat_encodings) String(minimal) Value(DWARF_GNAT_ENCODINGS_MINIMAL)
1689
1690fgnat-encodings=
eece52b5 1691Common Enum(dwarf_gnat_encodings) Joined RejectNegative Undocumented Var(gnat_encodings)
04e5c73d 1692-fgnat-encodings=[all|gdb|minimal] Select the balance between GNAT encodings and standard DWARF emitted in the debug information.
6592d14b 1693
d0a58904 1694; This option is not documented yet as its semantics will change.
f8bf9252 1695fgraphite
eece52b5 1696Common Var(flag_graphite) Optimization
a7b2e184 1697Enable in and out of Graphite representation.
f8bf9252 1698
204b560f 1699fgraphite-identity
eece52b5 1700Common Var(flag_graphite_identity) Optimization
a7b2e184 1701Enable Graphite Identity transformation.
204b560f 1702
372a6eb8 1703fhoist-adjacent-loads
eece52b5 1704Common Var(flag_hoist_adjacent_loads) Optimization
372a6eb8 1705Enable hoisting adjacent loads to encourage generating conditional move
a7b2e184 1706instructions.
372a6eb8 1707
1a218fc9 1708fkeep-gc-roots-live
eece52b5 1709Common Undocumented Var(flag_keep_gc_roots_live) Optimization
1a218fc9
ILT
1710; Always keep a pointer to a live memory block
1711
530b4409 1712flarge-source-files
eece52b5 1713Common Var(flag_large_source_files) Init(0)
530b4409 1714Improve GCC's ability to track column numbers in large source files,
1715at the expense of slower compilation.
1716
3cf0e270 1717floop-parallelize-all
eece52b5 1718Common Var(flag_loop_parallelize_all) Optimization
a7b2e184 1719Mark all loops as parallel.
204b560f 1720
f8bf9252 1721floop-strip-mine
d6bb5ccf 1722Common Alias(floop-nest-optimize)
a7b2e184 1723Enable loop nest transforms. Same as -floop-nest-optimize.
f8bf9252
SP
1724
1725floop-interchange
eece52b5 1726Common Var(flag_loop_interchange) Optimization
fbdec14e 1727Enable loop interchange on trees.
f8bf9252
SP
1728
1729floop-block
d6bb5ccf 1730Common Alias(floop-nest-optimize)
a7b2e184 1731Enable loop nest transforms. Same as -floop-nest-optimize.
f8bf9252 1732
20d3465b 1733floop-unroll-and-jam
eece52b5 1734Common Var(flag_unroll_jam) Optimization
dc236397 1735Perform unroll-and-jam on loops.
a7b2e184 1736
0a35513e 1737fgnu-tm
eece52b5 1738Common Var(flag_tm)
a7b2e184 1739Enable support for GNU transactional memory.
0a35513e 1740
da34ade5 1741fgnu-unique
eece52b5 1742Common Var(flag_gnu_unique) Init(1)
a7b2e184 1743Use STB_GNU_UNIQUE if supported by the assembler.
da34ade5 1744
98af4c9f 1745floop-flatten
093193be
MK
1746Common Ignore
1747Does nothing. Preserved for backward compatibility.
98af4c9f 1748
b60cc080 1749floop-nest-optimize
eece52b5 1750Common Var(flag_loop_nest_optimize) Optimization
e357a5e0 1751Enable the loop nest optimizer.
b60cc080 1752
6a78b724 1753fstrict-volatile-bitfields
eece52b5 1754Common Var(flag_strict_volatile_bitfields) Init(-1) Optimization
a7b2e184 1755Force bitfield accesses to match their type width.
6a78b724 1756
f663d9ad 1757fstore-merging
eece52b5 1758Common Var(flag_store_merging) Optimization
f663d9ad
KT
1759Merge adjacent stores.
1760
6ff3a151 1761fguess-branch-probability
eece52b5 1762Common Var(flag_guess_branch_prob) Optimization
a7b2e184 1763Enable guessing of branch probabilities.
6ff3a151 1764
95bb87b2
AO
1765fharden-compares
1766Common Var(flag_harden_compares) Optimization
1767Harden conditionals not used in branches, checking reversed conditions.
1768
1769fharden-conditional-branches
1770Common Var(flag_harden_conditional_branches) Optimization
1771Harden conditional branches by checking reversed conditions.
1772
31b66477
KC
1773; Nonzero means ignore `#ident' directives. 0 means handle them.
1774; Generate position-independent code for executables if possible
1775; On SVR4 targets, it also controls whether or not to emit a
1776; string identifying the compiler.
6ff3a151 1777fident
eece52b5 1778Common Var(flag_no_ident,0)
a7b2e184 1779Process #ident directives.
6ff3a151 1780
de32c0cb 1781fif-conversion
eece52b5 1782Common Var(flag_if_conversion) Optimization
a7b2e184 1783Perform conversion of conditional jumps to branchless equivalents.
de32c0cb
NB
1784
1785fif-conversion2
eece52b5 1786Common Var(flag_if_conversion2) Optimization
a7b2e184 1787Perform conversion of conditional jumps to conditional execution.
de32c0cb 1788
87e2a8fd 1789fstack-reuse=
082908e3 1790Common Joined RejectNegative Enum(stack_reuse_level) Var(flag_stack_reuse) Init(SR_ALL) Optimization
6a825afe 1791-fstack-reuse=[all|named_vars|none] Set stack reuse level for local variables.
87e2a8fd
XDL
1792
1793Enum
1794Name(stack_reuse_level) Type(enum stack_reuse_level) UnknownError(unknown Stack Reuse Level %qs)
1795
1796EnumValue
1797Enum(stack_reuse_level) String(all) Value(SR_ALL)
1798
1799EnumValue
1800Enum(stack_reuse_level) String(named_vars) Value(SR_NAMED_VARS)
1801
1802EnumValue
1803Enum(stack_reuse_level) String(none) Value(SR_NONE)
1804
384a5197 1805ftree-loop-if-convert
eece52b5 1806Common Var(flag_tree_loop_if_convert) Init(-1) Optimization
a7b2e184 1807Convert conditional jumps in innermost loops to branchless equivalents.
384a5197 1808
bd544141 1809ftree-loop-if-convert-stores
bef69eb5
RB
1810Common Ignore
1811Does nothing. Preserved for backward compatibility.
bd544141 1812
31b66477
KC
1813; -finhibit-size-directive inhibits output of .size for ELF.
1814; This is used only for compiling crtstuff.c,
1815; and it may be extended to other effects
1816; needed for crtstuff.c on other systems.
6ff3a151 1817finhibit-size-directive
eece52b5 1818Common Var(flag_inhibit_size_directive)
a7b2e184 1819Do not generate .size directives.
6ff3a151 1820
3e293154 1821findirect-inlining
eece52b5 1822Common Var(flag_indirect_inlining) Optimization
a7b2e184 1823Perform indirect inlining.
3e293154 1824
99ea07f8
RG
1825; General flag to enable inlining. Specifying -fno-inline will disable
1826; all inlining apart from always-inline functions.
de32c0cb 1827finline
eece52b5 1828Common Var(flag_no_inline,0) Init(0) Optimization
a7b2e184 1829Enable inlining of function declared \"inline\", disabling disables all inlining.
de32c0cb 1830
4d4b8cb9 1831finline-small-functions
eece52b5 1832Common Var(flag_inline_small_functions) Optimization
a7b2e184 1833Integrate functions into their callers when code size is known not to grow.
4d4b8cb9 1834
de32c0cb 1835finline-functions
eece52b5 1836Common Var(flag_inline_functions) Optimization
a7b2e184 1837Integrate functions not declared \"inline\" into their callers when profitable.
de32c0cb 1838
355866de 1839finline-functions-called-once
eece52b5 1840Common Var(flag_inline_functions_called_once) Optimization
a7b2e184 1841Integrate functions only required by their single caller.
d63db217 1842
d302c9d6 1843finline-limit-
5de8299c 1844Common RejectNegative Joined Alias(finline-limit=)
d302c9d6
NB
1845
1846finline-limit=
1847Common RejectNegative Joined UInteger
a7b2e184 1848-finline-limit=<number> Limit the size of inlined functions to <number>.
d302c9d6 1849
86951993 1850finline-atomics
eece52b5 1851Common Var(flag_inline_atomics) Init(1) Optimization
86951993
AM
1852Inline __atomic operations when a lock free instruction sequence is available.
1853
5c5f0b65
IT
1854fcf-protection
1855Common RejectNegative Alias(fcf-protection=,full)
1856
1857fcf-protection=
eece52b5 1858Common Joined RejectNegative Enum(cf_protection_level) Var(flag_cf_protection) Init(CF_NONE)
c4c22e83 1859-fcf-protection=[full|branch|return|none|check] Instrument functions with checks to verify jump/call/return control-flow transfer
5c5f0b65
IT
1860instructions have valid targets.
1861
1862Enum
cefc0906 1863Name(cf_protection_level) Type(enum cf_protection_level) UnknownError(unknown Control-Flow Protection Level %qs)
5c5f0b65
IT
1864
1865EnumValue
1866Enum(cf_protection_level) String(full) Value(CF_FULL)
1867
1868EnumValue
1869Enum(cf_protection_level) String(branch) Value(CF_BRANCH)
1870
1871EnumValue
1872Enum(cf_protection_level) String(return) Value(CF_RETURN)
1873
c4c22e83
L
1874EnumValue
1875Enum(cf_protection_level) String(check) Value(CF_CHECK)
1876
5c5f0b65
IT
1877EnumValue
1878Enum(cf_protection_level) String(none) Value(CF_NONE)
1879
6ff3a151 1880finstrument-functions
eece52b5 1881Common Var(flag_instrument_function_entry_exit)
a7b2e184 1882Instrument function entry and exit with profiling calls.
6ff3a151 1883
8d5a7d1f
ILT
1884finstrument-functions-exclude-function-list=
1885Common RejectNegative Joined
b408e010 1886-finstrument-functions-exclude-function-list=name,... Do not instrument listed functions.
8d5a7d1f
ILT
1887
1888finstrument-functions-exclude-file-list=
1889Common RejectNegative Joined
b408e010 1890-finstrument-functions-exclude-file-list=filename,... Do not instrument functions listed in files.
8d5a7d1f 1891
d6e14e8f 1892fipa-cp
eece52b5 1893Common Var(flag_ipa_cp) Optimization
a7b2e184 1894Perform interprocedural constant propagation.
d6e14e8f 1895
5e45130d 1896fipa-cp-clone
eece52b5 1897Common Var(flag_ipa_cp_clone) Optimization
a7b2e184 1898Perform cloning to make Interprocedural constant propagation stronger.
5e45130d 1899
3c99176a 1900fipa-cp-alignment
78117646
MJ
1901Common Ignore
1902Does nothing. Preserved for backward compatibility.
3c99176a 1903
209ca542 1904fipa-bit-cp
eece52b5 1905Common Var(flag_ipa_bit_cp) Optimization
209ca542
PK
1906Perform interprocedural bitwise constant propagation.
1907
d119f34c 1908fipa-modref
eece52b5 1909Common Var(flag_ipa_modref) Optimization
466b907f 1910Perform interprocedural modref analysis.
d119f34c 1911
e65bb9be 1912fipa-profile
eece52b5 1913Common Var(flag_ipa_profile) Init(0) Optimization
a7b2e184 1914Perform interprocedural profile propagation.
ea900239 1915
4cf4d6a3 1916fipa-pta
eece52b5 1917Common Var(flag_ipa_pta) Init(0) Optimization
a7b2e184 1918Perform interprocedural points-to analysis.
4cf4d6a3 1919
e65bb9be 1920fipa-pure-const
eece52b5 1921Common Var(flag_ipa_pure_const) Init(0) Optimization
a7b2e184 1922Discover pure and const functions.
e65bb9be 1923
b84d4347 1924fipa-icf
eece52b5 1925Common Var(flag_ipa_icf) Optimization
a7b2e184 1926Perform Identical Code Folding for functions and read-only variables.
b84d4347
ML
1927
1928fipa-icf-functions
eece52b5 1929Common Var(flag_ipa_icf_functions) Optimization
a7b2e184 1930Perform Identical Code Folding for functions.
b84d4347
ML
1931
1932fipa-icf-variables
eece52b5 1933Common Var(flag_ipa_icf_variables) Optimization
a7b2e184 1934Perform Identical Code Folding for variables.
b84d4347 1935
ea900239 1936fipa-reference
eece52b5 1937Common Var(flag_ipa_reference) Init(0) Optimization
2e14744f
ML
1938Discover read-only and non addressable static variables.
1939
1940fipa-reference-addressable
eece52b5 1941Common Var(flag_ipa_reference_addressable) Init(0) Optimization
2e14744f 1942Discover read-only, write-only and non-addressable static variables.
ea900239 1943
47b840eb 1944fipa-stack-alignment
eece52b5 1945Common Var(flag_ipa_stack_alignment) Init(1) Optimization
47b840eb
ML
1946Reduce stack alignment on call sites if possible.
1947
43d861a5 1948fipa-matrix-reorg
04f92ff4
RG
1949Common Ignore
1950Does nothing. Preserved for backward compatibility.
43d861a5 1951
e1dc98b2 1952fipa-struct-reorg
b8beb4d1
RG
1953Common Ignore
1954Does nothing. Preserved for backward compatibility.
e1dc98b2 1955
8bc5448f 1956fipa-vrp
eece52b5 1957Common Var(flag_ipa_vrp) Optimization
8bc5448f
KV
1958Perform IPA Value Range Propagation.
1959
058e97ec 1960fira-algorithm=
b16650ac 1961Common Joined RejectNegative Enum(ira_algorithm) Var(flag_ira_algorithm) Init(IRA_ALGORITHM_CB) Optimization
6a825afe 1962-fira-algorithm=[CB|priority] Set the used IRA algorithm.
7db7ed3c 1963
16c84809
JH
1964fipa-strict-aliasing
1965Common Var(flag_ipa_strict_aliasing) Init(1) Optimization
1966Assume strict aliasing rules apply across (uninlined) function boundaries.
1967
e6d4b984
JM
1968Enum
1969Name(ira_algorithm) Type(enum ira_algorithm) UnknownError(unknown IRA algorithm %qs)
1970
1971EnumValue
1972Enum(ira_algorithm) String(CB) Value(IRA_ALGORITHM_CB)
1973
1974EnumValue
1975Enum(ira_algorithm) String(priority) Value(IRA_ALGORITHM_PRIORITY)
1976
7db7ed3c 1977fira-region=
6b7a246d 1978Common Joined RejectNegative Enum(ira_region) Var(flag_ira_region) Init(IRA_REGION_ONE) Optimization
6a825afe 1979-fira-region=[one|all|mixed] Set regions for IRA.
058e97ec 1980
e6d4b984
JM
1981Enum
1982Name(ira_region) Type(enum ira_region) UnknownError(unknown IRA region %qs)
1983
1984EnumValue
1985Enum(ira_region) String(one) Value(IRA_REGION_ONE)
1986
1987EnumValue
1988Enum(ira_region) String(all) Value(IRA_REGION_ALL)
1989
1990EnumValue
1991Enum(ira_region) String(mixed) Value(IRA_REGION_MIXED)
1992
b11f0116 1993fira-hoist-pressure
eece52b5 1994Common Var(flag_ira_hoist_pressure) Init(1) Optimization
b11f0116
BC
1995Use IRA based register pressure calculation
1996in RTL hoist optimizations.
1997
1833192f 1998fira-loop-pressure
eece52b5 1999Common Var(flag_ira_loop_pressure) Optimization
1833192f
VM
2000Use IRA based register pressure calculation
2001in RTL loop optimizations.
2002
058e97ec 2003fira-share-save-slots
eece52b5 2004Common Var(flag_ira_share_save_slots) Init(1) Optimization
058e97ec
VM
2005Share slots for saving different hard registers.
2006
2007fira-share-spill-slots
eece52b5 2008Common Var(flag_ira_share_spill_slots) Init(1) Optimization
058e97ec
VM
2009Share stack slots for spilled pseudo-registers.
2010
2011fira-verbose=
5498f011 2012Common RejectNegative Joined UInteger Var(flag_ira_verbose) Init(5)
f94e1d66 2013-fira-verbose=<number> Control IRA's level of diagnostic messages.
058e97ec 2014
8b11a64c 2015fivopts
eece52b5 2016Common Var(flag_ivopts) Init(1) Optimization
a7b2e184 2017Optimize induction variables on trees.
8b11a64c 2018
82c0180d 2019fjump-tables
c662432e 2020Common Var(flag_jump_tables) Init(1) Optimization
a7b2e184 2021Use jump tables for sufficiently large switch statements.
82c0180d 2022
9b11203e
ML
2023fbit-tests
2024Common Var(flag_bit_tests) Init(1) Optimization
2025Use bit tests for sufficiently large switch statements.
2026
de32c0cb 2027fkeep-inline-functions
eece52b5 2028Common Var(flag_keep_inline_functions)
a7b2e184 2029Generate code for functions even if they are fully inlined.
de32c0cb 2030
787da5fd 2031fkeep-static-functions
eece52b5 2032Common Var(flag_keep_static_functions)
a7b2e184 2033Generate code for static functions even if they are never called.
787da5fd 2034
de32c0cb 2035fkeep-static-consts
eece52b5 2036Common Var(flag_keep_static_consts) Init(1)
a7b2e184 2037Emit static const variables even if they are not used.
de32c0cb 2038
6ff3a151 2039fleading-underscore
eece52b5 2040Common Var(flag_leading_underscore) Init(-1)
a7b2e184 2041Give external symbols a leading underscore.
6ff3a151 2042
efa1cdf0 2043floop-optimize
2d2bd949 2044Common Ignore
c0220ea4 2045Does nothing. Preserved for backward compatibility.
efa1cdf0 2046
d9cf932c 2047flra-remat
eece52b5 2048Common Var(flag_lra_remat) Optimization
a7b2e184 2049Do CFG-sensitive rematerialization in LRA.
d9cf932c 2050
d7f09764 2051flto
014d92e1 2052Common
d7f09764
DN
2053Enable link-time optimization.
2054
014d92e1
JH
2055flto=
2056Common RejectNegative Joined Var(flag_lto)
2057Link-time optimization with number of parallel jobs or jobserver.
2058
783dab6b
RB
2059Enum
2060Name(lto_partition_model) Type(enum lto_partition_model) UnknownError(unknown LTO partitioning model %qs)
852e4bd2 2061
783dab6b
RB
2062EnumValue
2063Enum(lto_partition_model) String(none) Value(LTO_PARTITION_NONE)
852e4bd2 2064
783dab6b
RB
2065EnumValue
2066Enum(lto_partition_model) String(one) Value(LTO_PARTITION_ONE)
2067
2068EnumValue
2069Enum(lto_partition_model) String(balanced) Value(LTO_PARTITION_BALANCED)
2070
2071EnumValue
2072Enum(lto_partition_model) String(1to1) Value(LTO_PARTITION_1TO1)
2073
2074EnumValue
2075Enum(lto_partition_model) String(max) Value(LTO_PARTITION_MAX)
c3c445e1 2076
783dab6b
RB
2077flto-partition=
2078Common Joined RejectNegative Enum(lto_partition_model) Var(flag_lto_partition) Init(LTO_PARTITION_BALANCED)
a7b2e184 2079Specify the algorithm to partition symbols and vars at linktime.
014d92e1 2080
d7f09764
DN
2081; The initial value of -1 comes from Z_DEFAULT_COMPRESSION in zlib.h.
2082flto-compression-level=
87741e51
ML
2083Common Joined RejectNegative UInteger Var(flag_lto_compression_level) Init(-1) IntegerRange(0, 19)
2084-flto-compression-level=<number> Use zlib/zstd compression level <number> for IL.
d7f09764 2085
1ee85ee1 2086flto-odr-type-merging
686a56a8
JH
2087Common Ignore
2088Does nothing. Preserved for backward compatibility.
1ee85ee1 2089
d7f09764 2090flto-report
eece52b5 2091Common Var(flag_lto_report) Init(0)
a7b2e184 2092Report various link-time optimization statistics.
d7f09764 2093
057f8f20 2094flto-report-wpa
eece52b5 2095Common Var(flag_lto_report_wpa) Init(0)
a7b2e184 2096Report various link-time optimization statistics for WPA only.
057f8f20 2097
6ff3a151 2098fmath-errno
eece52b5 2099Common Var(flag_errno_math) Init(1) Optimization SetByCombined
a7b2e184 2100Set errno after built-in math functions.
6ff3a151 2101
3a789837
NF
2102fmax-errors=
2103Common Joined RejectNegative UInteger Var(flag_max_errors)
a7b2e184 2104-fmax-errors=<number> Maximum number of errors to report.
3a789837 2105
6ff3a151 2106fmem-report
eece52b5 2107Common Var(mem_report)
a7b2e184 2108Report on permanent memory allocation.
6ff3a151 2109
b3e44629 2110fmem-report-wpa
eece52b5 2111Common Var(mem_report_wpa)
a7b2e184 2112Report on permanent memory allocation in WPA only.
b3e44629 2113
31b66477
KC
2114; This will attempt to merge constant section constants, if 1 only
2115; string constants and constants from constant pool, if 2 also constant
2116; variables.
6ff3a151 2117fmerge-all-constants
eece52b5 2118Common Var(flag_merge_constants,2) Init(1)
a7b2e184 2119Attempt to merge identical constants and constant variables.
6ff3a151
NB
2120
2121fmerge-constants
eece52b5 2122Common Var(flag_merge_constants,1)
a7b2e184 2123Attempt to merge identical constants across compilation units.
6ff3a151 2124
28a08168 2125fmerge-debug-strings
eece52b5 2126Common Var(flag_merge_debug_strings) Init(1)
a7b2e184 2127Attempt to merge identical debug strings across compilation units.
28a08168 2128
de32c0cb
NB
2129fmessage-length=
2130Common RejectNegative Joined UInteger
a7b2e184 2131-fmessage-length=<number> Limit diagnostics to <number> characters per line. 0 suppresses line-wrapping.
de32c0cb 2132
e5626198 2133fmodulo-sched
eece52b5 2134Common Var(flag_modulo_sched) Optimization
a7b2e184 2135Perform SMS based modulo scheduling before the first scheduling pass.
e5626198 2136
517d76fa 2137fmodulo-sched-allow-regmoves
eece52b5 2138Common Var(flag_modulo_sched_allow_regmoves) Optimization
a7b2e184 2139Perform SMS based modulo scheduling with register moves allowed.
517d76fa 2140
5e962776 2141fmove-loop-invariants
eece52b5 2142Common Var(flag_move_loop_invariants) Optimization
a7b2e184 2143Move loop invariant computations out of loops.
5e962776 2144
9f489a57
RB
2145fmove-loop-stores
2146Common Var(flag_move_loop_stores) Optimization
2147Move stores out of loops.
2148
6fb5fa3c 2149fdce
6ae4be32 2150Common Var(flag_dce) Init(1) Optimization
a7b2e184 2151Use the RTL dead code elimination pass.
6fb5fa3c
DB
2152
2153fdse
c0fe6bce 2154Common Var(flag_dse) Init(0) Optimization
a7b2e184 2155Use the RTL dead store elimination pass.
6fb5fa3c 2156
d72372e4 2157freschedule-modulo-scheduled-loops
eece52b5 2158Common Var(flag_resched_modulo_sched) Optimization
a7b2e184 2159Enable/Disable the traditional scheduling in loops that already passed modulo scheduling.
d72372e4 2160
6ff3a151 2161fnon-call-exceptions
eece52b5 2162Common Var(flag_non_call_exceptions) Optimization
a7b2e184 2163Support synchronous non-call exceptions.
6ff3a151 2164
c713ddc0 2165foffload=
33c4e466 2166Driver Joined MissingArgError(targets missing after %qs)
33c4e466
TB
2167
2168foffload-options=
2169Common Driver Joined MissingArgError(options or targets=options missing after %qs)
a3ce7d75 2170-foffload-options=<targets>=<options> Specify options for the offloading targets.
c713ddc0
BS
2171
2172foffload-abi=
2a700fb8 2173Common Joined RejectNegative Enum(offload_abi)
b408e010 2174-foffload-abi=[lp64|ilp32] Set the ABI to use in an offload compiler.
c713ddc0
BS
2175
2176Enum
2177Name(offload_abi) Type(enum offload_abi) UnknownError(unknown offload ABI %qs)
2178
2179EnumValue
2180Enum(offload_abi) String(ilp32) Value(OFFLOAD_ABI_ILP32)
2181
2182EnumValue
2183Enum(offload_abi) String(lp64) Value(OFFLOAD_ABI_LP64)
2184
de32c0cb 2185fomit-frame-pointer
eece52b5 2186Common Var(flag_omit_frame_pointer) Optimization
a7b2e184 2187When possible do not generate stack frames.
de32c0cb 2188
78c60e3d 2189fopt-info
eece52b5 2190Common Var(flag_opt_info) Optimization
a7b2e184 2191Enable all optimization info dumps on stderr.
78c60e3d
SS
2192
2193fopt-info-
2194Common Joined RejectNegative Var(common_deferred_options) Defer
a7b2e184 2195-fopt-info[-<type>=filename] Dump compiler optimization details.
78c60e3d 2196
4a4412b9 2197fsave-optimization-record
eece52b5 2198Common Var(flag_save_optimization_record) Optimization
4a4412b9
DM
2199Write a SRCFILE.opt-record.json file detailing what optimizations were performed.
2200
6ff3a151 2201foptimize-register-move
3b6d1699
VM
2202Common Ignore
2203Does nothing. Preserved for backward compatibility.
6ff3a151 2204
de32c0cb 2205foptimize-sibling-calls
eece52b5 2206Common Var(flag_optimize_sibling_calls) Optimization
a7b2e184 2207Optimize sibling and tail recursive calls.
de32c0cb 2208
3e485f62 2209fpartial-inlining
eece52b5 2210Common Var(flag_partial_inlining) Optimization
a7b2e184 2211Perform partial inlining.
3e485f62 2212
a5573239 2213fpre-ipa-mem-report
eece52b5 2214Common Var(pre_ipa_mem_report)
a7b2e184 2215Report on memory allocation before interprocedural optimization.
a5573239
JH
2216
2217fpost-ipa-mem-report
eece52b5 2218Common Var(post_ipa_mem_report)
a7b2e184 2219Report on memory allocation before interprocedural optimization.
a5573239 2220
6ff3a151 2221fpack-struct
eece52b5 2222Common Var(flag_pack_struct) Optimization
a7b2e184 2223Pack structure members together without holes.
6ff3a151 2224
467cecf3 2225fpack-struct=
c662432e 2226Common RejectNegative Joined UInteger Optimization
a7b2e184 2227-fpack-struct=<number> Set initial maximum structure member alignment.
467cecf3 2228
de32c0cb 2229fpcc-struct-return
eece52b5 2230Common Var(flag_pcc_struct_return,1) Init(DEFAULT_PCC_STRUCT_RETURN)
a7b2e184 2231Return small aggregates in memory, not registers.
de32c0cb
NB
2232
2233fpeel-loops
eece52b5 2234Common Var(flag_peel_loops) Optimization
a7b2e184 2235Perform loop peeling.
de32c0cb
NB
2236
2237fpeephole
eece52b5 2238Common Var(flag_no_peephole,0) Optimization
a7b2e184 2239Enable machine specific peephole optimizations.
de32c0cb 2240
6ff3a151 2241fpeephole2
eece52b5 2242Common Var(flag_peephole2) Optimization
a7b2e184 2243Enable an RTL peephole pass before sched2.
6ff3a151 2244
31b66477 2245fPIC
eece52b5 2246Common Var(flag_pic,2) Negative(fPIE) Init(-1)
a7b2e184 2247Generate position-independent code if possible (large mode).
31b66477
KC
2248
2249fPIE
eece52b5 2250Common Var(flag_pie,2) Negative(fpic) Init(-1)
a7b2e184 2251Generate position-independent code for executables if possible (large mode).
31b66477 2252
6ff3a151 2253fpic
eece52b5 2254Common Var(flag_pic,1) Negative(fpie) Init(-1)
a7b2e184 2255Generate position-independent code if possible (small mode).
6ff3a151
NB
2256
2257fpie
eece52b5 2258Common Var(flag_pie,1) Negative(fPIC) Init(-1)
a7b2e184 2259Generate position-independent code for executables if possible (small mode).
6ff3a151 2260
b91fd3c7 2261fplt
eece52b5 2262Common Var(flag_plt) Init(1) Optimization
a7b2e184 2263Use PLT for PIC calls (-fno-plt: load the address from GOT at call site).
b91fd3c7 2264
68a607d8 2265fplugin=
21bf1558 2266Common Joined RejectNegative Var(common_deferred_options) Defer
a7b2e184 2267Specify a plugin to load.
68a607d8
DN
2268
2269fplugin-arg-
21bf1558 2270Common Joined RejectNegative Var(common_deferred_options) Defer
a7b2e184 2271-fplugin-arg-<name>-<key>[=<value>] Specify argument <key>=<value> for plugin <name>.
68a607d8 2272
bbc8a8dc 2273fpredictive-commoning
eece52b5 2274Common Var(flag_predictive_commoning) Optimization
bbc8a8dc
ZD
2275Run predictive commoning optimization.
2276
de32c0cb 2277fprefetch-loop-arrays
eece52b5 2278Common Var(flag_prefetch_loop_arrays) Init(-1) Optimization
a7b2e184 2279Generate prefetch instructions, if available, for arrays in loops.
de32c0cb 2280
6ff3a151 2281fprofile
eece52b5 2282Common Var(profile_flag)
a7b2e184 2283Enable basic program profiling code.
6ff3a151 2284
676519f7 2285fprofile-abs-path
eece52b5 2286Common Var(profile_abs_path_flag)
676519f7
BE
2287Generate absolute source path names for gcov.
2288
6ff3a151 2289fprofile-arcs
eece52b5 2290Common Var(profile_arc_flag)
a7b2e184 2291Insert arc-based program profiling code.
6ff3a151 2292
2f908293 2293fprofile-dir=
0576d21f 2294Common Joined RejectNegative Var(profile_data_prefix)
2f908293
SP
2295Set the top-level directory for storing the profile data.
2296The default is 'pwd'.
2297
8e37c995
ML
2298fprofile-note=
2299Common Joined RejectNegative Var(profile_note_location)
2300Select the name for storing the profile note file.
2301
52c76998 2302fprofile-correction
eece52b5 2303Common Var(flag_profile_correction)
a7b2e184 2304Enable correction of flow inconsistent profile data input.
52c76998 2305
22063dbc
ML
2306fprofile-update=
2307Common Joined RejectNegative Enum(profile_update) Var(flag_profile_update) Init(PROFILE_UPDATE_SINGLE)
4d209853 2308-fprofile-update=[single|atomic|prefer-atomic] Set the profile update method.
22063dbc 2309
e18240ff
ML
2310fprofile-filter-files=
2311Common Joined RejectNegative Var(flag_profile_filter_files)
8ca43e4e 2312Instrument only functions from files whose name matches any of the regular expressions (separated by semi-colons).
e18240ff
ML
2313
2314fprofile-exclude-files=
2315Common Joined RejectNegative Var(flag_profile_exclude_files)
8ca43e4e 2316Instrument only functions from files whose name does not match any of the regular expressions (separated by semi-colons).
e18240ff 2317
ea0b1252
ML
2318Enum
2319Name(profile_reproducibility) Type(enum profile_reproducibility) UnknownError(unknown profile reproducibility method %qs)
2320
2321EnumValue
2322Enum(profile_reproducibility) String(serial) Value(PROFILE_REPRODUCIBILITY_SERIAL)
2323
2324EnumValue
2325Enum(profile_reproducibility) String(parallel-runs) Value(PROFILE_REPRODUCIBILITY_PARALLEL_RUNS)
2326
2327EnumValue
2328Enum(profile_reproducibility) String(multithreaded) Value(PROFILE_REPRODUCIBILITY_MULTITHREADED)
2329
5089df53 2330fprofile-reproducible=
ea0b1252 2331Common Joined RejectNegative Var(flag_profile_reproducible) Enum(profile_reproducibility) Init(PROFILE_REPRODUCIBILITY_SERIAL)
b408e010 2332-fprofile-reproducible=[serial|parallel-runs|multithreaded] Control level of reproducibility of profile gathered by -fprofile-generate.
ea0b1252 2333
22063dbc
ML
2334Enum
2335Name(profile_update) Type(enum profile_update) UnknownError(unknown profile update method %qs)
2336
2337EnumValue
2338Enum(profile_update) String(single) Value(PROFILE_UPDATE_SINGLE)
2339
2340EnumValue
2341Enum(profile_update) String(atomic) Value(PROFILE_UPDATE_ATOMIC)
2342
4d209853
ML
2343EnumValue
2344Enum(profile_update) String(prefer-atomic) Value(PROFILE_UPDATE_PREFER_ATOMIC)
2345
44b32683
JH
2346fprofile-prefix-path=
2347Common Joined RejectNegative Var(profile_prefix_path)
850322df 2348Remove prefix from absolute path before mangling name for -fprofile-generate= and -fprofile-use=.
44b32683 2349
cde87638
ML
2350fprofile-prefix-map=
2351Common Joined RejectNegative Var(common_deferred_options) Defer
2352-fprofile-prefix-map=<old>=<new> Map one directory name to another in GCOV coverage result.
2353
a8a5f53a
JH
2354fprofile-generate
2355Common
a7b2e184 2356Enable common options for generating profile info for profile feedback directed optimizations.
a8a5f53a 2357
2f908293
SP
2358fprofile-generate=
2359Common Joined RejectNegative
a7b2e184 2360Enable common options for generating profile info for profile feedback directed optimizations, and set -fprofile-dir=.
2f908293 2361
27f7fb79
SH
2362fprofile-info-section
2363Common RejectNegative
2364Register the profile information in the .gcov_info section instead of using a constructor/destructor.
2365
2366fprofile-info-section=
2367Common Joined RejectNegative Var(profile_info_section)
2368Register the profile information in the specified section instead of using a constructor/destructor.
2369
34fbe3f0 2370fprofile-partial-training
eece52b5 2371Common Var(flag_profile_partial_training) Optimization
c86b722b 2372Do not assume that functions never executed during the train run are cold.
34fbe3f0 2373
a8a5f53a 2374fprofile-use
2f908293 2375Common Var(flag_profile_use)
a7b2e184 2376Enable common options for performing profile feedback directed optimizations.
a8a5f53a 2377
2f908293
SP
2378fprofile-use=
2379Common Joined RejectNegative
a7b2e184 2380Enable common options for performing profile feedback directed optimizations, and set -fprofile-dir=.
2f908293 2381
fca9dc00 2382fprofile-values
eece52b5 2383Common Var(flag_profile_values)
a7b2e184 2384Insert code to profile values of expressions.
fca9dc00 2385
37e5402b 2386fprofile-report
eece52b5 2387Common Var(profile_report)
a7b2e184 2388Report on consistency of profile.
37e5402b 2389
9cec31f4 2390fprofile-reorder-functions
eece52b5 2391Common Var(flag_profile_reorder_functions) Optimization
a7b2e184 2392Enable function reordering that improves code placement.
9cec31f4 2393
417ca011 2394fpatchable-function-entry=
0d701e3e 2395Common Var(flag_patchable_function_entry) Joined Optimization
417ca011
TD
2396Insert NOP instructions at each function entry.
2397
de32c0cb 2398frandom-seed
299404a1 2399Common Var(common_deferred_options) Defer
de32c0cb
NB
2400
2401frandom-seed=
299404a1 2402Common Joined RejectNegative Var(common_deferred_options) Defer
4bfede85 2403-frandom-seed=<string> Make compile reproducible using <string>.
de32c0cb 2404
e0d9d0dd
NC
2405; This switch causes the command line that was used to create an
2406; object file to be recorded into the object file. The exact format
2407; of this recording is target and binary file format dependent.
2408; It is related to the -fverbose-asm switch, but that switch only
2409; records information in the assembler output file as comments, so
2410; they never reach the object file.
2411frecord-gcc-switches
eece52b5 2412Common Var(flag_record_gcc_switches)
e0d9d0dd
NC
2413Record gcc command line switches in the object file.
2414
de32c0cb 2415freg-struct-return
eece52b5 2416Common Var(flag_pcc_struct_return,0) Optimization
a7b2e184 2417Return small aggregates in registers.
de32c0cb 2418
6ff3a151 2419fregmove
3b6d1699
VM
2420Common Ignore
2421Does nothing. Preserved for backward compatibility.
6ff3a151 2422
f522930c 2423flifetime-dse
eece52b5 2424Common Var(flag_lifetime_dse,2) Init(2) Optimization
f522930c
JM
2425Tell DSE that the storage for a C++ object is dead when the constructor
2426starts and when the destructor finishes.
2427
a021961c 2428flifetime-dse=
63010089 2429Common Joined RejectNegative UInteger Var(flag_lifetime_dse) Optimization IntegerRange(0, 2)
a021961c 2430
6fd6a2ff
QZ
2431flive-patching
2432Common RejectNegative Alias(flive-patching=,inline-clone) Optimization
2433
2434flive-patching=
eece52b5 2435Common Joined RejectNegative Enum(live_patching_level) Var(flag_live_patching) Init(LIVE_PATCHING_NONE) Optimization
6fd6a2ff
QZ
2436-flive-patching=[inline-only-static|inline-clone] Control IPA
2437optimizations to provide a safe compilation for live-patching. At the same
2438time, provides multiple-level control on the enabled IPA optimizations.
2439
2440Enum
2441Name(live_patching_level) Type(enum live_patching_level) UnknownError(unknown Live-Patching Level %qs)
2442
2443EnumValue
2444Enum(live_patching_level) String(inline-only-static) Value(LIVE_PATCHING_INLINE_ONLY_STATIC)
2445
2446EnumValue
2447Enum(live_patching_level) String(inline-clone) Value(LIVE_PATCHING_INLINE_CLONE)
2448
6343b6bf 2449fallocation-dce
eece52b5 2450Common Var(flag_allocation_dce) Init(1) Optimization
6343b6bf
ML
2451Tell DCE to remove unused C++ allocations.
2452
f20f2613 2453flive-range-shrinkage
eece52b5 2454Common Var(flag_live_range_shrinkage) Init(0) Optimization
a7b2e184 2455Relief of register pressure through live range shrinkage.
f20f2613 2456
6ff3a151 2457frename-registers
e415bc4c 2458Common Var(flag_rename_registers) Optimization EnabledBy(funroll-loops)
a7b2e184 2459Perform a register renaming optimization pass.
6ff3a151 2460
b16abbcb 2461fschedule-fusion
eece52b5 2462Common Var(flag_schedule_fusion) Init(2) Optimization
a7b2e184 2463Perform a target dependent instruction fusion optimization pass.
b16abbcb 2464
6ff3a151 2465freorder-blocks
eece52b5 2466Common Var(flag_reorder_blocks) Optimization
a7b2e184 2467Reorder basic blocks to improve code placement.
6ff3a151 2468
59faab7c
SB
2469freorder-blocks-algorithm=
2470Common Joined RejectNegative Enum(reorder_blocks_algorithm) Var(flag_reorder_blocks_algorithm) Init(REORDER_BLOCKS_ALGORITHM_SIMPLE) Optimization
6a825afe 2471-freorder-blocks-algorithm=[simple|stc] Set the used basic block reordering algorithm.
59faab7c
SB
2472
2473Enum
2474Name(reorder_blocks_algorithm) Type(enum reorder_blocks_algorithm) UnknownError(unknown basic block reordering algorithm %qs)
2475
2476EnumValue
2477Enum(reorder_blocks_algorithm) String(simple) Value(REORDER_BLOCKS_ALGORITHM_SIMPLE)
2478
2479EnumValue
2480Enum(reorder_blocks_algorithm) String(stc) Value(REORDER_BLOCKS_ALGORITHM_STC)
2481
750054a2 2482freorder-blocks-and-partition
eece52b5 2483Common Var(flag_reorder_blocks_and_partition) Optimization
a7b2e184 2484Reorder basic blocks and partition into hot and cold sections.
750054a2 2485
6ff3a151 2486freorder-functions
eece52b5 2487Common Var(flag_reorder_functions) Optimization
a7b2e184 2488Reorder functions to improve code placement.
6ff3a151 2489
de32c0cb 2490frerun-cse-after-loop
eece52b5 2491Common Var(flag_rerun_cse_after_loop) Optimization
a7b2e184 2492Add a common subexpression elimination pass after loop optimizations.
de32c0cb 2493
efa1cdf0 2494frerun-loop-opt
2d2bd949 2495Common Ignore
c0220ea4 2496Does nothing. Preserved for backward compatibility.
efa1cdf0 2497
039c3d42 2498frounding-math
eece52b5 2499Common Var(flag_rounding_math) Optimization SetByCombined
a7b2e184 2500Disable optimizations that assume default FP rounding behavior.
039c3d42 2501
6ff3a151 2502fsched-interblock
eece52b5 2503Common Var(flag_schedule_interblock) Init(1) Optimization
a7b2e184 2504Enable scheduling across basic blocks.
6ff3a151 2505
ce18efcb 2506fsched-pressure
eece52b5 2507Common Var(flag_sched_pressure) Init(0) Optimization
a7b2e184 2508Enable register pressure sensitive insn scheduling.
ce18efcb 2509
6ff3a151 2510fsched-spec
eece52b5 2511Common Var(flag_schedule_speculative) Init(1) Optimization
a7b2e184 2512Allow speculative motion of non-loads.
6ff3a151
NB
2513
2514fsched-spec-load
eece52b5 2515Common Var(flag_schedule_speculative_load) Optimization
a7b2e184 2516Allow speculative motion of some loads.
6ff3a151
NB
2517
2518fsched-spec-load-dangerous
eece52b5 2519Common Var(flag_schedule_speculative_load_dangerous) Optimization
a7b2e184 2520Allow speculative motion of more loads.
6ff3a151 2521
de32c0cb 2522fsched-verbose=
4111f1c9 2523Common RejectNegative Joined UInteger Var(sched_verbose_param) Init(1)
a7b2e184 2524-fsched-verbose=<number> Set the verbosity level of the scheduler.
de32c0cb 2525
6ff3a151 2526fsched2-use-superblocks
eece52b5 2527Common Var(flag_sched2_use_superblocks) Optimization
a7b2e184 2528If scheduling post reload, do superblock scheduling.
6ff3a151
NB
2529
2530fsched2-use-traces
2d2bd949 2531Common Ignore
57257f0d 2532Does nothing. Preserved for backward compatibility.
6ff3a151 2533
de32c0cb 2534fschedule-insns
eece52b5 2535Common Var(flag_schedule_insns) Optimization
a7b2e184 2536Reschedule instructions before register allocation.
de32c0cb
NB
2537
2538fschedule-insns2
eece52b5 2539Common Var(flag_schedule_insns_after_reload) Optimization
a7b2e184 2540Reschedule instructions after register allocation.
de32c0cb 2541
e855c69d
AB
2542; This flag should be on when a target implements non-trivial
2543; scheduling hooks, maybe saving some information for its own sake.
a7b2e184 2544; On IA64, for example, this is used for correct bundling.
e855c69d 2545fselective-scheduling
eece52b5 2546Common Var(flag_selective_scheduling) Optimization
a7b2e184 2547Schedule instructions using selective scheduling algorithm.
e855c69d
AB
2548
2549fselective-scheduling2
eece52b5 2550Common Var(flag_selective_scheduling2) Optimization
a7b2e184 2551Run selective scheduling after reload.
e855c69d 2552
ecfc21ff
DM
2553fself-test=
2554Common Undocumented Joined Var(flag_self_test)
2555Run self-tests, using the given path to locate test files.
d9b950dd 2556
e855c69d 2557fsel-sched-pipelining
eece52b5 2558Common Var(flag_sel_sched_pipelining) Init(0) Optimization
a7b2e184 2559Perform software pipelining of inner loops during selective scheduling.
e855c69d
AB
2560
2561fsel-sched-pipelining-outer-loops
eece52b5 2562Common Var(flag_sel_sched_pipelining_outer_loops) Init(0) Optimization
a7b2e184 2563Perform software pipelining of outer loops during selective scheduling.
e855c69d
AB
2564
2565fsel-sched-reschedule-pipelined
eece52b5 2566Common Var(flag_sel_sched_reschedule_pipelined) Init(0) Optimization
a7b2e184 2567Reschedule pipelined regions without pipelining.
e855c69d 2568
e288a46c 2569fsemantic-interposition
75ac95f6 2570Common Var(flag_semantic_interposition) Init(1) Optimization
a7b2e184 2571Allow interposing function (or variables) by ones with different semantics (or initializer) respectively by dynamic linker.
e288a46c 2572
31b66477
KC
2573; sched_stalled_insns means that insns can be moved prematurely from the queue
2574; of stalled insns into the ready list.
569fa502 2575fsched-stalled-insns
eece52b5 2576Common Var(flag_sched_stalled_insns) Optimization UInteger
a7b2e184 2577Allow premature scheduling of queued insns.
569fa502
DN
2578
2579fsched-stalled-insns=
b16650ac 2580Common RejectNegative Joined UInteger Optimization
a7b2e184 2581-fsched-stalled-insns=<number> Set number of queued insns that can be prematurely scheduled.
569fa502 2582
31b66477
KC
2583; sched_stalled_insns_dep controls how many recently scheduled cycles will
2584; be examined for a dependency on a stalled insn that is candidate for
2585; premature removal from the queue of stalled insns into the ready list (has
2586; an effect only if the flag 'sched_stalled_insns' is set).
569fa502 2587fsched-stalled-insns-dep
eece52b5 2588Common Var(flag_sched_stalled_insns_dep,1) Init(1) Optimization UInteger
a7b2e184 2589Set dependence distance checking in premature scheduling of queued insns.
569fa502
DN
2590
2591fsched-stalled-insns-dep=
b16650ac 2592Common RejectNegative Joined UInteger Optimization
a7b2e184 2593-fsched-stalled-insns-dep=<number> Set dependence distance checking in premature scheduling of queued insns.
569fa502 2594
ee4764a8 2595fsched-group-heuristic
eece52b5 2596Common Var(flag_sched_group_heuristic) Init(1) Optimization
a7b2e184 2597Enable the group heuristic in the scheduler.
ee4764a8
GS
2598
2599fsched-critical-path-heuristic
eece52b5 2600Common Var(flag_sched_critical_path_heuristic) Init(1) Optimization
a7b2e184 2601Enable the critical path heuristic in the scheduler.
ee4764a8
GS
2602
2603fsched-spec-insn-heuristic
eece52b5 2604Common Var(flag_sched_spec_insn_heuristic) Init(1) Optimization
a7b2e184 2605Enable the speculative instruction heuristic in the scheduler.
ee4764a8 2606
ee4764a8 2607fsched-rank-heuristic
eece52b5 2608Common Var(flag_sched_rank_heuristic) Init(1) Optimization
a7b2e184 2609Enable the rank heuristic in the scheduler.
ee4764a8
GS
2610
2611fsched-last-insn-heuristic
eece52b5 2612Common Var(flag_sched_last_insn_heuristic) Init(1) Optimization
a7b2e184 2613Enable the last instruction heuristic in the scheduler.
ee4764a8
GS
2614
2615fsched-dep-count-heuristic
eece52b5 2616Common Var(flag_sched_dep_count_heuristic) Init(1) Optimization
a7b2e184 2617Enable the dependent count heuristic in the scheduler.
ee4764a8 2618
aacd3885 2619fsection-anchors
eece52b5 2620Common Var(flag_section_anchors) Optimization
a7b2e184 2621Access data in the same section from shared anchor points.
aacd3885 2622
8cd37d0b 2623fsee
2d2bd949 2624Common Ignore
8393a9c8 2625Does nothing. Preserved for backward compatibility.
8cd37d0b 2626
87a0ebfd 2627fzee
26cd9add
EI
2628Common Ignore
2629Does nothing. Preserved for backward compatibility.
2630
2631free
eece52b5 2632Common Var(flag_ree) Init(0) Optimization
26cd9add 2633Turn on Redundant Extensions Elimination pass.
87a0ebfd 2634
8abb6b22 2635fshow-column
eece52b5 2636Common Var(flag_show_column) Init(1)
a7b2e184 2637Show column numbers in diagnostics, when available. Default on.
8abb6b22 2638
484db665 2639fshrink-wrap
eece52b5 2640Common Var(flag_shrink_wrap) Optimization
484db665
BS
2641Emit function prologues only before parts of the function that need it,
2642rather than at the top of the function.
2643
20a6ece0 2644fshrink-wrap-separate
eece52b5 2645Common Var(flag_shrink_wrap_separate) Init(1) Optimization
20a6ece0
SB
2646Shrink-wrap parts of the prologue and epilogue separately.
2647
6ff3a151 2648fsignaling-nans
eece52b5 2649Common Var(flag_signaling_nans) Optimization SetByCombined
a7b2e184 2650Disable optimizations observable by IEEE signaling NaNs.
6ff3a151 2651
db02da79 2652fsigned-zeros
eece52b5 2653Common Var(flag_signed_zeros) Init(1) Optimization SetByCombined
a7b2e184 2654Disable floating point optimizations that ignore the IEEE signedness of zero.
db02da79 2655
6ff3a151 2656fsingle-precision-constant
eece52b5 2657Common Var(flag_single_precision_constant) Optimization
a7b2e184 2658Convert floating point constants to single precision constants.
6ff3a151 2659
113d659a 2660fsplit-ivs-in-unroller
eece52b5 2661Common Var(flag_split_ivs_in_unroller) Init(1) Optimization
a7b2e184 2662Split lifetimes of induction variables when loops are unrolled.
113d659a 2663
7458026b 2664fsplit-stack
eece52b5 2665Common Var(flag_split_stack) Init(-1)
a7b2e184 2666Generate discontiguous stack frames.
7458026b 2667
e53a16e7 2668fsplit-wide-types
eece52b5 2669Common Var(flag_split_wide_types) Optimization
a7b2e184 2670Split wide types into independent registers.
e53a16e7 2671
b18081df 2672fsplit-wide-types-early
eece52b5 2673Common Var(flag_split_wide_types_early) Optimization
b18081df
SB
2674Split wide types into independent registers earlier.
2675
6a75d560 2676fssa-backprop
eece52b5 2677Common Var(flag_ssa_backprop) Init(1) Optimization
6a75d560
RS
2678Enable backward propagation of use properties at the SSA level.
2679
68f6df73 2680fssa-phiopt
eece52b5 2681Common Var(flag_ssa_phiopt) Optimization
a7b2e184 2682Optimize conditional patterns using SSA PHI nodes.
68f6df73 2683
98ce9490 2684fstdarg-opt
eece52b5 2685Common Var(flag_stdarg_opt) Init(1) Optimization
a7b2e184 2686Optimize amount of stdarg registers saved to stack at start of function.
98ce9490 2687
f37a4f14 2688fvariable-expansion-in-unroller
eece52b5 2689Common Var(flag_variable_expansion_in_unroller) Optimization
a7b2e184 2690Apply variable expansion when loops are unrolled.
f37a4f14 2691
b38f3813 2692fstack-check=
eece52b5 2693Common RejectNegative Joined Optimization
a7b2e184 2694-fstack-check=[no|generic|specific] Insert stack checking code into the program.
b38f3813 2695
6ff3a151 2696fstack-check
5de8299c 2697Common Alias(fstack-check=, specific, no)
a7b2e184 2698Insert stack checking code into the program. Same as -fstack-check=specific.
6ff3a151 2699
ee8f15c6 2700fstack-clash-protection
eece52b5 2701Common Var(flag_stack_clash_protection) Optimization
ee8f15c6
JL
2702Insert code to probe each page of stack space as it is allocated to protect
2703from stack-clash style attacks.
2704
de32c0cb 2705fstack-limit
21bf1558 2706Common Var(common_deferred_options) Defer
de32c0cb 2707
058de654 2708fstack-limit-register=
21bf1558 2709Common RejectNegative Joined Var(common_deferred_options) Defer
a7b2e184 2710-fstack-limit-register=<register> Trap if the stack goes past <register>.
058de654
NB
2711
2712fstack-limit-symbol=
21bf1558 2713Common RejectNegative Joined Var(common_deferred_options) Defer
a7b2e184 2714-fstack-limit-symbol=<name> Trap if the stack goes past symbol <name>.
058de654 2715
7d69de61 2716fstack-protector
eece52b5 2717Common Var(flag_stack_protect, 1) Init(-1) Optimization
a7b2e184 2718Use propolice as a stack protection method.
7d69de61
RH
2719
2720fstack-protector-all
eece52b5 2721Common RejectNegative Var(flag_stack_protect, 2) Init(-1) Optimization
a7b2e184 2722Use a stack protection method for every function.
7d69de61 2723
f6bc1c4a 2724fstack-protector-strong
eece52b5 2725Common RejectNegative Var(flag_stack_protect, 3) Init(-1) Optimization
a7b2e184 2726Use a smart stack protection method for certain functions.
f6bc1c4a 2727
5434dc07 2728fstack-protector-explicit
eece52b5 2729Common RejectNegative Var(flag_stack_protect, 4) Optimization
a7b2e184 2730Use stack protection method only for functions with the stack_protect attribute.
5434dc07 2731
d3c12306
EB
2732fstack-usage
2733Common RejectNegative Var(flag_stack_usage)
a7b2e184 2734Output stack usage information on a per-function basis.
d3c12306 2735
de32c0cb 2736fstrength-reduce
2d2bd949 2737Common Ignore
c0220ea4 2738Does nothing. Preserved for backward compatibility.
de32c0cb 2739
31b66477
KC
2740; Nonzero if we should do (language-dependent) alias analysis.
2741; Typically, this analysis will assume that expressions of certain
2742; types do not alias expressions of certain other types. Only used
2743; if alias analysis (in general) is enabled.
6ff3a151 2744fstrict-aliasing
eece52b5 2745Common Var(flag_strict_aliasing) Optimization
a7b2e184 2746Assume strict aliasing rules apply.
6ff3a151 2747
eeef0e45 2748fstrict-overflow
eece52b5 2749Common
3fccbb9e 2750Treat signed overflow as undefined. Negated as -fwrapv -fwrapv-pointer.
eeef0e45 2751
e8053cf5 2752fsync-libcalls
eece52b5 2753Common Var(flag_sync_libcalls) Init(1)
a7b2e184 2754Implement __atomic operations via libcalls to legacy __sync functions.
e8053cf5 2755
de32c0cb 2756fsyntax-only
eece52b5 2757Common Var(flag_syntax_only)
a7b2e184 2758Check for syntax errors, then stop.
de32c0cb 2759
6ff3a151 2760ftest-coverage
eece52b5 2761Common Var(flag_test_coverage)
a7b2e184 2762Create data files needed by \"gcov\".
6ff3a151 2763
de32c0cb 2764fthread-jumps
eece52b5 2765Common Var(flag_thread_jumps) Optimization
a7b2e184 2766Perform jump threading optimizations.
de32c0cb 2767
6ff3a151 2768ftime-report
eece52b5 2769Common Var(time_report)
a7b2e184 2770Report the time taken by each compiler pass.
6ff3a151 2771
8df06bd0 2772ftime-report-details
eece52b5 2773Common Var(time_report_details)
8df06bd0
RB
2774Record times taken by sub-phases separately.
2775
058de654 2776ftls-model=
e6d4b984 2777Common Joined RejectNegative Enum(tls_model) Var(flag_tls_default) Init(TLS_MODEL_GLOBAL_DYNAMIC)
a7b2e184 2778-ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec] Set the default thread-local storage code generation model.
058de654 2779
e6d4b984
JM
2780Enum
2781Name(tls_model) Type(enum tls_model) UnknownError(unknown TLS model %qs)
2782
2783EnumValue
2784Enum(tls_model) String(global-dynamic) Value(TLS_MODEL_GLOBAL_DYNAMIC)
2785
2786EnumValue
2787Enum(tls_model) String(local-dynamic) Value(TLS_MODEL_LOCAL_DYNAMIC)
2788
2789EnumValue
2790Enum(tls_model) String(initial-exec) Value(TLS_MODEL_INITIAL_EXEC)
2791
2792EnumValue
2793Enum(tls_model) String(local-exec) Value(TLS_MODEL_LOCAL_EXEC)
2794
474eccc6 2795ftoplevel-reorder
eece52b5 2796Common Var(flag_toplevel_reorder) Init(2) Optimization
a7b2e184 2797Reorder top level functions, variables, and asms.
474eccc6 2798
de32c0cb 2799ftracer
eece52b5 2800Common Var(flag_tracer) Optimization
a7b2e184 2801Perform superblock formation via tail duplication.
de32c0cb 2802
4c640e26 2803ftrampolines
eece52b5 2804Common Var(flag_trampolines) Init(0)
4c640e26
EB
2805For targets that normally need trampolines for nested functions, always
2806generate them instead of using descriptors.
2807
31b66477
KC
2808; Zero means that floating-point math operations cannot generate a
2809; (user-visible) trap. This is the case, for example, in nonstop
2810; IEEE 754 arithmetic.
6ff3a151 2811ftrapping-math
eece52b5 2812Common Var(flag_trapping_math) Init(1) Optimization SetByCombined
a7b2e184 2813Assume floating-point operations can trap.
6ff3a151
NB
2814
2815ftrapv
eece52b5 2816Common Var(flag_trapv) Optimization
a7b2e184 2817Trap for signed overflow in addition, subtraction and multiplication.
6ff3a151 2818
6de9cd9a 2819ftree-ccp
eece52b5 2820Common Var(flag_tree_ccp) Optimization
a7b2e184 2821Enable SSA-CCP optimization on trees.
6de9cd9a 2822
0b4b14ac 2823ftree-bit-ccp
eece52b5 2824Common Var(flag_tree_bit_ccp) Optimization
a7b2e184 2825Enable SSA-BIT-CCP optimization on trees.
0b4b14ac 2826
0bca51f0 2827ftree-store-ccp
2d2bd949 2828Common Ignore
dce2b2f6 2829Does nothing. Preserved for backward compatibility.
0bca51f0 2830
6de9cd9a 2831ftree-ch
eece52b5 2832Common Var(flag_tree_ch) Optimization
a7b2e184 2833Enable loop header copying on trees.
6de9cd9a 2834
21d01365 2835ftree-coalesce-inlined-vars
1f9ceff1
AO
2836Common Ignore RejectNegative
2837Does nothing. Preserved for backward compatibility.
21d01365
AO
2838
2839ftree-coalesce-vars
eece52b5 2840Common Var(flag_tree_coalesce_vars) Optimization
a7b2e184 2841Enable SSA coalescing of user variables.
21d01365 2842
6de9cd9a 2843ftree-copyrename
1f9ceff1
AO
2844Common Ignore
2845Does nothing. Preserved for backward compatibility.
6de9cd9a 2846
0bca51f0 2847ftree-copy-prop
eece52b5 2848Common Var(flag_tree_copy_prop) Optimization
a7b2e184 2849Enable copy propagation on trees.
0bca51f0
DN
2850
2851ftree-store-copy-prop
2d2bd949 2852Common Ignore
e9033855 2853Does nothing. Preserved for backward compatibility.
0bca51f0 2854
a5828d1e 2855ftree-cselim
177b800f 2856Common Var(flag_tree_cselim) Optimization
a7b2e184 2857Transform condition stores into unconditional ones.
a5828d1e 2858
b6e99746 2859ftree-switch-conversion
eece52b5 2860Common Var(flag_tree_switch_conversion) Optimization
b6e99746
MJ
2861Perform conversions of switch initializations.
2862
6de9cd9a 2863ftree-dce
eece52b5 2864Common Var(flag_tree_dce) Optimization
a7b2e184 2865Enable SSA dead code elimination optimization on trees.
6de9cd9a
DN
2866
2867ftree-dominator-opts
eece52b5 2868Common Var(flag_tree_dom) Optimization
a7b2e184 2869Enable dominator optimizations.
6de9cd9a 2870
c9e93168 2871ftree-tail-merge
eece52b5 2872Common Var(flag_tree_tail_merge) Optimization
a7b2e184 2873Enable tail merging on trees.
c9e93168 2874
6de9cd9a 2875ftree-dse
eece52b5 2876Common Var(flag_tree_dse) Optimization
a7b2e184 2877Enable dead store elimination.
6de9cd9a 2878
248fc9f3 2879ftree-forwprop
eece52b5 2880Common Var(flag_tree_forwprop) Init(1) Optimization
a7b2e184 2881Enable forward propagation on trees.
248fc9f3 2882
ff2ad0f7 2883ftree-fre
eece52b5 2884Common Var(flag_tree_fre) Optimization
a7b2e184 2885Enable Full Redundancy Elimination (FRE) on trees.
ff2ad0f7 2886
8b57bfeb 2887foptimize-strlen
eece52b5 2888Common Var(flag_optimize_strlen) Optimization
a7b2e184 2889Enable string length optimizations on trees.
8b57bfeb 2890
ae93744d 2891fisolate-erroneous-paths-dereference
eece52b5 2892Common Var(flag_isolate_erroneous_paths_dereference) Optimization
408e8aa4
SL
2893Detect paths that trigger erroneous or undefined behavior due to
2894dereferencing a null pointer. Isolate those paths from the main control
2895flow and turn the statement with erroneous or undefined behavior into a trap.
ae93744d
JL
2896
2897fisolate-erroneous-paths-attribute
eece52b5 2898Common Var(flag_isolate_erroneous_paths_attribute) Optimization
51956afe 2899Detect paths that trigger erroneous or undefined behavior due to a null value
408e8aa4 2900being used in a way forbidden by a returns_nonnull or nonnull
ae93744d 2901attribute. Isolate those paths from the main control flow and turn the
a7b2e184 2902statement with erroneous or undefined behavior into a trap.
8fdc414d 2903
dea61d92 2904ftree-loop-distribution
eece52b5 2905Common Var(flag_tree_loop_distribution) Optimization
a7b2e184 2906Enable loop distribution on trees.
dea61d92 2907
20769d5e 2908ftree-loop-distribute-patterns
eece52b5 2909Common Var(flag_tree_loop_distribute_patterns) Optimization
a7b2e184 2910Enable loop distribution for patterns transformed into a library call.
20769d5e 2911
1b08d87d 2912ftree-loop-im
eece52b5 2913Common Var(flag_tree_loop_im) Init(1) Optimization
a7b2e184 2914Enable loop invariant motion on trees.
a7e5372d 2915
599eabdb 2916ftree-loop-linear
d6bb5ccf 2917Common Alias(floop-nest-optimize)
a7b2e184 2918Enable loop nest transforms. Same as -floop-nest-optimize.
599eabdb 2919
1b08d87d 2920ftree-loop-ivcanon
eece52b5 2921Common Var(flag_tree_loop_ivcanon) Init(1) Optimization
a7b2e184 2922Create canonical induction variables in loops.
1b08d87d 2923
c66b6c66 2924ftree-loop-optimize
eece52b5 2925Common Var(flag_tree_loop_optimize) Init(1) Optimization
a7b2e184 2926Enable loop optimizations on tree level.
c66b6c66 2927
5f40b3cb 2928ftree-parallelize-loops=
eece52b5 2929Common Joined RejectNegative UInteger Var(flag_tree_parallelize_loops) Init(1) Optimization
9453ba0a 2930-ftree-parallelize-loops=<number> Enable automatic parallelization of loops.
5f40b3cb 2931
248fc9f3 2932ftree-phiprop
eece52b5 2933Common Var(flag_tree_phiprop) Init(1) Optimization
248fc9f3
RG
2934Enable hoisting loads from conditional pointers.
2935
6de9cd9a 2936ftree-pre
eece52b5 2937Common Var(flag_tree_pre) Optimization
a7b2e184 2938Enable SSA-PRE optimization on trees.
6de9cd9a 2939
fa06ad0d 2940ftree-partial-pre
eece52b5 2941Common Var(flag_tree_partial_pre) Optimization
a7b2e184 2942In SSA-PRE optimization on trees, enable partial-partial redundancy elimination.
fa06ad0d 2943
248fc9f3 2944ftree-pta
eece52b5 2945Common Var(flag_tree_pta) Optimization
248fc9f3
RG
2946Perform function-local points-to analysis on trees.
2947
13c59415 2948ftree-reassoc
eece52b5 2949Common Var(flag_tree_reassoc) Init(1) Optimization
a7b2e184 2950Enable reassociation on tree level.
13c59415 2951
c75ab022 2952ftree-salias
2d2bd949 2953Common Ignore
1353232d 2954Does nothing. Preserved for backward compatibility.
c75ab022 2955
fa555252 2956ftree-sink
eece52b5 2957Common Var(flag_tree_sink) Optimization
a7b2e184 2958Enable SSA code sinking on trees.
fa555252 2959
75cfe445 2960ftree-slsr
eece52b5 2961Common Var(flag_tree_slsr) Optimization
a7b2e184 2962Perform straight-line strength reduction.
75cfe445 2963
6de9cd9a 2964ftree-sra
eece52b5 2965Common Var(flag_tree_sra) Optimization
a7b2e184 2966Perform scalar replacement of aggregates.
6de9cd9a
DN
2967
2968ftree-ter
eece52b5 2969Common Var(flag_tree_ter) Optimization
a7b2e184 2970Replace temporary expressions in the SSA->normal pass.
6de9cd9a 2971
c662432e 2972ftree-lrs
eece52b5 2973Common Var(flag_tree_live_range_split) Optimization
a7b2e184 2974Perform live range splitting during the SSA->normal pass.
c662432e 2975
0bca51f0 2976ftree-vrp
eece52b5 2977Common Var(flag_tree_vrp) Init(0) Optimization
a7b2e184 2978Perform Value Range Propagation on trees.
0bca51f0 2979
8fe17e23 2980fsplit-paths
eece52b5 2981Common Var(flag_split_paths) Init(0) Optimization
8fe17e23
AA
2982Split paths leading to loop backedges.
2983
71017a7b
AL
2984funconstrained-commons
2985Common Var(flag_unconstrained_commons) Optimization
2986Assume common declarations may be overridden with ones with a larger
2987trailing array.
2988
de32c0cb 2989funit-at-a-time
eece52b5 2990Common Var(flag_unit_at_a_time) Init(1)
a7b2e184 2991Compile whole compilation unit at a time.
de32c0cb
NB
2992
2993funroll-loops
e415bc4c 2994Common Var(flag_unroll_loops) Optimization EnabledBy(funroll-all-loops)
a7b2e184 2995Perform loop unrolling when iteration count is known.
de32c0cb
NB
2996
2997funroll-all-loops
eece52b5 2998Common Var(flag_unroll_all_loops) Optimization
a7b2e184 2999Perform loop unrolling for all loops.
de32c0cb 3000
71489d8e 3001funroll-completely-grow-size
fe9458c2 3002Undocumented Var(flag_cunroll_grow_size) Optimization
71489d8e 3003; Internal undocumented flag, allow size growth during complete unrolling
3004
f9cc1a70
PB
3005; Nonzero means that loop optimizer may assume that the induction variables
3006; that control loops do not overflow and that the loops with nontrivial
3007; exit condition are not infinite
3008funsafe-loop-optimizations
78f63b79
BC
3009Common Ignore
3010Does nothing. Preserved for backward compatibility.
f9cc1a70 3011
a1a82611 3012fassociative-math
eece52b5 3013Common Var(flag_associative_math) SetByCombined Optimization
a1a82611
RE
3014Allow optimization for floating-point arithmetic which may change the
3015result of the operation due to rounding.
3016
3017freciprocal-math
eece52b5 3018Common Var(flag_reciprocal_math) SetByCombined Optimization
a1a82611
RE
3019Same as -fassociative-math for expressions which include division.
3020
31b66477
KC
3021; Nonzero means that unsafe floating-point math optimizations are allowed
3022; for the sake of speed. IEEE compliance is not guaranteed, and operations
3023; are allowed to assume that their arguments and results are "normal"
3024; (e.g., nonnegative for SQRT).
6ff3a151 3025funsafe-math-optimizations
eece52b5 3026Common Var(flag_unsafe_math_optimizations) Optimization SetByCombined
a7b2e184 3027Allow math optimizations that may violate IEEE or ISO standards.
6ff3a151 3028
de32c0cb 3029funswitch-loops
eece52b5 3030Common Var(flag_unswitch_loops) Optimization
a7b2e184 3031Perform loop unswitching.
de32c0cb 3032
28df8730 3033fsplit-loops
eece52b5 3034Common Var(flag_split_loops) Optimization
28df8730
MM
3035Perform loop splitting.
3036
13e08dc9 3037fversion-loops-for-strides
eece52b5 3038Common Var(flag_version_loops_for_strides) Optimization
13e08dc9
RS
3039Version loops based on whether indices have a stride of one.
3040
6ff3a151 3041funwind-tables
eece52b5 3042Common Var(flag_unwind_tables) Optimization
a7b2e184 3043Just generate unwind tables for exception handling.
6ff3a151 3044
b352afba 3045fuse-ld=bfd
b78e932d 3046Common Driver Negative(fuse-ld=gold)
a7b2e184 3047Use the bfd linker instead of the default linker.
b352afba
NC
3048
3049fuse-ld=gold
b78e932d 3050Common Driver Negative(fuse-ld=bfd)
a7b2e184 3051Use the gold linker instead of the default linker.
b352afba 3052
d69ac8b7
RG
3053fuse-ld=lld
3054Common Driver Negative(fuse-ld=lld)
3055Use the lld LLVM linker instead of the default linker.
3056
ad964f7e
ML
3057fuse-ld=mold
3058Common Driver Negative(fuse-ld=mold)
3059Use the Modern linker (MOLD) linker instead of the default linker.
3060
da18ea94 3061fuse-linker-plugin
063d671d 3062Common Undocumented Var(flag_use_linker_plugin)
da18ea94 3063
e90afde6
JM
3064; Positive if we should track variables, negative if we should run
3065; the var-tracking pass only to discard debug annotations, zero if
4cb52980 3066; we're not to run it.
014a1138 3067fvar-tracking
4cb52980 3068Common Var(flag_var_tracking) PerFunction EnabledBy(fvar-tracking-uninit)
a7b2e184 3069Perform variable tracking.
014a1138 3070
e90afde6
JM
3071; Positive if we should track variables at assignments, negative if
3072; we should run the var-tracking pass only to discard debug
4cb52980 3073; annotations.
b5b8b0ac 3074fvar-tracking-assignments
4cb52980 3075Common Var(flag_var_tracking_assignments) PerFunction
a7b2e184 3076Perform variable tracking by annotating assignments.
b5b8b0ac 3077
e90afde6
JM
3078; Nonzero if we should toggle flag_var_tracking_assignments after
3079; processing options and computing its default. */
b5b8b0ac 3080fvar-tracking-assignments-toggle
eece52b5 3081Common Var(flag_var_tracking_assignments_toggle) PerFunction
a7b2e184 3082Toggle -fvar-tracking-assignments.
b5b8b0ac 3083
1267ca30
EB
3084; Positive if we should track uninitialized variables, negative if
3085; we should run the var-tracking pass only to discard debug
4cb52980 3086; annotations.
62760ffd 3087fvar-tracking-uninit
eece52b5 3088Common Var(flag_var_tracking_uninit) PerFunction
a7b2e184 3089Perform variable tracking and also tag variables that are uninitialized.
62760ffd 3090
26d476cd 3091; Alias to enable both -ftree-loop-vectorize and -ftree-slp-vectorize.
79fe1b3b 3092ftree-vectorize
2b8453c4 3093Common Var(flag_tree_vectorize) Optimization
a7b2e184 3094Enable vectorization on trees.
79fe1b3b 3095
78c60e3d 3096ftree-vectorizer-verbose=
477e804b
SS
3097Common Joined RejectNegative Ignore
3098Does nothing. Preserved for backward compatibility.
78c60e3d 3099
ea0f3e87 3100ftree-loop-vectorize
eece52b5 3101Common Var(flag_tree_loop_vectorize) Optimization EnabledBy(ftree-vectorize)
a7b2e184 3102Enable loop vectorization on trees.
ea0f3e87 3103
a70d6342 3104ftree-slp-vectorize
eece52b5 3105Common Var(flag_tree_slp_vectorize) Optimization EnabledBy(ftree-vectorize)
a7b2e184 3106Enable basic block vectorization (SLP) on trees.
a70d6342 3107
d6d11272 3108fvect-cost-model=
b16650ac 3109Common Joined RejectNegative Enum(vect_cost_model) Var(flag_vect_cost_model) Init(VECT_COST_MODEL_DEFAULT) Optimization
0b0061f4 3110-fvect-cost-model=[unlimited|dynamic|cheap|very-cheap] Specifies the cost model for vectorization.
a7b2e184 3111
8b5e1202 3112fsimd-cost-model=
b16650ac 3113Common Joined RejectNegative Enum(vect_cost_model) Var(flag_simd_cost_model) Init(VECT_COST_MODEL_UNLIMITED) Optimization
0b0061f4 3114-fsimd-cost-model=[unlimited|dynamic|cheap|very-cheap] Specifies the vectorization cost model for code marked with a simd directive.
8b5e1202 3115
d6d11272
XDL
3116Enum
3117Name(vect_cost_model) Type(enum vect_cost_model) UnknownError(unknown vectorizer cost model %qs)
3118
3119EnumValue
3120Enum(vect_cost_model) String(unlimited) Value(VECT_COST_MODEL_UNLIMITED)
3121
3122EnumValue
3123Enum(vect_cost_model) String(dynamic) Value(VECT_COST_MODEL_DYNAMIC)
3124
3125EnumValue
3126Enum(vect_cost_model) String(cheap) Value(VECT_COST_MODEL_CHEAP)
3127
0b0061f4
RS
3128EnumValue
3129Enum(vect_cost_model) String(very-cheap) Value(VECT_COST_MODEL_VERY_CHEAP)
3130
792ed98b 3131fvect-cost-model
205d7111 3132Common Alias(fvect-cost-model=,dynamic,unlimited)
d6d11272
XDL
3133Enables the dynamic vectorizer cost model. Preserved for backward compatibility.
3134
c12cc930 3135ftree-vect-loop-version
d6d11272
XDL
3136Common Ignore
3137Does nothing. Preserved for backward compatibility.
c12cc930 3138
fbf798fc 3139ftree-scev-cprop
eece52b5 3140Common Var(flag_tree_scev_cprop) Init(1) Optimization
fbf798fc
DN
3141Enable copy propagation of scalar-evolution information.
3142
a25e0b5e 3143ftrivial-auto-var-init=
3144Common Joined RejectNegative Enum(auto_init_type) Var(flag_auto_var_init) Init(AUTO_INIT_UNINITIALIZED) Optimization
3145-ftrivial-auto-var-init=[uninitialized|pattern|zero] Add initializations to automatic variables.
3146
3147Enum
3148Name(auto_init_type) Type(enum auto_init_type) UnknownError(unrecognized automatic variable initialization type %qs)
3149
3150EnumValue
3151Enum(auto_init_type) String(uninitialized) Value(AUTO_INIT_UNINITIALIZED)
3152
3153EnumValue
3154Enum(auto_init_type) String(pattern) Value(AUTO_INIT_PATTERN)
3155
3156EnumValue
3157Enum(auto_init_type) String(zero) Value(AUTO_INIT_ZERO)
3158
31b66477
KC
3159; -fverbose-asm causes extra commentary information to be produced in
3160; the generated assembly code (to make it more readable). This option
3161; is generally only of use to those who actually need to read the
3162; generated assembly code (perhaps while debugging the compiler itself).
3163; -fno-verbose-asm, the default, causes the extra information
3164; to not be added and is useful when comparing two assembler files.
6ff3a151 3165fverbose-asm
eece52b5 3166Common Var(flag_verbose_asm)
a7b2e184 3167Add extra commentary to assembler output.
6ff3a151 3168
d7afec4b 3169fvisibility=
e6d4b984 3170Common Joined RejectNegative Enum(symbol_visibility) Var(default_visibility) Init(VISIBILITY_DEFAULT)
a7b2e184 3171-fvisibility=[default|internal|hidden|protected] Set the default symbol visibility.
d7afec4b 3172
e6d4b984
JM
3173Enum
3174Name(symbol_visibility) Type(enum symbol_visibility) UnknownError(unrecognized visibility value %qs)
3175
3176EnumValue
3177Enum(symbol_visibility) String(default) Value(VISIBILITY_DEFAULT)
3178
3179EnumValue
3180Enum(symbol_visibility) String(internal) Value(VISIBILITY_INTERNAL)
3181
3182EnumValue
3183Enum(symbol_visibility) String(hidden) Value(VISIBILITY_HIDDEN)
3184
3185EnumValue
3186Enum(symbol_visibility) String(protected) Value(VISIBILITY_PROTECTED)
d7afec4b 3187
2077db1b
CT
3188fvtable-verify=
3189Common Joined RejectNegative Enum(vtv_priority) Var(flag_vtable_verify) Init(VTV_NO_PRIORITY)
3190Validate vtable pointers before using them.
3191
3192Enum
3193Name(vtv_priority) Type(enum vtv_priority) UnknownError(unknown vtable verify initialization priority %qs)
3194
3195EnumValue
3196Enum(vtv_priority) String(none) Value(VTV_NO_PRIORITY)
3197
3198EnumValue
3199Enum(vtv_priority) String(std) Value(VTV_STANDARD_PRIORITY)
3200
3201EnumValue
3202Enum(vtv_priority) String(preinit) Value(VTV_PREINIT_PRIORITY)
3203
3204fvtv-counts
3205Common Var(flag_vtv_counts)
3206Output vtable verification counters.
3207
3208fvtv-debug
3209Common Var(flag_vtv_debug)
3210Output vtable verification pointer sets information.
3211
fca9dc00 3212fvpt
eece52b5 3213Common Var(flag_value_profile_transformations) Optimization
a7b2e184 3214Use expression value profiles in optimizations.
fca9dc00 3215
62551c66 3216fweb
e415bc4c 3217Common Var(flag_web) Optimization EnabledBy(funroll-loops)
a7b2e184 3218Construct webs and split unrelated uses of single variable.
62551c66 3219
c2699190 3220ftree-builtin-call-dce
eece52b5 3221Common Var(flag_tree_builtin_call_dce) Init(0) Optimization
a7b2e184 3222Enable conditional dead code elimination for builtin calls.
c2699190 3223
ce91e74c 3224fwhole-program
eece52b5 3225Common Var(flag_whole_program) Init(0)
a7b2e184 3226Perform whole program optimizations.
ce91e74c 3227
3fccbb9e 3228fwrapv-pointer
eece52b5 3229Common Var(flag_wrapv_pointer) Optimization
3fccbb9e
JJ
3230Assume pointer overflow wraps around.
3231
6ff3a151 3232fwrapv
eece52b5 3233Common Var(flag_wrapv) Optimization
a7b2e184 3234Assume signed arithmetic overflow wraps around.
6ff3a151 3235
6ff3a151 3236fzero-initialized-in-bss
eece52b5 3237Common Var(flag_zero_initialized_in_bss) Init(1)
a7b2e184 3238Put zero initialized data in the bss section.
6ff3a151 3239
d10f3e90 3240fzero-call-used-regs=
eece52b5 3241Common RejectNegative Joined
d10f3e90 3242Clear call-used registers upon function return.
3243
e01cc6dc 3244g
9ed32e27 3245Common Driver RejectNegative JoinedOrMissing
a7b2e184 3246Generate debug information in default format.
df38ffef 3247
924c9e3e 3248gas-loc-support
4cb52980 3249Common Driver Var(dwarf2out_as_loc_support)
04e5c73d 3250Assume assembler support for (DWARF2+) .loc directives.
924c9e3e
AO
3251
3252gas-locview-support
4cb52980 3253Common Driver Var(dwarf2out_as_locview_support)
04e5c73d 3254Assume assembler support for view in (DWARF2+) .loc directives.
924c9e3e 3255
e7e95821 3256gcoff
68a57628 3257Common Driver WarnRemoved
e7e95821
JW
3258Does nothing. Preserved for backward compatibility.
3259
3260gcoff1
68a57628 3261Common Driver WarnRemoved
e7e95821
JW
3262Does nothing. Preserved for backward compatibility.
3263
3264gcoff2
68a57628 3265Common Driver WarnRemoved
e7e95821
JW
3266Does nothing. Preserved for backward compatibility.
3267
3268gcoff3
68a57628 3269Common Driver WarnRemoved
e7e95821
JW
3270Does nothing. Preserved for backward compatibility.
3271
0029b929 3272gcolumn-info
8008dd1c 3273Common Driver Var(debug_column_info,1) Init(1)
0029b929
JJ
3274Record DW_AT_decl_column and DW_AT_call_column in DWARF.
3275
b7e215a8
IB
3276; The CTF generation process feeds off DWARF dies. This option implicitly
3277; updates the debug_info_level to DINFO_LEVEL_NORMAL.
3278gctf
3279Common Driver RejectNegative JoinedOrMissing
3280Generate CTF debug information at default level.
3281
3282gbtf
3283Common Driver RejectNegative JoinedOrMissing
3284Generate BTF debug information at default level.
3285
6782438d 3286gdwarf
1c70261c 3287Common Driver JoinedOrMissing Negative(gdwarf-)
a7b2e184 3288Generate debug information in default version of DWARF format.
6782438d 3289
53b2323e 3290gdwarf-
3804e937 3291Common Driver Joined UInteger Var(dwarf_version) Init(5) Negative(gstabs)
a7b2e184 3292Generate debug information in DWARF v2 (or later) format.
df38ffef 3293
65312dfc
JJ
3294gdwarf32
3295Common Driver Var(dwarf_offset_size,4) Init(4) RejectNegative
3296Use 32-bit DWARF format when emitting DWARF debug information.
3297
3298gdwarf64
3299Common Driver Var(dwarf_offset_size,8) RejectNegative
3300Use 64-bit DWARF format when emitting DWARF debug information.
3301
df38ffef 3302ggdb
1c70261c 3303Common Driver JoinedOrMissing
a7b2e184 3304Generate debug information in default extended format.
df38ffef 3305
924c9e3e 3306ginline-points
4cb52980 3307Common Driver Var(debug_inline_points)
04e5c73d 3308Generate extended entry point information for inlined functions.
924c9e3e
AO
3309
3310ginternal-reset-location-views
3311Common Driver Var(debug_internal_reset_location_views) Init(2)
04e5c73d 3312Compute locview reset points based on insn length estimates.
924c9e3e 3313
9ed32e27
AO
3314gno-
3315RejectNegative Joined Undocumented
3316; Catch the gno- prefix, so it doesn't backtrack to g<level>.
3317
5175cbaf 3318gno-pubnames
1c70261c 3319Common Driver Negative(gpubnames) Var(debug_generate_pub_sections, 0) Init(-1)
5175cbaf
SA
3320Don't generate DWARF pubnames and pubtypes sections.
3321
3322gpubnames
1c70261c 3323Common Driver Negative(ggnu-pubnames) Var(debug_generate_pub_sections, 1)
5175cbaf
SA
3324Generate DWARF pubnames and pubtypes sections.
3325
7a1dd0fa 3326ggnu-pubnames
1c70261c 3327Common Driver Negative(gno-pubnames) Var(debug_generate_pub_sections, 2)
7a1dd0fa
SA
3328Generate DWARF pubnames and pubtypes sections with GNU extensions.
3329
e967adf4 3330grecord-gcc-switches
9ed32e27 3331Common Driver Var(dwarf_record_gcc_switches) Init(1)
e967adf4
JJ
3332Record gcc command line switches in DWARF DW_AT_producer.
3333
99ea153e 3334gsplit-dwarf
9ed32e27 3335Common Driver Var(dwarf_split_debug_info) Init(0)
a7b2e184 3336Generate debug information in separate .dwo files.
99ea153e 3337
df38ffef 3338gstabs
1c70261c 3339Common Driver JoinedOrMissing Negative(gstabs+)
a7b2e184 3340Generate debug information in STABS format.
df38ffef
NB
3341
3342gstabs+
1c70261c 3343Common Driver JoinedOrMissing Negative(gvms)
a7b2e184 3344Generate debug information in extended STABS format.
df38ffef 3345
8697bf9f 3346gstatement-frontiers
b4702276 3347Common Driver Var(debug_nonbind_markers_p) PerFunction
8697bf9f
AO
3348Emit progressive recommended breakpoint locations.
3349
65f753a0 3350gstrict-dwarf
eece52b5 3351Common Driver Var(dwarf_strict) Init(0)
a7b2e184 3352Don't emit DWARF additions beyond selected version.
65f753a0 3353
03e992ac 3354gdescribe-dies
eece52b5 3355Common Driver Var(flag_describe_dies) Init(0)
03e992ac
TV
3356Add description attributes to some DWARF DIEs that have no name attribute.
3357
2153915d 3358gtoggle
eece52b5 3359Common Driver Var(flag_gtoggle)
a7b2e184 3360Toggle debug information generation.
2153915d 3361
bd2b9f1e 3362gvariable-location-views
4cb52980 3363Common Driver Var(debug_variable_location_views, 1)
bd2b9f1e
AO
3364Augment variable location lists with progressive views.
3365
3366gvariable-location-views=incompat5
3367Common Driver RejectNegative Var(debug_variable_location_views, -1) Init(2)
3368
df38ffef 3369gvms
1c70261c 3370Common Driver JoinedOrMissing Negative(gxcoff)
a7b2e184 3371Generate debug information in VMS format.
df38ffef
NB
3372
3373gxcoff
1c70261c 3374Common Driver JoinedOrMissing Negative(gxcoff+)
a7b2e184 3375Generate debug information in XCOFF format.
df38ffef
NB
3376
3377gxcoff+
180295ed 3378Common Driver JoinedOrMissing Negative(gdwarf)
a7b2e184 3379Generate debug information in extended XCOFF format.
e01cc6dc 3380
29d7cbd1
RO
3381Enum
3382Name(compressed_debug_sections) Type(int)
3383
3384; Since -gz= is completely handled in specs, the values aren't used and we
3385; assign arbitrary constants.
3386EnumValue
3387Enum(compressed_debug_sections) String(none) Value(0)
3388
3389EnumValue
3390Enum(compressed_debug_sections) String(zlib) Value(1)
3391
3392EnumValue
3393Enum(compressed_debug_sections) String(zlib-gnu) Value(2)
3394
3395gz
3396Common Driver
a7b2e184 3397Generate compressed debug sections.
29d7cbd1
RO
3398
3399gz=
9ed32e27 3400Common Driver RejectNegative Joined Enum(compressed_debug_sections)
a7b2e184 3401-gz=<format> Generate compressed debug sections in format <format>.
29d7cbd1 3402
6d721f67
JM
3403h
3404Driver Joined Separate
3405
4adbd5dd
MK
3406iplugindir=
3407Common Joined Var(plugindir_string) Init(0)
a7b2e184 3408-iplugindir=<dir> Set <dir> to be the default plugin directory.
4adbd5dd 3409
e0cdc09f
MK
3410imultiarch
3411Common Joined Separate RejectDriver Var(imultiarch) Init(0)
a7b2e184 3412-imultiarch <dir> Set <dir> to be the multiarch include subdirectory.
e0cdc09f 3413
603349bf
JM
3414l
3415Driver Joined Separate
3416
dd9f93dc
JM
3417n
3418Driver
3419
603349bf
JM
3420no-canonical-prefixes
3421Driver
3422
d9d16a19
JM
3423nodefaultlibs
3424Driver
3425
bab79a40
JM
3426nostartfiles
3427Driver
3428
f37866e8
OH
3429nolibc
3430Driver
3431
d9d16a19
JM
3432nostdlib
3433Driver
3434
d185d268 3435o
d5478783 3436Common Driver Joined Separate Var(asm_file_name) MissingArgError(missing filename after %qs)
a7b2e184 3437-o <file> Place output into <file>.
d185d268
NB
3438
3439p
50431bc4 3440Common Var(profile_flag)
a7b2e184 3441Enable function profiling.
d185d268 3442
603349bf
JM
3443pass-exit-codes
3444Driver Var(pass_exit_codes)
3445
d185d268 3446pedantic
c1771a20 3447Common Alias(Wpedantic)
d185d268
NB
3448
3449pedantic-errors
d5478783 3450Common Var(flag_pedantic_errors)
a7b2e184 3451Like -pedantic but issue them as errors.
d185d268 3452
d9d16a19
JM
3453pg
3454Driver
3455
603349bf
JM
3456pipe
3457Driver Var(use_pipes)
3458
3459print-file-name=
3460Driver JoinedOrMissing Var(print_file_name)
3461
3462print-libgcc-file-name
3463Driver
3464
3465print-multi-directory
3466Driver Var(print_multi_directory)
3467
3468print-multi-lib
3469Driver Var(print_multi_lib)
3470
3471print-multi-os-directory
3472Driver Var(print_multi_os_directory)
a7b2e184 3473
e0cdc09f
MK
3474print-multiarch
3475Driver Var(print_multiarch)
603349bf
JM
3476
3477print-prog-name=
3478Driver JoinedOrMissing Var(print_prog_name)
3479
3480print-search-dirs
3481Driver Var(print_search_dirs)
3482
3483print-sysroot
3484Driver Var(print_sysroot)
3485
3486print-sysroot-headers-suffix
3487Driver Var(print_sysroot_headers_suffix)
3488
d7b42618 3489quiet
603349bf 3490Common Var(quiet_flag) RejectDriver
a7b2e184 3491Do not display functions compiled or elapsed time.
d7b42618 3492
dd9f93dc
JM
3493r
3494Driver
3495
3496s
3497Driver
3498
603349bf
JM
3499save-temps
3500Driver
3501
3502save-temps=
3503Driver Joined
3504
dd9f93dc
JM
3505t
3506Driver
3507
603349bf
JM
3508time
3509Driver Var(report_times)
3510
3511time=
3512Driver JoinedOrMissing
3513
e200444e
JM
3514u
3515Driver Joined Separate
3516
5642f5d5
JM
3517undef
3518Driver
3519; C option, but driver must not handle as "-u ndef".
3520
603349bf 3521v
d5478783 3522Common Driver Var(verbose_flag)
a7b2e184 3523Enable verbose output.
603349bf 3524
d185d268 3525version
603349bf 3526Common Var(version_flag) RejectDriver
a7b2e184 3527Display the compiler's version.
d185d268
NB
3528
3529w
50431bc4 3530Common Var(inhibit_warnings)
a7b2e184 3531Suppress warnings.
d185d268 3532
603349bf
JM
3533wrapper
3534Driver Separate Var(wrapper_string)
3535
3536x
3537Driver Joined Separate
3538
528dc603 3539shared
b4fed890 3540Driver RejectNegative Negative(static-pie)
a7b2e184 3541Create a shared library.
528dc603 3542
603349bf
JM
3543shared-libgcc
3544Driver
3545
3546specs
5de8299c 3547Driver Separate Alias(specs=)
603349bf
JM
3548
3549specs=
3550Driver Joined
3551
d9d16a19
JM
3552static
3553Driver
3554
603349bf
JM
3555static-libgcc
3556Driver
3557
3558static-libgfortran
3559Driver
3560; Documented for Fortran, but always accepted by driver.
3561
185b307b
IB
3562static-libphobos
3563Driver
3564; Documented for D, but always accepted by driver.
3565
603349bf
JM
3566static-libstdc++
3567Driver
3568
7a938933
ILT
3569static-libgo
3570Driver
3571; Documented for Go, but always accepted by driver.
3572
7e8d1b2d
L
3573static-libasan
3574Driver
3575
3bd87832
MM
3576static-libhwasan
3577Driver
3578
32b4b7f5
DV
3579static-libtsan
3580Driver
3581
9065ada9
JJ
3582static-liblsan
3583Driver
3584
de5a5fa1
MP
3585static-libubsan
3586Driver
3587
e200444e
JM
3588symbolic
3589Driver
3590
428b3812 3591no-pie
5460e1fc 3592Driver RejectNegative Negative(shared)
b4fed890 3593Don't create a dynamically linked position independent executable.
428b3812
L
3594
3595pie
3596Driver RejectNegative Negative(no-pie)
b4fed890
L
3597Create a dynamically linked position independent executable.
3598
3599static-pie
3600Driver RejectNegative Negative(pie)
3601Create a static position independent executable.
528dc603 3602
6d721f67
JM
3603z
3604Driver Joined Separate
3605
1e288103 3606fipa-ra
eece52b5 3607Common Var(flag_ipa_ra) Optimization
a7b2e184 3608Use caller save register across calls if possible.
d996e61a 3609
d7b42618 3610; This comment is to ensure we retain the blank line above.