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