]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/common.opt
Fix testcase for PR target/60657
[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;
779; 1: The version of the ABI first used in G++ 3.2.
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=
212cc995 811Common Joined RejectNegative UInteger Var(flag_abi_version) Init(2)
e100aadc 812
56dfa44a 813faggressive-loop-optimizations
814Common Report Var(flag_aggressive_loop_optimizations) Optimization Init(1)
815Aggressively optimize loops using language constraints
816
ecdb6d1a 817falign-functions
46f8e3b0 818Common Report Var(align_functions,0) Optimization UInteger
72528c71 819Align the start of functions
ecdb6d1a 820
941a4893 821falign-functions=
6bd9d862 822Common RejectNegative Joined UInteger Var(align_functions)
941a4893 823
ecdb6d1a 824falign-jumps
46f8e3b0 825Common Report Var(align_jumps,0) Optimization UInteger
72528c71 826Align labels which are only reached by jumping
ecdb6d1a 827
941a4893 828falign-jumps=
6bd9d862 829Common RejectNegative Joined UInteger Var(align_jumps)
941a4893 830
ecdb6d1a 831falign-labels
46f8e3b0 832Common Report Var(align_labels,0) Optimization UInteger
72528c71 833Align all labels
ecdb6d1a 834
941a4893 835falign-labels=
6bd9d862 836Common RejectNegative Joined UInteger Var(align_labels)
941a4893 837
ecdb6d1a 838falign-loops
c17f64cc 839Common Report Var(align_loops,0) Optimization UInteger
72528c71 840Align the start of loops
ecdb6d1a 841
941a4893 842falign-loops=
6bd9d862 843Common RejectNegative Joined UInteger Var(align_loops)
941a4893 844
ecdb6d1a 845fargument-alias
3b0273a1 846Common Ignore
e190b18a 847Does nothing. Preserved for backward compatibility.
ecdb6d1a 848
849fargument-noalias
3b0273a1 850Common Ignore
e190b18a 851Does nothing. Preserved for backward compatibility.
ecdb6d1a 852
853fargument-noalias-global
3b0273a1 854Common Ignore
e190b18a 855Does nothing. Preserved for backward compatibility.
ecdb6d1a 856
5ff22aea 857fargument-noalias-anything
3b0273a1 858Common Ignore
e190b18a 859Does nothing. Preserved for backward compatibility.
5ff22aea 860
9e46467d 861fsanitize=
862Common Driver Report Joined
863Select what to sanitize
b077695d 864
ecdb6d1a 865fasynchronous-unwind-tables
87c75316 866Common Report Var(flag_asynchronous_unwind_tables) Optimization
72528c71 867Generate unwind tables that are exact at each instruction boundary
ecdb6d1a 868
3072d30e 869fauto-inc-dec
870Common Report Var(flag_auto_inc_dec) Init(1)
871Generate auto-inc/dec instructions
872
82a16202 873; -fcheck-bounds causes gcc to generate array bounds checks.
874; For C, C++ and ObjC: defaults off.
875; For Java: defaults to on.
876; For Fortran: defaults to off.
ecdb6d1a 877fbounds-check
2e9da478 878Common Report Var(flag_bounds_check)
72528c71 879Generate code to check bounds before indexing arrays
ecdb6d1a 880
881fbranch-count-reg
1941e89d 882Common Report Var(flag_branch_on_count_reg) Optimization
72528c71 883Replace add, compare, branch with branch on count register
ecdb6d1a 884
885fbranch-probabilities
87c75316 886Common Report Var(flag_branch_probabilities) Optimization
72528c71 887Use profiling information for branch probabilities
ecdb6d1a 888
1e06725a 889fbranch-target-load-optimize
87c75316 890Common Report Var(flag_branch_target_load_optimize) Optimization
72528c71 891Perform branch target load optimization before prologue / epilogue threading
1e06725a 892
893fbranch-target-load-optimize2
87c75316 894Common Report Var(flag_branch_target_load_optimize2) Optimization
72528c71 895Perform branch target load optimization after prologue / epilogue threading
1e06725a 896
08d163a9 897fbtr-bb-exclusive
87c75316 898Common Report Var(flag_btr_bb_exclusive) Optimization
08d163a9 899Restrict target load migration not to re-use registers in any basic block
900
941a4893 901fcall-saved-
f0da0668 902Common Joined RejectNegative Var(common_deferred_options) Defer
53b8e5c1 903-fcall-saved-<register> Mark <register> as being preserved across functions
941a4893 904
905fcall-used-
f0da0668 906Common Joined RejectNegative Var(common_deferred_options) Defer
53b8e5c1 907-fcall-used-<register> Mark <register> as being corrupted by function calls
941a4893 908
82a16202 909; Nonzero for -fcaller-saves: allocate values in regs that need to
910; be saved across function calls, if that produces overall better code.
911; Optional now, so people can test it.
1e06725a 912fcaller-saves
87c75316 913Common Report Var(flag_caller_saves) Optimization
72528c71 914Save registers around function calls
1e06725a 915
355572cc 916fcheck-data-deps
917Common Report Var(flag_check_data_deps)
918Compare the results of several data dependence analyzers.
919
0b7282f1 920fcheck-new
921Common Var(flag_check_new)
922Check the return value of new in C++
923
bbb0a662 924fcombine-stack-adjustments
925Common Report Var(flag_combine_stack_adjustments) Optimization
926Looks for opportunities to reduce stack adjustments and stack references.
927
ecdb6d1a 928fcommon
87c75316 929Common Report Var(flag_no_common,0) Optimization
72528c71 930Do not put uninitialized globals in the common section
ecdb6d1a 931
e28aa114 932fcompare-debug
933Driver
934; Converted by the driver to -fcompare-debug= options.
935
71278019 936fcompare-debug=
e28aa114 937Common Driver JoinedOrMissing RejectNegative Var(flag_compare_debug_opt)
cf210371 938-fcompare-debug[=<opts>] Compile with and without e.g. -gtoggle, and compare the final-insns dump
71278019 939
940fcompare-debug-second
ab3728ee 941Common Driver RejectNegative Var(flag_compare_debug)
71278019 942Run only the second compilation of -fcompare-debug
943
a50372fe 944fcompare-elim
945Common Report Var(flag_compare_elim_after_reload) Optimization
946Perform comparison elimination after register allocation has finished
947
9845d120 948fconserve-stack
949Common Var(flag_conserve_stack) Optimization
950Do not perform optimizations increasing noticeably stack usage
951
ecdb6d1a 952fcprop-registers
87c75316 953Common Report Var(flag_cprop_registers) Optimization
72528c71 954Perform a register copy-propagation optimization pass
ecdb6d1a 955
1e06725a 956fcrossjumping
87c75316 957Common Report Var(flag_crossjumping) Optimization
72528c71 958Perform cross-jumping optimization
1e06725a 959
960fcse-follow-jumps
87c75316 961Common Report Var(flag_cse_follow_jumps) Optimization
72528c71 962When running CSE, follow jumps to their targets
1e06725a 963
964fcse-skip-blocks
3b0273a1 965Common Ignore
d743aba2 966Does nothing. Preserved for backward compatibility.
1e06725a 967
45b9d334 968fcx-limited-range
ecee1b29 969Common Report Var(flag_cx_limited_range) Optimization SetByCombined
45b9d334 970Omit range reduction step when performing complex division
971
608256a0 972fcx-fortran-rules
973Common Report Var(flag_cx_fortran_rules) Optimization
974Complex multiplication and division follow Fortran rules
975
ecdb6d1a 976fdata-sections
87c75316 977Common Report Var(flag_data_sections) Optimization
72528c71 978Place data items into their own section
ecdb6d1a 979
d2153a46 980fdbg-cnt-list
9faf44d6 981Common Report Var(common_deferred_options) Defer
d2153a46 982List all available debugging counters with their limits and counts.
983
3072d30e 984fdbg-cnt=
9faf44d6 985Common RejectNegative Joined Var(common_deferred_options) Defer
cf210371 986-fdbg-cnt=<counter>:<limit>[,<counter>:<limit>,...] Set the debug counter limit.
3072d30e 987
5f1f2de5 988fdebug-prefix-map=
9faf44d6 989Common Joined RejectNegative Var(common_deferred_options) Defer
5f1f2de5 990Map one directory name to another in debug information
991
240a87ff 992fdebug-types-section
052166fd 993Common Report Var(flag_debug_types_section) Init(0)
240a87ff 994Output .debug_types section when using DWARF v4 debuginfo.
995
82a16202 996; Nonzero for -fdefer-pop: don't pop args after each function call
997; instead save them up to pop many calls' args with one insns.
1e06725a 998fdefer-pop
87c75316 999Common Report Var(flag_defer_pop) Optimization
72528c71 1000Defer popping functions args from stack until later
1e06725a 1001
1002fdelayed-branch
87c75316 1003Common Report Var(flag_delayed_branch) Optimization
72528c71 1004Attempt to fill delay slots of branch instructions
1e06725a 1005
bc0dfc8d 1006fdelete-dead-exceptions
1007Common Report Var(flag_delete_dead_exceptions) Init(0)
1008Delete dead instructions that may throw exceptions
1009
1e06725a 1010fdelete-null-pointer-checks
7df298fe 1011Common Report Var(flag_delete_null_pointer_checks) Init(1) Optimization
72528c71 1012Delete useless null pointer checks
1e06725a 1013
84f6cc40 1014fdevirtualize-speculatively
1015Common Report Var(flag_devirtualize_speculatively) Optimization
1016Perform speculative devirtualization
1017
0276be0c 1018fdevirtualize
1019Common Report Var(flag_devirtualize) Optimization
1020Try to convert virtual calls to direct ones.
1021
1e06725a 1022fdiagnostics-show-location=
d62a5950 1023Common Joined RejectNegative Enum(diagnostic_prefixing_rule)
53b8e5c1 1024-fdiagnostics-show-location=[once|every-line] How often to emit source location at the beginning of line-wrapped diagnostics
1e06725a 1025
d62a5950 1026; Required for these enum values.
1027SourceInclude
1028pretty-print.h
1029
1030Enum
1031Name(diagnostic_prefixing_rule) Type(int)
1032
1033EnumValue
1034Enum(diagnostic_prefixing_rule) String(once) Value(DIAGNOSTICS_SHOW_PREFIX_ONCE)
1035
1036EnumValue
1037Enum(diagnostic_prefixing_rule) String(every-line) Value(DIAGNOSTICS_SHOW_PREFIX_EVERY_LINE)
1038
5a983084 1039fdiagnostics-show-caret
1040Common Var(flag_diagnostics_show_caret) Init(1)
1041Show the source line with a caret indicating the column
1042
41609f8b 1043fdiagnostics-color
1044Common Alias(fdiagnostics-color=,always,never)
1045;
1046
1047fdiagnostics-color=
71eeb8d3 1048Common Joined RejectNegative Var(flag_diagnostics_show_color) Enum(diagnostic_color_rule) Init(DIAGNOSTICS_COLOR_NO)
41609f8b 1049-fdiagnostics-color=[never|always|auto] Colorize diagnostics
1050
1051; Required for these enum values.
1052SourceInclude
1053diagnostic-color.h
1054
1055Enum
1056Name(diagnostic_color_rule) Type(int)
1057
1058EnumValue
1059Enum(diagnostic_color_rule) String(never) Value(DIAGNOSTICS_COLOR_NO)
1060
1061EnumValue
1062Enum(diagnostic_color_rule) String(always) Value(DIAGNOSTICS_COLOR_YES)
1063
1064EnumValue
1065Enum(diagnostic_color_rule) String(auto) Value(DIAGNOSTICS_COLOR_AUTO)
1066
efb9d9ee 1067fdiagnostics-show-option
3fee9a69 1068Common Var(flag_diagnostics_show_option) Init(1)
3284a242 1069Amend appropriate diagnostic messages with the command line option that controls them
efb9d9ee 1070
c3087ce0 1071fdisable-
1072Common Joined RejectNegative Var(common_deferred_options) Defer
1073-fdisable-[tree|rtl|ipa]-<pass>=range1+range2 disables an optimization pass
1074
1075fenable-
1076Common Joined RejectNegative Var(common_deferred_options) Defer
1077-fenable-[tree|rtl|ipa]-<pass>=range1+range2 enables an optimization pass
1078
4ee9c684 1079fdump-
f0da0668 1080Common Joined RejectNegative Var(common_deferred_options) Defer
4ee9c684 1081-fdump-<type> Dump various compiler internals to a file
1082
0b1d266f 1083fdump-final-insns
1084Driver RejectNegative
1085
71278019 1086fdump-final-insns=
1087Common RejectNegative Joined Var(flag_dump_final_insns)
1088-fdump-final-insns=filename Dump to filename the insns at the end of translation
1089
929d2a90 1090fdump-go-spec=
1091Common RejectNegative Joined Var(flag_dump_go_spec)
1092-fdump-go-spec=filename Write all declarations to file as Go code
1093
969239ad 1094fdump-noaddr
1095Common Report Var(flag_dump_noaddr)
1096Suppress output of addresses in debugging dumps
1097
ec4791a8 1098fdump-passes
1099Common Var(flag_dump_passes) Init(0)
1100Dump optimization passes
1101
ecdb6d1a 1102fdump-unnumbered
0f8defe5 1103Common Report Var(flag_dump_unnumbered)
969239ad 1104Suppress output of instruction numbers, line number notes and addresses in debugging dumps
ecdb6d1a 1105
0a59e439 1106fdump-unnumbered-links
0f8defe5 1107Common Report Var(flag_dump_unnumbered_links)
0a59e439 1108Suppress output of previous and next insn numbers in debugging dumps
1109
9845d120 1110fdwarf2-cfi-asm
1111Common Report Var(flag_dwarf2_cfi_asm) Init(HAVE_GAS_CFI_DIRECTIVE)
1112Enable CFI tables via GAS assembler directives.
1113
f1aa280c 1114fearly-inlining
87c75316 1115Common Report Var(flag_early_inlining) Init(1) Optimization
f1aa280c 1116Perform early inlining
1117
1e06725a 1118feliminate-dwarf2-dups
2e9da478 1119Common Report Var(flag_eliminate_dwarf2_dups)
72528c71 1120Perform DWARF2 duplicate elimination
1e06725a 1121
2f29eac3 1122fipa-sra
1123Common Report Var(flag_ipa_sra) Init(0) Optimization
1124Perform interprocedural reduction of aggregates
1125
262444a6 1126feliminate-unused-debug-symbols
2e9da478 1127Common Report Var(flag_debug_only_used_symbols)
72528c71 1128Perform unused type elimination in debug info
262444a6 1129
1e06725a 1130feliminate-unused-debug-types
2e9da478 1131Common Report Var(flag_eliminate_unused_debug_types) Init(1)
72528c71 1132Perform unused type elimination in debug info
1e06725a 1133
0c573f98 1134femit-class-debug-always
fd5e1dfe 1135Common Report Var(flag_emit_class_debug_always) Init(0)
0c573f98 1136Do not suppress C++ class debug information.
1137
ecdb6d1a 1138fexceptions
87c75316 1139Common Report Var(flag_exceptions) Optimization
72528c71 1140Enable exception handling
ecdb6d1a 1141
1e06725a 1142fexpensive-optimizations
87c75316 1143Common Report Var(flag_expensive_optimizations) Optimization
72528c71 1144Perform a number of minor, expensive optimizations
1e06725a 1145
c6418a4e 1146fexcess-precision=
d62a5950 1147Common Joined RejectNegative Enum(excess_precision) Var(flag_excess_precision_cmdline) Init(EXCESS_PRECISION_DEFAULT)
c6418a4e 1148-fexcess-precision=[fast|standard] Specify handling of excess floating-point precision
1149
d62a5950 1150Enum
1151Name(excess_precision) Type(enum excess_precision) UnknownError(unknown excess precision style %qs)
1152
1153EnumValue
1154Enum(excess_precision) String(fast) Value(EXCESS_PRECISION_FAST)
1155
1156EnumValue
1157Enum(excess_precision) String(standard) Value(EXCESS_PRECISION_STANDARD)
1158
941a4893 1159ffast-math
1160Common
1161
b33542ab 1162ffat-lto-objects
76eca1df 1163Common Var(flag_fat_lto_objects)
b33542ab 1164Output lto objects containing both the intermediate language and binary output.
1165
ecdb6d1a 1166ffinite-math-only
ecee1b29 1167Common Report Var(flag_finite_math_only) Optimization SetByCombined
72528c71 1168Assume no NaNs or infinities are generated
ecdb6d1a 1169
941a4893 1170ffixed-
f0da0668 1171Common Joined RejectNegative Var(common_deferred_options) Defer
53b8e5c1 1172-ffixed-<register> Mark <register> as being unavailable to the compiler
941a4893 1173
1e06725a 1174ffloat-store
87c75316 1175Common Report Var(flag_float_store) Optimization
82a16202 1176Don't allocate floats and doubles in extended-precision registers
1e06725a 1177
1178fforce-addr
3b0273a1 1179Common Ignore
4d25f9eb 1180Does nothing. Preserved for backward compatibility.
1e06725a 1181
55d51835 1182fforward-propagate
1183Common Report Var(flag_forward_propagate) Optimization
42a3a38b 1184Perform a forward propagation pass on RTL
1185
b9be572e 1186ffp-contract=
d62a5950 1187Common Joined RejectNegative Enum(fp_contract_mode) Var(flag_fp_contract_mode) Init(FP_CONTRACT_FAST)
b9be572e 1188-ffp-contract=[off|on|fast] Perform floating-point expression contraction.
1189
d62a5950 1190Enum
1191Name(fp_contract_mode) Type(enum fp_contract_mode) UnknownError(unknown floating point contraction style %qs)
1192
1193EnumValue
1194Enum(fp_contract_mode) String(off) Value(FP_CONTRACT_OFF)
1195
1196; Not implemented, fall back to conservative FP_CONTRACT_OFF.
1197EnumValue
1198Enum(fp_contract_mode) String(on) Value(FP_CONTRACT_OFF)
1199
1200EnumValue
1201Enum(fp_contract_mode) String(fast) Value(FP_CONTRACT_FAST)
1202
82a16202 1203; Nonzero means don't put addresses of constant functions in registers.
1204; Used for compiling the Unix kernel, where strange substitutions are
1205; done on the assembly output.
1e06725a 1206ffunction-cse
2e9da478 1207Common Report Var(flag_no_function_cse,0)
72528c71 1208Allow function addresses to be held in registers
1e06725a 1209
ecdb6d1a 1210ffunction-sections
2e9da478 1211Common Report Var(flag_function_sections)
72528c71 1212Place each function into its own section
ecdb6d1a 1213
1e06725a 1214fgcse
87c75316 1215Common Report Var(flag_gcse) Optimization
72528c71 1216Perform global common subexpression elimination
1e06725a 1217
1218fgcse-lm
87c75316 1219Common Report Var(flag_gcse_lm) Init(1) Optimization
72528c71 1220Perform enhanced load motion during global common subexpression elimination
1e06725a 1221
1222fgcse-sm
87c75316 1223Common Report Var(flag_gcse_sm) Init(0) Optimization
72528c71 1224Perform store motion after global common subexpression elimination
1e06725a 1225
5c47e414 1226fgcse-las
87c75316 1227Common Report Var(flag_gcse_las) Init(0) Optimization
839f8415 1228Perform redundant load after store elimination in global common subexpression
1229elimination
1230
1231fgcse-after-reload
87c75316 1232Common Report Var(flag_gcse_after_reload) Optimization
839f8415 1233Perform global common subexpression elimination after register allocation
3284a242 1234has finished
5c47e414 1235
d3399492 1236; This option is not documented yet as its semantics will change.
255b6be7 1237fgraphite
1238Common Report Var(flag_graphite)
1239Enable in and out of Graphite representation
1240
26c166eb 1241fgraphite-identity
1242Common Report Var(flag_graphite_identity) Optimization
1243Enable Graphite Identity transformation
1244
239e9670 1245fhoist-adjacent-loads
1246Common Report Var(flag_hoist_adjacent_loads) Optimization
1247Enable hoisting adjacent loads to encourage generating conditional move
1248instructions
1249
16848556 1250floop-parallelize-all
1251Common Report Var(flag_loop_parallelize_all) Optimization
26c166eb 1252Mark all loops as parallel
1253
255b6be7 1254floop-strip-mine
1255Common Report Var(flag_loop_strip_mine) Optimization
1256Enable Loop Strip Mining transformation
1257
1258floop-interchange
1259Common Report Var(flag_loop_interchange) Optimization
1260Enable Loop Interchange transformation
1261
1262floop-block
1263Common Report Var(flag_loop_block) Optimization
1264Enable Loop Blocking transformation
1265
4c0315d0 1266fgnu-tm
1267Common Report Var(flag_tm)
1268Enable support for GNU transactional memory
1269
d60a90cc 1270floop-flatten
d094f1d6 1271Common Ignore
1272Does nothing. Preserved for backward compatibility.
d60a90cc 1273
89049f25 1274floop-nest-optimize
1275Common Report Var(flag_loop_optimize_isl) Optimization
1276Enable the ISL based loop nest optimizer
1277
a420d927 1278fstrict-volatile-bitfields
1279Common Report Var(flag_strict_volatile_bitfields) Init(-1)
1280Force bitfield accesses to match their type width
1281
ecdb6d1a 1282fguess-branch-probability
87c75316 1283Common Report Var(flag_guess_branch_prob) Optimization
72528c71 1284Enable guessing of branch probabilities
ecdb6d1a 1285
82a16202 1286; Nonzero means ignore `#ident' directives. 0 means handle them.
1287; Generate position-independent code for executables if possible
1288; On SVR4 targets, it also controls whether or not to emit a
1289; string identifying the compiler.
ecdb6d1a 1290fident
2e9da478 1291Common Report Var(flag_no_ident,0)
72528c71 1292Process #ident directives
ecdb6d1a 1293
1e06725a 1294fif-conversion
87c75316 1295Common Report Var(flag_if_conversion) Optimization
72528c71 1296Perform conversion of conditional jumps to branchless equivalents
1e06725a 1297
1298fif-conversion2
87c75316 1299Common Report Var(flag_if_conversion2) Optimization
72528c71 1300Perform conversion of conditional jumps to conditional execution
1e06725a 1301
5680e508 1302fstack-reuse=
1303Common Joined RejectNegative Enum(stack_reuse_level) Var(flag_stack_reuse) Init(SR_ALL)
1304-fstack-reuse=[all|named_vars|none] Set stack reuse level for local variables.
1305
1306Enum
1307Name(stack_reuse_level) Type(enum stack_reuse_level) UnknownError(unknown Stack Reuse Level %qs)
1308
1309EnumValue
1310Enum(stack_reuse_level) String(all) Value(SR_ALL)
1311
1312EnumValue
1313Enum(stack_reuse_level) String(named_vars) Value(SR_NAMED_VARS)
1314
1315EnumValue
1316Enum(stack_reuse_level) String(none) Value(SR_NONE)
1317
0cb1935d 1318ftree-loop-if-convert
1319Common Report Var(flag_tree_loop_if_convert) Init(-1) Optimization
1320Convert conditional jumps in innermost loops to branchless equivalents
1321
3b91ccd9 1322ftree-loop-if-convert-stores
1323Common Report Var(flag_tree_loop_if_convert_stores) Optimization
1324Also if-convert conditional jumps containing memory writes
1325
82a16202 1326; -finhibit-size-directive inhibits output of .size for ELF.
1327; This is used only for compiling crtstuff.c,
1328; and it may be extended to other effects
1329; needed for crtstuff.c on other systems.
ecdb6d1a 1330finhibit-size-directive
2e9da478 1331Common Report Var(flag_inhibit_size_directive)
72528c71 1332Do not generate .size directives
ecdb6d1a 1333
f8daee9b 1334findirect-inlining
1335Common Report Var(flag_indirect_inlining)
1336Perform indirect inlining
1337
b75cad1f 1338; General flag to enable inlining. Specifying -fno-inline will disable
1339; all inlining apart from always-inline functions.
1e06725a 1340finline
e5166d71 1341Common Report Var(flag_no_inline,0) Init(0) Optimization
b75cad1f 1342Enable inlining of function declared \"inline\", disabling disables all inlining
1e06725a 1343
b97510b2 1344finline-small-functions
1345Common Report Var(flag_inline_small_functions) Optimization
b75cad1f 1346Integrate functions into their callers when code size is known not to grow
b97510b2 1347
1e06725a 1348finline-functions
87c75316 1349Common Report Var(flag_inline_functions) Optimization
b75cad1f 1350Integrate functions not declared \"inline\" into their callers when profitable
1e06725a 1351
f1aa280c 1352finline-functions-called-once
055af069 1353Common Report Var(flag_inline_functions_called_once) Optimization
b75cad1f 1354Integrate functions only required by their single caller
9e0baf4d 1355
39470ac3 1356finline-limit-
67089c6b 1357Common RejectNegative Joined Alias(finline-limit=)
39470ac3 1358
1359finline-limit=
1360Common RejectNegative Joined UInteger
53b8e5c1 1361-finline-limit=<number> Limit the size of inlined functions to <number>
39470ac3 1362
1cd6e20d 1363finline-atomics
1364Common Report Var(flag_inline_atomics) Init(1) Optimization
1365Inline __atomic operations when a lock free instruction sequence is available.
1366
ecdb6d1a 1367finstrument-functions
2e9da478 1368Common Report Var(flag_instrument_function_entry_exit)
72528c71 1369Instrument function entry and exit with profiling calls
ecdb6d1a 1370
a95c0776 1371finstrument-functions-exclude-function-list=
1372Common RejectNegative Joined
1373-finstrument-functions-exclude-function-list=name,... Do not instrument listed functions
1374
1375finstrument-functions-exclude-file-list=
1376Common RejectNegative Joined
1377-finstrument-functions-exclude-file-list=filename,... Do not instrument functions listed in files
1378
a17a73c7 1379fipa-cp
87c75316 1380Common Report Var(flag_ipa_cp) Optimization
84f6cc40 1381Perform interprocedural constant propagation
a17a73c7 1382
2a15795f 1383fipa-cp-clone
1384Common Report Var(flag_ipa_cp_clone) Optimization
1385Perform cloning to make Interprocedural constant propagation stronger
1386
4e2db0ad 1387fipa-profile
1388Common Report Var(flag_ipa_profile) Init(0) Optimization
1389Perform interprocedural profile propagation
f7d118a9 1390
bdf4f142 1391fipa-pta
87c75316 1392Common Report Var(flag_ipa_pta) Init(0) Optimization
bdf4f142 1393Perform interprocedural points-to analysis
1394
4e2db0ad 1395fipa-pure-const
1396Common Report Var(flag_ipa_pure_const) Init(0) Optimization
1397Discover pure and const functions
1398
f7d118a9 1399fipa-reference
87c75316 1400Common Report Var(flag_ipa_reference) Init(0) Optimization
f7d118a9 1401Discover readonly and non addressable static variables
1402
604cde73 1403fipa-matrix-reorg
fa62b5da 1404Common Ignore
1405Does nothing. Preserved for backward compatibility.
604cde73 1406
f27ac341 1407fipa-struct-reorg
210a8eb6 1408Common Ignore
1409Does nothing. Preserved for backward compatibility.
f27ac341 1410
47dd2e78 1411fira-algorithm=
d62a5950 1412Common Joined RejectNegative Enum(ira_algorithm) Var(flag_ira_algorithm) Init(IRA_ALGORITHM_CB)
14792f4e 1413-fira-algorithm=[CB|priority] Set the used IRA algorithm
1414
d62a5950 1415Enum
1416Name(ira_algorithm) Type(enum ira_algorithm) UnknownError(unknown IRA algorithm %qs)
1417
1418EnumValue
1419Enum(ira_algorithm) String(CB) Value(IRA_ALGORITHM_CB)
1420
1421EnumValue
1422Enum(ira_algorithm) String(priority) Value(IRA_ALGORITHM_PRIORITY)
1423
14792f4e 1424fira-region=
0cb057cb 1425Common Joined RejectNegative Enum(ira_region) Var(flag_ira_region) Init(IRA_REGION_AUTODETECT)
14792f4e 1426-fira-region=[one|all|mixed] Set regions for IRA
47dd2e78 1427
d62a5950 1428Enum
1429Name(ira_region) Type(enum ira_region) UnknownError(unknown IRA region %qs)
1430
1431EnumValue
1432Enum(ira_region) String(one) Value(IRA_REGION_ONE)
1433
1434EnumValue
1435Enum(ira_region) String(all) Value(IRA_REGION_ALL)
1436
1437EnumValue
1438Enum(ira_region) String(mixed) Value(IRA_REGION_MIXED)
1439
1ec78e16 1440fira-hoist-pressure
1441Common Report Var(flag_ira_hoist_pressure) Init(1) Optimization
1442Use IRA based register pressure calculation
1443in RTL hoist optimizations.
1444
e8eed2f8 1445fira-loop-pressure
155354e5 1446Common Report Var(flag_ira_loop_pressure) Optimization
e8eed2f8 1447Use IRA based register pressure calculation
1448in RTL loop optimizations.
1449
47dd2e78 1450fira-share-save-slots
1451Common Report Var(flag_ira_share_save_slots) Init(1)
1452Share slots for saving different hard registers.
1453
1454fira-share-spill-slots
1455Common Report Var(flag_ira_share_spill_slots) Init(1)
1456Share stack slots for spilled pseudo-registers.
1457
1458fira-verbose=
4aafe913 1459Common RejectNegative Joined UInteger Var(flag_ira_verbose) Init(5)
cf210371 1460-fira-verbose=<number> Control IRA's level of diagnostic messages.
47dd2e78 1461
dec41e98 1462fivopts
87c75316 1463Common Report Var(flag_ivopts) Init(1) Optimization
dec41e98 1464Optimize induction variables on trees
1465
51d8e657 1466fjump-tables
87c75316 1467Common Var(flag_jump_tables) Init(1) Optimization
51d8e657 1468Use jump tables for sufficiently large switch statements
1469
1e06725a 1470fkeep-inline-functions
2e9da478 1471Common Report Var(flag_keep_inline_functions)
72528c71 1472Generate code for functions even if they are fully inlined
1e06725a 1473
1474fkeep-static-consts
2e9da478 1475Common Report Var(flag_keep_static_consts) Init(1)
72528c71 1476Emit static const variables even if they are not used
1e06725a 1477
ecdb6d1a 1478fleading-underscore
2e9da478 1479Common Report Var(flag_leading_underscore) Init(-1)
72528c71 1480Give external symbols a leading underscore
ecdb6d1a 1481
4f87b914 1482floop-optimize
3b0273a1 1483Common Ignore
334ec2d8 1484Does nothing. Preserved for backward compatibility.
4f87b914 1485
7bfefa9d 1486flto
cbcf2791 1487Common
7bfefa9d 1488Enable link-time optimization.
1489
cbcf2791 1490flto=
1491Common RejectNegative Joined Var(flag_lto)
1492Link-time optimization with number of parallel jobs or jobserver.
1493
48e3ea52 1494flto-partition=1to1
1495Common Var(flag_lto_partition_1to1)
0851d795 1496Partition symbols and vars at linktime based on object files they originate from
48e3ea52 1497
1498flto-partition=balanced
1499Common Var(flag_lto_partition_balanced)
1500Partition functions and vars at linktime into approximately same sized buckets
1501
0851d795 1502flto-partition=max
1503Common Var(flag_lto_partition_max)
1504Put every symbol into separate partition
1505
cbcf2791 1506flto-partition=none
1507Common Var(flag_lto_partition_none)
1508Disable partioning and streaming
1509
7bfefa9d 1510; The initial value of -1 comes from Z_DEFAULT_COMPRESSION in zlib.h.
1511flto-compression-level=
212cc995 1512Common Joined RejectNegative UInteger Var(flag_lto_compression_level) Init(-1)
cf210371 1513-flto-compression-level=<number> Use zlib compression level <number> for IL
7bfefa9d 1514
1515flto-report
596c40fb 1516Common Report Var(flag_lto_report) Init(0)
7bfefa9d 1517Report various link-time optimization statistics
1518
b63a7a3e 1519flto-report-wpa
1520Common Report Var(flag_lto_report_wpa) Init(0)
1521Report various link-time optimization statistics for WPA only
1522
ecdb6d1a 1523fmath-errno
ecee1b29 1524Common Report Var(flag_errno_math) Init(1) Optimization SetByCombined
72528c71 1525Set errno after built-in math functions
ecdb6d1a 1526
566d7c74 1527fmax-errors=
1528Common Joined RejectNegative UInteger Var(flag_max_errors)
1529-fmax-errors=<number> Maximum number of errors to report
1530
ecdb6d1a 1531fmem-report
2e9da478 1532Common Report Var(mem_report)
72528c71 1533Report on permanent memory allocation
ecdb6d1a 1534
93e5f148 1535fmem-report-wpa
1536Common Report Var(mem_report_wpa)
1537Report on permanent memory allocation in WPA only
1538
82a16202 1539; This will attempt to merge constant section constants, if 1 only
1540; string constants and constants from constant pool, if 2 also constant
1541; variables.
ecdb6d1a 1542fmerge-all-constants
87c75316 1543Common Report Var(flag_merge_constants,2) Init(1) Optimization
72528c71 1544Attempt to merge identical constants and constant variables
ecdb6d1a 1545
1546fmerge-constants
5461e683 1547Common Report Var(flag_merge_constants,1) Optimization
72528c71 1548Attempt to merge identical constants across compilation units
ecdb6d1a 1549
7765591b 1550fmerge-debug-strings
1551Common Report Var(flag_merge_debug_strings) Init(1)
1552Attempt to merge identical debug strings across compilation units
1553
1e06725a 1554fmessage-length=
1555Common RejectNegative Joined UInteger
53b8e5c1 1556-fmessage-length=<number> Limit diagnostics to <number> characters per line. 0 suppresses line-wrapping
1e06725a 1557
406a73e7 1558fmodulo-sched
87c75316 1559Common Report Var(flag_modulo_sched) Optimization
406a73e7 1560Perform SMS based modulo scheduling before the first scheduling pass
1561
3a943084 1562fmodulo-sched-allow-regmoves
1563Common Report Var(flag_modulo_sched_allow_regmoves)
1564Perform SMS based modulo scheduling with register moves allowed
1565
3a0ecac2 1566fmove-loop-invariants
1941e89d 1567Common Report Var(flag_move_loop_invariants) Optimization
3a0ecac2 1568Move loop invariant computations out of loops
1569
3072d30e 1570fdce
76c71f34 1571Common Var(flag_dce) Init(1) Optimization
3072d30e 1572Use the RTL dead code elimination pass
1573
1574fdse
76c71f34 1575Common Var(flag_dse) Init(1) Optimization
3072d30e 1576Use the RTL dead store elimination pass
1577
f045d41d 1578freschedule-modulo-scheduled-loops
87c75316 1579Common Report Var(flag_resched_modulo_sched) Optimization
f045d41d 1580Enable/Disable the traditional scheduling in loops that already passed modulo scheduling
1581
ecdb6d1a 1582fnon-call-exceptions
87c75316 1583Common Report Var(flag_non_call_exceptions) Optimization
72528c71 1584Support synchronous non-call exceptions
ecdb6d1a 1585
1e06725a 1586fomit-frame-pointer
87c75316 1587Common Report Var(flag_omit_frame_pointer) Optimization
72528c71 1588When possible do not generate stack frames
1e06725a 1589
7bd765d4 1590fopt-info
1591Common Report Var(flag_opt_info) Optimization
1592Enable all optimization info dumps on stderr
1593
1594fopt-info-
1595Common Joined RejectNegative Var(common_deferred_options) Defer
1596-fopt-info[-<type>=filename] Dump compiler optimization details
1597
ecdb6d1a 1598foptimize-register-move
284f0696 1599Common Ignore
1600Does nothing. Preserved for backward compatibility.
ecdb6d1a 1601
1e06725a 1602foptimize-sibling-calls
87c75316 1603Common Report Var(flag_optimize_sibling_calls) Optimization
72528c71 1604Optimize sibling and tail recursive calls
1e06725a 1605
2862cf88 1606fpartial-inlining
1607Common Report Var(flag_partial_inlining)
1608Perform partial inlining
1609
51949610 1610fpre-ipa-mem-report
1611Common Report Var(pre_ipa_mem_report)
1612Report on memory allocation before interprocedural optimization
1613
1614fpost-ipa-mem-report
1615Common Report Var(post_ipa_mem_report)
1616Report on memory allocation before interprocedural optimization
1617
ecdb6d1a 1618fpack-struct
87c75316 1619Common Report Var(flag_pack_struct) Optimization
72528c71 1620Pack structure members together without holes
ecdb6d1a 1621
6b5553e5 1622fpack-struct=
87c75316 1623Common RejectNegative Joined UInteger Optimization
6b5553e5 1624-fpack-struct=<number> Set initial maximum structure member alignment
1625
1e06725a 1626fpcc-struct-return
4aafe913 1627Common Report Var(flag_pcc_struct_return,1) Init(DEFAULT_PCC_STRUCT_RETURN)
72528c71 1628Return small aggregates in memory, not registers
1e06725a 1629
1630fpeel-loops
87c75316 1631Common Report Var(flag_peel_loops) Optimization
72528c71 1632Perform loop peeling
1e06725a 1633
1634fpeephole
87c75316 1635Common Report Var(flag_no_peephole,0) Optimization
72528c71 1636Enable machine specific peephole optimizations
1e06725a 1637
ecdb6d1a 1638fpeephole2
87c75316 1639Common Report Var(flag_peephole2) Optimization
72528c71 1640Enable an RTL peephole pass before sched2
ecdb6d1a 1641
82a16202 1642fPIC
e27c5cf0 1643Common Report Var(flag_pic,2) Negative(fPIE)
82a16202 1644Generate position-independent code if possible (large mode)
1645
1646fPIE
e27c5cf0 1647Common Report Var(flag_pie,2) Negative(fpic)
82a16202 1648Generate position-independent code for executables if possible (large mode)
1649
ecdb6d1a 1650fpic
e27c5cf0 1651Common Report Var(flag_pic,1) Negative(fpie)
82a16202 1652Generate position-independent code if possible (small mode)
ecdb6d1a 1653
1654fpie
e27c5cf0 1655Common Report Var(flag_pie,1) Negative(fPIC)
82a16202 1656Generate position-independent code for executables if possible (small mode)
ecdb6d1a 1657
9227b6fc 1658fplugin=
f0da0668 1659Common Joined RejectNegative Var(common_deferred_options) Defer
9227b6fc 1660Specify a plugin to load
1661
1662fplugin-arg-
f0da0668 1663Common Joined RejectNegative Var(common_deferred_options) Defer
cf210371 1664-fplugin-arg-<name>-<key>[=<value>] Specify argument <key>=<value> for plugin <name>
9227b6fc 1665
ad4a85ad 1666fpredictive-commoning
76c71f34 1667Common Report Var(flag_predictive_commoning) Optimization
ad4a85ad 1668Run predictive commoning optimization.
1669
1e06725a 1670fprefetch-loop-arrays
cd459e62 1671Common Report Var(flag_prefetch_loop_arrays) Init(-1) Optimization
72528c71 1672Generate prefetch instructions, if available, for arrays in loops
1e06725a 1673
ecdb6d1a 1674fprofile
2e9da478 1675Common Report Var(profile_flag)
72528c71 1676Enable basic program profiling code
ecdb6d1a 1677
1678fprofile-arcs
2e9da478 1679Common Report Var(profile_arc_flag)
72528c71 1680Insert arc-based program profiling code
ecdb6d1a 1681
3e3a0e9c 1682fprofile-dir=
cc4fa57a 1683Common Joined RejectNegative Var(profile_data_prefix)
3e3a0e9c 1684Set the top-level directory for storing the profile data.
1685The default is 'pwd'.
1686
e0dc6f2b 1687fprofile-correction
1688Common Report Var(flag_profile_correction)
1689Enable correction of flow inconsistent profile data input
1690
7dea76ba 1691fprofile-generate
1692Common
1693Enable common options for generating profile info for profile feedback directed optimizations
1694
3e3a0e9c 1695fprofile-generate=
1696Common Joined RejectNegative
1697Enable common options for generating profile info for profile feedback directed optimizations, and set -fprofile-dir=
1698
7dea76ba 1699fprofile-use
3e3a0e9c 1700Common Var(flag_profile_use)
7dea76ba 1701Enable common options for performing profile feedback directed optimizations
1702
3e3a0e9c 1703fprofile-use=
1704Common Joined RejectNegative
1705Enable common options for performing profile feedback directed optimizations, and set -fprofile-dir=
1706
1c6a7b8c 1707fprofile-values
2e9da478 1708Common Report Var(flag_profile_values)
1c6a7b8c 1709Insert code to profile values of expressions
1710
5168ef25 1711fprofile-report
1712Common Report Var(profile_report)
1713Report on consistency of profile
1714
af48f0b1 1715fprofile-reorder-functions
1716Common Report Var(flag_profile_reorder_functions)
1717Enable function reordering that improves code placement
1718
1e06725a 1719frandom-seed
9faf44d6 1720Common Var(common_deferred_options) Defer
1e06725a 1721
1722frandom-seed=
9faf44d6 1723Common Joined RejectNegative Var(common_deferred_options) Defer
53b8e5c1 1724-frandom-seed=<string> Make compile reproducible using <string>
1e06725a 1725
7c6733e8 1726; This switch causes the command line that was used to create an
1727; object file to be recorded into the object file. The exact format
1728; of this recording is target and binary file format dependent.
1729; It is related to the -fverbose-asm switch, but that switch only
1730; records information in the assembler output file as comments, so
1731; they never reach the object file.
1732frecord-gcc-switches
1733Common Report Var(flag_record_gcc_switches)
1734Record gcc command line switches in the object file.
1735
1e06725a 1736freg-struct-return
5461e683 1737Common Report Var(flag_pcc_struct_return,0) Optimization
72528c71 1738Return small aggregates in registers
1e06725a 1739
ecdb6d1a 1740fregmove
284f0696 1741Common Ignore
1742Does nothing. Preserved for backward compatibility.
ecdb6d1a 1743
57a8bf1b 1744flive-range-shrinkage
1745Common Report Var(flag_live_range_shrinkage) Init(0) Optimization
1746Relief of register pressure through live range shrinkage
1747
ecdb6d1a 1748frename-registers
87c75316 1749Common Report Var(flag_rename_registers) Init(2) Optimization
72528c71 1750Perform a register renaming optimization pass
ecdb6d1a 1751
1752freorder-blocks
87c75316 1753Common Report Var(flag_reorder_blocks) Optimization
72528c71 1754Reorder basic blocks to improve code placement
ecdb6d1a 1755
4f18499c 1756freorder-blocks-and-partition
87c75316 1757Common Report Var(flag_reorder_blocks_and_partition) Optimization
4f18499c 1758Reorder basic blocks and partition into hot and cold sections
1759
ecdb6d1a 1760freorder-functions
87c75316 1761Common Report Var(flag_reorder_functions) Optimization
72528c71 1762Reorder functions to improve code placement
ecdb6d1a 1763
1e06725a 1764frerun-cse-after-loop
c17f64cc 1765Common Report Var(flag_rerun_cse_after_loop) Optimization
72528c71 1766Add a common subexpression elimination pass after loop optimizations
1e06725a 1767
4f87b914 1768frerun-loop-opt
3b0273a1 1769Common Ignore
334ec2d8 1770Does nothing. Preserved for backward compatibility.
4f87b914 1771
5466f589 1772frounding-math
ecee1b29 1773Common Report Var(flag_rounding_math) Optimization SetByCombined
5466f589 1774Disable optimizations that assume default FP rounding behavior
1775
ecdb6d1a 1776fsched-interblock
87c75316 1777Common Report Var(flag_schedule_interblock) Init(1) Optimization
72528c71 1778Enable scheduling across basic blocks
ecdb6d1a 1779
a7dcf969 1780fsched-pressure
1781Common Report Var(flag_sched_pressure) Init(0) Optimization
1782Enable register pressure sensitive insn scheduling
1783
ecdb6d1a 1784fsched-spec
87c75316 1785Common Report Var(flag_schedule_speculative) Init(1) Optimization
72528c71 1786Allow speculative motion of non-loads
ecdb6d1a 1787
1788fsched-spec-load
87c75316 1789Common Report Var(flag_schedule_speculative_load) Optimization
72528c71 1790Allow speculative motion of some loads
ecdb6d1a 1791
1792fsched-spec-load-dangerous
87c75316 1793Common Report Var(flag_schedule_speculative_load_dangerous) Optimization
72528c71 1794Allow speculative motion of more loads
ecdb6d1a 1795
1e06725a 1796fsched-verbose=
9faf44d6 1797Common RejectNegative Joined UInteger Var(sched_verbose_param)
53b8e5c1 1798-fsched-verbose=<number> Set the verbosity level of the scheduler
1e06725a 1799
ecdb6d1a 1800fsched2-use-superblocks
87c75316 1801Common Report Var(flag_sched2_use_superblocks) Optimization
72528c71 1802If scheduling post reload, do superblock scheduling
ecdb6d1a 1803
1804fsched2-use-traces
3b0273a1 1805Common Ignore
fda153ea 1806Does nothing. Preserved for backward compatibility.
ecdb6d1a 1807
1e06725a 1808fschedule-insns
87c75316 1809Common Report Var(flag_schedule_insns) Optimization
72528c71 1810Reschedule instructions before register allocation
1e06725a 1811
1812fschedule-insns2
87c75316 1813Common Report Var(flag_schedule_insns_after_reload) Optimization
72528c71 1814Reschedule instructions after register allocation
1e06725a 1815
e1ab7874 1816; This flag should be on when a target implements non-trivial
1817; scheduling hooks, maybe saving some information for its own sake.
1818; On IA64, for example, this is used for correct bundling.
1819fselective-scheduling
1820Common Report Var(flag_selective_scheduling) Optimization
1821Schedule instructions using selective scheduling algorithm
1822
1823fselective-scheduling2
1824Common Report Var(flag_selective_scheduling2) Optimization
1825Run selective scheduling after reload
1826
1827fsel-sched-pipelining
1828Common Report Var(flag_sel_sched_pipelining) Init(0) Optimization
1829Perform software pipelining of inner loops during selective scheduling
1830
1831fsel-sched-pipelining-outer-loops
1832Common Report Var(flag_sel_sched_pipelining_outer_loops) Init(0) Optimization
1833Perform software pipelining of outer loops during selective scheduling
1834
1835fsel-sched-reschedule-pipelined
1836Common Report Var(flag_sel_sched_reschedule_pipelined) Init(0) Optimization
1837Reschedule pipelined regions without pipelining
1838
82a16202 1839; sched_stalled_insns means that insns can be moved prematurely from the queue
1840; of stalled insns into the ready list.
52c4b43f 1841fsched-stalled-insns
46f8e3b0 1842Common Report Var(flag_sched_stalled_insns) Optimization UInteger
52c4b43f 1843Allow premature scheduling of queued insns
1844
1845fsched-stalled-insns=
a0c938f0 1846Common RejectNegative Joined UInteger
98b93ebb 1847-fsched-stalled-insns=<number> Set number of queued insns that can be prematurely scheduled
52c4b43f 1848
82a16202 1849; sched_stalled_insns_dep controls how many recently scheduled cycles will
1850; be examined for a dependency on a stalled insn that is candidate for
1851; premature removal from the queue of stalled insns into the ready list (has
1852; an effect only if the flag 'sched_stalled_insns' is set).
52c4b43f 1853fsched-stalled-insns-dep
46f8e3b0 1854Common Report Var(flag_sched_stalled_insns_dep,1) Init(1) Optimization UInteger
52c4b43f 1855Set dependence distance checking in premature scheduling of queued insns
1856
1857fsched-stalled-insns-dep=
1858Common RejectNegative Joined UInteger
98b93ebb 1859-fsched-stalled-insns-dep=<number> Set dependence distance checking in premature scheduling of queued insns
52c4b43f 1860
4d569386 1861fsched-group-heuristic
1862Common Report Var(flag_sched_group_heuristic) Init(1) Optimization
1863Enable the group heuristic in the scheduler
1864
1865fsched-critical-path-heuristic
1866Common Report Var(flag_sched_critical_path_heuristic) Init(1) Optimization
1867Enable the critical path heuristic in the scheduler
1868
1869fsched-spec-insn-heuristic
1870Common Report Var(flag_sched_spec_insn_heuristic) Init(1) Optimization
1871Enable the speculative instruction heuristic in the scheduler
1872
4d569386 1873fsched-rank-heuristic
1874Common Report Var(flag_sched_rank_heuristic) Init(1) Optimization
1875Enable the rank heuristic in the scheduler
1876
1877fsched-last-insn-heuristic
1878Common Report Var(flag_sched_last_insn_heuristic) Init(1) Optimization
1879Enable the last instruction heuristic in the scheduler
1880
1881fsched-dep-count-heuristic
1882Common Report Var(flag_sched_dep_count_heuristic) Init(1) Optimization
1883Enable the dependent count heuristic in the scheduler
1884
f2d0e9f1 1885fsection-anchors
87c75316 1886Common Report Var(flag_section_anchors) Optimization
f2d0e9f1 1887Access data in the same section from shared anchor points
1888
2b74c150 1889fsee
3b0273a1 1890Common Ignore
1bc99153 1891Does nothing. Preserved for backward compatibility.
2b74c150 1892
a5b022e7 1893fzee
1d4227c3 1894Common Ignore
1895Does nothing. Preserved for backward compatibility.
1896
1897free
1898Common Report Var(flag_ree) Init(0)
1899Turn on Redundant Extensions Elimination pass.
a5b022e7 1900
5fd4bf3b 1901fshow-column
abf6a617 1902Common Report Var(flag_show_column) Init(1)
b559b9e2 1903Show column numbers in diagnostics, when available. Default on
5fd4bf3b 1904
1f021f97 1905fshrink-wrap
1906Common Report Var(flag_shrink_wrap) Optimization
1907Emit function prologues only before parts of the function that need it,
1908rather than at the top of the function.
1909
ecdb6d1a 1910fsignaling-nans
ecee1b29 1911Common Report Var(flag_signaling_nans) Optimization SetByCombined
72528c71 1912Disable optimizations observable by IEEE signaling NaNs
ecdb6d1a 1913
893038cd 1914fsigned-zeros
ecee1b29 1915Common Report Var(flag_signed_zeros) Init(1) Optimization SetByCombined
893038cd 1916Disable floating point optimizations that ignore the IEEE signedness of zero
1917
ecdb6d1a 1918fsingle-precision-constant
87c75316 1919Common Report Var(flag_single_precision_constant) Optimization
72528c71 1920Convert floating point constants to single precision constants
ecdb6d1a 1921
a9989fb4 1922fsplit-ivs-in-unroller
87c75316 1923Common Report Var(flag_split_ivs_in_unroller) Init(1) Optimization
3284a242 1924Split lifetimes of induction variables when loops are unrolled
a9989fb4 1925
48b14f50 1926fsplit-stack
1927Common Report Var(flag_split_stack) Init(-1)
1928Generate discontiguous stack frames
1929
1a6a0f2a 1930fsplit-wide-types
e8831472 1931Common Report Var(flag_split_wide_types) Optimization
1a6a0f2a 1932Split wide types into independent registers
1933
375bb675 1934fvariable-expansion-in-unroller
87c75316 1935Common Report Var(flag_variable_expansion_in_unroller) Optimization
3284a242 1936Apply variable expansion when loops are unrolled
375bb675 1937
4852b829 1938fstack-check=
1939Common Report RejectNegative Joined
1940-fstack-check=[no|generic|specific] Insert stack checking code into the program
1941
ecdb6d1a 1942fstack-check
67089c6b 1943Common Alias(fstack-check=, specific, no)
4852b829 1944Insert stack checking code into the program. Same as -fstack-check=specific
ecdb6d1a 1945
1e06725a 1946fstack-limit
f0da0668 1947Common Var(common_deferred_options) Defer
1e06725a 1948
941a4893 1949fstack-limit-register=
f0da0668 1950Common RejectNegative Joined Var(common_deferred_options) Defer
53b8e5c1 1951-fstack-limit-register=<register> Trap if the stack goes past <register>
941a4893 1952
1953fstack-limit-symbol=
f0da0668 1954Common RejectNegative Joined Var(common_deferred_options) Defer
53b8e5c1 1955-fstack-limit-symbol=<name> Trap if the stack goes past symbol <name>
941a4893 1956
f1a0edff 1957fstack-protector
1958Common Report Var(flag_stack_protect, 1)
1959Use propolice as a stack protection method
1960
1961fstack-protector-all
5461e683 1962Common Report RejectNegative Var(flag_stack_protect, 2)
f1a0edff 1963Use a stack protection method for every function
1964
b156ec37 1965fstack-protector-strong
1966Common Report RejectNegative Var(flag_stack_protect, 3)
1967Use a smart stack protection method for certain functions
1968
990495a7 1969fstack-usage
1970Common RejectNegative Var(flag_stack_usage)
1971Output stack usage information on a per-function basis
1972
1e06725a 1973fstrength-reduce
3b0273a1 1974Common Ignore
334ec2d8 1975Does nothing. Preserved for backward compatibility.
1e06725a 1976
82a16202 1977; Nonzero if we should do (language-dependent) alias analysis.
1978; Typically, this analysis will assume that expressions of certain
1979; types do not alias expressions of certain other types. Only used
1980; if alias analysis (in general) is enabled.
ecdb6d1a 1981fstrict-aliasing
87c75316 1982Common Report Var(flag_strict_aliasing) Optimization
72528c71 1983Assume strict aliasing rules apply
ecdb6d1a 1984
981eb798 1985fstrict-overflow
1986Common Report Var(flag_strict_overflow)
1987Treat signed overflow as undefined
1988
d8219307 1989fsync-libcalls
1990Common Report Var(flag_sync_libcalls) Init(1)
1991Implement __atomic operations via libcalls to legacy __sync functions
1992
1e06725a 1993fsyntax-only
2e9da478 1994Common Report Var(flag_syntax_only)
72528c71 1995Check for syntax errors, then stop
1e06725a 1996
ecdb6d1a 1997ftest-coverage
2e9da478 1998Common Report Var(flag_test_coverage)
72528c71 1999Create data files needed by \"gcov\"
ecdb6d1a 2000
1e06725a 2001fthread-jumps
87c75316 2002Common Report Var(flag_thread_jumps) Optimization
72528c71 2003Perform jump threading optimizations
1e06725a 2004
ecdb6d1a 2005ftime-report
2e9da478 2006Common Report Var(time_report)
72528c71 2007Report the time taken by each compiler pass
ecdb6d1a 2008
941a4893 2009ftls-model=
d62a5950 2010Common Joined RejectNegative Enum(tls_model) Var(flag_tls_default) Init(TLS_MODEL_GLOBAL_DYNAMIC)
53b8e5c1 2011-ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec] Set the default thread-local storage code generation model
941a4893 2012
d62a5950 2013Enum
2014Name(tls_model) Type(enum tls_model) UnknownError(unknown TLS model %qs)
2015
2016EnumValue
2017Enum(tls_model) String(global-dynamic) Value(TLS_MODEL_GLOBAL_DYNAMIC)
2018
2019EnumValue
2020Enum(tls_model) String(local-dynamic) Value(TLS_MODEL_LOCAL_DYNAMIC)
2021
2022EnumValue
2023Enum(tls_model) String(initial-exec) Value(TLS_MODEL_INITIAL_EXEC)
2024
2025EnumValue
2026Enum(tls_model) String(local-exec) Value(TLS_MODEL_LOCAL_EXEC)
2027
56af936e 2028ftoplevel-reorder
8188ae06 2029Common Report Var(flag_toplevel_reorder) Init(2) Optimization
56af936e 2030Reorder top level functions, variables, and asms
2031
1e06725a 2032ftracer
2e9da478 2033Common Report Var(flag_tracer)
72528c71 2034Perform superblock formation via tail duplication
1e06725a 2035
82a16202 2036; Zero means that floating-point math operations cannot generate a
2037; (user-visible) trap. This is the case, for example, in nonstop
2038; IEEE 754 arithmetic.
ecdb6d1a 2039ftrapping-math
ecee1b29 2040Common Report Var(flag_trapping_math) Init(1) Optimization SetByCombined
72528c71 2041Assume floating-point operations can trap
ecdb6d1a 2042
2043ftrapv
87c75316 2044Common Report Var(flag_trapv) Optimization
72528c71 2045Trap for signed overflow in addition, subtraction and multiplication
ecdb6d1a 2046
4ee9c684 2047ftree-ccp
87c75316 2048Common Report Var(flag_tree_ccp) Optimization
4ee9c684 2049Enable SSA-CCP optimization on trees
2050
b7e55469 2051ftree-bit-ccp
2052Common Report Var(flag_tree_bit_ccp) Optimization
2053Enable SSA-BIT-CCP optimization on trees
2054
88dbf20f 2055ftree-store-ccp
3b0273a1 2056Common Ignore
61207d43 2057Does nothing. Preserved for backward compatibility.
88dbf20f 2058
4ee9c684 2059ftree-ch
87c75316 2060Common Report Var(flag_tree_ch) Optimization
4ee9c684 2061Enable loop header copying on trees
2062
4015e18c 2063ftree-coalesce-inlined-vars
2064Common Report Var(flag_ssa_coalesce_vars,1) Init(2) RejectNegative Optimization
2065Enable coalescing of copy-related user variables that are inlined
2066
2067ftree-coalesce-vars
2068Common Report Var(flag_ssa_coalesce_vars,2) Optimization
2069Enable coalescing of all copy-related user variables
2070
4ee9c684 2071ftree-copyrename
87c75316 2072Common Report Var(flag_tree_copyrename) Optimization
3284a242 2073Replace SSA temporaries with better names in copies
4ee9c684 2074
88dbf20f 2075ftree-copy-prop
87c75316 2076Common Report Var(flag_tree_copy_prop) Optimization
88dbf20f 2077Enable copy propagation on trees
2078
2079ftree-store-copy-prop
3b0273a1 2080Common Ignore
578ef723 2081Does nothing. Preserved for backward compatibility.
88dbf20f 2082
e6d0e152 2083ftree-cselim
2084Common Report Var(flag_tree_cselim) Init(2) Optimization
2085Transform condition stores into unconditional ones
2086
a347af29 2087ftree-switch-conversion
2088Common Report Var(flag_tree_switch_conversion) Optimization
2089Perform conversions of switch initializations.
2090
4ee9c684 2091ftree-dce
87c75316 2092Common Report Var(flag_tree_dce) Optimization
4ee9c684 2093Enable SSA dead code elimination optimization on trees
2094
2095ftree-dominator-opts
87c75316 2096Common Report Var(flag_tree_dom) Optimization
4ee9c684 2097Enable dominator optimizations
2098
51385f30 2099ftree-tail-merge
2100Common Report Var(flag_tree_tail_merge) Optimization
2101Enable tail merging on trees
2102
4ee9c684 2103ftree-dse
87c75316 2104Common Report Var(flag_tree_dse) Optimization
4ee9c684 2105Enable dead store elimination
2106
408c3c77 2107ftree-forwprop
2108Common Report Var(flag_tree_forwprop) Init(1) Optimization
2109Enable forward propagation on trees
2110
591c2a30 2111ftree-fre
87c75316 2112Common Report Var(flag_tree_fre) Optimization
591c2a30 2113Enable Full Redundancy Elimination (FRE) on trees
2114
9efe50a4 2115foptimize-strlen
2116Common Report Var(flag_optimize_strlen) Optimization
2117Enable string length optimizations on trees
2118
30b10261 2119fisolate-erroneous-paths-dereference
2120Common Report Var(flag_isolate_erroneous_paths_dereference) Optimization
2121Detect paths which trigger erroneous or undefined behaviour due to
2122dereferencing a NULL pointer. Isolate those paths from the main control
2123flow and turn the statement with erroneous or undefined behaviour into a trap.
2124
2125fisolate-erroneous-paths-attribute
2126Common Report Var(flag_isolate_erroneous_paths_attribute) Optimization
2127Detect paths which trigger erroneous or undefined behaviour due a NULL value
2128being used in a way which is forbidden by a returns_nonnull or nonnull
2129attribute. Isolate those paths from the main control flow and turn the
2130statement with erroneous or undefined behaviour into a trap.
db242b6d 2131
801c5610 2132ftree-loop-distribution
2b945500 2133Common Report Var(flag_tree_loop_distribution) Optimization
801c5610 2134Enable loop distribution on trees
2135
0acf3477 2136ftree-loop-distribute-patterns
2137Common Report Var(flag_tree_loop_distribute_patterns) Optimization
2138Enable loop distribution for patterns transformed into a library call
2139
41b5cc78 2140ftree-loop-im
87c75316 2141Common Report Var(flag_tree_loop_im) Init(1) Optimization
7d23383d 2142Enable loop invariant motion on trees
2143
60cfcb79 2144ftree-loop-linear
464a406e 2145Common Alias(floop-interchange)
2146Enable loop interchange transforms. Same as -floop-interchange
60cfcb79 2147
41b5cc78 2148ftree-loop-ivcanon
87c75316 2149Common Report Var(flag_tree_loop_ivcanon) Init(1) Optimization
41b5cc78 2150Create canonical induction variables in loops
2151
dcb9eccb 2152ftree-loop-optimize
87c75316 2153Common Report Var(flag_tree_loop_optimize) Init(1) Optimization
dcb9eccb 2154Enable loop optimizations on tree level
2155
28c92cbb 2156ftree-parallelize-loops=
212cc995 2157Common Report Joined RejectNegative UInteger Var(flag_tree_parallelize_loops) Init(1)
28c92cbb 2158Enable automatic parallelization of loops
2159
408c3c77 2160ftree-phiprop
2161Common Report Var(flag_tree_phiprop) Init(1) Optimization
2162Enable hoisting loads from conditional pointers.
2163
4ee9c684 2164ftree-pre
87c75316 2165Common Report Var(flag_tree_pre) Optimization
4ee9c684 2166Enable SSA-PRE optimization on trees
2167
0f9b384d 2168ftree-partial-pre
2169Common Report Var(flag_tree_partial_pre) Optimization
2170In SSA-PRE optimization on trees, enable partial-partial redundancy elimination
2171
408c3c77 2172ftree-pta
1941e89d 2173Common Report Var(flag_tree_pta) Optimization
408c3c77 2174Perform function-local points-to analysis on trees.
2175
621a93b1 2176ftree-reassoc
2177Common Report Var(flag_tree_reassoc) Init(1) Optimization
2178Enable reassociation on tree level
2179
2be14d8b 2180ftree-salias
3b0273a1 2181Common Ignore
70393469 2182Does nothing. Preserved for backward compatibility.
2be14d8b 2183
5e733b02 2184ftree-sink
87c75316 2185Common Report Var(flag_tree_sink) Optimization
5e733b02 2186Enable SSA code sinking on trees
2187
6de100ef 2188ftree-slsr
2189Common Report Var(flag_tree_slsr) Optimization
2190Perform straight-line strength reduction
2191
4ee9c684 2192ftree-sra
87c75316 2193Common Report Var(flag_tree_sra) Optimization
4ee9c684 2194Perform scalar replacement of aggregates
2195
2196ftree-ter
c17f64cc 2197Common Report Var(flag_tree_ter) Optimization
4ee9c684 2198Replace temporary expressions in the SSA->normal pass
2199
87c75316 2200ftree-lrs
2201Common Report Var(flag_tree_live_range_split) Optimization
2202Perform live range splitting during the SSA->normal pass
2203
88dbf20f 2204ftree-vrp
87c75316 2205Common Report Var(flag_tree_vrp) Init(0) Optimization
88dbf20f 2206Perform Value Range Propagation on trees
2207
1e06725a 2208funit-at-a-time
8188ae06 2209Common Report Var(flag_unit_at_a_time) Init(1) Optimization
72528c71 2210Compile whole compilation unit at a time
1e06725a 2211
2212funroll-loops
87c75316 2213Common Report Var(flag_unroll_loops) Optimization
72528c71 2214Perform loop unrolling when iteration count is known
1e06725a 2215
2216funroll-all-loops
87c75316 2217Common Report Var(flag_unroll_all_loops) Optimization
72528c71 2218Perform loop unrolling for all loops
1e06725a 2219
7e3cc681 2220; Nonzero means that loop optimizer may assume that the induction variables
2221; that control loops do not overflow and that the loops with nontrivial
2222; exit condition are not infinite
2223funsafe-loop-optimizations
87c75316 2224Common Report Var(flag_unsafe_loop_optimizations) Optimization
7e3cc681 2225Allow loop optimizations to assume that the loops behave in normal way
2226
49d060d7 2227fassociative-math
ecee1b29 2228Common Report Var(flag_associative_math) SetByCombined
49d060d7 2229Allow optimization for floating-point arithmetic which may change the
2230result of the operation due to rounding.
2231
2232freciprocal-math
ecee1b29 2233Common Report Var(flag_reciprocal_math) SetByCombined
49d060d7 2234Same as -fassociative-math for expressions which include division.
2235
82a16202 2236; Nonzero means that unsafe floating-point math optimizations are allowed
2237; for the sake of speed. IEEE compliance is not guaranteed, and operations
2238; are allowed to assume that their arguments and results are "normal"
2239; (e.g., nonnegative for SQRT).
ecdb6d1a 2240funsafe-math-optimizations
ecee1b29 2241Common Report Var(flag_unsafe_math_optimizations) Optimization SetByCombined
72528c71 2242Allow math optimizations that may violate IEEE or ISO standards
ecdb6d1a 2243
1e06725a 2244funswitch-loops
87c75316 2245Common Report Var(flag_unswitch_loops) Optimization
72528c71 2246Perform loop unswitching
1e06725a 2247
ecdb6d1a 2248funwind-tables
87c75316 2249Common Report Var(flag_unwind_tables) Optimization
72528c71 2250Just generate unwind tables for exception handling
ecdb6d1a 2251
99d5fe2d 2252fuse-ld=bfd
c75e4990 2253Common Driver Negative(fuse-ld=gold)
99d5fe2d 2254Use the bfd linker instead of the default linker
2255
2256fuse-ld=gold
c75e4990 2257Common Driver Negative(fuse-ld=bfd)
99d5fe2d 2258Use the gold linker instead of the default linker
2259
386fbe6a 2260fuse-linker-plugin
cef15d47 2261Common Undocumented Var(flag_use_linker_plugin)
386fbe6a 2262
0f8defe5 2263; Positive if we should track variables, negative if we should run
2264; the var-tracking pass only to discard debug annotations, zero if
2265; we're not to run it. When flag_var_tracking == 2 (AUTODETECT_VALUE) it
2266; will be set according to optimize, debug_info_level and debug_hooks
2267; in process_options ().
5923a5e7 2268fvar-tracking
0f8defe5 2269Common Report Var(flag_var_tracking) Init(2) Optimization
5923a5e7 2270Perform variable tracking
2271
0f8defe5 2272; Positive if we should track variables at assignments, negative if
2273; we should run the var-tracking pass only to discard debug
2274; annotations. When flag_var_tracking_assignments ==
2275; AUTODETECT_VALUE it will be set according to flag_var_tracking.
9845d120 2276fvar-tracking-assignments
0f8defe5 2277Common Report Var(flag_var_tracking_assignments) Init(2) Optimization
9845d120 2278Perform variable tracking by annotating assignments
2279
0f8defe5 2280; Nonzero if we should toggle flag_var_tracking_assignments after
2281; processing options and computing its default. */
9845d120 2282fvar-tracking-assignments-toggle
0f8defe5 2283Common Report Var(flag_var_tracking_assignments_toggle) Optimization
9845d120 2284Toggle -fvar-tracking-assignments
2285
3e1cce93 2286; Positive if we should track uninitialized variables, negative if
2287; we should run the var-tracking pass only to discard debug
2288; annotations. When flag_var_tracking_uninit == AUTODETECT_VALUE it
2289; will be set according to flag_var_tracking.
d53bb226 2290fvar-tracking-uninit
2291Common Report Var(flag_var_tracking_uninit) Optimization
2292Perform variable tracking and also tag variables that are uninitialized
2293
c91e8223 2294ftree-vectorize
87c75316 2295Common Report Var(flag_tree_vectorize) Optimization
043115ec 2296Enable vectorization on trees
c91e8223 2297
7bd765d4 2298ftree-vectorizer-verbose=
e64c6e9c 2299Common Joined RejectNegative Ignore
2300Does nothing. Preserved for backward compatibility.
7bd765d4 2301
043115ec 2302ftree-loop-vectorize
2303Common Report Var(flag_tree_loop_vectorize) Optimization
2304Enable loop vectorization on trees
2305
37545e54 2306ftree-slp-vectorize
043115ec 2307Common Report Var(flag_tree_slp_vectorize) Optimization
37545e54 2308Enable basic block vectorization (SLP) on trees
2309
1dbf9bd1 2310fvect-cost-model=
2311Common Joined RejectNegative Enum(vect_cost_model) Var(flag_vect_cost_model) Init(VECT_COST_MODEL_DEFAULT)
2312Specifies the cost model for vectorization
2313
3e398f5b 2314fsimd-cost-model=
2315Common Joined RejectNegative Enum(vect_cost_model) Var(flag_simd_cost_model) Init(VECT_COST_MODEL_UNLIMITED)
2316Specifies the vectorization cost model for code marked with a simd directive
2317
1dbf9bd1 2318Enum
2319Name(vect_cost_model) Type(enum vect_cost_model) UnknownError(unknown vectorizer cost model %qs)
2320
2321EnumValue
2322Enum(vect_cost_model) String(unlimited) Value(VECT_COST_MODEL_UNLIMITED)
2323
2324EnumValue
2325Enum(vect_cost_model) String(dynamic) Value(VECT_COST_MODEL_DYNAMIC)
2326
2327EnumValue
2328Enum(vect_cost_model) String(cheap) Value(VECT_COST_MODEL_CHEAP)
2329
867c03eb 2330fvect-cost-model
1dbf9bd1 2331Common RejectNegative Alias(fvect-cost-model=,dynamic)
2332Enables the dynamic vectorizer cost model. Preserved for backward compatibility.
2333
2334fno-vect-cost-model
2335Common RejectNegative Alias(fvect-cost-model=,unlimited)
2336Enables the unlimited vectorizer cost model. Preserved for backward compatibility.
867c03eb 2337
25e3c2e8 2338ftree-vect-loop-version
1dbf9bd1 2339Common Ignore
2340Does nothing. Preserved for backward compatibility.
25e3c2e8 2341
2a6e95ba 2342ftree-scev-cprop
e8831472 2343Common Report Var(flag_tree_scev_cprop) Init(1) Optimization
2a6e95ba 2344Enable copy propagation of scalar-evolution information.
2345
82a16202 2346; -fverbose-asm causes extra commentary information to be produced in
2347; the generated assembly code (to make it more readable). This option
2348; is generally only of use to those who actually need to read the
2349; generated assembly code (perhaps while debugging the compiler itself).
2350; -fno-verbose-asm, the default, causes the extra information
2351; to not be added and is useful when comparing two assembler files.
ecdb6d1a 2352fverbose-asm
2e9da478 2353Common Report Var(flag_verbose_asm)
72528c71 2354Add extra commentary to assembler output
ecdb6d1a 2355
b212f378 2356fvisibility=
d62a5950 2357Common Joined RejectNegative Enum(symbol_visibility) Var(default_visibility) Init(VISIBILITY_DEFAULT)
b212f378 2358-fvisibility=[default|internal|hidden|protected] Set the default symbol visibility
2359
d62a5950 2360Enum
2361Name(symbol_visibility) Type(enum symbol_visibility) UnknownError(unrecognized visibility value %qs)
2362
2363EnumValue
2364Enum(symbol_visibility) String(default) Value(VISIBILITY_DEFAULT)
2365
2366EnumValue
2367Enum(symbol_visibility) String(internal) Value(VISIBILITY_INTERNAL)
2368
2369EnumValue
2370Enum(symbol_visibility) String(hidden) Value(VISIBILITY_HIDDEN)
2371
2372EnumValue
2373Enum(symbol_visibility) String(protected) Value(VISIBILITY_PROTECTED)
b212f378 2374
b710ec85 2375fvtable-verify=
2376Common Joined RejectNegative Enum(vtv_priority) Var(flag_vtable_verify) Init(VTV_NO_PRIORITY)
2377Validate vtable pointers before using them.
2378
2379Enum
2380Name(vtv_priority) Type(enum vtv_priority) UnknownError(unknown vtable verify initialization priority %qs)
2381
2382EnumValue
2383Enum(vtv_priority) String(none) Value(VTV_NO_PRIORITY)
2384
2385EnumValue
2386Enum(vtv_priority) String(std) Value(VTV_STANDARD_PRIORITY)
2387
2388EnumValue
2389Enum(vtv_priority) String(preinit) Value(VTV_PREINIT_PRIORITY)
2390
2391fvtv-counts
2392Common Var(flag_vtv_counts)
2393Output vtable verification counters.
2394
2395fvtv-debug
2396Common Var(flag_vtv_debug)
2397Output vtable verification pointer sets information.
2398
1c6a7b8c 2399fvpt
87c75316 2400Common Report Var(flag_value_profile_transformations) Optimization
1c6a7b8c 2401Use expression value profiles in optimizations
2402
eeb4a70e 2403fweb
87c75316 2404Common Report Var(flag_web) Init(2) Optimization
eeb4a70e 2405Construct webs and split unrelated uses of single variable
2406
e6a23add 2407ftree-builtin-call-dce
2408Common Report Var(flag_tree_builtin_call_dce) Init(0) Optimization
2409Enable conditional dead code elimination for builtin calls
2410
62eec3b4 2411fwhole-program
87c75316 2412Common Report Var(flag_whole_program) Init(0) Optimization
62eec3b4 2413Perform whole program optimizations
2414
ecdb6d1a 2415fwrapv
87c75316 2416Common Report Var(flag_wrapv) Optimization
72528c71 2417Assume signed arithmetic overflow wraps around
ecdb6d1a 2418
ecdb6d1a 2419fzero-initialized-in-bss
2e9da478 2420Common Report Var(flag_zero_initialized_in_bss) Init(1)
72528c71 2421Put zero initialized data in the bss section
ecdb6d1a 2422
6f2f567f 2423g
2424Common JoinedOrMissing
b0e56fb1 2425Generate debug information in default format
2426
2427gcoff
8786b72c 2428Common JoinedOrMissing Negative(gdwarf)
b0e56fb1 2429Generate debug information in COFF format
2430
8786b72c 2431gdwarf
2432Common JoinedOrMissing Negative(gdwarf-)
2433Generate debug information in default version of DWARF format
2434
3d3b9d5b 2435gdwarf-
052166fd 2436Common Joined UInteger Var(dwarf_version) Init(4) Negative(gstabs)
3d3b9d5b 2437Generate debug information in DWARF v2 (or later) format
b0e56fb1 2438
2439ggdb
2440Common JoinedOrMissing
2441Generate debug information in default extended format
2442
7a99ccab 2443gno-pubnames
ea096d3d 2444Common Negative(gpubnames) Var(debug_generate_pub_sections, 0) Init(-1)
7a99ccab 2445Don't generate DWARF pubnames and pubtypes sections.
2446
2447gpubnames
ea096d3d 2448Common Negative(ggnu-pubnames) Var(debug_generate_pub_sections, 1)
7a99ccab 2449Generate DWARF pubnames and pubtypes sections.
2450
ea096d3d 2451ggnu-pubnames
2452Common Negative(gno-pubnames) Var(debug_generate_pub_sections, 2)
2453Generate DWARF pubnames and pubtypes sections with GNU extensions.
2454
f45370f8 2455gno-record-gcc-switches
052166fd 2456Common RejectNegative Var(dwarf_record_gcc_switches,0) Init(1)
f45370f8 2457Don't record gcc command line switches in DWARF DW_AT_producer.
2458
2459grecord-gcc-switches
2460Common RejectNegative Var(dwarf_record_gcc_switches,1)
2461Record gcc command line switches in DWARF DW_AT_producer.
2462
b35329c7 2463gno-split-dwarf
2464Common Driver RejectNegative Var(dwarf_split_debug_info,0) Init(0)
2465Don't generate debug information in separate .dwo files
2466
2467gsplit-dwarf
2468Common Driver RejectNegative Var(dwarf_split_debug_info,1)
2469Generate debug information in separate .dwo files
2470
b0e56fb1 2471gstabs
a1baa5f1 2472Common JoinedOrMissing Negative(gstabs+)
b0e56fb1 2473Generate debug information in STABS format
2474
2475gstabs+
a1baa5f1 2476Common JoinedOrMissing Negative(gvms)
b0e56fb1 2477Generate debug information in extended STABS format
2478
c16b6d19 2479gno-strict-dwarf
052166fd 2480Common RejectNegative Var(dwarf_strict,0) Init(0)
c16b6d19 2481Emit DWARF additions beyond selected version
2482
2483gstrict-dwarf
5461e683 2484Common Report RejectNegative Var(dwarf_strict,1)
c16b6d19 2485Don't emit DWARF additions beyond selected version
2486
71278019 2487gtoggle
2488Common Report Var(flag_gtoggle)
2489Toggle debug information generation
2490
b0e56fb1 2491gvms
a1baa5f1 2492Common JoinedOrMissing Negative(gxcoff)
b0e56fb1 2493Generate debug information in VMS format
2494
2495gxcoff
a1baa5f1 2496Common JoinedOrMissing Negative(gxcoff+)
b0e56fb1 2497Generate debug information in XCOFF format
2498
2499gxcoff+
a1baa5f1 2500Common JoinedOrMissing Negative(gcoff)
b0e56fb1 2501Generate debug information in extended XCOFF format
6f2f567f 2502
f37ef985 2503h
2504Driver Joined Separate
2505
19bc000d 2506iplugindir=
2507Common Joined Var(plugindir_string) Init(0)
2508-iplugindir=<dir> Set <dir> to be the default plugin directory
2509
77adc39e 2510imultiarch
2511Common Joined Separate RejectDriver Var(imultiarch) Init(0)
2512-imultiarch <dir> Set <dir> to be the multiarch include subdirectory
2513
e28aa114 2514l
2515Driver Joined Separate
2516
3bfde2af 2517n
2518Driver
2519
e28aa114 2520no-canonical-prefixes
2521Driver
2522
cb22f930 2523nodefaultlibs
2524Driver
2525
286f96fe 2526nostartfiles
2527Driver
2528
cb22f930 2529nostdlib
2530Driver
2531
e690b385 2532o
6bd9d862 2533Common Driver Joined Separate Var(asm_file_name) MissingArgError(missing filename after %qs)
53b8e5c1 2534-o <file> Place output into <file>
e690b385 2535
2536p
2e9da478 2537Common Var(profile_flag)
53b8e5c1 2538Enable function profiling
e690b385 2539
e28aa114 2540pass-exit-codes
2541Driver Var(pass_exit_codes)
2542
e690b385 2543pedantic
29438999 2544Common Alias(Wpedantic)
e690b385 2545
2546pedantic-errors
6bd9d862 2547Common Var(flag_pedantic_errors)
53b8e5c1 2548Like -pedantic but issue them as errors
e690b385 2549
cb22f930 2550pg
2551Driver
2552
e28aa114 2553pipe
2554Driver Var(use_pipes)
2555
2556print-file-name=
2557Driver JoinedOrMissing Var(print_file_name)
2558
2559print-libgcc-file-name
2560Driver
2561
2562print-multi-directory
2563Driver Var(print_multi_directory)
2564
2565print-multi-lib
2566Driver Var(print_multi_lib)
2567
2568print-multi-os-directory
2569Driver Var(print_multi_os_directory)
77adc39e 2570
2571print-multiarch
2572Driver Var(print_multiarch)
e28aa114 2573
2574print-prog-name=
2575Driver JoinedOrMissing Var(print_prog_name)
2576
2577print-search-dirs
2578Driver Var(print_search_dirs)
2579
2580print-sysroot
2581Driver Var(print_sysroot)
2582
2583print-sysroot-headers-suffix
2584Driver Var(print_sysroot_headers_suffix)
2585
3272db82 2586quiet
e28aa114 2587Common Var(quiet_flag) RejectDriver
53b8e5c1 2588Do not display functions compiled or elapsed time
3272db82 2589
3bfde2af 2590r
2591Driver
2592
2593s
2594Driver
2595
e28aa114 2596save-temps
2597Driver
2598
2599save-temps=
2600Driver Joined
2601
3bfde2af 2602t
2603Driver
2604
e28aa114 2605time
2606Driver Var(report_times)
2607
2608time=
2609Driver JoinedOrMissing
2610
5789e05b 2611u
2612Driver Joined Separate
2613
4b2a05b6 2614undef
2615Driver
2616; C option, but driver must not handle as "-u ndef".
2617
e28aa114 2618v
6bd9d862 2619Common Driver Var(verbose_flag)
2620Enable verbose output
e28aa114 2621
e690b385 2622version
e28aa114 2623Common Var(version_flag) RejectDriver
53b8e5c1 2624Display the compiler's version
e690b385 2625
2626w
2e9da478 2627Common Var(inhibit_warnings)
53b8e5c1 2628Suppress warnings
e690b385 2629
e28aa114 2630wrapper
2631Driver Separate Var(wrapper_string)
2632
2633x
2634Driver Joined Separate
2635
794febf8 2636shared
1412b935 2637Driver RejectNegative Negative(pie)
794febf8 2638Create a shared library
2639
e28aa114 2640shared-libgcc
2641Driver
2642
2643specs
67089c6b 2644Driver Separate Alias(specs=)
e28aa114 2645
2646specs=
2647Driver Joined
2648
cb22f930 2649static
2650Driver
2651
e28aa114 2652static-libgcc
2653Driver
2654
2655static-libgfortran
2656Driver
2657; Documented for Fortran, but always accepted by driver.
2658
2659static-libstdc++
2660Driver
2661
e440a328 2662static-libgo
2663Driver
2664; Documented for Go, but always accepted by driver.
2665
6db5160a 2666static-libasan
2667Driver
2668
b077695d 2669static-libtsan
2670Driver
2671
f8ff4a27 2672static-liblsan
2673Driver
2674
9e46467d 2675static-libubsan
2676Driver
2677
5789e05b 2678symbolic
2679Driver
2680
794febf8 2681pie
1412b935 2682Driver RejectNegative Negative(shared)
794febf8 2683Create a position independent executable
2684
f37ef985 2685z
2686Driver Joined Separate
2687
3272db82 2688; This comment is to ensure we retain the blank line above.