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