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