]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/common.opt
/cp
[thirdparty/gcc.git] / gcc / common.opt
CommitLineData
3272db82 1; Options for the language- and target-independent parts of the compiler.
2e9da478 2
8e8f6434 3; Copyright (C) 2003-2018 Free Software Foundation, Inc.
3272db82 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
8c4c00c1 9; Software Foundation; either version 3, or (at your option) any later
3272db82 10; version.
a0c938f0 11;
3272db82 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.
a0c938f0 16;
3272db82 17; You should have received a copy of the GNU General Public License
8c4c00c1 18; along with GCC; see the file COPYING3. If not see
19; <http://www.gnu.org/licenses/>.
3272db82 20
a4b0007b 21; See the GCC internals manual (options.texi) for a description of this file's format.
3272db82 22
23; Please try to keep this file in ASCII collating order.
24
0f8defe5 25Variable
26int target_flags
27
2c5d2e39 28Variable
29int optimize
30
31Variable
32int optimize_size
33
9b0d2865 34Variable
35int optimize_debug
36
d2807aa3 37; Not used directly to control optimizations, only to save -Ofast
38; setting for "optimize" attributes.
39Variable
40int optimize_fast
41
90336809 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
4c4a180d 49; This variable is set to non-0 only by LTO front-end. 1 indicates that
50; the output produced will be used for incrmeental linking (thus weak symbols
278cec16 51; can still be bound) and 2 indicates that the IL is going to be linked and
52; and output to LTO object file.
4c4a180d 53Variable
278cec16 54enum incremental_link flag_incremental_link = INCREMENTAL_LINK_NONE
4c4a180d 55
f3f006ad 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
f3f006ad 62; Language specific warning pass for unused results.
63Variable
64bool flag_warn_unused_result = false
65
56f280c4 66Variable
67int *param_values
68
6bd9d862 69; Nonzero if we should write GIMPLE bytecode for link-time optimization.
70Variable
71int flag_generate_lto
72
9f28dc4c 73; Nonzero if we should write GIMPLE bytecode for offload compilation.
74Variable
75int flag_generate_offload = 0
76
6bd9d862 77; True to warn about any objects definitions whose size is larger
78; than N bytes. Also want about function definitions whose returned
79; values are larger than N bytes, where N is 'larger_than_size'.
80Variable
81bool warn_larger_than
82
83Variable
84HOST_WIDE_INT larger_than_size
85
86; True to warn about any function whose frame size is larger
87; than N bytes.
88Variable
89bool warn_frame_larger_than
90
91Variable
92HOST_WIDE_INT frame_larger_than_size
93
94; Nonzero means we should be saving declaration info into a .X file.
95Variable
96int flag_gen_aux_info = 0
97
98; Nonzero if we are compiling code for a shared library, zero for
99; executable.
100Variable
101int flag_shlib
102
470a0ecd 103; These two are really VEC(char_p,heap) *.
104
105Variable
106void *flag_instrument_functions_exclude_functions
107
108Variable
109void *flag_instrument_functions_exclude_files
110
d7175aef 111; Generic structs (e.g. templates not explicitly specialized)
112; may not have a compilation unit associated with them, and so
113; may need to be treated differently from ordinary structs.
114;
115; Structs only handled by reference (indirectly), will also usually
116; not need as much debugging information.
117
118Variable
119enum debug_struct_file debug_struct_ordinary[DINFO_USAGE_NUM_ENUMS] = { DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY }
120
121Variable
122enum debug_struct_file debug_struct_generic[DINFO_USAGE_NUM_ENUMS] = { DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY }
123
cc4fa57a 124; True if we should exit after parsing options.
125Variable
126bool exit_after_options
127
128; Type(s) of debugging information we are producing (if any). See
129; flag-types.h for the definitions of the different possible types of
130; debugging information.
131Variable
132enum debug_info_type write_symbols = NO_DEBUG
133
134; Level of debugging information we are producing. See flag-types.h
135; for the definitions of the different possible levels.
136Variable
137enum debug_info_levels debug_info_level = DINFO_LEVEL_NONE
138
139; Nonzero means use GNU-only extensions in the generated symbolic
140; debugging information. Currently, this only has an effect when
dc75b246 141; write_symbols is set to DBX_DEBUG or XCOFF_DEBUG.
cc4fa57a 142Variable
143bool use_gnu_debug_info_extensions
144
9faf44d6 145; Original value of maximum field alignment in bytes, specified via
146; -fpack-struct=<value>.
147Variable
148unsigned int initial_max_fld_align = TARGET_DEFAULT_PACK_STRUCT
149
ab3728ee 150; Type of stack check.
151Variable
152enum stack_check_type flag_stack_check = NO_STACK_CHECK
153
8c0dd614 154; True if stack usage information needs to be computed.
155Variable
156bool flag_stack_usage_info = false
157
9faf44d6 158; -dA causes debug commentary information to be produced in
159; the generated assembly code (to make it more readable). This option
160; is generally only of use to those who actually need to read the
161; generated assembly code (perhaps while debugging the compiler itself).
162; Currently, this switch is only used by dwarf2out.c; however, it is intended
163; to be a catchall for printing debug information in the assembler file.
164Variable
165int flag_debug_asm
166
e6c4532a 167; How many NOP insns to place at each function entry by default
168Variable
169HOST_WIDE_INT function_entry_patch_area_size
170
171; And how far the real asm entry point is into this area
172Variable
173HOST_WIDE_INT function_entry_patch_area_start
f78f10d6 174
175; Balance between GNAT encodings and standard DWARF to emit.
176Variable
177enum dwarf_gnat_encodings gnat_encodings = DWARF_GNAT_ENCODINGS_DEFAULT
178
9faf44d6 179; -dP causes the rtl to be emitted as a comment in assembly.
180Variable
181int flag_dump_rtl_in_asm
182
183; Whether -da was passed (used only in handle_common_deferred_options).
184Variable
185bool flag_dump_all_passed
186
187; Other flags saying which kinds of debugging dump have been requested.
188
189Variable
190int rtl_dump_and_exit
191
192Variable
193int flag_print_asm_name
194
0e763b2a 195; Name of top-level original source file (what was input to cpp).
196; This comes from the #-command at the beginning of the actual input.
197; If there isn't any there, then this is the cc1 input file name.
198Variable
199const char *main_input_filename
200
201; Pointer to base name in main_input_filename, with directories and a
202; single final extension removed, and the length of this base
203; name.
204
205Variable
206const char *main_input_basename
207
208Variable
209int main_input_baselength
210
9faf44d6 211; Which options have been printed by --help.
212Variable
213char *help_printed
214
d62a5950 215; Which enums have been printed by --help. 0 = not printed, no
216; relevant options seen, 1 = relevant option seen, not yet printed, 2
217; = printed.
218Variable
219char *help_enum_printed
220
9faf44d6 221; The number of columns for --help output.
222Variable
223unsigned int help_columns
224
225; Whether this options structure has been through finish_options
226Variable
227bool flag_opts_finished
228
9e46467d 229; What the sanitizer should instrument
230Variable
231unsigned int flag_sanitize
232
c2598081 233; What sanitizers should recover from errors
234Variable
9917317a 235unsigned int flag_sanitize_recover = (SANITIZE_UNDEFINED | SANITIZE_UNDEFINED_NONDEFAULT | SANITIZE_KERNEL_ADDRESS) & ~(SANITIZE_UNREACHABLE | SANITIZE_RETURN)
c2598081 236
ccec7674 237; What the coverage sanitizers should instrument
238Variable
239unsigned int flag_sanitize_coverage
d29e939c 240
6aaca0b4 241; Flag whether a prefix has been added to dump_base_name
242Variable
243bool dump_base_name_prefixed = false
244
56686608 245; Flag whether HSA generation has been explicitely disabled
246Variable
247bool flag_disable_hsa = false
248
e28aa114 249###
250Driver
251
5789e05b 252-assemble
253Driver Alias(S)
254
255-compile
256Driver Alias(c)
257
6e8a18d1 258-completion=
259Common Driver Joined Undocumented
260Provide bash completion for options starting with provided string.
261
5789e05b 262-coverage
263Driver Alias(coverage)
264
265-debug
266Common Alias(g)
267
268-dump
269Common Separate Alias(d)
270
271-dump=
272Common Joined Alias(d)
273
274-dumpbase
275Common Separate Alias(dumpbase)
276
277-dumpdir
278Common Separate Alias(dumpdir)
279
280-entry
281Driver Separate Alias(e)
282
283-entry=
284Driver Joined Alias(e)
285
286-extra-warnings
287Common Warning Alias(Wextra)
288
289-for-assembler
290Driver Separate Alias(Xassembler)
291
292-for-assembler=
293Driver JoinedOrMissing Alias(Xassembler)
294
295-for-linker
296Driver Separate Alias(Xlinker)
297
298-for-linker=
299Driver JoinedOrMissing Alias(Xlinker)
300
301-force-link
302Driver Separate Alias(u)
303
304-force-link=
305Driver Joined Alias(u)
306
e690b385 307-help
5789e05b 308Common Driver Var(help_flag)
8fb42bbc 309Display this information.
e690b385 310
87c75316 311-help=
e28aa114 312Common Driver Report Joined
8fb42bbc 313--help=<class> Display descriptions of a specific class of options. <class> is one or more of optimizers, target, warnings, undocumented, params.
da3b1bab 314
5789e05b 315-language
316Driver Separate Alias(x)
317
318-language=
319Driver Joined Alias(x)
320
321-library-directory
322Driver Separate Alias(L)
323
324-library-directory=
325Driver Joined Alias(L)
326
327-no-canonical-prefixes
328Driver Alias(no-canonical-prefixes)
329
330-no-standard-libraries
331Driver Alias(nostdlib)
332
70eb49f5 333-no-sysroot-suffix
334Driver Var(no_sysroot_suffix)
335
5789e05b 336-no-warnings
337Common Alias(w)
338
339-optimize
340Common Alias(O)
341
342-output
343Common Driver Separate Alias(o) MissingArgError(missing filename after %qs)
344
345-output=
346Common Driver Joined Alias(o) MissingArgError(missing filename after %qs)
347
348-pass-exit-codes
349Driver Alias(pass-exit-codes)
350
351-pedantic
29438999 352Common Alias(Wpedantic)
5789e05b 353
354-pedantic-errors
355Common Alias(pedantic-errors)
356
357-pie
1412b935 358Driver Alias(pie)
5789e05b 359
6d1ab23d 360-static-pie
361Driver Alias(static-pie)
362
5789e05b 363-pipe
364Driver Alias(pipe)
365
366-prefix
367Driver Separate Alias(B)
368
369-prefix=
370Driver JoinedOrMissing Alias(B)
371
372-preprocess
373Driver Alias(E)
374
375-print-file-name
376Driver Separate Alias(print-file-name=)
377
378-print-file-name=
379Driver JoinedOrMissing Alias(print-file-name=)
380
381-print-libgcc-file-name
382Driver Alias(print-libgcc-file-name)
383
384-print-multi-directory
385Driver Alias(print-multi-directory)
386
387-print-multi-lib
388Driver Alias(print-multi-lib)
389
390-print-multi-os-directory
391Driver Alias(print-multi-os-directory)
392
77adc39e 393-print-multiarch
394Driver Alias(print-multiarch)
395
5789e05b 396-print-prog-name
397Driver Separate Alias(print-prog-name=)
398
399-print-prog-name=
400Driver JoinedOrMissing Alias(print-prog-name=)
401
402-print-search-dirs
403Driver Alias(print-search-dirs)
404
405-print-sysroot
406Driver Alias(print-sysroot)
407
408-print-sysroot-headers-suffix
409Driver Alias(print-sysroot-headers-suffix)
410
411-profile
412Common Alias(p)
413
414-save-temps
415Driver Alias(save-temps)
416
417-shared
1412b935 418Driver Alias(shared)
5789e05b 419
420-specs
421Driver Separate Alias(specs=)
422
423-specs=
424Driver Joined Alias(specs=)
425
426-static
427Driver Alias(static)
428
429-symbolic
430Driver Alias(symbolic)
431
e690b385 432-target-help
e28aa114 433Common Driver
8fb42bbc 434Alias for --help=target.
87c75316 435
5789e05b 436-time
437Driver Alias(time)
438
439-verbose
440Driver Alias(v)
441
442;; The driver used to convert options such as --help into forms such
443;; as -fhelp; the following four entries are for compatibility with
444;; any direct uses of those (undocumented) -f forms
87c75316 445fhelp
5789e05b 446Common Driver Alias(-help)
87c75316 447
448fhelp=
5789e05b 449Common Driver Joined Alias(-help=)
87c75316 450
451ftarget-help
5789e05b 452Common Driver Alias(-target-help)
87c75316 453
39932bd2 454fversion
5789e05b 455Common Driver Alias(-version)
39932bd2 456
87c75316 457-param
458Common Separate
8fb42bbc 459--param <param>=<value> Set parameter <param> to value. See below for a complete list of parameters.
e690b385 460
5789e05b 461-param=
462Common Joined Alias(-param)
463
464-sysroot
465Driver Separate Alias(-sysroot=)
466
e28aa114 467-sysroot=
468Driver JoinedOrMissing
469
e690b385 470-version
e28aa114 471Common Driver
472
473B
474Driver Joined Separate
475
476E
477Driver
e690b385 478
cb22f930 479L
480Driver Joined Separate
481
3bfde2af 482N
483Driver
484
da3b1bab 485O
46f8e3b0 486Common JoinedOrMissing Optimization
8fb42bbc 487-O<number> Set optimization level to <number>.
da3b1bab 488
489Os
46f8e3b0 490Common Optimization
8fb42bbc 491Optimize for space rather than speed.
da3b1bab 492
1ebc0b9f 493Ofast
494Common Optimization
8fb42bbc 495Optimize for speed disregarding exact standards compliance.
1ebc0b9f 496
9b0d2865 497Og
498Common Optimization
8fb42bbc 499Optimize for debugging experience rather than speed or size.
9b0d2865 500
3bfde2af 501Q
502Driver
503
504Qn
505Driver Negative(Qy)
506
507Qy
508Driver Negative(Qn)
509
f37ef985 510R
511Driver Joined Separate
512
e28aa114 513S
514Driver
515
f37ef985 516T
517Driver Joined Separate
518
519Tbss
520Driver Separate
521
69304750 522Tbss=
523Driver Joined
524
f37ef985 525Tdata
526Driver Separate
527
69304750 528Tdata=
529Driver Joined
530
f37ef985 531Ttext
532Driver Separate
533
69304750 534Ttext=
535Driver Joined
536
da3b1bab 537W
67089c6b 538Common RejectNegative Warning Alias(Wextra)
8fb42bbc 539This switch is deprecated; use -Wextra instead.
da3b1bab 540
e28aa114 541Wa,
a1408eb3 542Driver JoinedOrMissing RejectNegative
e28aa114 543
544Wl,
a1408eb3 545Driver JoinedOrMissing RejectNegative
e28aa114 546
547Wp,
a1408eb3 548Driver JoinedOrMissing RejectNegative
e28aa114 549
6f2f567f 550Waggregate-return
87c75316 551Common Var(warn_aggregate_return) Warning
8fb42bbc 552Warn about returning structures, unions or arrays.
6f2f567f 553
228bf2b8 554Waggressive-loop-optimizations
555Common Var(warn_aggressive_loop_optimizations) Init(1) Warning
8fb42bbc 556Warn if a loop with constant number of iterations triggers undefined behavior.
228bf2b8 557
5bc96398 558Warray-bounds
e8831472 559Common Var(warn_array_bounds) Warning
8fb42bbc 560Warn if an array is accessed out of bounds.
5bc96398 561
e4fd7af1 562Warray-bounds=
52368c34 563Common Joined RejectNegative UInteger Var(warn_array_bounds) Warning IntegerRange(0, 2)
8fb42bbc 564Warn if an array is accessed out of bounds.
e4fd7af1 565
9b2d6d13 566Wattributes
87c75316 567Common Var(warn_attributes) Init(1) Warning
8fb42bbc 568Warn about inappropriate attribute usage.
9b2d6d13 569
fa9132f4 570Wattribute-alias
571Common Var(warn_attributes) Init(1) Warning
572Warn about type safety and similar errors in attribute alias and related.
573
6f2f567f 574Wcast-align
87c75316 575Common Var(warn_cast_align) Warning
8fb42bbc 576Warn about pointer casts which increase alignment.
6f2f567f 577
7ceee42d 578Wcast-align=strict
579Common Var(warn_cast_align,2) Warning
580Warn about pointer casts which increase alignment.
581
3a79f5da 582Wcpp
583Common Var(warn_cpp) Init(1) Warning
8fb42bbc 584Warn when a #warning directive is encountered.
3a79f5da 585
6f2f567f 586Wdeprecated-declarations
87c75316 587Common Var(warn_deprecated_decl) Init(1) Warning
8fb42bbc 588Warn about uses of __attribute__((deprecated)) declarations.
6f2f567f 589
590Wdisabled-optimization
87c75316 591Common Var(warn_disabled_optimization) Warning
8fb42bbc 592Warn when an optimization pass is disabled.
6f2f567f 593
594Werror
2e9da478 595Common Var(warnings_are_errors)
8fb42bbc 596Treat all warnings as errors.
6f2f567f 597
76f02516 598Werror=
599Common Joined
8fb42bbc 600Treat specified warning as error.
76f02516 601
da3b1bab 602Wextra
a0ded67b 603Common Var(extra_warnings) Warning
8fb42bbc 604Print extra (possibly unwanted) warnings.
da3b1bab 605
295acf4f 606Wfatal-errors
2e9da478 607Common Var(flag_fatal_errors)
8fb42bbc 608Exit on the first error occurred.
295acf4f 609
6fdade09 610Wframe-larger-than=
31ba81bd 611Common RejectNegative Joined UInteger Warning
8fb42bbc 612-Wframe-larger-than=<number> Warn if a function's stack frame requires more than <number> bytes.
6fdade09 613
f74ea1c2 614Wfree-nonheap-object
615Common Var(warn_free_nonheap_object) Init(1) Warning
8fb42bbc 616Warn when attempting to free a non-heap object.
f74ea1c2 617
56686608 618Whsa
619Common Var(warn_hsa) Init(1) Warning
620Warn when a function cannot be expanded to HSAIL.
621
3c77f69c 622Wimplicit-fallthrough
12663602 623Common Alias(Wimplicit-fallthrough=,3,0) Warning
624
625Wimplicit-fallthrough=
52368c34 626Common Var(warn_implicit_fallthrough) RejectNegative Joined UInteger Warning IntegerRange(0, 5)
3c77f69c 627Warn when a switch case falls through.
628
6f2f567f 629Winline
87c75316 630Common Var(warn_inline) Warning
8fb42bbc 631Warn when an inlined function cannot be inlined.
6f2f567f 632
1cd6e20d 633Winvalid-memory-model
634Common Var(warn_invalid_memory_model) Init(1) Warning
635Warn when an atomic memory model parameter is known to be outside the valid range.
636
6f2f567f 637Wlarger-than-
67089c6b 638Common RejectNegative Joined Warning Undocumented Alias(Wlarger-than=)
17c66687 639
640Wlarger-than=
641Common RejectNegative Joined UInteger Warning
8fb42bbc 642-Wlarger-than=<number> Warn if an object is larger than <number> bytes.
6f2f567f 643
7675e968 644Wnonnull-compare
645Var(warn_nonnull_compare) Warning
646Warn if comparing pointer parameter with nonnull attribute with NULL.
647
254d68a9 648Wnull-dereference
5463f502 649Common Var(warn_null_dereference) Warning
8fb42bbc 650Warn if dereferencing a NULL pointer may lead to erroneous or undefined behavior.
254d68a9 651
7e3cc681 652Wunsafe-loop-optimizations
b97fffd6 653Common Ignore Warning
654Does nothing. Preserved for backward compatibility.
7e3cc681 655
6f2f567f 656Wmissing-noreturn
7ca909c6 657Common Warning Alias(Wsuggest-attribute=noreturn)
6f2f567f 658
c8902726 659Wodr
01cb9cf7 660Common Var(warn_odr_violations) Init(1) Warning
8fb42bbc 661Warn about some C++ One Definition Rule violations during link time optimization.
c8902726 662
55972f40 663Woverflow
87c75316 664Common Var(warn_overflow) Init(1) Warning
8fb42bbc 665Warn about overflow in arithmetic expressions.
55972f40 666
40175f70 667Wlto-type-mismatch
668Common Var(warn_lto_type_mismatch) Init(1) Warning
8fb42bbc 669During link time optimization warn about mismatched types of global declarations.
40175f70 670
6f2f567f 671Wpacked
87c75316 672Common Var(warn_packed) Warning
8fb42bbc 673Warn when the packed attribute has no effect on struct layout.
6f2f567f 674
675Wpadded
87c75316 676Common Var(warn_padded) Warning
8fb42bbc 677Warn when padding is required to align structure members.
6f2f567f 678
29438999 679Wpedantic
04afd878 680Common Var(pedantic) Init(0) Warning
8fb42bbc 681Issue warnings needed for strict compliance to the standard.
29438999 682
f22a2cb7 683Wreturn-local-addr
684Common Var(warn_return_local_addr) Init(1) Warning
685Warn about returning a pointer/reference to a local or temporary variable.
686
6f2f567f 687Wshadow
87c75316 688Common Var(warn_shadow) Warning
50d3ad71 689Warn when one variable shadows another. Same as -Wshadow=global.
690
691Wshadow=global
692Common Warning Alias(Wshadow)
693Warn when one variable shadows another (globally).
694
695Wshadow=local
696Common Var(warn_shadow_local) Warning EnabledBy(Wshadow)
697Warn when one local variable shadows another local variable or parameter.
698
699Wshadow-local
700Common Warning Undocumented Alias(Wshadow=local)
701
702Wshadow=compatible-local
703Common Var(warn_shadow_compatible_local) Warning EnabledBy(Wshadow=local)
704Warn when one local variable shadows another local variable or parameter of compatible type.
705
706Wshadow-compatible-local
707Common Warning Undocumented Alias(Wshadow=compatible-local)
6f2f567f 708
f1a0edff 709Wstack-protector
87c75316 710Common Var(warn_stack_protect) Warning
8fb42bbc 711Warn when not issuing stack smashing protection for some reason.
f1a0edff 712
8c0dd614 713Wstack-usage=
78adba87 714Common Joined RejectNegative UInteger Var(warn_stack_usage) Warning
715-Wstack-usage=<number> Warn if stack usage might be larger than specified amount.
8c0dd614 716
6f2f567f 717Wstrict-aliasing
87c75316 718Common Warning
8fb42bbc 719Warn about code which might break strict aliasing rules.
6f2f567f 720
c1628b55 721Wstrict-aliasing=
77b27208 722Common Joined RejectNegative UInteger Var(warn_strict_aliasing) Warning
8fb42bbc 723Warn about code which might break strict aliasing rules.
c1628b55 724
add6ee5e 725Wstrict-overflow
e8831472 726Common Warning
8fb42bbc 727Warn about optimizations that assume that signed overflow is undefined.
add6ee5e 728
729Wstrict-overflow=
77b27208 730Common Joined RejectNegative UInteger Var(warn_strict_overflow) Warning
8fb42bbc 731Warn about optimizations that assume that signed overflow is undefined.
add6ee5e 732
60722a03 733Wsuggest-attribute=cold
734Common Var(warn_suggest_attribute_cold) Warning
735Warn about functions which might be candidates for __attribute__((cold)).
736
2c06958d 737Wsuggest-attribute=const
738Common Var(warn_suggest_attribute_const) Warning
8fb42bbc 739Warn about functions which might be candidates for __attribute__((const)).
2c06958d 740
741Wsuggest-attribute=pure
742Common Var(warn_suggest_attribute_pure) Warning
8fb42bbc 743Warn about functions which might be candidates for __attribute__((pure)).
2c06958d 744
43d60d64 745Wsuggest-attribute=noreturn
746Common Var(warn_suggest_attribute_noreturn) Warning
8fb42bbc 747Warn about functions which might be candidates for __attribute__((noreturn)).
43d60d64 748
bd5ef087 749Wsuggest-attribute=malloc
750Common Var(warn_suggest_attribute_malloc) Warning
751Warn about functions which might be candidates for __attribute__((malloc)).
752
fb6c6e54 753Wsuggest-final-types
754Common Var(warn_suggest_final_types) Warning
8fb42bbc 755Warn about C++ polymorphic types where adding final keyword would improve code quality.
fb6c6e54 756
757Wsuggest-final-methods
758Common Var(warn_suggest_final_methods) Warning
8fb42bbc 759Warn about C++ virtual methods where adding final keyword would improve code quality.
fb6c6e54 760
1398da0f 761Wswitch-unreachable
762Common Var(warn_switch_unreachable) Warning Init(1)
763Warn about statements between switch's controlling expression and the first
764case.
765
6f2f567f 766Wsystem-headers
87c75316 767Common Var(warn_system_headers) Warning
8fb42bbc 768Do not suppress warnings from system headers.
6f2f567f 769
8bc8a8f4 770Wtrampolines
771Common Var(warn_trampolines) Warning
8fb42bbc 772Warn whenever a trampoline is generated.
8bc8a8f4 773
100b67da 774Wtype-limits
70059cea 775Common Var(warn_type_limits) Warning EnabledBy(Wextra)
8fb42bbc 776Warn if a comparison is always true or always false due to the limited range of the data type.
100b67da 777
6f2f567f 778Wuninitialized
fbb6fbd8 779Common Var(warn_uninitialized) Warning EnabledBy(Wextra)
8fb42bbc 780Warn about uninitialized automatic variables.
6f2f567f 781
8c3e8d68 782Wmaybe-uninitialized
fbb6fbd8 783Common Var(warn_maybe_uninitialized) Warning EnabledBy(Wuninitialized)
8fb42bbc 784Warn about maybe uninitialized automatic variables.
8c3e8d68 785
6f2f567f 786Wunreachable-code
eec0fa3f 787Common Ignore Warning
cc029bec 788Does nothing. Preserved for backward compatibility.
6f2f567f 789
da3b1bab 790Wunused
278e3a1f 791Common Var(warn_unused) Init(0) Warning
8fb42bbc 792Enable all -Wunused- warnings.
da3b1bab 793
abc6c64f 794Wunused-but-set-parameter
1090f26f 795Common Var(warn_unused_but_set_parameter) Warning EnabledBy(Wunused && Wextra)
8fb42bbc 796Warn when a function parameter is only set, otherwise unused.
abc6c64f 797
798Wunused-but-set-variable
fbb6fbd8 799Common Var(warn_unused_but_set_variable) Warning EnabledBy(Wunused)
8fb42bbc 800Warn when a variable is only set, otherwise unused.
abc6c64f 801
6f2f567f 802Wunused-function
fbb6fbd8 803Common Var(warn_unused_function) Warning EnabledBy(Wunused)
8fb42bbc 804Warn when a function is unused.
6f2f567f 805
806Wunused-label
fbb6fbd8 807Common Var(warn_unused_label) Warning EnabledBy(Wunused)
8fb42bbc 808Warn when a label is unused.
6f2f567f 809
810Wunused-parameter
1090f26f 811Common Var(warn_unused_parameter) Warning EnabledBy(Wunused && Wextra)
8fb42bbc 812Warn when a function parameter is unused.
6f2f567f 813
814Wunused-value
fbb6fbd8 815Common Var(warn_unused_value) Warning EnabledBy(Wunused)
8fb42bbc 816Warn when an expression value is unused.
6f2f567f 817
818Wunused-variable
fbb6fbd8 819Common Var(warn_unused_variable) Warning EnabledBy(Wunused)
8fb42bbc 820Warn when a variable is unused.
6f2f567f 821
c81ed7c1 822Wcoverage-mismatch
21cd990d 823Common Var(warn_coverage_mismatch) Init(1) Warning
8fb42bbc 824Warn in case profiles in -fprofile-use do not match.
c81ed7c1 825
928efcfe 826Wvector-operation-performance
827Common Var(warn_vector_operation_performance) Warning
8fb42bbc 828Warn when a vector operation is compiled outside the SIMD.
928efcfe 829
e28aa114 830Xassembler
831Driver Separate
832
833Xlinker
834Driver Separate
835
836Xpreprocessor
837Driver Separate
838
3bfde2af 839Z
840Driver
841
e690b385 842aux-info
6bd9d862 843Common Separate Var(aux_info_file_name)
8fb42bbc 844-aux-info <file> Emit declaration information into <file>.
e690b385 845
846aux-info=
67089c6b 847Common Joined Alias(aux-info)
e690b385 848
849auxbase
6bd9d862 850Common Separate RejectDriver Var(aux_base_name)
e690b385 851
852auxbase-strip
e28aa114 853Common Separate RejectDriver
854
5789e05b 855coverage
856Driver
857
e28aa114 858c
859Driver
e690b385 860
861d
862Common Joined
8fb42bbc 863-d<letters> Enable dumps from specific passes of the compiler.
e690b385 864
865dumpbase
6bd9d862 866Common Separate Var(dump_base_name)
8fb42bbc 867-dumpbase <file> Set the file basename to be used for dumps.
e690b385 868
50ca7c37 869dumpdir
6bd9d862 870Common Separate Var(dump_dir_name)
8fb42bbc 871-dumpdir <dir> Set the directory name to be used for dumps.
50ca7c37 872
e28aa114 873dumpmachine
874Driver
875
876dumpspecs
877Driver
878
879dumpversion
880Driver
881
0812bb06 882dumpfullversion
883Driver
884
5789e05b 885e
886Driver Joined Separate
887
455188e9 888; This option has historically been passed down to the linker by an
889; accident of a %{e*} spec, so ensure it continues to be passed down
890; as a single option. The supported option for this purpose is
891; -rdynamic. See PR 47390.
892export-dynamic
893Driver Undocumented
894
82a16202 895; The version of the C++ ABI in use. The following values are allowed:
896;
897; 0: The version of the ABI believed most conformant with the C++ ABI
898; specification. This ABI may change as bugs are discovered and fixed.
899; Therefore, 0 will not necessarily indicate the same ABI in different
900; versions of G++.
901;
f591db9a 902; 1: The version of the ABI first used in G++ 3.2. No longer selectable.
82a16202 903;
1d524ff7 904; 2: The version of the ABI first used in G++ 3.4, and the default
905; until GCC 4.9.
29e2e80a 906;
907; 3: The version of the ABI that fixes the missing underscore
908; in template non-type arguments of pointer type.
909;
910; 4: The version of the ABI that introduces unambiguous mangling of
87d553db 911; vector types. First selectable in G++ 4.5.
e9e7c198 912;
4d7aaf8e 913; 5: The version of the ABI that ignores attribute const/noreturn
87d553db 914; in function pointer mangling, and corrects mangling of decltype and
4d7aaf8e 915; function parameters used in other parameters and the return type.
87d553db 916; First selectable in G++ 4.6.
4d7aaf8e 917;
2d847c18 918; 6: The version of the ABI that doesn't promote scoped enums to int and
919; changes the mangling of template argument packs, const/static_cast,
920; prefix ++ and --, and a class scope function used as a template
921; argument.
72fc0f64 922; First selectable in G++ 4.7.
923;
dc78d83a 924; 7: The version of the ABI that treats nullptr_t as a builtin type and
925; corrects the mangling of lambdas in default argument scope.
fbcdace8 926; First selectable in G++ 4.8.
862e5b6d 927;
928; 8: The version of the ABI that corrects the substitution behavior of
929; function types with function-cv-qualifiers.
399fbdbd 930; First selectable in G++ 4.9 and default in G++ 5.
931;
42af8c2a 932; 9: The version of the ABI that corrects the alignment of nullptr_t.
933; First selectable and default in G++ 5.2.
934;
935; 10: The version of the ABI that mangles attributes that affect type
936; identity, such as ia32 calling convention attributes (stdcall, etc.)
937; Default in G++ 6 (set in c_common_post_options).
862e5b6d 938;
7896267d 939; 11: The version of the ABI that corrects mangling of sizeof... expressions
940; and introduces new inheriting constructor handling.
17fdf85c 941; Default in G++ 7.
942;
5d11282b 943; 12: Corrects the calling convention for classes with only deleted copy/move
532d84ff 944; constructors and changes passing/returning of empty records.
a1dbee61 945; Default in G++ 8.1.
946;
947; 13: Fixes the accidental change in 12 to the calling convention for classes
948; with deleted copy constructor and trivial move constructor.
949; Default in G++ 8.2.
5d11282b 950;
82a16202 951; Additional positive integers will be assigned as new versions of
952; the ABI become the default version of the ABI.
e100aadc 953fabi-version=
f2c0954e 954Common Joined RejectNegative UInteger Var(flag_abi_version) Init(0)
8fb42bbc 955The version of the C++ ABI in use.
e100aadc 956
56dfa44a 957faggressive-loop-optimizations
8fb42bbc 958Common Report Var(flag_aggressive_loop_optimizations) Optimization Init(1)
959Aggressively optimize loops using language constraints.
56dfa44a 960
ecdb6d1a 961falign-functions
6848a0ae 962Common Report Var(flag_align_functions) Optimization
8fb42bbc 963Align the start of functions.
ecdb6d1a 964
941a4893 965falign-functions=
6848a0ae 966Common RejectNegative Joined Var(str_align_functions) Optimization
941a4893 967
32cc215b 968flimit-function-alignment
969Common Report Var(flag_limit_function_alignment) Optimization Init(0)
970
ecdb6d1a 971falign-jumps
6848a0ae 972Common Report Var(flag_align_jumps) Optimization
8fb42bbc 973Align labels which are only reached by jumping.
ecdb6d1a 974
941a4893 975falign-jumps=
6848a0ae 976Common RejectNegative Joined Var(str_align_jumps) Optimization
941a4893 977
ecdb6d1a 978falign-labels
6848a0ae 979Common Report Var(flag_align_labels) Optimization
8fb42bbc 980Align all labels.
ecdb6d1a 981
941a4893 982falign-labels=
6848a0ae 983Common RejectNegative Joined Var(str_align_labels) Optimization
941a4893 984
ecdb6d1a 985falign-loops
6848a0ae 986Common Report Var(flag_align_loops) Optimization
8fb42bbc 987Align the start of loops.
ecdb6d1a 988
941a4893 989falign-loops=
6848a0ae 990Common RejectNegative Joined Var(str_align_loops)
941a4893 991
ecdb6d1a 992fargument-alias
3b0273a1 993Common Ignore
e190b18a 994Does nothing. Preserved for backward compatibility.
ecdb6d1a 995
996fargument-noalias
3b0273a1 997Common Ignore
e190b18a 998Does nothing. Preserved for backward compatibility.
ecdb6d1a 999
1000fargument-noalias-global
3b0273a1 1001Common Ignore
e190b18a 1002Does nothing. Preserved for backward compatibility.
ecdb6d1a 1003
5ff22aea 1004fargument-noalias-anything
3b0273a1 1005Common Ignore
e190b18a 1006Does nothing. Preserved for backward compatibility.
5ff22aea 1007
9e46467d 1008fsanitize=
1009Common Driver Report Joined
8fb42bbc 1010Select what to sanitize.
b077695d 1011
ccec7674 1012fsanitize-coverage=
1013Common Report Joined
dc4ed9fd 1014Select type of coverage sanitization.
ccec7674 1015
cf357977 1016fasan-shadow-offset=
1017Common Joined RejectNegative Var(common_deferred_options) Defer
1018-fasan-shadow-offset=<number> Use custom shadow memory offset.
1019
4d3c996b 1020fsanitize-sections=
1021Common Joined RejectNegative Var(common_deferred_options) Defer
1022-fsanitize-sections=<sec1,sec2,...> Sanitize global variables
1023in user-defined sections.
1024
c2598081 1025fsanitize-recover=
1026Common Report Joined
8fb42bbc 1027After diagnosing undefined behavior attempt to continue execution.
7311d7c1 1028
c2598081 1029fsanitize-recover
1030Common Report
8fb42bbc 1031This switch is deprecated; use -fsanitize-recover= instead.
c2598081 1032
629b6abc 1033fsanitize-address-use-after-scope
1034Common Driver Report Var(flag_sanitize_address_use_after_scope) Init(0)
1035
7311d7c1 1036fsanitize-undefined-trap-on-error
d21bbc3f 1037Common Driver Report Var(flag_sanitize_undefined_trap_on_error) Init(0)
8fb42bbc 1038Use trap instead of a library function for undefined behavior sanitization.
7311d7c1 1039
ecdb6d1a 1040fasynchronous-unwind-tables
87c75316 1041Common Report Var(flag_asynchronous_unwind_tables) Optimization
8fb42bbc 1042Generate unwind tables that are exact at each instruction boundary.
ecdb6d1a 1043
3072d30e 1044fauto-inc-dec
bfedbed1 1045Common Report Var(flag_auto_inc_dec) Init(1) Optimization
8fb42bbc 1046Generate auto-inc/dec instructions.
3072d30e 1047
94bed7c3 1048fauto-profile
bfedbed1 1049Common Report Var(flag_auto_profile)
94bed7c3 1050Use sample profile information for call graph node weights. The default
1051profile file is fbdata.afdo in 'pwd'.
1052
1053fauto-profile=
1054Common Joined RejectNegative Var(auto_profile_file)
1055Use sample profile information for call graph node weights. The profile
1056file is specified in the argument.
1057
82a16202 1058; -fcheck-bounds causes gcc to generate array bounds checks.
1059; For C, C++ and ObjC: defaults off.
1060; For Java: defaults to on.
1061; For Fortran: defaults to off.
ecdb6d1a 1062fbounds-check
2e9da478 1063Common Report Var(flag_bounds_check)
8fb42bbc 1064Generate code to check bounds before indexing arrays.
ecdb6d1a 1065
1066fbranch-count-reg
1941e89d 1067Common Report Var(flag_branch_on_count_reg) Optimization
8fb42bbc 1068Replace add, compare, branch with branch on count register.
ecdb6d1a 1069
1070fbranch-probabilities
87c75316 1071Common Report Var(flag_branch_probabilities) Optimization
8fb42bbc 1072Use profiling information for branch probabilities.
ecdb6d1a 1073
1e06725a 1074fbranch-target-load-optimize
87c75316 1075Common Report Var(flag_branch_target_load_optimize) Optimization
8fb42bbc 1076Perform branch target load optimization before prologue / epilogue threading.
1e06725a 1077
1078fbranch-target-load-optimize2
87c75316 1079Common Report Var(flag_branch_target_load_optimize2) Optimization
8fb42bbc 1080Perform branch target load optimization after prologue / epilogue threading.
1e06725a 1081
08d163a9 1082fbtr-bb-exclusive
87c75316 1083Common Report Var(flag_btr_bb_exclusive) Optimization
8fb42bbc 1084Restrict target load migration not to re-use registers in any basic block.
08d163a9 1085
941a4893 1086fcall-saved-
f0da0668 1087Common Joined RejectNegative Var(common_deferred_options) Defer
8fb42bbc 1088-fcall-saved-<register> Mark <register> as being preserved across functions.
941a4893 1089
1090fcall-used-
f0da0668 1091Common Joined RejectNegative Var(common_deferred_options) Defer
8fb42bbc 1092-fcall-used-<register> Mark <register> as being corrupted by function calls.
941a4893 1093
82a16202 1094; Nonzero for -fcaller-saves: allocate values in regs that need to
1095; be saved across function calls, if that produces overall better code.
1096; Optional now, so people can test it.
1e06725a 1097fcaller-saves
87c75316 1098Common Report Var(flag_caller_saves) Optimization
8fb42bbc 1099Save registers around function calls.
1e06725a 1100
355572cc 1101fcheck-data-deps
1102Common Report Var(flag_check_data_deps)
0d8001a7 1103This switch is deprecated; do not use.
355572cc 1104
0b7282f1 1105fcheck-new
1106Common Var(flag_check_new)
8fb42bbc 1107Check the return value of new in C++.
0b7282f1 1108
92deda7a 1109fchecking
9ccb8d8d 1110Common Var(flag_checking) Init(CHECKING_P ? ENABLE_EXTRA_CHECKING ? 2 : 1 : 0)
92deda7a 1111Perform internal consistency checkings.
1112
c05979a1 1113fchecking=
1114Common Joined RejectNegative UInteger Var(flag_checking)
1115Perform internal consistency checkings.
1116
ad010d47 1117fcode-hoisting
1118Common Report Var(flag_code_hoisting) Optimization
1119Enable code hoisting.
1120
bbb0a662 1121fcombine-stack-adjustments
1122Common Report Var(flag_combine_stack_adjustments) Optimization
1123Looks for opportunities to reduce stack adjustments and stack references.
1124
ecdb6d1a 1125fcommon
bfedbed1 1126Common Report Var(flag_no_common,0)
8fb42bbc 1127Do not put uninitialized globals in the common section.
ecdb6d1a 1128
e28aa114 1129fcompare-debug
1130Driver
1131; Converted by the driver to -fcompare-debug= options.
1132
71278019 1133fcompare-debug=
e28aa114 1134Common Driver JoinedOrMissing RejectNegative Var(flag_compare_debug_opt)
8fb42bbc 1135-fcompare-debug[=<opts>] Compile with and without e.g. -gtoggle, and compare the final-insns dump.
71278019 1136
1137fcompare-debug-second
ab3728ee 1138Common Driver RejectNegative Var(flag_compare_debug)
8fb42bbc 1139Run only the second compilation of -fcompare-debug.
71278019 1140
a50372fe 1141fcompare-elim
1142Common Report Var(flag_compare_elim_after_reload) Optimization
8fb42bbc 1143Perform comparison elimination after register allocation has finished.
a50372fe 1144
9845d120 1145fconserve-stack
1146Common Var(flag_conserve_stack) Optimization
8fb42bbc 1147Do not perform optimizations increasing noticeably stack usage.
9845d120 1148
ecdb6d1a 1149fcprop-registers
87c75316 1150Common Report Var(flag_cprop_registers) Optimization
8fb42bbc 1151Perform a register copy-propagation optimization pass.
ecdb6d1a 1152
1e06725a 1153fcrossjumping
87c75316 1154Common Report Var(flag_crossjumping) Optimization
8fb42bbc 1155Perform cross-jumping optimization.
1e06725a 1156
1157fcse-follow-jumps
87c75316 1158Common Report Var(flag_cse_follow_jumps) Optimization
8fb42bbc 1159When running CSE, follow jumps to their targets.
1e06725a 1160
1161fcse-skip-blocks
3b0273a1 1162Common Ignore
d743aba2 1163Does nothing. Preserved for backward compatibility.
1e06725a 1164
45b9d334 1165fcx-limited-range
ecee1b29 1166Common Report Var(flag_cx_limited_range) Optimization SetByCombined
8fb42bbc 1167Omit range reduction step when performing complex division.
45b9d334 1168
608256a0 1169fcx-fortran-rules
1170Common Report Var(flag_cx_fortran_rules) Optimization
8fb42bbc 1171Complex multiplication and division follow Fortran rules.
608256a0 1172
ecdb6d1a 1173fdata-sections
bfedbed1 1174Common Report Var(flag_data_sections)
8fb42bbc 1175Place data items into their own section.
ecdb6d1a 1176
d2153a46 1177fdbg-cnt-list
9faf44d6 1178Common Report Var(common_deferred_options) Defer
d2153a46 1179List all available debugging counters with their limits and counts.
1180
3072d30e 1181fdbg-cnt=
9faf44d6 1182Common RejectNegative Joined Var(common_deferred_options) Defer
795785e1 1183-fdbg-cnt=<counter>[:<lower_limit>]:<upper_limit>[,<counter>:...] Set the debug counter limit.
3072d30e 1184
5f1f2de5 1185fdebug-prefix-map=
9faf44d6 1186Common Joined RejectNegative Var(common_deferred_options) Defer
859b51f8 1187-fdebug-prefix-map=<old>=<new> Map one directory name to another in debug information.
1188
1189ffile-prefix-map=
1190Common Joined RejectNegative Var(common_deferred_options) Defer
1191-ffile-prefix-map=<old>=<new> Map one directory name to another in compilation result.
5f1f2de5 1192
240a87ff 1193fdebug-types-section
052166fd 1194Common Report Var(flag_debug_types_section) Init(0)
240a87ff 1195Output .debug_types section when using DWARF v4 debuginfo.
1196
82a16202 1197; Nonzero for -fdefer-pop: don't pop args after each function call
1198; instead save them up to pop many calls' args with one insns.
1e06725a 1199fdefer-pop
87c75316 1200Common Report Var(flag_defer_pop) Optimization
8fb42bbc 1201Defer popping functions args from stack until later.
1e06725a 1202
1203fdelayed-branch
87c75316 1204Common Report Var(flag_delayed_branch) Optimization
8fb42bbc 1205Attempt to fill delay slots of branch instructions.
1e06725a 1206
bc0dfc8d 1207fdelete-dead-exceptions
bfedbed1 1208Common Report Var(flag_delete_dead_exceptions) Init(0) Optimization
8fb42bbc 1209Delete dead instructions that may throw exceptions.
bc0dfc8d 1210
1e06725a 1211fdelete-null-pointer-checks
2d66501e 1212Common Report Var(flag_delete_null_pointer_checks) Init(-1) Optimization
8fb42bbc 1213Delete useless null pointer checks.
1e06725a 1214
a8aa8251 1215fdevirtualize-at-ltrans
1216Common Report Var(flag_ltrans_devirtualize)
8fb42bbc 1217Stream extra data to support more aggressive devirtualization in LTO local transformation mode.
a8aa8251 1218
84f6cc40 1219fdevirtualize-speculatively
1220Common Report Var(flag_devirtualize_speculatively) Optimization
8fb42bbc 1221Perform speculative devirtualization.
84f6cc40 1222
0276be0c 1223fdevirtualize
1224Common Report Var(flag_devirtualize) Optimization
1225Try to convert virtual calls to direct ones.
1226
1e06725a 1227fdiagnostics-show-location=
d62a5950 1228Common Joined RejectNegative Enum(diagnostic_prefixing_rule)
8fb42bbc 1229-fdiagnostics-show-location=[once|every-line] How often to emit source location at the beginning of line-wrapped diagnostics.
1e06725a 1230
d62a5950 1231; Required for these enum values.
1232SourceInclude
1233pretty-print.h
1234
1235Enum
1236Name(diagnostic_prefixing_rule) Type(int)
1237
1238EnumValue
1239Enum(diagnostic_prefixing_rule) String(once) Value(DIAGNOSTICS_SHOW_PREFIX_ONCE)
1240
1241EnumValue
1242Enum(diagnostic_prefixing_rule) String(every-line) Value(DIAGNOSTICS_SHOW_PREFIX_EVERY_LINE)
1243
5a983084 1244fdiagnostics-show-caret
1245Common Var(flag_diagnostics_show_caret) Init(1)
8fb42bbc 1246Show the source line with a caret indicating the column.
5a983084 1247
41609f8b 1248fdiagnostics-color
1249Common Alias(fdiagnostics-color=,always,never)
1250;
1251
1252fdiagnostics-color=
9b11544d 1253Driver Common Joined RejectNegative Var(flag_diagnostics_show_color) Enum(diagnostic_color_rule) Init(DIAGNOSTICS_COLOR_NO)
8fb42bbc 1254-fdiagnostics-color=[never|always|auto] Colorize diagnostics.
41609f8b 1255
1256; Required for these enum values.
1257SourceInclude
1258diagnostic-color.h
1259
1260Enum
1261Name(diagnostic_color_rule) Type(int)
1262
1263EnumValue
1264Enum(diagnostic_color_rule) String(never) Value(DIAGNOSTICS_COLOR_NO)
1265
1266EnumValue
1267Enum(diagnostic_color_rule) String(always) Value(DIAGNOSTICS_COLOR_YES)
1268
1269EnumValue
1270Enum(diagnostic_color_rule) String(auto) Value(DIAGNOSTICS_COLOR_AUTO)
1271
6628b04d 1272fdiagnostics-parseable-fixits
1273Common Var(flag_diagnostics_parseable_fixits)
d00ce6b9 1274Print fix-it hints in machine-readable form.
6628b04d 1275
40a431fa 1276fdiagnostics-generate-patch
1277Common Var(flag_diagnostics_generate_patch)
1278Print fix-it hints to stderr in unified diff format.
1279
efb9d9ee 1280fdiagnostics-show-option
3fee9a69 1281Common Var(flag_diagnostics_show_option) Init(1)
8fb42bbc 1282Amend appropriate diagnostic messages with the command line option that controls them.
efb9d9ee 1283
c3087ce0 1284fdisable-
1285Common Joined RejectNegative Var(common_deferred_options) Defer
8fb42bbc 1286-fdisable-[tree|rtl|ipa]-<pass>=range1+range2 disables an optimization pass.
c3087ce0 1287
1288fenable-
1289Common Joined RejectNegative Var(common_deferred_options) Defer
8fb42bbc 1290-fenable-[tree|rtl|ipa]-<pass>=range1+range2 enables an optimization pass.
c3087ce0 1291
4ee9c684 1292fdump-
f0da0668 1293Common Joined RejectNegative Var(common_deferred_options) Defer
8fb42bbc 1294-fdump-<type> Dump various compiler internals to a file.
4ee9c684 1295
0b1d266f 1296fdump-final-insns
1297Driver RejectNegative
1298
71278019 1299fdump-final-insns=
1300Common RejectNegative Joined Var(flag_dump_final_insns)
8fb42bbc 1301-fdump-final-insns=filename Dump to filename the insns at the end of translation.
71278019 1302
929d2a90 1303fdump-go-spec=
1304Common RejectNegative Joined Var(flag_dump_go_spec)
8fb42bbc 1305-fdump-go-spec=filename Write all declarations to file as Go code.
929d2a90 1306
969239ad 1307fdump-noaddr
1308Common Report Var(flag_dump_noaddr)
8fb42bbc 1309Suppress output of addresses in debugging dumps.
969239ad 1310
a31e9496 1311freport-bug
1312Common Driver Var(flag_report_bug)
1313Collect and dump debug information into temporary file if ICE in C/C++
d0abd9e0 1314compiler occurred.
a31e9496 1315
28f17529 1316fdump-internal-locations
1317Common Var(flag_dump_locations) Init(0)
8fb42bbc 1318Dump detailed information on GCC's internal representation of source code locations.
28f17529 1319
ec4791a8 1320fdump-passes
1321Common Var(flag_dump_passes) Init(0)
8fb42bbc 1322Dump optimization passes.
ec4791a8 1323
ecdb6d1a 1324fdump-unnumbered
0f8defe5 1325Common Report Var(flag_dump_unnumbered)
8fb42bbc 1326Suppress output of instruction numbers, line number notes and addresses in debugging dumps.
ecdb6d1a 1327
0a59e439 1328fdump-unnumbered-links
0f8defe5 1329Common Report Var(flag_dump_unnumbered_links)
8fb42bbc 1330Suppress output of previous and next insn numbers in debugging dumps.
0a59e439 1331
9845d120 1332fdwarf2-cfi-asm
1333Common Report Var(flag_dwarf2_cfi_asm) Init(HAVE_GAS_CFI_DIRECTIVE)
1334Enable CFI tables via GAS assembler directives.
1335
f1aa280c 1336fearly-inlining
87c75316 1337Common Report Var(flag_early_inlining) Init(1) Optimization
8fb42bbc 1338Perform early inlining.
f1aa280c 1339
1e06725a 1340feliminate-dwarf2-dups
1734e8a0 1341Common Ignore
1342Does nothing. Preserved for backward compatibility.
1e06725a 1343
2f29eac3 1344fipa-sra
1345Common Report Var(flag_ipa_sra) Init(0) Optimization
8fb42bbc 1346Perform interprocedural reduction of aggregates.
2f29eac3 1347
262444a6 1348feliminate-unused-debug-symbols
2e9da478 1349Common Report Var(flag_debug_only_used_symbols)
8fb42bbc 1350Perform unused symbol elimination in debug info.
262444a6 1351
1e06725a 1352feliminate-unused-debug-types
2e9da478 1353Common Report Var(flag_eliminate_unused_debug_types) Init(1)
8fb42bbc 1354Perform unused type elimination in debug info.
1e06725a 1355
0c573f98 1356femit-class-debug-always
fd5e1dfe 1357Common Report Var(flag_emit_class_debug_always) Init(0)
0c573f98 1358Do not suppress C++ class debug information.
1359
ecdb6d1a 1360fexceptions
87c75316 1361Common Report Var(flag_exceptions) Optimization
8fb42bbc 1362Enable exception handling.
ecdb6d1a 1363
1e06725a 1364fexpensive-optimizations
87c75316 1365Common Report Var(flag_expensive_optimizations) Optimization
8fb42bbc 1366Perform a number of minor, expensive optimizations.
1e06725a 1367
c6418a4e 1368fexcess-precision=
9660cb79 1369Common Joined RejectNegative Enum(excess_precision) Var(flag_excess_precision_cmdline) Init(EXCESS_PRECISION_DEFAULT) SetByCombined
8fb42bbc 1370-fexcess-precision=[fast|standard] Specify handling of excess floating-point precision.
c6418a4e 1371
d62a5950 1372Enum
1373Name(excess_precision) Type(enum excess_precision) UnknownError(unknown excess precision style %qs)
1374
1375EnumValue
1376Enum(excess_precision) String(fast) Value(EXCESS_PRECISION_FAST)
1377
1378EnumValue
1379Enum(excess_precision) String(standard) Value(EXCESS_PRECISION_STANDARD)
1380
a998ac00 1381; Whether we permit the extended set of values for FLT_EVAL_METHOD
1382; introduced in ISO/IEC TS 18661-3, or limit ourselves to those in C99/C11.
1383fpermitted-flt-eval-methods=
1384Common Joined RejectNegative Enum(permitted_flt_eval_methods) Var(flag_permitted_flt_eval_methods) Init(PERMITTED_FLT_EVAL_METHODS_DEFAULT)
1385-fpermitted-flt-eval-methods=[c11|ts-18661] Specify which values of FLT_EVAL_METHOD are permitted.
1386
1387Enum
1388Name(permitted_flt_eval_methods) Type(enum permitted_flt_eval_methods) UnknownError(unknown specification for the set of FLT_EVAL_METHOD values to permit %qs)
1389
1390EnumValue
1391Enum(permitted_flt_eval_methods) String(c11) Value(PERMITTED_FLT_EVAL_METHODS_C11)
1392
1393EnumValue
1394Enum(permitted_flt_eval_methods) String(ts-18661-3) Value(PERMITTED_FLT_EVAL_METHODS_TS_18661)
1395
941a4893 1396ffast-math
b032c4dd 1397Common Optimization
941a4893 1398
b33542ab 1399ffat-lto-objects
76eca1df 1400Common Var(flag_fat_lto_objects)
b33542ab 1401Output lto objects containing both the intermediate language and binary output.
1402
ecdb6d1a 1403ffinite-math-only
ecee1b29 1404Common Report Var(flag_finite_math_only) Optimization SetByCombined
8fb42bbc 1405Assume no NaNs or infinities are generated.
ecdb6d1a 1406
941a4893 1407ffixed-
f0da0668 1408Common Joined RejectNegative Var(common_deferred_options) Defer
8fb42bbc 1409-ffixed-<register> Mark <register> as being unavailable to the compiler.
941a4893 1410
1e06725a 1411ffloat-store
87c75316 1412Common Report Var(flag_float_store) Optimization
8fb42bbc 1413Don't allocate floats and doubles in extended-precision registers.
1e06725a 1414
1415fforce-addr
3b0273a1 1416Common Ignore
4d25f9eb 1417Does nothing. Preserved for backward compatibility.
1e06725a 1418
55d51835 1419fforward-propagate
1420Common Report Var(flag_forward_propagate) Optimization
8fb42bbc 1421Perform a forward propagation pass on RTL.
42a3a38b 1422
b9be572e 1423ffp-contract=
b92389a6 1424Common Joined RejectNegative Enum(fp_contract_mode) Var(flag_fp_contract_mode) Init(FP_CONTRACT_FAST) Optimization
6ac368bb 1425-ffp-contract=[off|on|fast] Perform floating-point expression contraction.
b9be572e 1426
d62a5950 1427Enum
1428Name(fp_contract_mode) Type(enum fp_contract_mode) UnknownError(unknown floating point contraction style %qs)
1429
1430EnumValue
1431Enum(fp_contract_mode) String(off) Value(FP_CONTRACT_OFF)
1432
1433; Not implemented, fall back to conservative FP_CONTRACT_OFF.
1434EnumValue
1435Enum(fp_contract_mode) String(on) Value(FP_CONTRACT_OFF)
1436
1437EnumValue
1438Enum(fp_contract_mode) String(fast) Value(FP_CONTRACT_FAST)
1439
20702ea3 1440ffp-int-builtin-inexact
1441Common Report Var(flag_fp_int_builtin_inexact) Init(1) Optimization
1442Allow built-in functions ceil, floor, round, trunc to raise \"inexact\" exceptions.
1443
82a16202 1444; Nonzero means don't put addresses of constant functions in registers.
1445; Used for compiling the Unix kernel, where strange substitutions are
1446; done on the assembly output.
1e06725a 1447ffunction-cse
bfedbed1 1448Common Report Var(flag_no_function_cse,0) Optimization
8fb42bbc 1449Allow function addresses to be held in registers.
1e06725a 1450
ecdb6d1a 1451ffunction-sections
2e9da478 1452Common Report Var(flag_function_sections)
8fb42bbc 1453Place each function into its own section.
ecdb6d1a 1454
1e06725a 1455fgcse
87c75316 1456Common Report Var(flag_gcse) Optimization
8fb42bbc 1457Perform global common subexpression elimination.
1e06725a 1458
1459fgcse-lm
87c75316 1460Common Report Var(flag_gcse_lm) Init(1) Optimization
8fb42bbc 1461Perform enhanced load motion during global common subexpression elimination.
1e06725a 1462
1463fgcse-sm
87c75316 1464Common Report Var(flag_gcse_sm) Init(0) Optimization
8fb42bbc 1465Perform store motion after global common subexpression elimination.
1e06725a 1466
5c47e414 1467fgcse-las
87c75316 1468Common Report Var(flag_gcse_las) Init(0) Optimization
839f8415 1469Perform redundant load after store elimination in global common subexpression
8fb42bbc 1470elimination.
839f8415 1471
1472fgcse-after-reload
87c75316 1473Common Report Var(flag_gcse_after_reload) Optimization
8fb42bbc 1474Perform global common subexpression elimination after register allocation has
1475finished.
5c47e414 1476
f78f10d6 1477Enum
1478Name(dwarf_gnat_encodings) Type(int)
1479
1480EnumValue
1481Enum(dwarf_gnat_encodings) String(all) Value(DWARF_GNAT_ENCODINGS_ALL)
1482
1483EnumValue
1484Enum(dwarf_gnat_encodings) String(gdb) Value(DWARF_GNAT_ENCODINGS_GDB)
1485
1486EnumValue
1487Enum(dwarf_gnat_encodings) String(minimal) Value(DWARF_GNAT_ENCODINGS_MINIMAL)
1488
1489fgnat-encodings=
1490Common Enum(dwarf_gnat_encodings) Joined RejectNegative Report Undocumented Var(gnat_encodings)
1491-fgnat-encodings=[all|gdb|minimal] Select the balance between GNAT encodings and standard DWARF emitted in the debug information
1492
d3399492 1493; This option is not documented yet as its semantics will change.
255b6be7 1494fgraphite
f36e946d 1495Common Report Var(flag_graphite) Optimization
8fb42bbc 1496Enable in and out of Graphite representation.
255b6be7 1497
26c166eb 1498fgraphite-identity
1499Common Report Var(flag_graphite_identity) Optimization
8fb42bbc 1500Enable Graphite Identity transformation.
26c166eb 1501
239e9670 1502fhoist-adjacent-loads
1503Common Report Var(flag_hoist_adjacent_loads) Optimization
1504Enable hoisting adjacent loads to encourage generating conditional move
8fb42bbc 1505instructions.
239e9670 1506
5068be18 1507fkeep-gc-roots-live
1508Common Undocumented Report Var(flag_keep_gc_roots_live) Optimization
1509; Always keep a pointer to a live memory block
1510
16848556 1511floop-parallelize-all
1512Common Report Var(flag_loop_parallelize_all) Optimization
8fb42bbc 1513Mark all loops as parallel.
26c166eb 1514
255b6be7 1515floop-strip-mine
4cc0f4e2 1516Common Alias(floop-nest-optimize)
8fb42bbc 1517Enable loop nest transforms. Same as -floop-nest-optimize.
255b6be7 1518
1519floop-interchange
5051abaf 1520Common Report Var(flag_loop_interchange) Optimization
1521Enable loop interchange on trees.
255b6be7 1522
1523floop-block
4cc0f4e2 1524Common Alias(floop-nest-optimize)
8fb42bbc 1525Enable loop nest transforms. Same as -floop-nest-optimize.
255b6be7 1526
120092dd 1527floop-unroll-and-jam
83d3a417 1528Common Report Var(flag_unroll_jam) Optimization
1529Perform unroll-and-jam on loops.
8fb42bbc 1530
4c0315d0 1531fgnu-tm
1532Common Report Var(flag_tm)
8fb42bbc 1533Enable support for GNU transactional memory.
4c0315d0 1534
6d5d95d6 1535fgnu-unique
1536Common Report Var(flag_gnu_unique) Init(1)
8fb42bbc 1537Use STB_GNU_UNIQUE if supported by the assembler.
6d5d95d6 1538
d60a90cc 1539floop-flatten
d094f1d6 1540Common Ignore
1541Does nothing. Preserved for backward compatibility.
d60a90cc 1542
89049f25 1543floop-nest-optimize
b3de8ca0 1544Common Report Var(flag_loop_nest_optimize) Optimization
71130ef8 1545Enable the loop nest optimizer.
89049f25 1546
a420d927 1547fstrict-volatile-bitfields
bfedbed1 1548Common Report Var(flag_strict_volatile_bitfields) Init(-1) Optimization
8fb42bbc 1549Force bitfield accesses to match their type width.
a420d927 1550
3d3e04ac 1551fstore-merging
1552Common Report Var(flag_store_merging) Optimization
1553Merge adjacent stores.
1554
ecdb6d1a 1555fguess-branch-probability
87c75316 1556Common Report Var(flag_guess_branch_prob) Optimization
8fb42bbc 1557Enable guessing of branch probabilities.
ecdb6d1a 1558
82a16202 1559; Nonzero means ignore `#ident' directives. 0 means handle them.
1560; Generate position-independent code for executables if possible
1561; On SVR4 targets, it also controls whether or not to emit a
1562; string identifying the compiler.
ecdb6d1a 1563fident
2e9da478 1564Common Report Var(flag_no_ident,0)
8fb42bbc 1565Process #ident directives.
ecdb6d1a 1566
1e06725a 1567fif-conversion
87c75316 1568Common Report Var(flag_if_conversion) Optimization
8fb42bbc 1569Perform conversion of conditional jumps to branchless equivalents.
1e06725a 1570
1571fif-conversion2
87c75316 1572Common Report Var(flag_if_conversion2) Optimization
8fb42bbc 1573Perform conversion of conditional jumps to conditional execution.
1e06725a 1574
5680e508 1575fstack-reuse=
e137219a 1576Common Joined RejectNegative Enum(stack_reuse_level) Var(flag_stack_reuse) Init(SR_ALL) Optimization
6ac368bb 1577-fstack-reuse=[all|named_vars|none] Set stack reuse level for local variables.
5680e508 1578
1579Enum
1580Name(stack_reuse_level) Type(enum stack_reuse_level) UnknownError(unknown Stack Reuse Level %qs)
1581
1582EnumValue
1583Enum(stack_reuse_level) String(all) Value(SR_ALL)
1584
1585EnumValue
1586Enum(stack_reuse_level) String(named_vars) Value(SR_NAMED_VARS)
1587
1588EnumValue
1589Enum(stack_reuse_level) String(none) Value(SR_NONE)
1590
0cb1935d 1591ftree-loop-if-convert
1592Common Report Var(flag_tree_loop_if_convert) Init(-1) Optimization
8fb42bbc 1593Convert conditional jumps in innermost loops to branchless equivalents.
0cb1935d 1594
3b91ccd9 1595ftree-loop-if-convert-stores
b6f4c9b5 1596Common Ignore
1597Does nothing. Preserved for backward compatibility.
3b91ccd9 1598
82a16202 1599; -finhibit-size-directive inhibits output of .size for ELF.
1600; This is used only for compiling crtstuff.c,
1601; and it may be extended to other effects
1602; needed for crtstuff.c on other systems.
ecdb6d1a 1603finhibit-size-directive
2e9da478 1604Common Report Var(flag_inhibit_size_directive)
8fb42bbc 1605Do not generate .size directives.
ecdb6d1a 1606
f8daee9b 1607findirect-inlining
d1f68cd8 1608Common Report Var(flag_indirect_inlining) Optimization
8fb42bbc 1609Perform indirect inlining.
f8daee9b 1610
b75cad1f 1611; General flag to enable inlining. Specifying -fno-inline will disable
1612; all inlining apart from always-inline functions.
1e06725a 1613finline
e5166d71 1614Common Report Var(flag_no_inline,0) Init(0) Optimization
8fb42bbc 1615Enable inlining of function declared \"inline\", disabling disables all inlining.
1e06725a 1616
b97510b2 1617finline-small-functions
1618Common Report Var(flag_inline_small_functions) Optimization
8fb42bbc 1619Integrate functions into their callers when code size is known not to grow.
b97510b2 1620
1e06725a 1621finline-functions
87c75316 1622Common Report Var(flag_inline_functions) Optimization
8fb42bbc 1623Integrate functions not declared \"inline\" into their callers when profitable.
1e06725a 1624
f1aa280c 1625finline-functions-called-once
055af069 1626Common Report Var(flag_inline_functions_called_once) Optimization
8fb42bbc 1627Integrate functions only required by their single caller.
9e0baf4d 1628
39470ac3 1629finline-limit-
67089c6b 1630Common RejectNegative Joined Alias(finline-limit=)
39470ac3 1631
1632finline-limit=
1633Common RejectNegative Joined UInteger
8fb42bbc 1634-finline-limit=<number> Limit the size of inlined functions to <number>.
39470ac3 1635
1cd6e20d 1636finline-atomics
1637Common Report Var(flag_inline_atomics) Init(1) Optimization
1638Inline __atomic operations when a lock free instruction sequence is available.
1639
3c0f15b4 1640fcf-protection
1641Common RejectNegative Alias(fcf-protection=,full)
1642
1643fcf-protection=
1644Common Report Joined RejectNegative Enum(cf_protection_level) Var(flag_cf_protection) Init(CF_NONE)
1645-fcf-protection=[full|branch|return|none] Instrument functions with checks to verify jump/call/return control-flow transfer
1646instructions have valid targets.
1647
1648Enum
dc4ed9fd 1649Name(cf_protection_level) Type(enum cf_protection_level) UnknownError(unknown Control-Flow Protection Level %qs)
3c0f15b4 1650
1651EnumValue
1652Enum(cf_protection_level) String(full) Value(CF_FULL)
1653
1654EnumValue
1655Enum(cf_protection_level) String(branch) Value(CF_BRANCH)
1656
1657EnumValue
1658Enum(cf_protection_level) String(return) Value(CF_RETURN)
1659
1660EnumValue
1661Enum(cf_protection_level) String(none) Value(CF_NONE)
1662
ecdb6d1a 1663finstrument-functions
2e9da478 1664Common Report Var(flag_instrument_function_entry_exit)
8fb42bbc 1665Instrument function entry and exit with profiling calls.
ecdb6d1a 1666
a95c0776 1667finstrument-functions-exclude-function-list=
1668Common RejectNegative Joined
8fb42bbc 1669-finstrument-functions-exclude-function-list=name,... Do not instrument listed functions.
a95c0776 1670
1671finstrument-functions-exclude-file-list=
1672Common RejectNegative Joined
8fb42bbc 1673-finstrument-functions-exclude-file-list=filename,... Do not instrument functions listed in files.
a95c0776 1674
a17a73c7 1675fipa-cp
87c75316 1676Common Report Var(flag_ipa_cp) Optimization
8fb42bbc 1677Perform interprocedural constant propagation.
a17a73c7 1678
2a15795f 1679fipa-cp-clone
1680Common Report Var(flag_ipa_cp_clone) Optimization
8fb42bbc 1681Perform cloning to make Interprocedural constant propagation stronger.
2a15795f 1682
7715e0c8 1683fipa-cp-alignment
afdf4bf2 1684Common Ignore
1685Does nothing. Preserved for backward compatibility.
7715e0c8 1686
a54071b2 1687fipa-bit-cp
1688Common Report Var(flag_ipa_bit_cp) Optimization
1689Perform interprocedural bitwise constant propagation.
1690
4e2db0ad 1691fipa-profile
1692Common Report Var(flag_ipa_profile) Init(0) Optimization
8fb42bbc 1693Perform interprocedural profile propagation.
f7d118a9 1694
bdf4f142 1695fipa-pta
87c75316 1696Common Report Var(flag_ipa_pta) Init(0) Optimization
8fb42bbc 1697Perform interprocedural points-to analysis.
bdf4f142 1698
4e2db0ad 1699fipa-pure-const
1700Common Report Var(flag_ipa_pure_const) Init(0) Optimization
8fb42bbc 1701Discover pure and const functions.
4e2db0ad 1702
52200d03 1703fipa-icf
1704Common Report Var(flag_ipa_icf) Optimization
8fb42bbc 1705Perform Identical Code Folding for functions and read-only variables.
52200d03 1706
1707fipa-icf-functions
1708Common Report Var(flag_ipa_icf_functions) Optimization
8fb42bbc 1709Perform Identical Code Folding for functions.
52200d03 1710
1711fipa-icf-variables
131ad74b 1712Common Report Var(flag_ipa_icf_variables) Optimization
8fb42bbc 1713Perform Identical Code Folding for variables.
52200d03 1714
f7d118a9 1715fipa-reference
87c75316 1716Common Report Var(flag_ipa_reference) Init(0) Optimization
8fb42bbc 1717Discover readonly and non addressable static variables.
f7d118a9 1718
604cde73 1719fipa-matrix-reorg
fa62b5da 1720Common Ignore
1721Does nothing. Preserved for backward compatibility.
604cde73 1722
f27ac341 1723fipa-struct-reorg
210a8eb6 1724Common Ignore
1725Does nothing. Preserved for backward compatibility.
f27ac341 1726
25a8e007 1727fipa-vrp
1728Common Report Var(flag_ipa_vrp) Optimization
1729Perform IPA Value Range Propagation.
1730
47dd2e78 1731fira-algorithm=
bfedbed1 1732Common Joined RejectNegative Enum(ira_algorithm) Var(flag_ira_algorithm) Init(IRA_ALGORITHM_CB) Optimization
6ac368bb 1733-fira-algorithm=[CB|priority] Set the used IRA algorithm.
14792f4e 1734
d62a5950 1735Enum
1736Name(ira_algorithm) Type(enum ira_algorithm) UnknownError(unknown IRA algorithm %qs)
1737
1738EnumValue
1739Enum(ira_algorithm) String(CB) Value(IRA_ALGORITHM_CB)
1740
1741EnumValue
1742Enum(ira_algorithm) String(priority) Value(IRA_ALGORITHM_PRIORITY)
1743
14792f4e 1744fira-region=
bfedbed1 1745Common Joined RejectNegative Enum(ira_region) Var(flag_ira_region) Init(IRA_REGION_AUTODETECT) Optimization
6ac368bb 1746-fira-region=[one|all|mixed] Set regions for IRA.
47dd2e78 1747
d62a5950 1748Enum
1749Name(ira_region) Type(enum ira_region) UnknownError(unknown IRA region %qs)
1750
1751EnumValue
1752Enum(ira_region) String(one) Value(IRA_REGION_ONE)
1753
1754EnumValue
1755Enum(ira_region) String(all) Value(IRA_REGION_ALL)
1756
1757EnumValue
1758Enum(ira_region) String(mixed) Value(IRA_REGION_MIXED)
1759
1ec78e16 1760fira-hoist-pressure
1761Common Report Var(flag_ira_hoist_pressure) Init(1) Optimization
1762Use IRA based register pressure calculation
1763in RTL hoist optimizations.
1764
e8eed2f8 1765fira-loop-pressure
155354e5 1766Common Report Var(flag_ira_loop_pressure) Optimization
e8eed2f8 1767Use IRA based register pressure calculation
1768in RTL loop optimizations.
1769
47dd2e78 1770fira-share-save-slots
bfedbed1 1771Common Report Var(flag_ira_share_save_slots) Init(1) Optimization
47dd2e78 1772Share slots for saving different hard registers.
1773
1774fira-share-spill-slots
bfedbed1 1775Common Report Var(flag_ira_share_spill_slots) Init(1) Optimization
47dd2e78 1776Share stack slots for spilled pseudo-registers.
1777
1778fira-verbose=
4aafe913 1779Common RejectNegative Joined UInteger Var(flag_ira_verbose) Init(5)
cf210371 1780-fira-verbose=<number> Control IRA's level of diagnostic messages.
47dd2e78 1781
dec41e98 1782fivopts
87c75316 1783Common Report Var(flag_ivopts) Init(1) Optimization
8fb42bbc 1784Optimize induction variables on trees.
dec41e98 1785
51d8e657 1786fjump-tables
87c75316 1787Common Var(flag_jump_tables) Init(1) Optimization
8fb42bbc 1788Use jump tables for sufficiently large switch statements.
51d8e657 1789
1e06725a 1790fkeep-inline-functions
2e9da478 1791Common Report Var(flag_keep_inline_functions)
8fb42bbc 1792Generate code for functions even if they are fully inlined.
1e06725a 1793
c071eedc 1794fkeep-static-functions
1795Common Report Var(flag_keep_static_functions)
8fb42bbc 1796Generate code for static functions even if they are never called.
c071eedc 1797
1e06725a 1798fkeep-static-consts
2e9da478 1799Common Report Var(flag_keep_static_consts) Init(1)
8fb42bbc 1800Emit static const variables even if they are not used.
1e06725a 1801
ecdb6d1a 1802fleading-underscore
2e9da478 1803Common Report Var(flag_leading_underscore) Init(-1)
8fb42bbc 1804Give external symbols a leading underscore.
ecdb6d1a 1805
4f87b914 1806floop-optimize
3b0273a1 1807Common Ignore
334ec2d8 1808Does nothing. Preserved for backward compatibility.
4f87b914 1809
497ba60f 1810flra-remat
1811Common Report Var(flag_lra_remat) Optimization
8fb42bbc 1812Do CFG-sensitive rematerialization in LRA.
497ba60f 1813
7bfefa9d 1814flto
cbcf2791 1815Common
7bfefa9d 1816Enable link-time optimization.
1817
cbcf2791 1818flto=
1819Common RejectNegative Joined Var(flag_lto)
1820Link-time optimization with number of parallel jobs or jobserver.
1821
4a137074 1822Enum
1823Name(lto_partition_model) Type(enum lto_partition_model) UnknownError(unknown LTO partitioning model %qs)
48e3ea52 1824
4a137074 1825EnumValue
1826Enum(lto_partition_model) String(none) Value(LTO_PARTITION_NONE)
48e3ea52 1827
4a137074 1828EnumValue
1829Enum(lto_partition_model) String(one) Value(LTO_PARTITION_ONE)
1830
1831EnumValue
1832Enum(lto_partition_model) String(balanced) Value(LTO_PARTITION_BALANCED)
1833
1834EnumValue
1835Enum(lto_partition_model) String(1to1) Value(LTO_PARTITION_1TO1)
1836
1837EnumValue
1838Enum(lto_partition_model) String(max) Value(LTO_PARTITION_MAX)
0851d795 1839
4a137074 1840flto-partition=
1841Common Joined RejectNegative Enum(lto_partition_model) Var(flag_lto_partition) Init(LTO_PARTITION_BALANCED)
8fb42bbc 1842Specify the algorithm to partition symbols and vars at linktime.
cbcf2791 1843
7bfefa9d 1844; The initial value of -1 comes from Z_DEFAULT_COMPRESSION in zlib.h.
1845flto-compression-level=
52368c34 1846Common Joined RejectNegative UInteger Var(flag_lto_compression_level) Init(-1) IntegerRange(0, 9)
8fb42bbc 1847-flto-compression-level=<number> Use zlib compression level <number> for IL.
7bfefa9d 1848
d585ba22 1849flto-odr-type-merging
1850Common Report Var(flag_lto_odr_type_mering) Init(1)
8fb42bbc 1851Merge C++ types using One Definition Rule.
d585ba22 1852
7bfefa9d 1853flto-report
596c40fb 1854Common Report Var(flag_lto_report) Init(0)
8fb42bbc 1855Report various link-time optimization statistics.
7bfefa9d 1856
b63a7a3e 1857flto-report-wpa
1858Common Report Var(flag_lto_report_wpa) Init(0)
8fb42bbc 1859Report various link-time optimization statistics for WPA only.
b63a7a3e 1860
ecdb6d1a 1861fmath-errno
ecee1b29 1862Common Report Var(flag_errno_math) Init(1) Optimization SetByCombined
8fb42bbc 1863Set errno after built-in math functions.
ecdb6d1a 1864
566d7c74 1865fmax-errors=
1866Common Joined RejectNegative UInteger Var(flag_max_errors)
8fb42bbc 1867-fmax-errors=<number> Maximum number of errors to report.
566d7c74 1868
ecdb6d1a 1869fmem-report
2e9da478 1870Common Report Var(mem_report)
8fb42bbc 1871Report on permanent memory allocation.
ecdb6d1a 1872
93e5f148 1873fmem-report-wpa
1874Common Report Var(mem_report_wpa)
8fb42bbc 1875Report on permanent memory allocation in WPA only.
93e5f148 1876
82a16202 1877; This will attempt to merge constant section constants, if 1 only
1878; string constants and constants from constant pool, if 2 also constant
1879; variables.
ecdb6d1a 1880fmerge-all-constants
ce7711df 1881Common Report Var(flag_merge_constants,2) Init(1)
8fb42bbc 1882Attempt to merge identical constants and constant variables.
ecdb6d1a 1883
1884fmerge-constants
ce7711df 1885Common Report Var(flag_merge_constants,1)
8fb42bbc 1886Attempt to merge identical constants across compilation units.
ecdb6d1a 1887
7765591b 1888fmerge-debug-strings
1889Common Report Var(flag_merge_debug_strings) Init(1)
8fb42bbc 1890Attempt to merge identical debug strings across compilation units.
7765591b 1891
1e06725a 1892fmessage-length=
1893Common RejectNegative Joined UInteger
8fb42bbc 1894-fmessage-length=<number> Limit diagnostics to <number> characters per line. 0 suppresses line-wrapping.
1e06725a 1895
406a73e7 1896fmodulo-sched
87c75316 1897Common Report Var(flag_modulo_sched) Optimization
8fb42bbc 1898Perform SMS based modulo scheduling before the first scheduling pass.
406a73e7 1899
3a943084 1900fmodulo-sched-allow-regmoves
bfedbed1 1901Common Report Var(flag_modulo_sched_allow_regmoves) Optimization
8fb42bbc 1902Perform SMS based modulo scheduling with register moves allowed.
3a943084 1903
3a0ecac2 1904fmove-loop-invariants
1941e89d 1905Common Report Var(flag_move_loop_invariants) Optimization
8fb42bbc 1906Move loop invariant computations out of loops.
3a0ecac2 1907
3072d30e 1908fdce
76c71f34 1909Common Var(flag_dce) Init(1) Optimization
8fb42bbc 1910Use the RTL dead code elimination pass.
3072d30e 1911
1912fdse
76c71f34 1913Common Var(flag_dse) Init(1) Optimization
8fb42bbc 1914Use the RTL dead store elimination pass.
3072d30e 1915
f045d41d 1916freschedule-modulo-scheduled-loops
87c75316 1917Common Report Var(flag_resched_modulo_sched) Optimization
8fb42bbc 1918Enable/Disable the traditional scheduling in loops that already passed modulo scheduling.
f045d41d 1919
ecdb6d1a 1920fnon-call-exceptions
87c75316 1921Common Report Var(flag_non_call_exceptions) Optimization
8fb42bbc 1922Support synchronous non-call exceptions.
ecdb6d1a 1923
38e21583 1924foffload=
1925Common Driver Joined MissingArgError(options or targets missing after %qs)
8fb42bbc 1926-foffload=<targets>=<options> Specify offloading targets and options for them.
38e21583 1927
1928foffload-abi=
1929Common Joined RejectNegative Enum(offload_abi) Var(flag_offload_abi) Init(OFFLOAD_ABI_UNSET)
8fb42bbc 1930-foffload-abi=[lp64|ilp32] Set the ABI to use in an offload compiler.
38e21583 1931
1932Enum
1933Name(offload_abi) Type(enum offload_abi) UnknownError(unknown offload ABI %qs)
1934
1935EnumValue
1936Enum(offload_abi) String(ilp32) Value(OFFLOAD_ABI_ILP32)
1937
1938EnumValue
1939Enum(offload_abi) String(lp64) Value(OFFLOAD_ABI_LP64)
1940
1e06725a 1941fomit-frame-pointer
87c75316 1942Common Report Var(flag_omit_frame_pointer) Optimization
8fb42bbc 1943When possible do not generate stack frames.
1e06725a 1944
7bd765d4 1945fopt-info
1946Common Report Var(flag_opt_info) Optimization
8fb42bbc 1947Enable all optimization info dumps on stderr.
7bd765d4 1948
1949fopt-info-
1950Common Joined RejectNegative Var(common_deferred_options) Defer
8fb42bbc 1951-fopt-info[-<type>=filename] Dump compiler optimization details.
7bd765d4 1952
ecdb6d1a 1953foptimize-register-move
284f0696 1954Common Ignore
1955Does nothing. Preserved for backward compatibility.
ecdb6d1a 1956
1e06725a 1957foptimize-sibling-calls
87c75316 1958Common Report Var(flag_optimize_sibling_calls) Optimization
8fb42bbc 1959Optimize sibling and tail recursive calls.
1e06725a 1960
2862cf88 1961fpartial-inlining
bfedbed1 1962Common Report Var(flag_partial_inlining) Optimization
8fb42bbc 1963Perform partial inlining.
2862cf88 1964
51949610 1965fpre-ipa-mem-report
1966Common Report Var(pre_ipa_mem_report)
8fb42bbc 1967Report on memory allocation before interprocedural optimization.
51949610 1968
1969fpost-ipa-mem-report
1970Common Report Var(post_ipa_mem_report)
8fb42bbc 1971Report on memory allocation before interprocedural optimization.
51949610 1972
ecdb6d1a 1973fpack-struct
87c75316 1974Common Report Var(flag_pack_struct) Optimization
8fb42bbc 1975Pack structure members together without holes.
ecdb6d1a 1976
6b5553e5 1977fpack-struct=
87c75316 1978Common RejectNegative Joined UInteger Optimization
8fb42bbc 1979-fpack-struct=<number> Set initial maximum structure member alignment.
6b5553e5 1980
1e06725a 1981fpcc-struct-return
4aafe913 1982Common Report Var(flag_pcc_struct_return,1) Init(DEFAULT_PCC_STRUCT_RETURN)
8fb42bbc 1983Return small aggregates in memory, not registers.
1e06725a 1984
1985fpeel-loops
87c75316 1986Common Report Var(flag_peel_loops) Optimization
8fb42bbc 1987Perform loop peeling.
1e06725a 1988
1989fpeephole
87c75316 1990Common Report Var(flag_no_peephole,0) Optimization
8fb42bbc 1991Enable machine specific peephole optimizations.
1e06725a 1992
ecdb6d1a 1993fpeephole2
87c75316 1994Common Report Var(flag_peephole2) Optimization
8fb42bbc 1995Enable an RTL peephole pass before sched2.
ecdb6d1a 1996
82a16202 1997fPIC
5ec4a949 1998Common Report Var(flag_pic,2) Negative(fPIE) Init(-1)
8fb42bbc 1999Generate position-independent code if possible (large mode).
82a16202 2000
2001fPIE
e9abca4f 2002Common Report Var(flag_pie,2) Negative(fpic) Init(-1)
8fb42bbc 2003Generate position-independent code for executables if possible (large mode).
82a16202 2004
ecdb6d1a 2005fpic
5ec4a949 2006Common Report Var(flag_pic,1) Negative(fpie) Init(-1)
8fb42bbc 2007Generate position-independent code if possible (small mode).
ecdb6d1a 2008
2009fpie
e9abca4f 2010Common Report Var(flag_pie,1) Negative(fPIC) Init(-1)
8fb42bbc 2011Generate position-independent code for executables if possible (small mode).
ecdb6d1a 2012
562ef5cc 2013fplt
2014Common Report Var(flag_plt) Init(1) Optimization
8fb42bbc 2015Use PLT for PIC calls (-fno-plt: load the address from GOT at call site).
562ef5cc 2016
9227b6fc 2017fplugin=
f0da0668 2018Common Joined RejectNegative Var(common_deferred_options) Defer
8fb42bbc 2019Specify a plugin to load.
9227b6fc 2020
2021fplugin-arg-
f0da0668 2022Common Joined RejectNegative Var(common_deferred_options) Defer
8fb42bbc 2023-fplugin-arg-<name>-<key>[=<value>] Specify argument <key>=<value> for plugin <name>.
9227b6fc 2024
ad4a85ad 2025fpredictive-commoning
76c71f34 2026Common Report Var(flag_predictive_commoning) Optimization
ad4a85ad 2027Run predictive commoning optimization.
2028
1e06725a 2029fprefetch-loop-arrays
cd459e62 2030Common Report Var(flag_prefetch_loop_arrays) Init(-1) Optimization
8fb42bbc 2031Generate prefetch instructions, if available, for arrays in loops.
1e06725a 2032
ecdb6d1a 2033fprofile
2e9da478 2034Common Report Var(profile_flag)
8fb42bbc 2035Enable basic program profiling code.
ecdb6d1a 2036
9bdf2425 2037fprofile-abs-path
2038Common Report Var(profile_abs_path_flag)
2039Generate absolute source path names for gcov.
2040
ecdb6d1a 2041fprofile-arcs
2e9da478 2042Common Report Var(profile_arc_flag)
8fb42bbc 2043Insert arc-based program profiling code.
ecdb6d1a 2044
3e3a0e9c 2045fprofile-dir=
cc4fa57a 2046Common Joined RejectNegative Var(profile_data_prefix)
3e3a0e9c 2047Set the top-level directory for storing the profile data.
2048The default is 'pwd'.
2049
e0dc6f2b 2050fprofile-correction
2051Common Report Var(flag_profile_correction)
8fb42bbc 2052Enable correction of flow inconsistent profile data input.
e0dc6f2b 2053
7132b755 2054fprofile-update=
2055Common Joined RejectNegative Enum(profile_update) Var(flag_profile_update) Init(PROFILE_UPDATE_SINGLE)
3af33bcf 2056-fprofile-update=[single|atomic|prefer-atomic] Set the profile update method.
7132b755 2057
2058Enum
2059Name(profile_update) Type(enum profile_update) UnknownError(unknown profile update method %qs)
2060
2061EnumValue
2062Enum(profile_update) String(single) Value(PROFILE_UPDATE_SINGLE)
2063
2064EnumValue
2065Enum(profile_update) String(atomic) Value(PROFILE_UPDATE_ATOMIC)
2066
3af33bcf 2067EnumValue
2068Enum(profile_update) String(prefer-atomic) Value(PROFILE_UPDATE_PREFER_ATOMIC)
2069
7dea76ba 2070fprofile-generate
2071Common
8fb42bbc 2072Enable common options for generating profile info for profile feedback directed optimizations.
7dea76ba 2073
3e3a0e9c 2074fprofile-generate=
2075Common Joined RejectNegative
8fb42bbc 2076Enable common options for generating profile info for profile feedback directed optimizations, and set -fprofile-dir=.
3e3a0e9c 2077
7dea76ba 2078fprofile-use
3e3a0e9c 2079Common Var(flag_profile_use)
8fb42bbc 2080Enable common options for performing profile feedback directed optimizations.
7dea76ba 2081
3e3a0e9c 2082fprofile-use=
2083Common Joined RejectNegative
8fb42bbc 2084Enable common options for performing profile feedback directed optimizations, and set -fprofile-dir=.
3e3a0e9c 2085
1c6a7b8c 2086fprofile-values
2e9da478 2087Common Report Var(flag_profile_values)
8fb42bbc 2088Insert code to profile values of expressions.
1c6a7b8c 2089
5168ef25 2090fprofile-report
2091Common Report Var(profile_report)
8fb42bbc 2092Report on consistency of profile.
5168ef25 2093
af48f0b1 2094fprofile-reorder-functions
2095Common Report Var(flag_profile_reorder_functions)
8fb42bbc 2096Enable function reordering that improves code placement.
af48f0b1 2097
e6c4532a 2098fpatchable-function-entry=
2099Common Joined Optimization
2100Insert NOP instructions at each function entry.
2101
1e06725a 2102frandom-seed
9faf44d6 2103Common Var(common_deferred_options) Defer
1e06725a 2104
2105frandom-seed=
9faf44d6 2106Common Joined RejectNegative Var(common_deferred_options) Defer
4589a801 2107-frandom-seed=<string> Make compile reproducible using <string>.
1e06725a 2108
7c6733e8 2109; This switch causes the command line that was used to create an
2110; object file to be recorded into the object file. The exact format
2111; of this recording is target and binary file format dependent.
2112; It is related to the -fverbose-asm switch, but that switch only
2113; records information in the assembler output file as comments, so
2114; they never reach the object file.
2115frecord-gcc-switches
2116Common Report Var(flag_record_gcc_switches)
2117Record gcc command line switches in the object file.
2118
1e06725a 2119freg-struct-return
5461e683 2120Common Report Var(flag_pcc_struct_return,0) Optimization
8fb42bbc 2121Return small aggregates in registers.
1e06725a 2122
ecdb6d1a 2123fregmove
284f0696 2124Common Ignore
2125Does nothing. Preserved for backward compatibility.
ecdb6d1a 2126
e65bc032 2127flifetime-dse
5065f8a0 2128Common Report Var(flag_lifetime_dse,2) Init(2) Optimization
e65bc032 2129Tell DSE that the storage for a C++ object is dead when the constructor
2130starts and when the destructor finishes.
2131
5065f8a0 2132flifetime-dse=
52368c34 2133Common Joined RejectNegative UInteger Var(flag_lifetime_dse) Optimization IntegerRange(0, 2)
5065f8a0 2134
57a8bf1b 2135flive-range-shrinkage
2136Common Report Var(flag_live_range_shrinkage) Init(0) Optimization
8fb42bbc 2137Relief of register pressure through live range shrinkage.
57a8bf1b 2138
ecdb6d1a 2139frename-registers
87c75316 2140Common Report Var(flag_rename_registers) Init(2) Optimization
8fb42bbc 2141Perform a register renaming optimization pass.
ecdb6d1a 2142
012ad66c 2143fschedule-fusion
2144Common Report Var(flag_schedule_fusion) Init(2) Optimization
8fb42bbc 2145Perform a target dependent instruction fusion optimization pass.
012ad66c 2146
ecdb6d1a 2147freorder-blocks
87c75316 2148Common Report Var(flag_reorder_blocks) Optimization
8fb42bbc 2149Reorder basic blocks to improve code placement.
ecdb6d1a 2150
e57ef194 2151freorder-blocks-algorithm=
2152Common Joined RejectNegative Enum(reorder_blocks_algorithm) Var(flag_reorder_blocks_algorithm) Init(REORDER_BLOCKS_ALGORITHM_SIMPLE) Optimization
6ac368bb 2153-freorder-blocks-algorithm=[simple|stc] Set the used basic block reordering algorithm.
e57ef194 2154
2155Enum
2156Name(reorder_blocks_algorithm) Type(enum reorder_blocks_algorithm) UnknownError(unknown basic block reordering algorithm %qs)
2157
2158EnumValue
2159Enum(reorder_blocks_algorithm) String(simple) Value(REORDER_BLOCKS_ALGORITHM_SIMPLE)
2160
2161EnumValue
2162Enum(reorder_blocks_algorithm) String(stc) Value(REORDER_BLOCKS_ALGORITHM_STC)
2163
4f18499c 2164freorder-blocks-and-partition
87c75316 2165Common Report Var(flag_reorder_blocks_and_partition) Optimization
8fb42bbc 2166Reorder basic blocks and partition into hot and cold sections.
4f18499c 2167
ecdb6d1a 2168freorder-functions
87c75316 2169Common Report Var(flag_reorder_functions) Optimization
8fb42bbc 2170Reorder functions to improve code placement.
ecdb6d1a 2171
1e06725a 2172frerun-cse-after-loop
c17f64cc 2173Common Report Var(flag_rerun_cse_after_loop) Optimization
8fb42bbc 2174Add a common subexpression elimination pass after loop optimizations.
1e06725a 2175
4f87b914 2176frerun-loop-opt
3b0273a1 2177Common Ignore
334ec2d8 2178Does nothing. Preserved for backward compatibility.
4f87b914 2179
5466f589 2180frounding-math
ecee1b29 2181Common Report Var(flag_rounding_math) Optimization SetByCombined
8fb42bbc 2182Disable optimizations that assume default FP rounding behavior.
5466f589 2183
ecdb6d1a 2184fsched-interblock
87c75316 2185Common Report Var(flag_schedule_interblock) Init(1) Optimization
8fb42bbc 2186Enable scheduling across basic blocks.
ecdb6d1a 2187
a7dcf969 2188fsched-pressure
2189Common Report Var(flag_sched_pressure) Init(0) Optimization
8fb42bbc 2190Enable register pressure sensitive insn scheduling.
a7dcf969 2191
ecdb6d1a 2192fsched-spec
87c75316 2193Common Report Var(flag_schedule_speculative) Init(1) Optimization
8fb42bbc 2194Allow speculative motion of non-loads.
ecdb6d1a 2195
2196fsched-spec-load
87c75316 2197Common Report Var(flag_schedule_speculative_load) Optimization
8fb42bbc 2198Allow speculative motion of some loads.
ecdb6d1a 2199
2200fsched-spec-load-dangerous
87c75316 2201Common Report Var(flag_schedule_speculative_load_dangerous) Optimization
8fb42bbc 2202Allow speculative motion of more loads.
ecdb6d1a 2203
1e06725a 2204fsched-verbose=
043bc144 2205Common RejectNegative Joined UInteger Var(sched_verbose_param) Init(1)
8fb42bbc 2206-fsched-verbose=<number> Set the verbosity level of the scheduler.
1e06725a 2207
ecdb6d1a 2208fsched2-use-superblocks
87c75316 2209Common Report Var(flag_sched2_use_superblocks) Optimization
8fb42bbc 2210If scheduling post reload, do superblock scheduling.
ecdb6d1a 2211
2212fsched2-use-traces
3b0273a1 2213Common Ignore
fda153ea 2214Does nothing. Preserved for backward compatibility.
ecdb6d1a 2215
1e06725a 2216fschedule-insns
87c75316 2217Common Report Var(flag_schedule_insns) Optimization
8fb42bbc 2218Reschedule instructions before register allocation.
1e06725a 2219
2220fschedule-insns2
87c75316 2221Common Report Var(flag_schedule_insns_after_reload) Optimization
8fb42bbc 2222Reschedule instructions after register allocation.
1e06725a 2223
e1ab7874 2224; This flag should be on when a target implements non-trivial
2225; scheduling hooks, maybe saving some information for its own sake.
8fb42bbc 2226; On IA64, for example, this is used for correct bundling.
e1ab7874 2227fselective-scheduling
2228Common Report Var(flag_selective_scheduling) Optimization
8fb42bbc 2229Schedule instructions using selective scheduling algorithm.
e1ab7874 2230
2231fselective-scheduling2
8fb42bbc 2232Common Report Var(flag_selective_scheduling2) Optimization
2233Run selective scheduling after reload.
e1ab7874 2234
c081d2fc 2235fself-test=
2236Common Undocumented Joined Var(flag_self_test)
2237Run self-tests, using the given path to locate test files.
99b4f3a2 2238
e1ab7874 2239fsel-sched-pipelining
2240Common Report Var(flag_sel_sched_pipelining) Init(0) Optimization
8fb42bbc 2241Perform software pipelining of inner loops during selective scheduling.
e1ab7874 2242
2243fsel-sched-pipelining-outer-loops
2244Common Report Var(flag_sel_sched_pipelining_outer_loops) Init(0) Optimization
8fb42bbc 2245Perform software pipelining of outer loops during selective scheduling.
e1ab7874 2246
2247fsel-sched-reschedule-pipelined
2248Common Report Var(flag_sel_sched_reschedule_pipelined) Init(0) Optimization
8fb42bbc 2249Reschedule pipelined regions without pipelining.
e1ab7874 2250
92bfaaee 2251fsemantic-interposition
2252Common Report Var(flag_semantic_interposition) Init(1)
8fb42bbc 2253Allow interposing function (or variables) by ones with different semantics (or initializer) respectively by dynamic linker.
92bfaaee 2254
82a16202 2255; sched_stalled_insns means that insns can be moved prematurely from the queue
2256; of stalled insns into the ready list.
52c4b43f 2257fsched-stalled-insns
46f8e3b0 2258Common Report Var(flag_sched_stalled_insns) Optimization UInteger
8fb42bbc 2259Allow premature scheduling of queued insns.
52c4b43f 2260
2261fsched-stalled-insns=
bfedbed1 2262Common RejectNegative Joined UInteger Optimization
8fb42bbc 2263-fsched-stalled-insns=<number> Set number of queued insns that can be prematurely scheduled.
52c4b43f 2264
82a16202 2265; sched_stalled_insns_dep controls how many recently scheduled cycles will
2266; be examined for a dependency on a stalled insn that is candidate for
2267; premature removal from the queue of stalled insns into the ready list (has
2268; an effect only if the flag 'sched_stalled_insns' is set).
52c4b43f 2269fsched-stalled-insns-dep
46f8e3b0 2270Common Report Var(flag_sched_stalled_insns_dep,1) Init(1) Optimization UInteger
8fb42bbc 2271Set dependence distance checking in premature scheduling of queued insns.
52c4b43f 2272
2273fsched-stalled-insns-dep=
bfedbed1 2274Common RejectNegative Joined UInteger Optimization
8fb42bbc 2275-fsched-stalled-insns-dep=<number> Set dependence distance checking in premature scheduling of queued insns.
52c4b43f 2276
4d569386 2277fsched-group-heuristic
2278Common Report Var(flag_sched_group_heuristic) Init(1) Optimization
8fb42bbc 2279Enable the group heuristic in the scheduler.
4d569386 2280
2281fsched-critical-path-heuristic
2282Common Report Var(flag_sched_critical_path_heuristic) Init(1) Optimization
8fb42bbc 2283Enable the critical path heuristic in the scheduler.
4d569386 2284
2285fsched-spec-insn-heuristic
2286Common Report Var(flag_sched_spec_insn_heuristic) Init(1) Optimization
8fb42bbc 2287Enable the speculative instruction heuristic in the scheduler.
4d569386 2288
4d569386 2289fsched-rank-heuristic
2290Common Report Var(flag_sched_rank_heuristic) Init(1) Optimization
8fb42bbc 2291Enable the rank heuristic in the scheduler.
4d569386 2292
2293fsched-last-insn-heuristic
2294Common Report Var(flag_sched_last_insn_heuristic) Init(1) Optimization
8fb42bbc 2295Enable the last instruction heuristic in the scheduler.
4d569386 2296
2297fsched-dep-count-heuristic
2298Common Report Var(flag_sched_dep_count_heuristic) Init(1) Optimization
8fb42bbc 2299Enable the dependent count heuristic in the scheduler.
4d569386 2300
f2d0e9f1 2301fsection-anchors
87c75316 2302Common Report Var(flag_section_anchors) Optimization
8fb42bbc 2303Access data in the same section from shared anchor points.
f2d0e9f1 2304
2b74c150 2305fsee
3b0273a1 2306Common Ignore
1bc99153 2307Does nothing. Preserved for backward compatibility.
2b74c150 2308
a5b022e7 2309fzee
1d4227c3 2310Common Ignore
2311Does nothing. Preserved for backward compatibility.
2312
2313free
2314Common Report Var(flag_ree) Init(0)
2315Turn on Redundant Extensions Elimination pass.
a5b022e7 2316
5fd4bf3b 2317fshow-column
abf6a617 2318Common Report Var(flag_show_column) Init(1)
8fb42bbc 2319Show column numbers in diagnostics, when available. Default on.
5fd4bf3b 2320
1f021f97 2321fshrink-wrap
2322Common Report Var(flag_shrink_wrap) Optimization
2323Emit function prologues only before parts of the function that need it,
2324rather than at the top of the function.
2325
9be10499 2326fshrink-wrap-separate
2327Common Report Var(flag_shrink_wrap_separate) Init(1) Optimization
2328Shrink-wrap parts of the prologue and epilogue separately.
2329
ecdb6d1a 2330fsignaling-nans
ecee1b29 2331Common Report Var(flag_signaling_nans) Optimization SetByCombined
8fb42bbc 2332Disable optimizations observable by IEEE signaling NaNs.
ecdb6d1a 2333
893038cd 2334fsigned-zeros
ecee1b29 2335Common Report Var(flag_signed_zeros) Init(1) Optimization SetByCombined
8fb42bbc 2336Disable floating point optimizations that ignore the IEEE signedness of zero.
893038cd 2337
ecdb6d1a 2338fsingle-precision-constant
87c75316 2339Common Report Var(flag_single_precision_constant) Optimization
8fb42bbc 2340Convert floating point constants to single precision constants.
ecdb6d1a 2341
a9989fb4 2342fsplit-ivs-in-unroller
87c75316 2343Common Report Var(flag_split_ivs_in_unroller) Init(1) Optimization
8fb42bbc 2344Split lifetimes of induction variables when loops are unrolled.
a9989fb4 2345
48b14f50 2346fsplit-stack
2347Common Report Var(flag_split_stack) Init(-1)
8fb42bbc 2348Generate discontiguous stack frames.
48b14f50 2349
1a6a0f2a 2350fsplit-wide-types
e8831472 2351Common Report Var(flag_split_wide_types) Optimization
8fb42bbc 2352Split wide types into independent registers.
1a6a0f2a 2353
7fc2f613 2354fssa-backprop
2355Common Report Var(flag_ssa_backprop) Init(1) Optimization
2356Enable backward propagation of use properties at the SSA level.
2357
3dac50cc 2358fssa-phiopt
2359Common Report Var(flag_ssa_phiopt) Optimization
8fb42bbc 2360Optimize conditional patterns using SSA PHI nodes.
3dac50cc 2361
7c09c5f7 2362fstdarg-opt
2363Common Report Var(flag_stdarg_opt) Init(1) Optimization
8fb42bbc 2364Optimize amount of stdarg registers saved to stack at start of function.
7c09c5f7 2365
375bb675 2366fvariable-expansion-in-unroller
87c75316 2367Common Report Var(flag_variable_expansion_in_unroller) Optimization
8fb42bbc 2368Apply variable expansion when loops are unrolled.
375bb675 2369
4852b829 2370fstack-check=
74af142d 2371Common Report RejectNegative Joined Optimization
8fb42bbc 2372-fstack-check=[no|generic|specific] Insert stack checking code into the program.
4852b829 2373
ecdb6d1a 2374fstack-check
67089c6b 2375Common Alias(fstack-check=, specific, no)
8fb42bbc 2376Insert stack checking code into the program. Same as -fstack-check=specific.
ecdb6d1a 2377
74af142d 2378fstack-clash-protection
2379Common Report Var(flag_stack_clash_protection) Optimization
2380Insert code to probe each page of stack space as it is allocated to protect
2381from stack-clash style attacks.
2382
1e06725a 2383fstack-limit
f0da0668 2384Common Var(common_deferred_options) Defer
1e06725a 2385
941a4893 2386fstack-limit-register=
f0da0668 2387Common RejectNegative Joined Var(common_deferred_options) Defer
8fb42bbc 2388-fstack-limit-register=<register> Trap if the stack goes past <register>.
941a4893 2389
2390fstack-limit-symbol=
f0da0668 2391Common RejectNegative Joined Var(common_deferred_options) Defer
8fb42bbc 2392-fstack-limit-symbol=<name> Trap if the stack goes past symbol <name>.
941a4893 2393
f1a0edff 2394fstack-protector
9ed0eb00 2395Common Report Var(flag_stack_protect, 1) Init(-1) Optimization
8fb42bbc 2396Use propolice as a stack protection method.
f1a0edff 2397
2398fstack-protector-all
9ed0eb00 2399Common Report RejectNegative Var(flag_stack_protect, 2) Init(-1) Optimization
8fb42bbc 2400Use a stack protection method for every function.
f1a0edff 2401
b156ec37 2402fstack-protector-strong
9ed0eb00 2403Common Report RejectNegative Var(flag_stack_protect, 3) Init(-1) Optimization
8fb42bbc 2404Use a smart stack protection method for certain functions.
b156ec37 2405
947aa916 2406fstack-protector-explicit
9ed0eb00 2407Common Report RejectNegative Var(flag_stack_protect, 4) Optimization
8fb42bbc 2408Use stack protection method only for functions with the stack_protect attribute.
947aa916 2409
990495a7 2410fstack-usage
2411Common RejectNegative Var(flag_stack_usage)
8fb42bbc 2412Output stack usage information on a per-function basis.
990495a7 2413
1e06725a 2414fstrength-reduce
3b0273a1 2415Common Ignore
334ec2d8 2416Does nothing. Preserved for backward compatibility.
1e06725a 2417
82a16202 2418; Nonzero if we should do (language-dependent) alias analysis.
2419; Typically, this analysis will assume that expressions of certain
2420; types do not alias expressions of certain other types. Only used
2421; if alias analysis (in general) is enabled.
ecdb6d1a 2422fstrict-aliasing
87c75316 2423Common Report Var(flag_strict_aliasing) Optimization
8fb42bbc 2424Assume strict aliasing rules apply.
ecdb6d1a 2425
981eb798 2426fstrict-overflow
977361a1 2427Common Report
2428Treat signed overflow as undefined. Negated as -fwrapv -fwrapv-pointer.
981eb798 2429
d8219307 2430fsync-libcalls
2431Common Report Var(flag_sync_libcalls) Init(1)
8fb42bbc 2432Implement __atomic operations via libcalls to legacy __sync functions.
d8219307 2433
1e06725a 2434fsyntax-only
2e9da478 2435Common Report Var(flag_syntax_only)
8fb42bbc 2436Check for syntax errors, then stop.
1e06725a 2437
ecdb6d1a 2438ftest-coverage
2e9da478 2439Common Report Var(flag_test_coverage)
8fb42bbc 2440Create data files needed by \"gcov\".
ecdb6d1a 2441
1e06725a 2442fthread-jumps
87c75316 2443Common Report Var(flag_thread_jumps) Optimization
8fb42bbc 2444Perform jump threading optimizations.
1e06725a 2445
ecdb6d1a 2446ftime-report
2e9da478 2447Common Report Var(time_report)
8fb42bbc 2448Report the time taken by each compiler pass.
ecdb6d1a 2449
f649091c 2450ftime-report-details
2451Common Report Var(time_report_details)
2452Record times taken by sub-phases separately.
2453
941a4893 2454ftls-model=
d62a5950 2455Common Joined RejectNegative Enum(tls_model) Var(flag_tls_default) Init(TLS_MODEL_GLOBAL_DYNAMIC)
8fb42bbc 2456-ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec] Set the default thread-local storage code generation model.
941a4893 2457
d62a5950 2458Enum
2459Name(tls_model) Type(enum tls_model) UnknownError(unknown TLS model %qs)
2460
2461EnumValue
2462Enum(tls_model) String(global-dynamic) Value(TLS_MODEL_GLOBAL_DYNAMIC)
2463
2464EnumValue
2465Enum(tls_model) String(local-dynamic) Value(TLS_MODEL_LOCAL_DYNAMIC)
2466
2467EnumValue
2468Enum(tls_model) String(initial-exec) Value(TLS_MODEL_INITIAL_EXEC)
2469
2470EnumValue
2471Enum(tls_model) String(local-exec) Value(TLS_MODEL_LOCAL_EXEC)
2472
56af936e 2473ftoplevel-reorder
bfedbed1 2474Common Report Var(flag_toplevel_reorder) Init(2)
8fb42bbc 2475Reorder top level functions, variables, and asms.
56af936e 2476
1e06725a 2477ftracer
bfedbed1 2478Common Report Var(flag_tracer) Optimization
8fb42bbc 2479Perform superblock formation via tail duplication.
1e06725a 2480
a27e3913 2481ftrampolines
2482Common Report Var(flag_trampolines) Init(0)
2483For targets that normally need trampolines for nested functions, always
2484generate them instead of using descriptors.
2485
82a16202 2486; Zero means that floating-point math operations cannot generate a
2487; (user-visible) trap. This is the case, for example, in nonstop
2488; IEEE 754 arithmetic.
ecdb6d1a 2489ftrapping-math
ecee1b29 2490Common Report Var(flag_trapping_math) Init(1) Optimization SetByCombined
8fb42bbc 2491Assume floating-point operations can trap.
ecdb6d1a 2492
2493ftrapv
87c75316 2494Common Report Var(flag_trapv) Optimization
8fb42bbc 2495Trap for signed overflow in addition, subtraction and multiplication.
ecdb6d1a 2496
4ee9c684 2497ftree-ccp
87c75316 2498Common Report Var(flag_tree_ccp) Optimization
8fb42bbc 2499Enable SSA-CCP optimization on trees.
4ee9c684 2500
b7e55469 2501ftree-bit-ccp
2502Common Report Var(flag_tree_bit_ccp) Optimization
8fb42bbc 2503Enable SSA-BIT-CCP optimization on trees.
b7e55469 2504
88dbf20f 2505ftree-store-ccp
3b0273a1 2506Common Ignore
61207d43 2507Does nothing. Preserved for backward compatibility.
88dbf20f 2508
4ee9c684 2509ftree-ch
87c75316 2510Common Report Var(flag_tree_ch) Optimization
8fb42bbc 2511Enable loop header copying on trees.
4ee9c684 2512
4015e18c 2513ftree-coalesce-inlined-vars
94f92c36 2514Common Ignore RejectNegative
2515Does nothing. Preserved for backward compatibility.
4015e18c 2516
2517ftree-coalesce-vars
94f92c36 2518Common Report Var(flag_tree_coalesce_vars) Optimization
8fb42bbc 2519Enable SSA coalescing of user variables.
4015e18c 2520
4ee9c684 2521ftree-copyrename
94f92c36 2522Common Ignore
2523Does nothing. Preserved for backward compatibility.
4ee9c684 2524
88dbf20f 2525ftree-copy-prop
87c75316 2526Common Report Var(flag_tree_copy_prop) Optimization
8fb42bbc 2527Enable copy propagation on trees.
88dbf20f 2528
2529ftree-store-copy-prop
3b0273a1 2530Common Ignore
578ef723 2531Does nothing. Preserved for backward compatibility.
88dbf20f 2532
e6d0e152 2533ftree-cselim
2534Common Report Var(flag_tree_cselim) Init(2) Optimization
8fb42bbc 2535Transform condition stores into unconditional ones.
e6d0e152 2536
a347af29 2537ftree-switch-conversion
2538Common Report Var(flag_tree_switch_conversion) Optimization
2539Perform conversions of switch initializations.
2540
4ee9c684 2541ftree-dce
87c75316 2542Common Report Var(flag_tree_dce) Optimization
8fb42bbc 2543Enable SSA dead code elimination optimization on trees.
4ee9c684 2544
2545ftree-dominator-opts
87c75316 2546Common Report Var(flag_tree_dom) Optimization
8fb42bbc 2547Enable dominator optimizations.
4ee9c684 2548
51385f30 2549ftree-tail-merge
2550Common Report Var(flag_tree_tail_merge) Optimization
8fb42bbc 2551Enable tail merging on trees.
51385f30 2552
4ee9c684 2553ftree-dse
87c75316 2554Common Report Var(flag_tree_dse) Optimization
8fb42bbc 2555Enable dead store elimination.
4ee9c684 2556
408c3c77 2557ftree-forwprop
2558Common Report Var(flag_tree_forwprop) Init(1) Optimization
8fb42bbc 2559Enable forward propagation on trees.
408c3c77 2560
591c2a30 2561ftree-fre
87c75316 2562Common Report Var(flag_tree_fre) Optimization
8fb42bbc 2563Enable Full Redundancy Elimination (FRE) on trees.
591c2a30 2564
9efe50a4 2565foptimize-strlen
2566Common Report Var(flag_optimize_strlen) Optimization
8fb42bbc 2567Enable string length optimizations on trees.
9efe50a4 2568
30b10261 2569fisolate-erroneous-paths-dereference
2570Common Report Var(flag_isolate_erroneous_paths_dereference) Optimization
3c770735 2571Detect paths that trigger erroneous or undefined behavior due to
2572dereferencing a null pointer. Isolate those paths from the main control
2573flow and turn the statement with erroneous or undefined behavior into a trap.
30b10261 2574
2575fisolate-erroneous-paths-attribute
2576Common Report Var(flag_isolate_erroneous_paths_attribute) Optimization
af987227 2577Detect paths that trigger erroneous or undefined behavior due to a null value
3c770735 2578being used in a way forbidden by a returns_nonnull or nonnull
30b10261 2579attribute. Isolate those paths from the main control flow and turn the
8fb42bbc 2580statement with erroneous or undefined behavior into a trap.
db242b6d 2581
801c5610 2582ftree-loop-distribution
2b945500 2583Common Report Var(flag_tree_loop_distribution) Optimization
8fb42bbc 2584Enable loop distribution on trees.
801c5610 2585
0acf3477 2586ftree-loop-distribute-patterns
2587Common Report Var(flag_tree_loop_distribute_patterns) Optimization
8fb42bbc 2588Enable loop distribution for patterns transformed into a library call.
0acf3477 2589
41b5cc78 2590ftree-loop-im
87c75316 2591Common Report Var(flag_tree_loop_im) Init(1) Optimization
8fb42bbc 2592Enable loop invariant motion on trees.
7d23383d 2593
60cfcb79 2594ftree-loop-linear
4cc0f4e2 2595Common Alias(floop-nest-optimize)
8fb42bbc 2596Enable loop nest transforms. Same as -floop-nest-optimize.
60cfcb79 2597
41b5cc78 2598ftree-loop-ivcanon
87c75316 2599Common Report Var(flag_tree_loop_ivcanon) Init(1) Optimization
8fb42bbc 2600Create canonical induction variables in loops.
41b5cc78 2601
dcb9eccb 2602ftree-loop-optimize
87c75316 2603Common Report Var(flag_tree_loop_optimize) Init(1) Optimization
8fb42bbc 2604Enable loop optimizations on tree level.
dcb9eccb 2605
28c92cbb 2606ftree-parallelize-loops=
bfedbed1 2607Common Report Joined RejectNegative UInteger Var(flag_tree_parallelize_loops) Init(1) Optimization
78adba87 2608-ftree-parallelize-loops=<number> Enable automatic parallelization of loops.
28c92cbb 2609
408c3c77 2610ftree-phiprop
2611Common Report Var(flag_tree_phiprop) Init(1) Optimization
2612Enable hoisting loads from conditional pointers.
2613
4ee9c684 2614ftree-pre
87c75316 2615Common Report Var(flag_tree_pre) Optimization
8fb42bbc 2616Enable SSA-PRE optimization on trees.
4ee9c684 2617
0f9b384d 2618ftree-partial-pre
2619Common Report Var(flag_tree_partial_pre) Optimization
8fb42bbc 2620In SSA-PRE optimization on trees, enable partial-partial redundancy elimination.
0f9b384d 2621
408c3c77 2622ftree-pta
1941e89d 2623Common Report Var(flag_tree_pta) Optimization
408c3c77 2624Perform function-local points-to analysis on trees.
2625
621a93b1 2626ftree-reassoc
2627Common Report Var(flag_tree_reassoc) Init(1) Optimization
8fb42bbc 2628Enable reassociation on tree level.
621a93b1 2629
2be14d8b 2630ftree-salias
3b0273a1 2631Common Ignore
70393469 2632Does nothing. Preserved for backward compatibility.
2be14d8b 2633
5e733b02 2634ftree-sink
87c75316 2635Common Report Var(flag_tree_sink) Optimization
8fb42bbc 2636Enable SSA code sinking on trees.
5e733b02 2637
6de100ef 2638ftree-slsr
2639Common Report Var(flag_tree_slsr) Optimization
8fb42bbc 2640Perform straight-line strength reduction.
6de100ef 2641
4ee9c684 2642ftree-sra
87c75316 2643Common Report Var(flag_tree_sra) Optimization
8fb42bbc 2644Perform scalar replacement of aggregates.
4ee9c684 2645
2646ftree-ter
c17f64cc 2647Common Report Var(flag_tree_ter) Optimization
8fb42bbc 2648Replace temporary expressions in the SSA->normal pass.
4ee9c684 2649
87c75316 2650ftree-lrs
2651Common Report Var(flag_tree_live_range_split) Optimization
8fb42bbc 2652Perform live range splitting during the SSA->normal pass.
87c75316 2653
88dbf20f 2654ftree-vrp
87c75316 2655Common Report Var(flag_tree_vrp) Init(0) Optimization
8fb42bbc 2656Perform Value Range Propagation on trees.
88dbf20f 2657
b0e3fe96 2658fsplit-paths
2659Common Report Var(flag_split_paths) Init(0) Optimization
2660Split paths leading to loop backedges.
2661
5ab2987f 2662funconstrained-commons
2663Common Var(flag_unconstrained_commons) Optimization
2664Assume common declarations may be overridden with ones with a larger
2665trailing array.
2666
1e06725a 2667funit-at-a-time
bfedbed1 2668Common Report Var(flag_unit_at_a_time) Init(1)
8fb42bbc 2669Compile whole compilation unit at a time.
1e06725a 2670
2671funroll-loops
87c75316 2672Common Report Var(flag_unroll_loops) Optimization
8fb42bbc 2673Perform loop unrolling when iteration count is known.
1e06725a 2674
2675funroll-all-loops
87c75316 2676Common Report Var(flag_unroll_all_loops) Optimization
8fb42bbc 2677Perform loop unrolling for all loops.
1e06725a 2678
7e3cc681 2679; Nonzero means that loop optimizer may assume that the induction variables
2680; that control loops do not overflow and that the loops with nontrivial
2681; exit condition are not infinite
2682funsafe-loop-optimizations
9e609cf3 2683Common Ignore
2684Does nothing. Preserved for backward compatibility.
7e3cc681 2685
49d060d7 2686fassociative-math
bfedbed1 2687Common Report Var(flag_associative_math) SetByCombined Optimization
49d060d7 2688Allow optimization for floating-point arithmetic which may change the
2689result of the operation due to rounding.
2690
2691freciprocal-math
bfedbed1 2692Common Report Var(flag_reciprocal_math) SetByCombined Optimization
49d060d7 2693Same as -fassociative-math for expressions which include division.
2694
82a16202 2695; Nonzero means that unsafe floating-point math optimizations are allowed
2696; for the sake of speed. IEEE compliance is not guaranteed, and operations
2697; are allowed to assume that their arguments and results are "normal"
2698; (e.g., nonnegative for SQRT).
ecdb6d1a 2699funsafe-math-optimizations
ecee1b29 2700Common Report Var(flag_unsafe_math_optimizations) Optimization SetByCombined
8fb42bbc 2701Allow math optimizations that may violate IEEE or ISO standards.
ecdb6d1a 2702
1e06725a 2703funswitch-loops
87c75316 2704Common Report Var(flag_unswitch_loops) Optimization
8fb42bbc 2705Perform loop unswitching.
1e06725a 2706
92a2a716 2707fsplit-loops
2708Common Report Var(flag_split_loops) Optimization
2709Perform loop splitting.
2710
ecdb6d1a 2711funwind-tables
87c75316 2712Common Report Var(flag_unwind_tables) Optimization
8fb42bbc 2713Just generate unwind tables for exception handling.
ecdb6d1a 2714
99d5fe2d 2715fuse-ld=bfd
c75e4990 2716Common Driver Negative(fuse-ld=gold)
8fb42bbc 2717Use the bfd linker instead of the default linker.
99d5fe2d 2718
2719fuse-ld=gold
c75e4990 2720Common Driver Negative(fuse-ld=bfd)
8fb42bbc 2721Use the gold linker instead of the default linker.
99d5fe2d 2722
386fbe6a 2723fuse-linker-plugin
cef15d47 2724Common Undocumented Var(flag_use_linker_plugin)
386fbe6a 2725
0f8defe5 2726; Positive if we should track variables, negative if we should run
2727; the var-tracking pass only to discard debug annotations, zero if
2728; we're not to run it. When flag_var_tracking == 2 (AUTODETECT_VALUE) it
2729; will be set according to optimize, debug_info_level and debug_hooks
2730; in process_options ().
5923a5e7 2731fvar-tracking
05d8c5f8 2732Common Report Var(flag_var_tracking) Init(2) PerFunction
8fb42bbc 2733Perform variable tracking.
5923a5e7 2734
0f8defe5 2735; Positive if we should track variables at assignments, negative if
2736; we should run the var-tracking pass only to discard debug
2737; annotations. When flag_var_tracking_assignments ==
2738; AUTODETECT_VALUE it will be set according to flag_var_tracking.
9845d120 2739fvar-tracking-assignments
05d8c5f8 2740Common Report Var(flag_var_tracking_assignments) Init(2) PerFunction
8fb42bbc 2741Perform variable tracking by annotating assignments.
9845d120 2742
0f8defe5 2743; Nonzero if we should toggle flag_var_tracking_assignments after
2744; processing options and computing its default. */
9845d120 2745fvar-tracking-assignments-toggle
05d8c5f8 2746Common Report Var(flag_var_tracking_assignments_toggle) PerFunction
8fb42bbc 2747Toggle -fvar-tracking-assignments.
9845d120 2748
3e1cce93 2749; Positive if we should track uninitialized variables, negative if
2750; we should run the var-tracking pass only to discard debug
2751; annotations. When flag_var_tracking_uninit == AUTODETECT_VALUE it
2752; will be set according to flag_var_tracking.
d53bb226 2753fvar-tracking-uninit
05d8c5f8 2754Common Report Var(flag_var_tracking_uninit) PerFunction
8fb42bbc 2755Perform variable tracking and also tag variables that are uninitialized.
d53bb226 2756
52e94bf8 2757; Alias to enable both -ftree-loop-vectorize and -ftree-slp-vectorize.
c91e8223 2758ftree-vectorize
52e94bf8 2759Common Report Optimization
8fb42bbc 2760Enable vectorization on trees.
c91e8223 2761
7bd765d4 2762ftree-vectorizer-verbose=
e64c6e9c 2763Common Joined RejectNegative Ignore
2764Does nothing. Preserved for backward compatibility.
7bd765d4 2765
043115ec 2766ftree-loop-vectorize
52e94bf8 2767Common Report Var(flag_tree_loop_vectorize) Optimization EnabledBy(ftree-vectorize)
8fb42bbc 2768Enable loop vectorization on trees.
043115ec 2769
37545e54 2770ftree-slp-vectorize
52e94bf8 2771Common Report Var(flag_tree_slp_vectorize) Optimization EnabledBy(ftree-vectorize)
8fb42bbc 2772Enable basic block vectorization (SLP) on trees.
37545e54 2773
1dbf9bd1 2774fvect-cost-model=
bfedbed1 2775Common Joined RejectNegative Enum(vect_cost_model) Var(flag_vect_cost_model) Init(VECT_COST_MODEL_DEFAULT) Optimization
8fb42bbc 2776Specifies the cost model for vectorization.
6ac368bb 2777-fvect-cost-model=[unlimited|dynamic|cheap] Specifies the cost model for vectorization.
8fb42bbc 2778
3e398f5b 2779fsimd-cost-model=
bfedbed1 2780Common Joined RejectNegative Enum(vect_cost_model) Var(flag_simd_cost_model) Init(VECT_COST_MODEL_UNLIMITED) Optimization
6ac368bb 2781-fsimd-cost-model=[unlimited|dynamic|cheap] Specifies the vectorization cost model for code marked with a simd directive.
3e398f5b 2782
1dbf9bd1 2783Enum
2784Name(vect_cost_model) Type(enum vect_cost_model) UnknownError(unknown vectorizer cost model %qs)
2785
2786EnumValue
2787Enum(vect_cost_model) String(unlimited) Value(VECT_COST_MODEL_UNLIMITED)
2788
2789EnumValue
2790Enum(vect_cost_model) String(dynamic) Value(VECT_COST_MODEL_DYNAMIC)
2791
2792EnumValue
2793Enum(vect_cost_model) String(cheap) Value(VECT_COST_MODEL_CHEAP)
2794
867c03eb 2795fvect-cost-model
e1a93520 2796Common Alias(fvect-cost-model=,dynamic,unlimited)
1dbf9bd1 2797Enables the dynamic vectorizer cost model. Preserved for backward compatibility.
2798
25e3c2e8 2799ftree-vect-loop-version
1dbf9bd1 2800Common Ignore
2801Does nothing. Preserved for backward compatibility.
25e3c2e8 2802
2a6e95ba 2803ftree-scev-cprop
e8831472 2804Common Report Var(flag_tree_scev_cprop) Init(1) Optimization
2a6e95ba 2805Enable copy propagation of scalar-evolution information.
2806
82a16202 2807; -fverbose-asm causes extra commentary information to be produced in
2808; the generated assembly code (to make it more readable). This option
2809; is generally only of use to those who actually need to read the
2810; generated assembly code (perhaps while debugging the compiler itself).
2811; -fno-verbose-asm, the default, causes the extra information
2812; to not be added and is useful when comparing two assembler files.
ecdb6d1a 2813fverbose-asm
2e9da478 2814Common Report Var(flag_verbose_asm)
8fb42bbc 2815Add extra commentary to assembler output.
ecdb6d1a 2816
b212f378 2817fvisibility=
d62a5950 2818Common Joined RejectNegative Enum(symbol_visibility) Var(default_visibility) Init(VISIBILITY_DEFAULT)
8fb42bbc 2819-fvisibility=[default|internal|hidden|protected] Set the default symbol visibility.
b212f378 2820
d62a5950 2821Enum
2822Name(symbol_visibility) Type(enum symbol_visibility) UnknownError(unrecognized visibility value %qs)
2823
2824EnumValue
2825Enum(symbol_visibility) String(default) Value(VISIBILITY_DEFAULT)
2826
2827EnumValue
2828Enum(symbol_visibility) String(internal) Value(VISIBILITY_INTERNAL)
2829
2830EnumValue
2831Enum(symbol_visibility) String(hidden) Value(VISIBILITY_HIDDEN)
2832
2833EnumValue
2834Enum(symbol_visibility) String(protected) Value(VISIBILITY_PROTECTED)
b212f378 2835
b710ec85 2836fvtable-verify=
2837Common Joined RejectNegative Enum(vtv_priority) Var(flag_vtable_verify) Init(VTV_NO_PRIORITY)
2838Validate vtable pointers before using them.
2839
2840Enum
2841Name(vtv_priority) Type(enum vtv_priority) UnknownError(unknown vtable verify initialization priority %qs)
2842
2843EnumValue
2844Enum(vtv_priority) String(none) Value(VTV_NO_PRIORITY)
2845
2846EnumValue
2847Enum(vtv_priority) String(std) Value(VTV_STANDARD_PRIORITY)
2848
2849EnumValue
2850Enum(vtv_priority) String(preinit) Value(VTV_PREINIT_PRIORITY)
2851
2852fvtv-counts
2853Common Var(flag_vtv_counts)
2854Output vtable verification counters.
2855
2856fvtv-debug
2857Common Var(flag_vtv_debug)
2858Output vtable verification pointer sets information.
2859
1c6a7b8c 2860fvpt
87c75316 2861Common Report Var(flag_value_profile_transformations) Optimization
8fb42bbc 2862Use expression value profiles in optimizations.
1c6a7b8c 2863
eeb4a70e 2864fweb
87c75316 2865Common Report Var(flag_web) Init(2) Optimization
8fb42bbc 2866Construct webs and split unrelated uses of single variable.
eeb4a70e 2867
e6a23add 2868ftree-builtin-call-dce
2869Common Report Var(flag_tree_builtin_call_dce) Init(0) Optimization
8fb42bbc 2870Enable conditional dead code elimination for builtin calls.
e6a23add 2871
62eec3b4 2872fwhole-program
bfedbed1 2873Common Report Var(flag_whole_program) Init(0)
8fb42bbc 2874Perform whole program optimizations.
62eec3b4 2875
977361a1 2876fwrapv-pointer
2877Common Report Var(flag_wrapv_pointer) Optimization
2878Assume pointer overflow wraps around.
2879
ecdb6d1a 2880fwrapv
87c75316 2881Common Report Var(flag_wrapv) Optimization
8fb42bbc 2882Assume signed arithmetic overflow wraps around.
ecdb6d1a 2883
ecdb6d1a 2884fzero-initialized-in-bss
2e9da478 2885Common Report Var(flag_zero_initialized_in_bss) Init(1)
8fb42bbc 2886Put zero initialized data in the bss section.
ecdb6d1a 2887
6f2f567f 2888g
a1408eb3 2889Common Driver RejectNegative JoinedOrMissing
8fb42bbc 2890Generate debug information in default format.
b0e56fb1 2891
d85a7677 2892gas-loc-support
2893Common Driver Var(dwarf2out_as_loc_support) Init(2)
2894Assume assembler support for (DWARF2+) .loc directives
2895
2896gas-locview-support
2897Common Driver Var(dwarf2out_as_locview_support) Init(2)
2898Assume assembler support for view in (DWARF2+) .loc directives
2899
f4140c4a 2900gcoff
2901Common Driver Ignore Warn(switch %qs no longer supported)
2902Does nothing. Preserved for backward compatibility.
2903
2904gcoff1
2905Common Driver Ignore Warn(switch %qs no longer supported)
2906Does nothing. Preserved for backward compatibility.
2907
2908gcoff2
2909Common Driver Ignore Warn(switch %qs no longer supported)
2910Does nothing. Preserved for backward compatibility.
2911
2912gcoff3
2913Common Driver Ignore Warn(switch %qs no longer supported)
2914Does nothing. Preserved for backward compatibility.
2915
8afa52da 2916gcolumn-info
c61ffa85 2917Common Driver Var(debug_column_info,1) Init(1)
8afa52da 2918Record DW_AT_decl_column and DW_AT_call_column in DWARF.
2919
8786b72c 2920gdwarf
14234f77 2921Common Driver JoinedOrMissing Negative(gdwarf-)
8fb42bbc 2922Generate debug information in default version of DWARF format.
8786b72c 2923
3d3b9d5b 2924gdwarf-
14234f77 2925Common Driver Joined UInteger Var(dwarf_version) Init(4) Negative(gstabs)
8fb42bbc 2926Generate debug information in DWARF v2 (or later) format.
b0e56fb1 2927
2928ggdb
14234f77 2929Common Driver JoinedOrMissing
8fb42bbc 2930Generate debug information in default extended format.
b0e56fb1 2931
d85a7677 2932ginline-points
2933Common Driver Var(debug_inline_points) Init(2)
2934Generate extended entry point information for inlined functions
2935
2936ginternal-reset-location-views
2937Common Driver Var(debug_internal_reset_location_views) Init(2)
2938Compute locview reset points based on insn length estimates
2939
a1408eb3 2940gno-
2941RejectNegative Joined Undocumented
2942; Catch the gno- prefix, so it doesn't backtrack to g<level>.
2943
7a99ccab 2944gno-pubnames
14234f77 2945Common Driver Negative(gpubnames) Var(debug_generate_pub_sections, 0) Init(-1)
7a99ccab 2946Don't generate DWARF pubnames and pubtypes sections.
2947
2948gpubnames
14234f77 2949Common Driver Negative(ggnu-pubnames) Var(debug_generate_pub_sections, 1)
7a99ccab 2950Generate DWARF pubnames and pubtypes sections.
2951
ea096d3d 2952ggnu-pubnames
14234f77 2953Common Driver Negative(gno-pubnames) Var(debug_generate_pub_sections, 2)
ea096d3d 2954Generate DWARF pubnames and pubtypes sections with GNU extensions.
2955
f45370f8 2956grecord-gcc-switches
a1408eb3 2957Common Driver Var(dwarf_record_gcc_switches) Init(1)
f45370f8 2958Record gcc command line switches in DWARF DW_AT_producer.
2959
b35329c7 2960gsplit-dwarf
a1408eb3 2961Common Driver Var(dwarf_split_debug_info) Init(0)
8fb42bbc 2962Generate debug information in separate .dwo files.
b35329c7 2963
b0e56fb1 2964gstabs
14234f77 2965Common Driver JoinedOrMissing Negative(gstabs+)
8fb42bbc 2966Generate debug information in STABS format.
b0e56fb1 2967
2968gstabs+
14234f77 2969Common Driver JoinedOrMissing Negative(gvms)
8fb42bbc 2970Generate debug information in extended STABS format.
b0e56fb1 2971
aa2fd885 2972gstatement-frontiers
2973Common Driver Var(debug_nonbind_markers_p) Init(2)
2974Emit progressive recommended breakpoint locations.
2975
c16b6d19 2976gstrict-dwarf
a1408eb3 2977Common Driver Report Var(dwarf_strict) Init(0)
8fb42bbc 2978Don't emit DWARF additions beyond selected version.
c16b6d19 2979
71278019 2980gtoggle
14234f77 2981Common Driver Report Var(flag_gtoggle)
8fb42bbc 2982Toggle debug information generation.
71278019 2983
7b0db09c 2984gvariable-location-views
2985Common Driver Var(debug_variable_location_views, 1) Init(2)
2986Augment variable location lists with progressive views.
2987
2988gvariable-location-views=incompat5
2989Common Driver RejectNegative Var(debug_variable_location_views, -1) Init(2)
2990
b0e56fb1 2991gvms
14234f77 2992Common Driver JoinedOrMissing Negative(gxcoff)
8fb42bbc 2993Generate debug information in VMS format.
b0e56fb1 2994
2995gxcoff
14234f77 2996Common Driver JoinedOrMissing Negative(gxcoff+)
8fb42bbc 2997Generate debug information in XCOFF format.
b0e56fb1 2998
2999gxcoff+
4c52ff7a 3000Common Driver JoinedOrMissing Negative(gdwarf)
8fb42bbc 3001Generate debug information in extended XCOFF format.
6f2f567f 3002
4185c905 3003Enum
3004Name(compressed_debug_sections) Type(int)
3005
3006; Since -gz= is completely handled in specs, the values aren't used and we
3007; assign arbitrary constants.
3008EnumValue
3009Enum(compressed_debug_sections) String(none) Value(0)
3010
3011EnumValue
3012Enum(compressed_debug_sections) String(zlib) Value(1)
3013
3014EnumValue
3015Enum(compressed_debug_sections) String(zlib-gnu) Value(2)
3016
3017gz
3018Common Driver
8fb42bbc 3019Generate compressed debug sections.
4185c905 3020
3021gz=
a1408eb3 3022Common Driver RejectNegative Joined Enum(compressed_debug_sections)
8fb42bbc 3023-gz=<format> Generate compressed debug sections in format <format>.
4185c905 3024
f37ef985 3025h
3026Driver Joined Separate
3027
19bc000d 3028iplugindir=
3029Common Joined Var(plugindir_string) Init(0)
8fb42bbc 3030-iplugindir=<dir> Set <dir> to be the default plugin directory.
19bc000d 3031
77adc39e 3032imultiarch
3033Common Joined Separate RejectDriver Var(imultiarch) Init(0)
8fb42bbc 3034-imultiarch <dir> Set <dir> to be the multiarch include subdirectory.
77adc39e 3035
e28aa114 3036l
3037Driver Joined Separate
3038
3bfde2af 3039n
3040Driver
3041
e28aa114 3042no-canonical-prefixes
3043Driver
3044
cb22f930 3045nodefaultlibs
3046Driver
3047
286f96fe 3048nostartfiles
3049Driver
3050
cb22f930 3051nostdlib
3052Driver
3053
e690b385 3054o
6bd9d862 3055Common Driver Joined Separate Var(asm_file_name) MissingArgError(missing filename after %qs)
8fb42bbc 3056-o <file> Place output into <file>.
e690b385 3057
3058p
2e9da478 3059Common Var(profile_flag)
8fb42bbc 3060Enable function profiling.
e690b385 3061
e28aa114 3062pass-exit-codes
3063Driver Var(pass_exit_codes)
3064
e690b385 3065pedantic
29438999 3066Common Alias(Wpedantic)
e690b385 3067
3068pedantic-errors
6bd9d862 3069Common Var(flag_pedantic_errors)
8fb42bbc 3070Like -pedantic but issue them as errors.
e690b385 3071
cb22f930 3072pg
3073Driver
3074
e28aa114 3075pipe
3076Driver Var(use_pipes)
3077
3078print-file-name=
3079Driver JoinedOrMissing Var(print_file_name)
3080
3081print-libgcc-file-name
3082Driver
3083
3084print-multi-directory
3085Driver Var(print_multi_directory)
3086
3087print-multi-lib
3088Driver Var(print_multi_lib)
3089
3090print-multi-os-directory
3091Driver Var(print_multi_os_directory)
8fb42bbc 3092
77adc39e 3093print-multiarch
3094Driver Var(print_multiarch)
e28aa114 3095
3096print-prog-name=
3097Driver JoinedOrMissing Var(print_prog_name)
3098
3099print-search-dirs
3100Driver Var(print_search_dirs)
3101
3102print-sysroot
3103Driver Var(print_sysroot)
3104
3105print-sysroot-headers-suffix
3106Driver Var(print_sysroot_headers_suffix)
3107
3272db82 3108quiet
e28aa114 3109Common Var(quiet_flag) RejectDriver
8fb42bbc 3110Do not display functions compiled or elapsed time.
3272db82 3111
3bfde2af 3112r
3113Driver
3114
3115s
3116Driver
3117
e28aa114 3118save-temps
3119Driver
3120
3121save-temps=
3122Driver Joined
3123
3bfde2af 3124t
3125Driver
3126
e28aa114 3127time
3128Driver Var(report_times)
3129
3130time=
3131Driver JoinedOrMissing
3132
5789e05b 3133u
3134Driver Joined Separate
3135
4b2a05b6 3136undef
3137Driver
3138; C option, but driver must not handle as "-u ndef".
3139
e28aa114 3140v
6bd9d862 3141Common Driver Var(verbose_flag)
8fb42bbc 3142Enable verbose output.
e28aa114 3143
e690b385 3144version
e28aa114 3145Common Var(version_flag) RejectDriver
8fb42bbc 3146Display the compiler's version.
e690b385 3147
3148w
2e9da478 3149Common Var(inhibit_warnings)
8fb42bbc 3150Suppress warnings.
e690b385 3151
e28aa114 3152wrapper
3153Driver Separate Var(wrapper_string)
3154
3155x
3156Driver Joined Separate
3157
794febf8 3158shared
6d1ab23d 3159Driver RejectNegative Negative(static-pie)
8fb42bbc 3160Create a shared library.
794febf8 3161
e28aa114 3162shared-libgcc
3163Driver
3164
3165specs
67089c6b 3166Driver Separate Alias(specs=)
e28aa114 3167
3168specs=
3169Driver Joined
3170
cb22f930 3171static
3172Driver
3173
e28aa114 3174static-libgcc
3175Driver
3176
3177static-libgfortran
3178Driver
3179; Documented for Fortran, but always accepted by driver.
3180
3181static-libstdc++
3182Driver
3183
e440a328 3184static-libgo
3185Driver
3186; Documented for Go, but always accepted by driver.
3187
6db5160a 3188static-libasan
3189Driver
3190
b077695d 3191static-libtsan
3192Driver
3193
f8ff4a27 3194static-liblsan
3195Driver
3196
9e46467d 3197static-libubsan
3198Driver
3199
5789e05b 3200symbolic
3201Driver
3202
e9abca4f 3203no-pie
1412b935 3204Driver RejectNegative Negative(shared)
6d1ab23d 3205Don't create a dynamically linked position independent executable.
e9abca4f 3206
3207pie
3208Driver RejectNegative Negative(no-pie)
6d1ab23d 3209Create a dynamically linked position independent executable.
3210
3211static-pie
3212Driver RejectNegative Negative(pie)
3213Create a static position independent executable.
794febf8 3214
f37ef985 3215z
3216Driver Joined Separate
3217
fcf56aaf 3218fipa-ra
3219Common Report Var(flag_ipa_ra) Optimization
8fb42bbc 3220Use caller save register across calls if possible.
2cc49064 3221
3272db82 3222; This comment is to ensure we retain the blank line above.