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