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