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