]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/common.opt
Revert "[PR64164] Drop copyrename, use coalescible partition as base when optimizing."
[thirdparty/gcc.git] / gcc / common.opt
CommitLineData
d7b42618 1; Options for the language- and target-independent parts of the compiler.
50431bc4 2
5624e564 3; Copyright (C) 2003-2015 Free Software Foundation, Inc.
d7b42618
NB
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
9dcd6f09 9; Software Foundation; either version 3, or (at your option) any later
d7b42618 10; version.
c22cacf3 11;
d7b42618
NB
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.
c22cacf3 16;
d7b42618 17; You should have received a copy of the GNU General Public License
9dcd6f09
NC
18; along with GCC; see the file COPYING3. If not see
19; <http://www.gnu.org/licenses/>.
d7b42618 20
71733172 21; See the GCC internals manual (options.texi) for a description of this file's format.
d7b42618
NB
22
23; Please try to keep this file in ASCII collating order.
24
e90afde6
JM
25Variable
26int target_flags
27
46625112
JM
28Variable
29int optimize
30
31Variable
32int optimize_size
33
bf7a7185
RG
34Variable
35int optimize_debug
36
0a8134ca
JM
37; Not used directly to control optimizations, only to save -Ofast
38; setting for "optimize" attributes.
39Variable
40int optimize_fast
41
a7d0d30f
JM
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
a75bfaa6
JM
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
a75bfaa6
JM
59; Language specific warning pass for unused results.
60Variable
61bool flag_warn_unused_result = false
62
48476d13
JM
63Variable
64int *param_values
65
d5478783
JM
66; Nonzero if we should write GIMPLE bytecode for link-time optimization.
67Variable
68int flag_generate_lto
69
f0d78df9
IV
70; Nonzero if we should write GIMPLE bytecode for offload compilation.
71Variable
72int flag_generate_offload = 0
73
d5478783
JM
74; True to warn about any objects definitions whose size is larger
75; than N bytes. Also want about function definitions whose returned
76; values are larger than N bytes, where N is 'larger_than_size'.
77Variable
78bool warn_larger_than
79
80Variable
81HOST_WIDE_INT larger_than_size
82
83; True to warn about any function whose frame size is larger
84; than N bytes.
85Variable
86bool warn_frame_larger_than
87
88Variable
89HOST_WIDE_INT frame_larger_than_size
90
91; Nonzero means we should be saving declaration info into a .X file.
92Variable
93int flag_gen_aux_info = 0
94
95; Nonzero if we are compiling code for a shared library, zero for
96; executable.
97Variable
98int flag_shlib
99
6a1f6c9c
JM
100; These two are really VEC(char_p,heap) *.
101
102Variable
103void *flag_instrument_functions_exclude_functions
104
105Variable
106void *flag_instrument_functions_exclude_files
107
69ccdddb
JM
108; Generic structs (e.g. templates not explicitly specialized)
109; may not have a compilation unit associated with them, and so
110; may need to be treated differently from ordinary structs.
111;
112; Structs only handled by reference (indirectly), will also usually
113; not need as much debugging information.
114
115Variable
116enum debug_struct_file debug_struct_ordinary[DINFO_USAGE_NUM_ENUMS] = { DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY }
117
118Variable
119enum debug_struct_file debug_struct_generic[DINFO_USAGE_NUM_ENUMS] = { DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY }
120
0576d21f
JM
121; True if we should exit after parsing options.
122Variable
123bool exit_after_options
124
125; Type(s) of debugging information we are producing (if any). See
126; flag-types.h for the definitions of the different possible types of
127; debugging information.
128Variable
129enum debug_info_type write_symbols = NO_DEBUG
130
131; Level of debugging information we are producing. See flag-types.h
132; for the definitions of the different possible levels.
133Variable
134enum debug_info_levels debug_info_level = DINFO_LEVEL_NONE
135
136; Nonzero means use GNU-only extensions in the generated symbolic
137; debugging information. Currently, this only has an effect when
138; write_symbols is set to DBX_DEBUG, XCOFF_DEBUG, or DWARF_DEBUG.
139Variable
140bool use_gnu_debug_info_extensions
141
299404a1
JM
142; Original value of maximum field alignment in bytes, specified via
143; -fpack-struct=<value>.
144Variable
145unsigned int initial_max_fld_align = TARGET_DEFAULT_PACK_STRUCT
146
5e471ea6
JM
147; Type of stack check.
148Variable
149enum stack_check_type flag_stack_check = NO_STACK_CHECK
150
a11e0df4
EB
151; True if stack usage information needs to be computed.
152Variable
153bool flag_stack_usage_info = false
154
299404a1
JM
155; -dA causes debug commentary information to be produced in
156; the generated assembly code (to make it more readable). This option
157; is generally only of use to those who actually need to read the
158; generated assembly code (perhaps while debugging the compiler itself).
159; Currently, this switch is only used by dwarf2out.c; however, it is intended
160; to be a catchall for printing debug information in the assembler file.
161Variable
162int flag_debug_asm
163
164; -dP causes the rtl to be emitted as a comment in assembly.
165Variable
166int flag_dump_rtl_in_asm
167
168; Whether -da was passed (used only in handle_common_deferred_options).
169Variable
170bool flag_dump_all_passed
171
172; Other flags saying which kinds of debugging dump have been requested.
173
174Variable
175int rtl_dump_and_exit
176
177Variable
178int flag_print_asm_name
179
a803773f
JM
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
299404a1
JM
196; Which options have been printed by --help.
197Variable
198char *help_printed
199
e6d4b984
JM
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
299404a1
JM
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
de5a5fa1
MP
214; What the sanitizer should instrument
215Variable
216unsigned int flag_sanitize
217
d95a2703
JJ
218; What sanitizers should recover from errors
219Variable
fed4de37 220unsigned int flag_sanitize_recover = SANITIZE_UNDEFINED | SANITIZE_NONDEFAULT | SANITIZE_KERNEL_ADDRESS
d95a2703 221
91035653
JJ
222; Flag whether a prefix has been added to dump_base_name
223Variable
224bool dump_base_name_prefixed = false
225
603349bf
JM
226###
227Driver
228
e200444e
JM
229-assemble
230Driver Alias(S)
231
232-compile
233Driver Alias(c)
234
235-coverage
236Driver Alias(coverage)
237
238-debug
239Common Alias(g)
240
241-dump
242Common Separate Alias(d)
243
244-dump=
245Common Joined Alias(d)
246
247-dumpbase
248Common Separate Alias(dumpbase)
249
250-dumpdir
251Common Separate Alias(dumpdir)
252
253-entry
254Driver Separate Alias(e)
255
256-entry=
257Driver Joined Alias(e)
258
259-extra-warnings
260Common Warning Alias(Wextra)
261
262-for-assembler
263Driver Separate Alias(Xassembler)
264
265-for-assembler=
266Driver JoinedOrMissing Alias(Xassembler)
267
268-for-linker
269Driver Separate Alias(Xlinker)
270
271-for-linker=
272Driver JoinedOrMissing Alias(Xlinker)
273
274-force-link
275Driver Separate Alias(u)
276
277-force-link=
278Driver Joined Alias(u)
279
d185d268 280-help
e200444e 281Common Driver Var(help_flag)
cf03fd63 282Display this information
d185d268 283
c662432e 284-help=
603349bf 285Common Driver Report Joined
c662432e 286--help=<class> Display descriptions of a specific class of options. <class> is one or more of optimizers, target, warnings, undocumented, params
903caebf 287
e200444e
JM
288-language
289Driver Separate Alias(x)
290
291-language=
292Driver Joined Alias(x)
293
294-library-directory
295Driver Separate Alias(L)
296
297-library-directory=
298Driver Joined Alias(L)
299
300-no-canonical-prefixes
301Driver Alias(no-canonical-prefixes)
302
303-no-standard-libraries
304Driver Alias(nostdlib)
305
28b4fc51
JM
306-no-sysroot-suffix
307Driver Var(no_sysroot_suffix)
308
e200444e
JM
309-no-warnings
310Common Alias(w)
311
312-optimize
313Common Alias(O)
314
315-output
316Common Driver Separate Alias(o) MissingArgError(missing filename after %qs)
317
318-output=
319Common Driver Joined Alias(o) MissingArgError(missing filename after %qs)
320
321-pass-exit-codes
322Driver Alias(pass-exit-codes)
323
324-pedantic
c1771a20 325Common Alias(Wpedantic)
e200444e
JM
326
327-pedantic-errors
328Common Alias(pedantic-errors)
329
330-pie
5460e1fc 331Driver Alias(pie)
e200444e
JM
332
333-pipe
334Driver Alias(pipe)
335
336-prefix
337Driver Separate Alias(B)
338
339-prefix=
340Driver JoinedOrMissing Alias(B)
341
342-preprocess
343Driver Alias(E)
344
345-print-file-name
346Driver Separate Alias(print-file-name=)
347
348-print-file-name=
349Driver JoinedOrMissing Alias(print-file-name=)
350
351-print-libgcc-file-name
352Driver Alias(print-libgcc-file-name)
353
354-print-multi-directory
355Driver Alias(print-multi-directory)
356
357-print-multi-lib
358Driver Alias(print-multi-lib)
359
360-print-multi-os-directory
361Driver Alias(print-multi-os-directory)
362
e0cdc09f
MK
363-print-multiarch
364Driver Alias(print-multiarch)
365
e200444e
JM
366-print-prog-name
367Driver Separate Alias(print-prog-name=)
368
369-print-prog-name=
370Driver JoinedOrMissing Alias(print-prog-name=)
371
372-print-search-dirs
373Driver Alias(print-search-dirs)
374
375-print-sysroot
376Driver Alias(print-sysroot)
377
378-print-sysroot-headers-suffix
379Driver Alias(print-sysroot-headers-suffix)
380
381-profile
382Common Alias(p)
383
384-save-temps
385Driver Alias(save-temps)
386
387-shared
5460e1fc 388Driver Alias(shared)
e200444e
JM
389
390-specs
391Driver Separate Alias(specs=)
392
393-specs=
394Driver Joined Alias(specs=)
395
396-static
397Driver Alias(static)
398
399-symbolic
400Driver Alias(symbolic)
401
d185d268 402-target-help
603349bf 403Common Driver
c662432e
NC
404Alias for --help=target
405
e200444e
JM
406-time
407Driver Alias(time)
408
409-verbose
410Driver Alias(v)
411
412;; The driver used to convert options such as --help into forms such
413;; as -fhelp; the following four entries are for compatibility with
414;; any direct uses of those (undocumented) -f forms
c662432e 415fhelp
e200444e 416Common Driver Alias(-help)
c662432e
NC
417
418fhelp=
e200444e 419Common Driver Joined Alias(-help=)
c662432e
NC
420
421ftarget-help
e200444e 422Common Driver Alias(-target-help)
c662432e 423
41fd0f9b 424fversion
e200444e 425Common Driver Alias(-version)
41fd0f9b 426
c662432e
NC
427-param
428Common Separate
429--param <param>=<value> Set parameter <param> to value. See below for a complete list of parameters
d185d268 430
e200444e
JM
431-param=
432Common Joined Alias(-param)
433
434-sysroot
435Driver Separate Alias(-sysroot=)
436
603349bf
JM
437-sysroot=
438Driver JoinedOrMissing
439
d185d268 440-version
603349bf
JM
441Common Driver
442
443B
444Driver Joined Separate
445
446E
447Driver
d185d268 448
d9d16a19
JM
449L
450Driver Joined Separate
451
dd9f93dc
JM
452N
453Driver
454
903caebf 455O
ab442df7 456Common JoinedOrMissing Optimization
cf03fd63 457-O<number> Set optimization level to <number>
903caebf
NB
458
459Os
ab442df7 460Common Optimization
cf03fd63 461Optimize for space rather than speed
903caebf 462
be6d3f0e
RG
463Ofast
464Common Optimization
465Optimize for speed disregarding exact standards compliance
466
bf7a7185
RG
467Og
468Common Optimization
469Optimize for debugging experience rather than speed or size
470
dd9f93dc
JM
471Q
472Driver
473
474Qn
475Driver Negative(Qy)
476
477Qy
478Driver Negative(Qn)
479
6d721f67
JM
480R
481Driver Joined Separate
482
603349bf
JM
483S
484Driver
485
6d721f67
JM
486T
487Driver Joined Separate
488
489Tbss
490Driver Separate
491
e69d7376
JM
492Tbss=
493Driver Joined
494
6d721f67
JM
495Tdata
496Driver Separate
497
e69d7376
JM
498Tdata=
499Driver Joined
500
6d721f67
JM
501Ttext
502Driver Separate
503
e69d7376
JM
504Ttext=
505Driver Joined
506
903caebf 507W
5de8299c 508Common RejectNegative Warning Alias(Wextra)
28786366 509This switch is deprecated; use -Wextra instead
903caebf 510
603349bf
JM
511Wa,
512Driver JoinedOrMissing
513
514Wl,
515Driver JoinedOrMissing
516
517Wp,
518Driver JoinedOrMissing
519
e01cc6dc 520Waggregate-return
c662432e 521Common Var(warn_aggregate_return) Warning
28786366 522Warn about returning structures, unions or arrays
e01cc6dc 523
fbd28bc3
JJ
524Waggressive-loop-optimizations
525Common Var(warn_aggressive_loop_optimizations) Init(1) Warning
526Warn if a loop with constant number of iterations triggers undefined behavior
527
590b1f2d 528Warray-bounds
21af5cdf 529Common Var(warn_array_bounds) Warning
590b1f2d
DM
530Warn if an array is accessed out of bounds
531
de1b5c17
MU
532Warray-bounds=
533Common Joined RejectNegative UInteger Var(warn_array_bounds) Warning
534Warn if an array is accessed out of bounds
535
5c498b10 536Wattributes
c662432e 537Common Var(warn_attributes) Init(1) Warning
5c498b10
DD
538Warn about inappropriate attribute usage
539
e01cc6dc 540Wcast-align
c662432e 541Common Var(warn_cast_align) Warning
28786366 542Warn about pointer casts which increase alignment
e01cc6dc 543
87cf0651
SB
544Wcpp
545Common Var(warn_cpp) Init(1) Warning
546Warn when a #warning directive is encountered
547
e01cc6dc 548Wdeprecated-declarations
c662432e 549Common Var(warn_deprecated_decl) Init(1) Warning
28786366 550Warn about uses of __attribute__((deprecated)) declarations
e01cc6dc
NB
551
552Wdisabled-optimization
c662432e 553Common Var(warn_disabled_optimization) Warning
28786366 554Warn when an optimization pass is disabled
e01cc6dc
NB
555
556Werror
50431bc4 557Common Var(warnings_are_errors)
28786366 558Treat all warnings as errors
e01cc6dc 559
79cf5994
DD
560Werror=
561Common Joined
562Treat specified warning as error
563
903caebf 564Wextra
62a67c94 565Common Var(extra_warnings) Warning
cf03fd63 566Print extra (possibly unwanted) warnings
903caebf 567
c65a01af 568Wfatal-errors
50431bc4 569Common Var(flag_fatal_errors)
c65a01af
RG
570Exit on the first error occurred
571
a214518f
SP
572Wframe-larger-than=
573Common RejectNegative Joined UInteger
f94e1d66 574-Wframe-larger-than=<number> Warn if a function's stack frame requires more than <number> bytes
a214518f 575
a3a704a4
MH
576Wfree-nonheap-object
577Common Var(warn_free_nonheap_object) Init(1) Warning
578Warn when attempting to free a non-heap object
579
e01cc6dc 580Winline
c662432e 581Common Var(warn_inline) Warning
28786366 582Warn when an inlined function cannot be inlined
e01cc6dc 583
86951993
AM
584Winvalid-memory-model
585Common Var(warn_invalid_memory_model) Init(1) Warning
586Warn when an atomic memory model parameter is known to be outside the valid range.
587
e01cc6dc 588Wlarger-than-
5de8299c 589Common RejectNegative Joined Warning Undocumented Alias(Wlarger-than=)
e8fc888d
MLI
590
591Wlarger-than=
592Common RejectNegative Joined UInteger Warning
593-Wlarger-than=<number> Warn if an object is larger than <number> bytes
e01cc6dc 594
f9cc1a70 595Wunsafe-loop-optimizations
c662432e 596Common Var(warn_unsafe_loop_optimizations) Warning
f9cc1a70
PB
597Warn if the loop cannot be optimized due to nontrivial assumptions.
598
e01cc6dc 599Wmissing-noreturn
94ee6979 600Common Alias(Wsuggest-attribute=noreturn)
e01cc6dc 601
c59f7203 602Wodr
a0fd3373 603Common Var(warn_odr_violations) Init(1) Warning
c59f7203
JH
604Warn about some C++ One Definition Rule violations during link time optimization
605
71834ad3 606Woverflow
c662432e 607Common Var(warn_overflow) Init(1) Warning
71834ad3
RS
608Warn about overflow in arithmetic expressions
609
259d29e3
JH
610Wlto-type-mismatch
611Common Var(warn_lto_type_mismatch) Init(1) Warning
612During link time optimization warn about mismatched types of global declarations
613
e01cc6dc 614Wpacked
c662432e 615Common Var(warn_packed) Warning
28786366 616Warn when the packed attribute has no effect on struct layout
e01cc6dc
NB
617
618Wpadded
c662432e 619Common Var(warn_padded) Warning
28786366 620Warn when padding is required to align structure members
e01cc6dc 621
c1771a20 622Wpedantic
2b71f4a4 623Common Var(pedantic) Init(0) Warning
c1771a20
MLI
624Issue warnings needed for strict compliance to the standard
625
b4dfdc11
MG
626Wreturn-local-addr
627Common Var(warn_return_local_addr) Init(1) Warning
628Warn about returning a pointer/reference to a local or temporary variable.
629
e01cc6dc 630Wshadow
c662432e 631Common Var(warn_shadow) Warning
28786366 632Warn when one local variable shadows another
e01cc6dc 633
7d69de61 634Wstack-protector
c662432e 635Common Var(warn_stack_protect) Warning
7d69de61
RH
636Warn when not issuing stack smashing protection for some reason
637
a11e0df4
EB
638Wstack-usage=
639Common Joined RejectNegative UInteger Var(warn_stack_usage) Init(-1) Warning
640Warn if stack usage might be larger than specified amount
641
e01cc6dc 642Wstrict-aliasing
c662432e 643Common Warning
28786366 644Warn about code which might break strict aliasing rules
e01cc6dc 645
5399d643 646Wstrict-aliasing=
65d4f2cd 647Common Joined RejectNegative UInteger Var(warn_strict_aliasing) Warning
5399d643
JW
648Warn about code which might break strict aliasing rules
649
6ac01510 650Wstrict-overflow
21af5cdf 651Common Warning
6ac01510
ILT
652Warn about optimizations that assume that signed overflow is undefined
653
654Wstrict-overflow=
65d4f2cd 655Common Joined RejectNegative UInteger Var(warn_strict_overflow) Warning
6ac01510
ILT
656Warn about optimizations that assume that signed overflow is undefined
657
5dc16b19
MLI
658Wsuggest-attribute=const
659Common Var(warn_suggest_attribute_const) Warning
660Warn about functions which might be candidates for __attribute__((const))
661
662Wsuggest-attribute=pure
663Common Var(warn_suggest_attribute_pure) Warning
664Warn about functions which might be candidates for __attribute__((pure))
665
7ea6b6cf
JH
666Wsuggest-attribute=noreturn
667Common Var(warn_suggest_attribute_noreturn) Warning
668Warn about functions which might be candidates for __attribute__((noreturn))
669
91bc34a9
JH
670Wsuggest-final-types
671Common Var(warn_suggest_final_types) Warning
672Warn about C++ polymorphic types where adding final keyword would improve code quality
673
674Wsuggest-final-methods
675Common Var(warn_suggest_final_methods) Warning
676Warn about C++ virtual methods where adding final keyword would improve code quality
677
e01cc6dc 678Wsystem-headers
c662432e 679Common Var(warn_system_headers) Warning
f3fdaec4 680Do not suppress warnings from system headers
e01cc6dc 681
8ffadef9
MG
682Wtrampolines
683Common Var(warn_trampolines) Warning
684Warn whenever a trampoline is generated
685
faebccf9 686Wtype-limits
95744782 687Common Var(warn_type_limits) Warning EnabledBy(Wextra)
faebccf9
DN
688Warn if a comparison is always true or always false due to the limited range of the data type
689
e01cc6dc 690Wuninitialized
7d5a5747 691Common Var(warn_uninitialized) Warning EnabledBy(Wextra)
28786366 692Warn about uninitialized automatic variables
e01cc6dc 693
2f964ad6 694Wmaybe-uninitialized
7d5a5747 695Common Var(warn_maybe_uninitialized) Warning EnabledBy(Wuninitialized)
2f964ad6
XDL
696Warn about maybe uninitialized automatic variables
697
e01cc6dc 698Wunreachable-code
2d2bd949 699Common Ignore
bc3c12a2 700Does nothing. Preserved for backward compatibility.
e01cc6dc 701
903caebf 702Wunused
e73f7547 703Common Var(warn_unused) Init(0) Warning
cf03fd63 704Enable all -Wunused- warnings
903caebf 705
ebfbbdc5 706Wunused-but-set-parameter
d919140b 707Common Var(warn_unused_but_set_parameter) Warning EnabledBy(Wunused && Wextra)
ebfbbdc5
JJ
708Warn when a function parameter is only set, otherwise unused
709
710Wunused-but-set-variable
7d5a5747 711Common Var(warn_unused_but_set_variable) Warning EnabledBy(Wunused)
ebfbbdc5
JJ
712Warn when a variable is only set, otherwise unused
713
e01cc6dc 714Wunused-function
7d5a5747 715Common Var(warn_unused_function) Warning EnabledBy(Wunused)
28786366 716Warn when a function is unused
e01cc6dc
NB
717
718Wunused-label
7d5a5747 719Common Var(warn_unused_label) Warning EnabledBy(Wunused)
28786366 720Warn when a label is unused
e01cc6dc
NB
721
722Wunused-parameter
d919140b 723Common Var(warn_unused_parameter) Warning EnabledBy(Wunused && Wextra)
28786366 724Warn when a function parameter is unused
e01cc6dc
NB
725
726Wunused-value
7d5a5747 727Common Var(warn_unused_value) Warning EnabledBy(Wunused)
28786366 728Warn when an expression value is unused
e01cc6dc
NB
729
730Wunused-variable
7d5a5747 731Common Var(warn_unused_variable) Warning EnabledBy(Wunused)
28786366 732Warn when a variable is unused
e01cc6dc 733
16c1c158 734Wcoverage-mismatch
650cfcab
NV
735Common Var(warn_coverage_mismatch) Init(1) Warning
736Warn in case profiles in -fprofile-use do not match
16c1c158 737
cdbb5ba3
AS
738Wvector-operation-performance
739Common Var(warn_vector_operation_performance) Warning
740Warn when a vector operation is compiled outside the SIMD
741
603349bf
JM
742Xassembler
743Driver Separate
744
745Xlinker
746Driver Separate
747
748Xpreprocessor
749Driver Separate
750
dd9f93dc
JM
751Z
752Driver
753
d185d268 754aux-info
d5478783 755Common Separate Var(aux_info_file_name)
cf03fd63 756-aux-info <file> Emit declaration information into <file>
d185d268
NB
757
758aux-info=
5de8299c 759Common Joined Alias(aux-info)
d185d268
NB
760
761auxbase
d5478783 762Common Separate RejectDriver Var(aux_base_name)
d185d268
NB
763
764auxbase-strip
603349bf
JM
765Common Separate RejectDriver
766
e200444e
JM
767coverage
768Driver
769
603349bf
JM
770c
771Driver
d185d268
NB
772
773d
774Common Joined
cf03fd63 775-d<letters> Enable dumps from specific passes of the compiler
d185d268
NB
776
777dumpbase
d5478783 778Common Separate Var(dump_base_name)
cf03fd63 779-dumpbase <file> Set the file basename to be used for dumps
d185d268 780
d7fb0a6d 781dumpdir
d5478783 782Common Separate Var(dump_dir_name)
316fc112 783-dumpdir <dir> Set the directory name to be used for dumps
d7fb0a6d 784
603349bf
JM
785dumpmachine
786Driver
787
788dumpspecs
789Driver
790
791dumpversion
792Driver
793
e200444e
JM
794e
795Driver Joined Separate
796
fa381cb2
JM
797; This option has historically been passed down to the linker by an
798; accident of a %{e*} spec, so ensure it continues to be passed down
799; as a single option. The supported option for this purpose is
800; -rdynamic. See PR 47390.
801export-dynamic
802Driver Undocumented
803
31b66477
KC
804; The version of the C++ ABI in use. The following values are allowed:
805;
806; 0: The version of the ABI believed most conformant with the C++ ABI
807; specification. This ABI may change as bugs are discovered and fixed.
808; Therefore, 0 will not necessarily indicate the same ABI in different
809; versions of G++.
810;
90d84934 811; 1: The version of the ABI first used in G++ 3.2. No longer selectable.
31b66477 812;
785f21af
JM
813; 2: The version of the ABI first used in G++ 3.4, and the default
814; until GCC 4.9.
abfe01ce
JM
815;
816; 3: The version of the ABI that fixes the missing underscore
817; in template non-type arguments of pointer type.
818;
819; 4: The version of the ABI that introduces unambiguous mangling of
55af847f 820; vector types. First selectable in G++ 4.5.
99a8d35b 821;
67e18edb 822; 5: The version of the ABI that ignores attribute const/noreturn
55af847f 823; in function pointer mangling, and corrects mangling of decltype and
67e18edb 824; function parameters used in other parameters and the return type.
55af847f 825; First selectable in G++ 4.6.
67e18edb 826;
4b6aaa99
JM
827; 6: The version of the ABI that doesn't promote scoped enums to int and
828; changes the mangling of template argument packs, const/static_cast,
829; prefix ++ and --, and a class scope function used as a template
830; argument.
967444bb
JM
831; First selectable in G++ 4.7.
832;
622aac0b
JM
833; 7: The version of the ABI that treats nullptr_t as a builtin type and
834; corrects the mangling of lambdas in default argument scope.
a3ddb738 835; First selectable in G++ 4.8.
0861bec8
JM
836;
837; 8: The version of the ABI that corrects the substitution behavior of
838; function types with function-cv-qualifiers.
603eaec4
JM
839; First selectable in G++ 4.9 and default in G++ 5.
840;
841; 9: The version of the ABI that mangles attributes that affect type
842; identity, such as ia32 calling convention attributes (stdcall, etc.)
843; Default in G++ 6 (set in c_common_post_options).
0861bec8 844;
31b66477
KC
845; Additional positive integers will be assigned as new versions of
846; the ABI become the default version of the ABI.
57782ad8 847fabi-version=
ca0e51a0
JM
848Common Joined RejectNegative UInteger Var(flag_abi_version) Init(0)
849The version of the C++ ABI in use
57782ad8 850
6e616110
RB
851faggressive-loop-optimizations
852Common Report Var(flag_aggressive_loop_optimizations) Optimization Init(1)
853Aggressively optimize loops using language constraints
854
6ff3a151 855falign-functions
ab442df7 856Common Report Var(align_functions,0) Optimization UInteger
f3fdaec4 857Align the start of functions
6ff3a151 858
058de654 859falign-functions=
d5478783 860Common RejectNegative Joined UInteger Var(align_functions)
058de654 861
6ff3a151 862falign-jumps
ab442df7 863Common Report Var(align_jumps,0) Optimization UInteger
f3fdaec4 864Align labels which are only reached by jumping
6ff3a151 865
058de654 866falign-jumps=
d5478783 867Common RejectNegative Joined UInteger Var(align_jumps)
058de654 868
6ff3a151 869falign-labels
ab442df7 870Common Report Var(align_labels,0) Optimization UInteger
f3fdaec4 871Align all labels
6ff3a151 872
058de654 873falign-labels=
d5478783 874Common RejectNegative Joined UInteger Var(align_labels)
058de654 875
6ff3a151 876falign-loops
3020190e 877Common Report Var(align_loops,0) Optimization UInteger
f3fdaec4 878Align the start of loops
6ff3a151 879
058de654 880falign-loops=
d5478783 881Common RejectNegative Joined UInteger Var(align_loops)
058de654 882
6ff3a151 883fargument-alias
2d2bd949 884Common Ignore
0d3c82d6 885Does nothing. Preserved for backward compatibility.
6ff3a151
NB
886
887fargument-noalias
2d2bd949 888Common Ignore
0d3c82d6 889Does nothing. Preserved for backward compatibility.
6ff3a151
NB
890
891fargument-noalias-global
2d2bd949 892Common Ignore
0d3c82d6 893Does nothing. Preserved for backward compatibility.
6ff3a151 894
0698a1d2 895fargument-noalias-anything
2d2bd949 896Common Ignore
0d3c82d6 897Does nothing. Preserved for backward compatibility.
0698a1d2 898
de5a5fa1
MP
899fsanitize=
900Common Driver Report Joined
901Select what to sanitize
32b4b7f5 902
fd960af2
YG
903fasan-shadow-offset=
904Common Joined RejectNegative Var(common_deferred_options) Defer
905-fasan-shadow-offset=<number> Use custom shadow memory offset.
906
18af8d16
YG
907fsanitize-sections=
908Common Joined RejectNegative Var(common_deferred_options) Defer
909-fsanitize-sections=<sec1,sec2,...> Sanitize global variables
910in user-defined sections.
911
d95a2703
JJ
912fsanitize-recover=
913Common Report Joined
1c33c9b7
JJ
914After diagnosing undefined behavior attempt to continue execution
915
d95a2703
JJ
916fsanitize-recover
917Common Report
918This switch is deprecated; use -fsanitize-recover= instead
919
1c33c9b7
JJ
920fsanitize-undefined-trap-on-error
921Common Report Var(flag_sanitize_undefined_trap_on_error) Init(0)
922Use trap instead of a library function for undefined behavior sanitization
923
6ff3a151 924fasynchronous-unwind-tables
c662432e 925Common Report Var(flag_asynchronous_unwind_tables) Optimization
f3fdaec4 926Generate unwind tables that are exact at each instruction boundary
6ff3a151 927
6fb5fa3c 928fauto-inc-dec
b16650ac 929Common Report Var(flag_auto_inc_dec) Init(1) Optimization
6fb5fa3c
DB
930Generate auto-inc/dec instructions
931
be3c16c4 932fauto-profile
b16650ac 933Common Report Var(flag_auto_profile)
be3c16c4
DC
934Use sample profile information for call graph node weights. The default
935profile file is fbdata.afdo in 'pwd'.
936
937fauto-profile=
938Common Joined RejectNegative Var(auto_profile_file)
939Use sample profile information for call graph node weights. The profile
940file is specified in the argument.
941
31b66477
KC
942; -fcheck-bounds causes gcc to generate array bounds checks.
943; For C, C++ and ObjC: defaults off.
944; For Java: defaults to on.
945; For Fortran: defaults to off.
6ff3a151 946fbounds-check
50431bc4 947Common Report Var(flag_bounds_check)
f3fdaec4 948Generate code to check bounds before indexing arrays
6ff3a151
NB
949
950fbranch-count-reg
14379e66 951Common Report Var(flag_branch_on_count_reg) Optimization
f3fdaec4 952Replace add, compare, branch with branch on count register
6ff3a151
NB
953
954fbranch-probabilities
c662432e 955Common Report Var(flag_branch_probabilities) Optimization
f3fdaec4 956Use profiling information for branch probabilities
6ff3a151 957
de32c0cb 958fbranch-target-load-optimize
c662432e 959Common Report Var(flag_branch_target_load_optimize) Optimization
f3fdaec4 960Perform branch target load optimization before prologue / epilogue threading
de32c0cb
NB
961
962fbranch-target-load-optimize2
c662432e 963Common Report Var(flag_branch_target_load_optimize2) Optimization
f3fdaec4 964Perform branch target load optimization after prologue / epilogue threading
de32c0cb 965
1194fc79 966fbtr-bb-exclusive
c662432e 967Common Report Var(flag_btr_bb_exclusive) Optimization
1194fc79
R
968Restrict target load migration not to re-use registers in any basic block
969
058de654 970fcall-saved-
21bf1558 971Common Joined RejectNegative Var(common_deferred_options) Defer
cf03fd63 972-fcall-saved-<register> Mark <register> as being preserved across functions
058de654
NB
973
974fcall-used-
21bf1558 975Common Joined RejectNegative Var(common_deferred_options) Defer
cf03fd63 976-fcall-used-<register> Mark <register> as being corrupted by function calls
058de654 977
31b66477
KC
978; Nonzero for -fcaller-saves: allocate values in regs that need to
979; be saved across function calls, if that produces overall better code.
980; Optional now, so people can test it.
de32c0cb 981fcaller-saves
c662432e 982Common Report Var(flag_caller_saves) Optimization
f3fdaec4 983Save registers around function calls
de32c0cb 984
3d8864c0
SP
985fcheck-data-deps
986Common Report Var(flag_check_data_deps)
987Compare the results of several data dependence analyzers.
988
2284b034
MG
989fcheck-new
990Common Var(flag_check_new)
991Check the return value of new in C++
992
ccaeeafe
NC
993fcombine-stack-adjustments
994Common Report Var(flag_combine_stack_adjustments) Optimization
995Looks for opportunities to reduce stack adjustments and stack references.
996
6ff3a151 997fcommon
b16650ac 998Common Report Var(flag_no_common,0)
f3fdaec4 999Do not put uninitialized globals in the common section
6ff3a151 1000
603349bf
JM
1001fcompare-debug
1002Driver
1003; Converted by the driver to -fcompare-debug= options.
1004
2153915d 1005fcompare-debug=
603349bf 1006Common Driver JoinedOrMissing RejectNegative Var(flag_compare_debug_opt)
f94e1d66 1007-fcompare-debug[=<opts>] Compile with and without e.g. -gtoggle, and compare the final-insns dump
2153915d
AO
1008
1009fcompare-debug-second
5e471ea6 1010Common Driver RejectNegative Var(flag_compare_debug)
2153915d
AO
1011Run only the second compilation of -fcompare-debug
1012
e692f276
RH
1013fcompare-elim
1014Common Report Var(flag_compare_elim_after_reload) Optimization
1015Perform comparison elimination after register allocation has finished
1016
b5b8b0ac
AO
1017fconserve-stack
1018Common Var(flag_conserve_stack) Optimization
1019Do not perform optimizations increasing noticeably stack usage
1020
6ff3a151 1021fcprop-registers
c662432e 1022Common Report Var(flag_cprop_registers) Optimization
f3fdaec4 1023Perform a register copy-propagation optimization pass
6ff3a151 1024
de32c0cb 1025fcrossjumping
c662432e 1026Common Report Var(flag_crossjumping) Optimization
f3fdaec4 1027Perform cross-jumping optimization
de32c0cb
NB
1028
1029fcse-follow-jumps
c662432e 1030Common Report Var(flag_cse_follow_jumps) Optimization
f3fdaec4 1031When running CSE, follow jumps to their targets
de32c0cb
NB
1032
1033fcse-skip-blocks
2d2bd949 1034Common Ignore
5f39ad47 1035Does nothing. Preserved for backward compatibility.
de32c0cb 1036
c7463669 1037fcx-limited-range
5e46b0c6 1038Common Report Var(flag_cx_limited_range) Optimization SetByCombined
c7463669
RH
1039Omit range reduction step when performing complex division
1040
35085f76
JB
1041fcx-fortran-rules
1042Common Report Var(flag_cx_fortran_rules) Optimization
1043Complex multiplication and division follow Fortran rules
1044
6ff3a151 1045fdata-sections
b16650ac 1046Common Report Var(flag_data_sections)
f3fdaec4 1047Place data items into their own section
6ff3a151 1048
0a090f42 1049fdbg-cnt-list
299404a1 1050Common Report Var(common_deferred_options) Defer
0a090f42
SP
1051List all available debugging counters with their limits and counts.
1052
6fb5fa3c 1053fdbg-cnt=
299404a1 1054Common RejectNegative Joined Var(common_deferred_options) Defer
f94e1d66 1055-fdbg-cnt=<counter>:<limit>[,<counter>:<limit>,...] Set the debug counter limit.
6fb5fa3c 1056
c8aea42c 1057fdebug-prefix-map=
299404a1 1058Common Joined RejectNegative Var(common_deferred_options) Defer
c8aea42c
PB
1059Map one directory name to another in debug information
1060
76f9db36 1061fdebug-types-section
98095aa3 1062Common Report Var(flag_debug_types_section) Init(0)
76f9db36
JJ
1063Output .debug_types section when using DWARF v4 debuginfo.
1064
31b66477
KC
1065; Nonzero for -fdefer-pop: don't pop args after each function call
1066; instead save them up to pop many calls' args with one insns.
de32c0cb 1067fdefer-pop
c662432e 1068Common Report Var(flag_defer_pop) Optimization
f3fdaec4 1069Defer popping functions args from stack until later
de32c0cb
NB
1070
1071fdelayed-branch
c662432e 1072Common Report Var(flag_delayed_branch) Optimization
f3fdaec4 1073Attempt to fill delay slots of branch instructions
de32c0cb 1074
2da02156 1075fdelete-dead-exceptions
b16650ac 1076Common Report Var(flag_delete_dead_exceptions) Init(0) Optimization
2da02156
EB
1077Delete dead instructions that may throw exceptions
1078
de32c0cb 1079fdelete-null-pointer-checks
467d8d51 1080Common Report Var(flag_delete_null_pointer_checks) Init(-1) Optimization
f3fdaec4 1081Delete useless null pointer checks
de32c0cb 1082
1e29e4d3
JH
1083fdevirtualize-at-ltrans
1084Common Report Var(flag_ltrans_devirtualize)
d6ae9a6d 1085Stream extra data to support more aggressive devirtualization in LTO local transformation mode
1e29e4d3 1086
bbc9396b
JH
1087fdevirtualize-speculatively
1088Common Report Var(flag_devirtualize_speculatively) Optimization
1089Perform speculative devirtualization
1090
ca1eedf6
JH
1091fdevirtualize
1092Common Report Var(flag_devirtualize) Optimization
1093Try to convert virtual calls to direct ones.
1094
de32c0cb 1095fdiagnostics-show-location=
e6d4b984 1096Common Joined RejectNegative Enum(diagnostic_prefixing_rule)
cf03fd63 1097-fdiagnostics-show-location=[once|every-line] How often to emit source location at the beginning of line-wrapped diagnostics
de32c0cb 1098
e6d4b984
JM
1099; Required for these enum values.
1100SourceInclude
1101pretty-print.h
1102
1103Enum
1104Name(diagnostic_prefixing_rule) Type(int)
1105
1106EnumValue
1107Enum(diagnostic_prefixing_rule) String(once) Value(DIAGNOSTICS_SHOW_PREFIX_ONCE)
1108
1109EnumValue
1110Enum(diagnostic_prefixing_rule) String(every-line) Value(DIAGNOSTICS_SHOW_PREFIX_EVERY_LINE)
1111
9fec0042
MLI
1112fdiagnostics-show-caret
1113Common Var(flag_diagnostics_show_caret) Init(1)
1114Show the source line with a caret indicating the column
1115
4b84d650
JJ
1116fdiagnostics-color
1117Common Alias(fdiagnostics-color=,always,never)
1118;
1119
1120fdiagnostics-color=
97aa8bb6 1121Driver Common Joined RejectNegative Var(flag_diagnostics_show_color) Enum(diagnostic_color_rule) Init(DIAGNOSTICS_COLOR_NO)
4b84d650
JJ
1122-fdiagnostics-color=[never|always|auto] Colorize diagnostics
1123
1124; Required for these enum values.
1125SourceInclude
1126diagnostic-color.h
1127
1128Enum
1129Name(diagnostic_color_rule) Type(int)
1130
1131EnumValue
1132Enum(diagnostic_color_rule) String(never) Value(DIAGNOSTICS_COLOR_NO)
1133
1134EnumValue
1135Enum(diagnostic_color_rule) String(always) Value(DIAGNOSTICS_COLOR_YES)
1136
1137EnumValue
1138Enum(diagnostic_color_rule) String(auto) Value(DIAGNOSTICS_COLOR_AUTO)
1139
ccf08a6e 1140fdiagnostics-show-option
c7d0de89 1141Common Var(flag_diagnostics_show_option) Init(1)
c85ce869 1142Amend appropriate diagnostic messages with the command line option that controls them
ccf08a6e 1143
226c52aa
XDL
1144fdisable-
1145Common Joined RejectNegative Var(common_deferred_options) Defer
1146-fdisable-[tree|rtl|ipa]-<pass>=range1+range2 disables an optimization pass
1147
1148fenable-
1149Common Joined RejectNegative Var(common_deferred_options) Defer
1150-fenable-[tree|rtl|ipa]-<pass>=range1+range2 enables an optimization pass
1151
6de9cd9a 1152fdump-
21bf1558 1153Common Joined RejectNegative Var(common_deferred_options) Defer
6de9cd9a
DN
1154-fdump-<type> Dump various compiler internals to a file
1155
d1583032
JM
1156fdump-final-insns
1157Driver RejectNegative
1158
2153915d
AO
1159fdump-final-insns=
1160Common RejectNegative Joined Var(flag_dump_final_insns)
1161-fdump-final-insns=filename Dump to filename the insns at the end of translation
1162
c6a13190
ILT
1163fdump-go-spec=
1164Common RejectNegative Joined Var(flag_dump_go_spec)
1165-fdump-go-spec=filename Write all declarations to file as Go code
1166
24a7799e
R
1167fdump-noaddr
1168Common Report Var(flag_dump_noaddr)
1169Suppress output of addresses in debugging dumps
1170
dc10fd96
JJ
1171freport-bug
1172Common Driver Var(flag_report_bug)
1173Collect and dump debug information into temporary file if ICE in C/C++
1174compiler occured.
1175
ba4ad400
DM
1176fdump-internal-locations
1177Common Var(flag_dump_locations) Init(0)
1178Dump detailed information on GCC's internal representation of source code locations
1179
deced1e2
XDL
1180fdump-passes
1181Common Var(flag_dump_passes) Init(0)
1182Dump optimization passes
1183
6ff3a151 1184fdump-unnumbered
e90afde6 1185Common Report Var(flag_dump_unnumbered)
24a7799e 1186Suppress output of instruction numbers, line number notes and addresses in debugging dumps
6ff3a151 1187
2aa7c49b 1188fdump-unnumbered-links
e90afde6 1189Common Report Var(flag_dump_unnumbered_links)
2aa7c49b
AO
1190Suppress output of previous and next insn numbers in debugging dumps
1191
b5b8b0ac
AO
1192fdwarf2-cfi-asm
1193Common Report Var(flag_dwarf2_cfi_asm) Init(HAVE_GAS_CFI_DIRECTIVE)
1194Enable CFI tables via GAS assembler directives.
1195
355866de 1196fearly-inlining
c662432e 1197Common Report Var(flag_early_inlining) Init(1) Optimization
355866de
RG
1198Perform early inlining
1199
de32c0cb 1200feliminate-dwarf2-dups
50431bc4 1201Common Report Var(flag_eliminate_dwarf2_dups)
f3fdaec4 1202Perform DWARF2 duplicate elimination
de32c0cb 1203
07ffa034
MJ
1204fipa-sra
1205Common Report Var(flag_ipa_sra) Init(0) Optimization
1206Perform interprocedural reduction of aggregates
1207
6a08f7b3 1208feliminate-unused-debug-symbols
50431bc4 1209Common Report Var(flag_debug_only_used_symbols)
8bfef637 1210Perform unused symbol elimination in debug info
6a08f7b3 1211
de32c0cb 1212feliminate-unused-debug-types
50431bc4 1213Common Report Var(flag_eliminate_unused_debug_types) Init(1)
f3fdaec4 1214Perform unused type elimination in debug info
de32c0cb 1215
e713adf6 1216femit-class-debug-always
eae8e474 1217Common Report Var(flag_emit_class_debug_always) Init(0)
e713adf6
CD
1218Do not suppress C++ class debug information.
1219
6ff3a151 1220fexceptions
c662432e 1221Common Report Var(flag_exceptions) Optimization
f3fdaec4 1222Enable exception handling
6ff3a151 1223
de32c0cb 1224fexpensive-optimizations
c662432e 1225Common Report Var(flag_expensive_optimizations) Optimization
f3fdaec4 1226Perform a number of minor, expensive optimizations
de32c0cb 1227
8ce94e44 1228fexcess-precision=
e6d4b984 1229Common Joined RejectNegative Enum(excess_precision) Var(flag_excess_precision_cmdline) Init(EXCESS_PRECISION_DEFAULT)
8ce94e44
JM
1230-fexcess-precision=[fast|standard] Specify handling of excess floating-point precision
1231
e6d4b984
JM
1232Enum
1233Name(excess_precision) Type(enum excess_precision) UnknownError(unknown excess precision style %qs)
1234
1235EnumValue
1236Enum(excess_precision) String(fast) Value(EXCESS_PRECISION_FAST)
1237
1238EnumValue
1239Enum(excess_precision) String(standard) Value(EXCESS_PRECISION_STANDARD)
1240
058de654
NB
1241ffast-math
1242Common
1243
cc8547a7 1244ffat-lto-objects
e9f67e62 1245Common Var(flag_fat_lto_objects)
cc8547a7
AK
1246Output lto objects containing both the intermediate language and binary output.
1247
6ff3a151 1248ffinite-math-only
5e46b0c6 1249Common Report Var(flag_finite_math_only) Optimization SetByCombined
f3fdaec4 1250Assume no NaNs or infinities are generated
6ff3a151 1251
058de654 1252ffixed-
21bf1558 1253Common Joined RejectNegative Var(common_deferred_options) Defer
cf03fd63 1254-ffixed-<register> Mark <register> as being unavailable to the compiler
058de654 1255
de32c0cb 1256ffloat-store
c662432e 1257Common Report Var(flag_float_store) Optimization
31b66477 1258Don't allocate floats and doubles in extended-precision registers
de32c0cb
NB
1259
1260fforce-addr
2d2bd949 1261Common Ignore
3de5e93a 1262Does nothing. Preserved for backward compatibility.
de32c0cb 1263
2ca2b607
SB
1264fforward-propagate
1265Common Report Var(flag_forward_propagate) Optimization
a52b023a
PB
1266Perform a forward propagation pass on RTL
1267
16949072 1268ffp-contract=
bea30e0d 1269Common Joined RejectNegative Enum(fp_contract_mode) Var(flag_fp_contract_mode) Init(FP_CONTRACT_FAST) Optimization
16949072
RG
1270-ffp-contract=[off|on|fast] Perform floating-point expression contraction.
1271
e6d4b984
JM
1272Enum
1273Name(fp_contract_mode) Type(enum fp_contract_mode) UnknownError(unknown floating point contraction style %qs)
1274
1275EnumValue
1276Enum(fp_contract_mode) String(off) Value(FP_CONTRACT_OFF)
1277
1278; Not implemented, fall back to conservative FP_CONTRACT_OFF.
1279EnumValue
1280Enum(fp_contract_mode) String(on) Value(FP_CONTRACT_OFF)
1281
1282EnumValue
1283Enum(fp_contract_mode) String(fast) Value(FP_CONTRACT_FAST)
1284
31b66477
KC
1285; Nonzero means don't put addresses of constant functions in registers.
1286; Used for compiling the Unix kernel, where strange substitutions are
1287; done on the assembly output.
de32c0cb 1288ffunction-cse
b16650ac 1289Common Report Var(flag_no_function_cse,0) Optimization
f3fdaec4 1290Allow function addresses to be held in registers
de32c0cb 1291
6ff3a151 1292ffunction-sections
50431bc4 1293Common Report Var(flag_function_sections)
f3fdaec4 1294Place each function into its own section
6ff3a151 1295
de32c0cb 1296fgcse
c662432e 1297Common Report Var(flag_gcse) Optimization
f3fdaec4 1298Perform global common subexpression elimination
de32c0cb
NB
1299
1300fgcse-lm
c662432e 1301Common Report Var(flag_gcse_lm) Init(1) Optimization
f3fdaec4 1302Perform enhanced load motion during global common subexpression elimination
de32c0cb
NB
1303
1304fgcse-sm
c662432e 1305Common Report Var(flag_gcse_sm) Init(0) Optimization
f3fdaec4 1306Perform store motion after global common subexpression elimination
de32c0cb 1307
f5f2e3cd 1308fgcse-las
c662432e 1309Common Report Var(flag_gcse_las) Init(0) Optimization
f9957958
MH
1310Perform redundant load after store elimination in global common subexpression
1311elimination
1312
1313fgcse-after-reload
c662432e 1314Common Report Var(flag_gcse_after_reload) Optimization
f9957958 1315Perform global common subexpression elimination after register allocation
c85ce869 1316has finished
f5f2e3cd 1317
d0a58904 1318; This option is not documented yet as its semantics will change.
f8bf9252 1319fgraphite
ff6a32a9 1320Common Report Var(flag_graphite) Optimization
f8bf9252
SP
1321Enable in and out of Graphite representation
1322
204b560f
SP
1323fgraphite-identity
1324Common Report Var(flag_graphite_identity) Optimization
1325Enable Graphite Identity transformation
1326
372a6eb8
BS
1327fhoist-adjacent-loads
1328Common Report Var(flag_hoist_adjacent_loads) Optimization
1329Enable hoisting adjacent loads to encourage generating conditional move
1330instructions
1331
3cf0e270
SP
1332floop-parallelize-all
1333Common Report Var(flag_loop_parallelize_all) Optimization
204b560f
SP
1334Mark all loops as parallel
1335
f8bf9252
SP
1336floop-strip-mine
1337Common Report Var(flag_loop_strip_mine) Optimization
1338Enable Loop Strip Mining transformation
1339
1340floop-interchange
1341Common Report Var(flag_loop_interchange) Optimization
1342Enable Loop Interchange transformation
1343
1344floop-block
1345Common Report Var(flag_loop_block) Optimization
1346Enable Loop Blocking transformation
1347
20d3465b
MN
1348floop-unroll-and-jam
1349Common Report Var(flag_loop_unroll_jam) Optimization
1350Enable Loop Unroll Jam transformation
1351
0a35513e
AH
1352fgnu-tm
1353Common Report Var(flag_tm)
1354Enable support for GNU transactional memory
1355
da34ade5
JM
1356fgnu-unique
1357Common Report Var(flag_gnu_unique) Init(1)
1358Use STB_GNU_UNIQUE if supported by the assembler
1359
98af4c9f 1360floop-flatten
093193be
MK
1361Common Ignore
1362Does nothing. Preserved for backward compatibility.
98af4c9f 1363
b60cc080
TG
1364floop-nest-optimize
1365Common Report Var(flag_loop_optimize_isl) Optimization
1366Enable the ISL based loop nest optimizer
1367
6a78b724 1368fstrict-volatile-bitfields
b16650ac 1369Common Report Var(flag_strict_volatile_bitfields) Init(-1) Optimization
6a78b724
DD
1370Force bitfield accesses to match their type width
1371
6ff3a151 1372fguess-branch-probability
c662432e 1373Common Report Var(flag_guess_branch_prob) Optimization
f3fdaec4 1374Enable guessing of branch probabilities
6ff3a151 1375
31b66477
KC
1376; Nonzero means ignore `#ident' directives. 0 means handle them.
1377; Generate position-independent code for executables if possible
1378; On SVR4 targets, it also controls whether or not to emit a
1379; string identifying the compiler.
6ff3a151 1380fident
50431bc4 1381Common Report Var(flag_no_ident,0)
f3fdaec4 1382Process #ident directives
6ff3a151 1383
de32c0cb 1384fif-conversion
c662432e 1385Common Report Var(flag_if_conversion) Optimization
f3fdaec4 1386Perform conversion of conditional jumps to branchless equivalents
de32c0cb
NB
1387
1388fif-conversion2
c662432e 1389Common Report Var(flag_if_conversion2) Optimization
f3fdaec4 1390Perform conversion of conditional jumps to conditional execution
de32c0cb 1391
87e2a8fd 1392fstack-reuse=
082908e3 1393Common Joined RejectNegative Enum(stack_reuse_level) Var(flag_stack_reuse) Init(SR_ALL) Optimization
87e2a8fd
XDL
1394-fstack-reuse=[all|named_vars|none] Set stack reuse level for local variables.
1395
1396Enum
1397Name(stack_reuse_level) Type(enum stack_reuse_level) UnknownError(unknown Stack Reuse Level %qs)
1398
1399EnumValue
1400Enum(stack_reuse_level) String(all) Value(SR_ALL)
1401
1402EnumValue
1403Enum(stack_reuse_level) String(named_vars) Value(SR_NAMED_VARS)
1404
1405EnumValue
1406Enum(stack_reuse_level) String(none) Value(SR_NONE)
1407
384a5197
SP
1408ftree-loop-if-convert
1409Common Report Var(flag_tree_loop_if_convert) Init(-1) Optimization
1410Convert conditional jumps in innermost loops to branchless equivalents
1411
bd544141
SP
1412ftree-loop-if-convert-stores
1413Common Report Var(flag_tree_loop_if_convert_stores) Optimization
1414Also if-convert conditional jumps containing memory writes
1415
31b66477
KC
1416; -finhibit-size-directive inhibits output of .size for ELF.
1417; This is used only for compiling crtstuff.c,
1418; and it may be extended to other effects
1419; needed for crtstuff.c on other systems.
6ff3a151 1420finhibit-size-directive
50431bc4 1421Common Report Var(flag_inhibit_size_directive)
f3fdaec4 1422Do not generate .size directives
6ff3a151 1423
3e293154 1424findirect-inlining
2bf86c84 1425Common Report Var(flag_indirect_inlining) Optimization
3e293154
MJ
1426Perform indirect inlining
1427
99ea07f8
RG
1428; General flag to enable inlining. Specifying -fno-inline will disable
1429; all inlining apart from always-inline functions.
de32c0cb 1430finline
0f042bc5 1431Common Report Var(flag_no_inline,0) Init(0) Optimization
99ea07f8 1432Enable inlining of function declared \"inline\", disabling disables all inlining
de32c0cb 1433
4d4b8cb9
JH
1434finline-small-functions
1435Common Report Var(flag_inline_small_functions) Optimization
99ea07f8 1436Integrate functions into their callers when code size is known not to grow
4d4b8cb9 1437
de32c0cb 1438finline-functions
c662432e 1439Common Report Var(flag_inline_functions) Optimization
99ea07f8 1440Integrate functions not declared \"inline\" into their callers when profitable
de32c0cb 1441
355866de 1442finline-functions-called-once
fb37c1de 1443Common Report Var(flag_inline_functions_called_once) Optimization
99ea07f8 1444Integrate functions only required by their single caller
d63db217 1445
d302c9d6 1446finline-limit-
5de8299c 1447Common RejectNegative Joined Alias(finline-limit=)
d302c9d6
NB
1448
1449finline-limit=
1450Common RejectNegative Joined UInteger
cf03fd63 1451-finline-limit=<number> Limit the size of inlined functions to <number>
d302c9d6 1452
86951993
AM
1453finline-atomics
1454Common Report Var(flag_inline_atomics) Init(1) Optimization
1455Inline __atomic operations when a lock free instruction sequence is available.
1456
6ff3a151 1457finstrument-functions
50431bc4 1458Common Report Var(flag_instrument_function_entry_exit)
f3fdaec4 1459Instrument function entry and exit with profiling calls
6ff3a151 1460
8d5a7d1f
ILT
1461finstrument-functions-exclude-function-list=
1462Common RejectNegative Joined
1463-finstrument-functions-exclude-function-list=name,... Do not instrument listed functions
1464
1465finstrument-functions-exclude-file-list=
1466Common RejectNegative Joined
1467-finstrument-functions-exclude-file-list=filename,... Do not instrument functions listed in files
1468
d6e14e8f 1469fipa-cp
c662432e 1470Common Report Var(flag_ipa_cp) Optimization
bbc9396b 1471Perform interprocedural constant propagation
d6e14e8f 1472
5e45130d
JH
1473fipa-cp-clone
1474Common Report Var(flag_ipa_cp_clone) Optimization
1475Perform cloning to make Interprocedural constant propagation stronger
1476
3c99176a
L
1477fipa-cp-alignment
1478Common Report Var(flag_ipa_cp_alignment) Optimization
1479Perform alignment discovery and propagation to make Interprocedural constant propagation stronger
1480
e65bb9be
JH
1481fipa-profile
1482Common Report Var(flag_ipa_profile) Init(0) Optimization
1483Perform interprocedural profile propagation
ea900239 1484
4cf4d6a3 1485fipa-pta
c662432e 1486Common Report Var(flag_ipa_pta) Init(0) Optimization
4cf4d6a3
DB
1487Perform interprocedural points-to analysis
1488
e65bb9be
JH
1489fipa-pure-const
1490Common Report Var(flag_ipa_pure_const) Init(0) Optimization
1491Discover pure and const functions
1492
b84d4347
ML
1493fipa-icf
1494Common Report Var(flag_ipa_icf) Optimization
1495Perform Identical Code Folding for functions and read-only variables
1496
1497fipa-icf-functions
1498Common Report Var(flag_ipa_icf_functions) Optimization
1499Perform Identical Code Folding for functions
1500
1501fipa-icf-variables
b16650ac 1502Common Report Var(flag_ipa_icf_variables)
b84d4347
ML
1503Perform Identical Code Folding for variables
1504
ea900239 1505fipa-reference
c662432e 1506Common Report Var(flag_ipa_reference) Init(0) Optimization
ea900239
DB
1507Discover readonly and non addressable static variables
1508
43d861a5 1509fipa-matrix-reorg
04f92ff4
RG
1510Common Ignore
1511Does nothing. Preserved for backward compatibility.
43d861a5 1512
e1dc98b2 1513fipa-struct-reorg
b8beb4d1
RG
1514Common Ignore
1515Does nothing. Preserved for backward compatibility.
e1dc98b2 1516
058e97ec 1517fira-algorithm=
b16650ac 1518Common Joined RejectNegative Enum(ira_algorithm) Var(flag_ira_algorithm) Init(IRA_ALGORITHM_CB) Optimization
7db7ed3c
VM
1519-fira-algorithm=[CB|priority] Set the used IRA algorithm
1520
e6d4b984
JM
1521Enum
1522Name(ira_algorithm) Type(enum ira_algorithm) UnknownError(unknown IRA algorithm %qs)
1523
1524EnumValue
1525Enum(ira_algorithm) String(CB) Value(IRA_ALGORITHM_CB)
1526
1527EnumValue
1528Enum(ira_algorithm) String(priority) Value(IRA_ALGORITHM_PRIORITY)
1529
7db7ed3c 1530fira-region=
b16650ac 1531Common Joined RejectNegative Enum(ira_region) Var(flag_ira_region) Init(IRA_REGION_AUTODETECT) Optimization
7db7ed3c 1532-fira-region=[one|all|mixed] Set regions for IRA
058e97ec 1533
e6d4b984
JM
1534Enum
1535Name(ira_region) Type(enum ira_region) UnknownError(unknown IRA region %qs)
1536
1537EnumValue
1538Enum(ira_region) String(one) Value(IRA_REGION_ONE)
1539
1540EnumValue
1541Enum(ira_region) String(all) Value(IRA_REGION_ALL)
1542
1543EnumValue
1544Enum(ira_region) String(mixed) Value(IRA_REGION_MIXED)
1545
b11f0116
BC
1546fira-hoist-pressure
1547Common Report Var(flag_ira_hoist_pressure) Init(1) Optimization
1548Use IRA based register pressure calculation
1549in RTL hoist optimizations.
1550
1833192f 1551fira-loop-pressure
f3d83ffe 1552Common Report Var(flag_ira_loop_pressure) Optimization
1833192f
VM
1553Use IRA based register pressure calculation
1554in RTL loop optimizations.
1555
058e97ec 1556fira-share-save-slots
b16650ac 1557Common Report Var(flag_ira_share_save_slots) Init(1) Optimization
058e97ec
VM
1558Share slots for saving different hard registers.
1559
1560fira-share-spill-slots
b16650ac 1561Common Report Var(flag_ira_share_spill_slots) Init(1) Optimization
058e97ec
VM
1562Share stack slots for spilled pseudo-registers.
1563
1564fira-verbose=
5498f011 1565Common RejectNegative Joined UInteger Var(flag_ira_verbose) Init(5)
f94e1d66 1566-fira-verbose=<number> Control IRA's level of diagnostic messages.
058e97ec 1567
8b11a64c 1568fivopts
c662432e 1569Common Report Var(flag_ivopts) Init(1) Optimization
8b11a64c
ZD
1570Optimize induction variables on trees
1571
82c0180d 1572fjump-tables
c662432e 1573Common Var(flag_jump_tables) Init(1) Optimization
82c0180d
JM
1574Use jump tables for sufficiently large switch statements
1575
de32c0cb 1576fkeep-inline-functions
50431bc4 1577Common Report Var(flag_keep_inline_functions)
f3fdaec4 1578Generate code for functions even if they are fully inlined
de32c0cb
NB
1579
1580fkeep-static-consts
50431bc4 1581Common Report Var(flag_keep_static_consts) Init(1)
f3fdaec4 1582Emit static const variables even if they are not used
de32c0cb 1583
6ff3a151 1584fleading-underscore
50431bc4 1585Common Report Var(flag_leading_underscore) Init(-1)
f3fdaec4 1586Give external symbols a leading underscore
6ff3a151 1587
efa1cdf0 1588floop-optimize
2d2bd949 1589Common Ignore
c0220ea4 1590Does nothing. Preserved for backward compatibility.
efa1cdf0 1591
d9cf932c
VM
1592flra-remat
1593Common Report Var(flag_lra_remat) Optimization
1594Do CFG-sensitive rematerialization in LRA
1595
d7f09764 1596flto
014d92e1 1597Common
d7f09764
DN
1598Enable link-time optimization.
1599
014d92e1
JH
1600flto=
1601Common RejectNegative Joined Var(flag_lto)
1602Link-time optimization with number of parallel jobs or jobserver.
1603
783dab6b
RB
1604Enum
1605Name(lto_partition_model) Type(enum lto_partition_model) UnknownError(unknown LTO partitioning model %qs)
852e4bd2 1606
783dab6b
RB
1607EnumValue
1608Enum(lto_partition_model) String(none) Value(LTO_PARTITION_NONE)
852e4bd2 1609
783dab6b
RB
1610EnumValue
1611Enum(lto_partition_model) String(one) Value(LTO_PARTITION_ONE)
1612
1613EnumValue
1614Enum(lto_partition_model) String(balanced) Value(LTO_PARTITION_BALANCED)
1615
1616EnumValue
1617Enum(lto_partition_model) String(1to1) Value(LTO_PARTITION_1TO1)
1618
1619EnumValue
1620Enum(lto_partition_model) String(max) Value(LTO_PARTITION_MAX)
c3c445e1 1621
783dab6b
RB
1622flto-partition=
1623Common Joined RejectNegative Enum(lto_partition_model) Var(flag_lto_partition) Init(LTO_PARTITION_BALANCED)
1624Specify the algorithm to partition symbols and vars at linktime
014d92e1 1625
d7f09764
DN
1626; The initial value of -1 comes from Z_DEFAULT_COMPRESSION in zlib.h.
1627flto-compression-level=
fcfbd84e 1628Common Joined RejectNegative UInteger Var(flag_lto_compression_level) Init(-1)
f94e1d66 1629-flto-compression-level=<number> Use zlib compression level <number> for IL
d7f09764 1630
1ee85ee1
JH
1631flto-odr-type-merging
1632Common Report Var(flag_lto_odr_type_mering) Init(1)
1633Merge C++ types using One Definition Rule
1634
d7f09764 1635flto-report
1d67dde8 1636Common Report Var(flag_lto_report) Init(0)
d7f09764
DN
1637Report various link-time optimization statistics
1638
057f8f20
AK
1639flto-report-wpa
1640Common Report Var(flag_lto_report_wpa) Init(0)
1641Report various link-time optimization statistics for WPA only
1642
6ff3a151 1643fmath-errno
5e46b0c6 1644Common Report Var(flag_errno_math) Init(1) Optimization SetByCombined
f3fdaec4 1645Set errno after built-in math functions
6ff3a151 1646
3a789837
NF
1647fmax-errors=
1648Common Joined RejectNegative UInteger Var(flag_max_errors)
1649-fmax-errors=<number> Maximum number of errors to report
1650
6ff3a151 1651fmem-report
50431bc4 1652Common Report Var(mem_report)
f3fdaec4 1653Report on permanent memory allocation
6ff3a151 1654
b3e44629
AK
1655fmem-report-wpa
1656Common Report Var(mem_report_wpa)
1657Report on permanent memory allocation in WPA only
1658
31b66477
KC
1659; This will attempt to merge constant section constants, if 1 only
1660; string constants and constants from constant pool, if 2 also constant
1661; variables.
6ff3a151 1662fmerge-all-constants
0a7246ee 1663Common Report Var(flag_merge_constants,2) Init(1)
f3fdaec4 1664Attempt to merge identical constants and constant variables
6ff3a151
NB
1665
1666fmerge-constants
0a7246ee 1667Common Report Var(flag_merge_constants,1)
f3fdaec4 1668Attempt to merge identical constants across compilation units
6ff3a151 1669
28a08168
ILT
1670fmerge-debug-strings
1671Common Report Var(flag_merge_debug_strings) Init(1)
1672Attempt to merge identical debug strings across compilation units
1673
de32c0cb
NB
1674fmessage-length=
1675Common RejectNegative Joined UInteger
cf03fd63 1676-fmessage-length=<number> Limit diagnostics to <number> characters per line. 0 suppresses line-wrapping
de32c0cb 1677
e5626198 1678fmodulo-sched
c662432e 1679Common Report Var(flag_modulo_sched) Optimization
e5626198
AZ
1680Perform SMS based modulo scheduling before the first scheduling pass
1681
517d76fa 1682fmodulo-sched-allow-regmoves
b16650ac 1683Common Report Var(flag_modulo_sched_allow_regmoves) Optimization
517d76fa
VY
1684Perform SMS based modulo scheduling with register moves allowed
1685
5e962776 1686fmove-loop-invariants
14379e66 1687Common Report Var(flag_move_loop_invariants) Optimization
5e962776
ZD
1688Move loop invariant computations out of loops
1689
6fb5fa3c 1690fdce
6ae4be32 1691Common Var(flag_dce) Init(1) Optimization
6fb5fa3c
DB
1692Use the RTL dead code elimination pass
1693
1694fdse
6ae4be32 1695Common Var(flag_dse) Init(1) Optimization
6fb5fa3c
DB
1696Use the RTL dead store elimination pass
1697
d72372e4 1698freschedule-modulo-scheduled-loops
c662432e 1699Common Report Var(flag_resched_modulo_sched) Optimization
d72372e4
MH
1700Enable/Disable the traditional scheduling in loops that already passed modulo scheduling
1701
6ff3a151 1702fnon-call-exceptions
c662432e 1703Common Report Var(flag_non_call_exceptions) Optimization
f3fdaec4 1704Support synchronous non-call exceptions
6ff3a151 1705
c713ddc0
BS
1706foffload=
1707Common Driver Joined MissingArgError(options or targets missing after %qs)
1708-foffload=<targets>=<options> Specify offloading targets and options for them
1709
1710foffload-abi=
1711Common Joined RejectNegative Enum(offload_abi) Var(flag_offload_abi) Init(OFFLOAD_ABI_UNSET)
1712-foffload-abi=[lp64|ilp32] Set the ABI to use in an offload compiler
1713
1714Enum
1715Name(offload_abi) Type(enum offload_abi) UnknownError(unknown offload ABI %qs)
1716
1717EnumValue
1718Enum(offload_abi) String(ilp32) Value(OFFLOAD_ABI_ILP32)
1719
1720EnumValue
1721Enum(offload_abi) String(lp64) Value(OFFLOAD_ABI_LP64)
1722
de32c0cb 1723fomit-frame-pointer
c662432e 1724Common Report Var(flag_omit_frame_pointer) Optimization
f3fdaec4 1725When possible do not generate stack frames
de32c0cb 1726
78c60e3d
SS
1727fopt-info
1728Common Report Var(flag_opt_info) Optimization
1729Enable all optimization info dumps on stderr
1730
1731fopt-info-
1732Common Joined RejectNegative Var(common_deferred_options) Defer
1733-fopt-info[-<type>=filename] Dump compiler optimization details
1734
6ff3a151 1735foptimize-register-move
3b6d1699
VM
1736Common Ignore
1737Does nothing. Preserved for backward compatibility.
6ff3a151 1738
de32c0cb 1739foptimize-sibling-calls
c662432e 1740Common Report Var(flag_optimize_sibling_calls) Optimization
f3fdaec4 1741Optimize sibling and tail recursive calls
de32c0cb 1742
3e485f62 1743fpartial-inlining
b16650ac 1744Common Report Var(flag_partial_inlining) Optimization
3e485f62
JH
1745Perform partial inlining
1746
a5573239
JH
1747fpre-ipa-mem-report
1748Common Report Var(pre_ipa_mem_report)
1749Report on memory allocation before interprocedural optimization
1750
1751fpost-ipa-mem-report
1752Common Report Var(post_ipa_mem_report)
1753Report on memory allocation before interprocedural optimization
1754
6ff3a151 1755fpack-struct
c662432e 1756Common Report Var(flag_pack_struct) Optimization
f3fdaec4 1757Pack structure members together without holes
6ff3a151 1758
467cecf3 1759fpack-struct=
c662432e 1760Common RejectNegative Joined UInteger Optimization
467cecf3
JB
1761-fpack-struct=<number> Set initial maximum structure member alignment
1762
de32c0cb 1763fpcc-struct-return
5498f011 1764Common Report Var(flag_pcc_struct_return,1) Init(DEFAULT_PCC_STRUCT_RETURN)
f3fdaec4 1765Return small aggregates in memory, not registers
de32c0cb
NB
1766
1767fpeel-loops
c662432e 1768Common Report Var(flag_peel_loops) Optimization
f3fdaec4 1769Perform loop peeling
de32c0cb
NB
1770
1771fpeephole
c662432e 1772Common Report Var(flag_no_peephole,0) Optimization
f3fdaec4 1773Enable machine specific peephole optimizations
de32c0cb 1774
6ff3a151 1775fpeephole2
c662432e 1776Common Report Var(flag_peephole2) Optimization
f3fdaec4 1777Enable an RTL peephole pass before sched2
6ff3a151 1778
31b66477 1779fPIC
da0aa2cc 1780Common Report Var(flag_pic,2) Negative(fPIE)
31b66477
KC
1781Generate position-independent code if possible (large mode)
1782
1783fPIE
428b3812 1784Common Report Var(flag_pie,2) Negative(fpic) Init(-1)
31b66477
KC
1785Generate position-independent code for executables if possible (large mode)
1786
6ff3a151 1787fpic
da0aa2cc 1788Common Report Var(flag_pic,1) Negative(fpie)
31b66477 1789Generate position-independent code if possible (small mode)
6ff3a151
NB
1790
1791fpie
428b3812 1792Common Report Var(flag_pie,1) Negative(fPIC) Init(-1)
31b66477 1793Generate position-independent code for executables if possible (small mode)
6ff3a151 1794
b91fd3c7
AM
1795fplt
1796Common Report Var(flag_plt) Init(1) Optimization
1797Use PLT for PIC calls (-fno-plt: load the address from GOT at call site)
1798
68a607d8 1799fplugin=
21bf1558 1800Common Joined RejectNegative Var(common_deferred_options) Defer
68a607d8
DN
1801Specify a plugin to load
1802
1803fplugin-arg-
21bf1558 1804Common Joined RejectNegative Var(common_deferred_options) Defer
f94e1d66 1805-fplugin-arg-<name>-<key>[=<value>] Specify argument <key>=<value> for plugin <name>
68a607d8 1806
bbc8a8dc 1807fpredictive-commoning
6ae4be32 1808Common Report Var(flag_predictive_commoning) Optimization
bbc8a8dc
ZD
1809Run predictive commoning optimization.
1810
de32c0cb 1811fprefetch-loop-arrays
1fbb509a 1812Common Report Var(flag_prefetch_loop_arrays) Init(-1) Optimization
f3fdaec4 1813Generate prefetch instructions, if available, for arrays in loops
de32c0cb 1814
6ff3a151 1815fprofile
50431bc4 1816Common Report Var(profile_flag)
f3fdaec4 1817Enable basic program profiling code
6ff3a151
NB
1818
1819fprofile-arcs
50431bc4 1820Common Report Var(profile_arc_flag)
f3fdaec4 1821Insert arc-based program profiling code
6ff3a151 1822
2f908293 1823fprofile-dir=
0576d21f 1824Common Joined RejectNegative Var(profile_data_prefix)
2f908293
SP
1825Set the top-level directory for storing the profile data.
1826The default is 'pwd'.
1827
52c76998
PY
1828fprofile-correction
1829Common Report Var(flag_profile_correction)
1830Enable correction of flow inconsistent profile data input
1831
a8a5f53a
JH
1832fprofile-generate
1833Common
1834Enable common options for generating profile info for profile feedback directed optimizations
1835
2f908293
SP
1836fprofile-generate=
1837Common Joined RejectNegative
1838Enable common options for generating profile info for profile feedback directed optimizations, and set -fprofile-dir=
1839
a8a5f53a 1840fprofile-use
2f908293 1841Common Var(flag_profile_use)
a8a5f53a
JH
1842Enable common options for performing profile feedback directed optimizations
1843
2f908293
SP
1844fprofile-use=
1845Common Joined RejectNegative
1846Enable common options for performing profile feedback directed optimizations, and set -fprofile-dir=
1847
fca9dc00 1848fprofile-values
50431bc4 1849Common Report Var(flag_profile_values)
fca9dc00
ZD
1850Insert code to profile values of expressions
1851
37e5402b
JH
1852fprofile-report
1853Common Report Var(profile_report)
1854Report on consistency of profile
1855
9cec31f4
ML
1856fprofile-reorder-functions
1857Common Report Var(flag_profile_reorder_functions)
1858Enable function reordering that improves code placement
1859
de32c0cb 1860frandom-seed
299404a1 1861Common Var(common_deferred_options) Defer
de32c0cb
NB
1862
1863frandom-seed=
299404a1 1864Common Joined RejectNegative Var(common_deferred_options) Defer
fd960af2 1865-frandom-seed=<number> Make compile reproducible using <number>
de32c0cb 1866
e0d9d0dd
NC
1867; This switch causes the command line that was used to create an
1868; object file to be recorded into the object file. The exact format
1869; of this recording is target and binary file format dependent.
1870; It is related to the -fverbose-asm switch, but that switch only
1871; records information in the assembler output file as comments, so
1872; they never reach the object file.
1873frecord-gcc-switches
1874Common Report Var(flag_record_gcc_switches)
1875Record gcc command line switches in the object file.
1876
de32c0cb 1877freg-struct-return
f0036cca 1878Common Report Var(flag_pcc_struct_return,0) Optimization
f3fdaec4 1879Return small aggregates in registers
de32c0cb 1880
6ff3a151 1881fregmove
3b6d1699
VM
1882Common Ignore
1883Does nothing. Preserved for backward compatibility.
6ff3a151 1884
f522930c
JM
1885flifetime-dse
1886Common Report Var(flag_lifetime_dse) Init(1) Optimization
1887Tell DSE that the storage for a C++ object is dead when the constructor
1888starts and when the destructor finishes.
1889
f20f2613
VM
1890flive-range-shrinkage
1891Common Report Var(flag_live_range_shrinkage) Init(0) Optimization
1892Relief of register pressure through live range shrinkage
1893
6ff3a151 1894frename-registers
c662432e 1895Common Report Var(flag_rename_registers) Init(2) Optimization
f3fdaec4 1896Perform a register renaming optimization pass
6ff3a151 1897
b16abbcb
BC
1898fschedule-fusion
1899Common Report Var(flag_schedule_fusion) Init(2) Optimization
1900Perform a target dependent instruction fusion optimization pass
1901
6ff3a151 1902freorder-blocks
c662432e 1903Common Report Var(flag_reorder_blocks) Optimization
f3fdaec4 1904Reorder basic blocks to improve code placement
6ff3a151 1905
750054a2 1906freorder-blocks-and-partition
c662432e 1907Common Report Var(flag_reorder_blocks_and_partition) Optimization
750054a2
CT
1908Reorder basic blocks and partition into hot and cold sections
1909
6ff3a151 1910freorder-functions
c662432e 1911Common Report Var(flag_reorder_functions) Optimization
f3fdaec4 1912Reorder functions to improve code placement
6ff3a151 1913
de32c0cb 1914frerun-cse-after-loop
3020190e 1915Common Report Var(flag_rerun_cse_after_loop) Optimization
f3fdaec4 1916Add a common subexpression elimination pass after loop optimizations
de32c0cb 1917
efa1cdf0 1918frerun-loop-opt
2d2bd949 1919Common Ignore
c0220ea4 1920Does nothing. Preserved for backward compatibility.
efa1cdf0 1921
039c3d42 1922frounding-math
5e46b0c6 1923Common Report Var(flag_rounding_math) Optimization SetByCombined
039c3d42
RS
1924Disable optimizations that assume default FP rounding behavior
1925
6ff3a151 1926fsched-interblock
c662432e 1927Common Report Var(flag_schedule_interblock) Init(1) Optimization
f3fdaec4 1928Enable scheduling across basic blocks
6ff3a151 1929
ce18efcb
VM
1930fsched-pressure
1931Common Report Var(flag_sched_pressure) Init(0) Optimization
1932Enable register pressure sensitive insn scheduling
1933
6ff3a151 1934fsched-spec
c662432e 1935Common Report Var(flag_schedule_speculative) Init(1) Optimization
f3fdaec4 1936Allow speculative motion of non-loads
6ff3a151
NB
1937
1938fsched-spec-load
c662432e 1939Common Report Var(flag_schedule_speculative_load) Optimization
f3fdaec4 1940Allow speculative motion of some loads
6ff3a151
NB
1941
1942fsched-spec-load-dangerous
c662432e 1943Common Report Var(flag_schedule_speculative_load_dangerous) Optimization
f3fdaec4 1944Allow speculative motion of more loads
6ff3a151 1945
de32c0cb 1946fsched-verbose=
299404a1 1947Common RejectNegative Joined UInteger Var(sched_verbose_param)
cf03fd63 1948-fsched-verbose=<number> Set the verbosity level of the scheduler
de32c0cb 1949
6ff3a151 1950fsched2-use-superblocks
c662432e 1951Common Report Var(flag_sched2_use_superblocks) Optimization
f3fdaec4 1952If scheduling post reload, do superblock scheduling
6ff3a151
NB
1953
1954fsched2-use-traces
2d2bd949 1955Common Ignore
57257f0d 1956Does nothing. Preserved for backward compatibility.
6ff3a151 1957
de32c0cb 1958fschedule-insns
c662432e 1959Common Report Var(flag_schedule_insns) Optimization
f3fdaec4 1960Reschedule instructions before register allocation
de32c0cb
NB
1961
1962fschedule-insns2
c662432e 1963Common Report Var(flag_schedule_insns_after_reload) Optimization
f3fdaec4 1964Reschedule instructions after register allocation
de32c0cb 1965
e855c69d
AB
1966; This flag should be on when a target implements non-trivial
1967; scheduling hooks, maybe saving some information for its own sake.
1968; On IA64, for example, this is used for correct bundling.
1969fselective-scheduling
1970Common Report Var(flag_selective_scheduling) Optimization
1971Schedule instructions using selective scheduling algorithm
1972
1973fselective-scheduling2
1974Common Report Var(flag_selective_scheduling2) Optimization
1975Run selective scheduling after reload
1976
1977fsel-sched-pipelining
1978Common Report Var(flag_sel_sched_pipelining) Init(0) Optimization
1979Perform software pipelining of inner loops during selective scheduling
1980
1981fsel-sched-pipelining-outer-loops
1982Common Report Var(flag_sel_sched_pipelining_outer_loops) Init(0) Optimization
1983Perform software pipelining of outer loops during selective scheduling
1984
1985fsel-sched-reschedule-pipelined
1986Common Report Var(flag_sel_sched_reschedule_pipelined) Init(0) Optimization
1987Reschedule pipelined regions without pipelining
1988
e288a46c
JH
1989fsemantic-interposition
1990Common Report Var(flag_semantic_interposition) Init(1)
1991Allow interposing function (or variables) by ones with different semantics (or initializer) respectively by dynamic linker
1992
31b66477
KC
1993; sched_stalled_insns means that insns can be moved prematurely from the queue
1994; of stalled insns into the ready list.
569fa502 1995fsched-stalled-insns
ab442df7 1996Common Report Var(flag_sched_stalled_insns) Optimization UInteger
569fa502
DN
1997Allow premature scheduling of queued insns
1998
1999fsched-stalled-insns=
b16650ac 2000Common RejectNegative Joined UInteger Optimization
4e994432 2001-fsched-stalled-insns=<number> Set number of queued insns that can be prematurely scheduled
569fa502 2002
31b66477
KC
2003; sched_stalled_insns_dep controls how many recently scheduled cycles will
2004; be examined for a dependency on a stalled insn that is candidate for
2005; premature removal from the queue of stalled insns into the ready list (has
2006; an effect only if the flag 'sched_stalled_insns' is set).
569fa502 2007fsched-stalled-insns-dep
ab442df7 2008Common Report Var(flag_sched_stalled_insns_dep,1) Init(1) Optimization UInteger
569fa502
DN
2009Set dependence distance checking in premature scheduling of queued insns
2010
2011fsched-stalled-insns-dep=
b16650ac 2012Common RejectNegative Joined UInteger Optimization
4e994432 2013-fsched-stalled-insns-dep=<number> Set dependence distance checking in premature scheduling of queued insns
569fa502 2014
ee4764a8
GS
2015fsched-group-heuristic
2016Common Report Var(flag_sched_group_heuristic) Init(1) Optimization
2017Enable the group heuristic in the scheduler
2018
2019fsched-critical-path-heuristic
2020Common Report Var(flag_sched_critical_path_heuristic) Init(1) Optimization
2021Enable the critical path heuristic in the scheduler
2022
2023fsched-spec-insn-heuristic
2024Common Report Var(flag_sched_spec_insn_heuristic) Init(1) Optimization
2025Enable the speculative instruction heuristic in the scheduler
2026
ee4764a8
GS
2027fsched-rank-heuristic
2028Common Report Var(flag_sched_rank_heuristic) Init(1) Optimization
2029Enable the rank heuristic in the scheduler
2030
2031fsched-last-insn-heuristic
2032Common Report Var(flag_sched_last_insn_heuristic) Init(1) Optimization
2033Enable the last instruction heuristic in the scheduler
2034
2035fsched-dep-count-heuristic
2036Common Report Var(flag_sched_dep_count_heuristic) Init(1) Optimization
2037Enable the dependent count heuristic in the scheduler
2038
aacd3885 2039fsection-anchors
c662432e 2040Common Report Var(flag_section_anchors) Optimization
aacd3885
RS
2041Access data in the same section from shared anchor points
2042
8cd37d0b 2043fsee
2d2bd949 2044Common Ignore
8393a9c8 2045Does nothing. Preserved for backward compatibility.
8cd37d0b 2046
87a0ebfd 2047fzee
26cd9add
EI
2048Common Ignore
2049Does nothing. Preserved for backward compatibility.
2050
2051free
2052Common Report Var(flag_ree) Init(0)
2053Turn on Redundant Extensions Elimination pass.
87a0ebfd 2054
8abb6b22 2055fshow-column
1cb42611 2056Common Report Var(flag_show_column) Init(1)
e74fe492 2057Show column numbers in diagnostics, when available. Default on
8abb6b22 2058
484db665
BS
2059fshrink-wrap
2060Common Report Var(flag_shrink_wrap) Optimization
2061Emit function prologues only before parts of the function that need it,
2062rather than at the top of the function.
2063
6ff3a151 2064fsignaling-nans
5e46b0c6 2065Common Report Var(flag_signaling_nans) Optimization SetByCombined
f3fdaec4 2066Disable optimizations observable by IEEE signaling NaNs
6ff3a151 2067
db02da79 2068fsigned-zeros
5e46b0c6 2069Common Report Var(flag_signed_zeros) Init(1) Optimization SetByCombined
db02da79
RS
2070Disable floating point optimizations that ignore the IEEE signedness of zero
2071
6ff3a151 2072fsingle-precision-constant
c662432e 2073Common Report Var(flag_single_precision_constant) Optimization
f3fdaec4 2074Convert floating point constants to single precision constants
6ff3a151 2075
113d659a 2076fsplit-ivs-in-unroller
c662432e 2077Common Report Var(flag_split_ivs_in_unroller) Init(1) Optimization
c85ce869 2078Split lifetimes of induction variables when loops are unrolled
113d659a 2079
7458026b
ILT
2080fsplit-stack
2081Common Report Var(flag_split_stack) Init(-1)
2082Generate discontiguous stack frames
2083
e53a16e7 2084fsplit-wide-types
21af5cdf 2085Common Report Var(flag_split_wide_types) Optimization
e53a16e7
ILT
2086Split wide types into independent registers
2087
68f6df73
RB
2088fssa-phiopt
2089Common Report Var(flag_ssa_phiopt) Optimization
2090Optimize conditional patterns using SSA PHI nodes
2091
98ce9490
TV
2092fstdarg-opt
2093Common Report Var(flag_stdarg_opt) Init(1) Optimization
2094Optimize amount of stdarg registers saved to stack at start of function
2095
f37a4f14 2096fvariable-expansion-in-unroller
c662432e 2097Common Report Var(flag_variable_expansion_in_unroller) Optimization
c85ce869 2098Apply variable expansion when loops are unrolled
f37a4f14 2099
b38f3813
EB
2100fstack-check=
2101Common Report RejectNegative Joined
2102-fstack-check=[no|generic|specific] Insert stack checking code into the program
2103
6ff3a151 2104fstack-check
5de8299c 2105Common Alias(fstack-check=, specific, no)
b38f3813 2106Insert stack checking code into the program. Same as -fstack-check=specific
6ff3a151 2107
de32c0cb 2108fstack-limit
21bf1558 2109Common Var(common_deferred_options) Defer
de32c0cb 2110
058de654 2111fstack-limit-register=
21bf1558 2112Common RejectNegative Joined Var(common_deferred_options) Defer
cf03fd63 2113-fstack-limit-register=<register> Trap if the stack goes past <register>
058de654
NB
2114
2115fstack-limit-symbol=
21bf1558 2116Common RejectNegative Joined Var(common_deferred_options) Defer
cf03fd63 2117-fstack-limit-symbol=<name> Trap if the stack goes past symbol <name>
058de654 2118
7d69de61
RH
2119fstack-protector
2120Common Report Var(flag_stack_protect, 1)
2121Use propolice as a stack protection method
2122
2123fstack-protector-all
f0036cca 2124Common Report RejectNegative Var(flag_stack_protect, 2)
7d69de61
RH
2125Use a stack protection method for every function
2126
f6bc1c4a
HS
2127fstack-protector-strong
2128Common Report RejectNegative Var(flag_stack_protect, 3)
2129Use a smart stack protection method for certain functions
2130
5434dc07
MD
2131fstack-protector-explicit
2132Common Report RejectNegative Var(flag_stack_protect, 4)
2133Use stack protection method only for functions with the stack_protect attribute
2134
d3c12306
EB
2135fstack-usage
2136Common RejectNegative Var(flag_stack_usage)
2137Output stack usage information on a per-function basis
2138
de32c0cb 2139fstrength-reduce
2d2bd949 2140Common Ignore
c0220ea4 2141Does nothing. Preserved for backward compatibility.
de32c0cb 2142
31b66477
KC
2143; Nonzero if we should do (language-dependent) alias analysis.
2144; Typically, this analysis will assume that expressions of certain
2145; types do not alias expressions of certain other types. Only used
2146; if alias analysis (in general) is enabled.
6ff3a151 2147fstrict-aliasing
c662432e 2148Common Report Var(flag_strict_aliasing) Optimization
f3fdaec4 2149Assume strict aliasing rules apply
6ff3a151 2150
eeef0e45 2151fstrict-overflow
b16650ac 2152Common Report Var(flag_strict_overflow) Optimization
eeef0e45
ILT
2153Treat signed overflow as undefined
2154
e8053cf5
RH
2155fsync-libcalls
2156Common Report Var(flag_sync_libcalls) Init(1)
2157Implement __atomic operations via libcalls to legacy __sync functions
2158
de32c0cb 2159fsyntax-only
50431bc4 2160Common Report Var(flag_syntax_only)
f3fdaec4 2161Check for syntax errors, then stop
de32c0cb 2162
6ff3a151 2163ftest-coverage
50431bc4 2164Common Report Var(flag_test_coverage)
f3fdaec4 2165Create data files needed by \"gcov\"
6ff3a151 2166
de32c0cb 2167fthread-jumps
c662432e 2168Common Report Var(flag_thread_jumps) Optimization
f3fdaec4 2169Perform jump threading optimizations
de32c0cb 2170
6ff3a151 2171ftime-report
50431bc4 2172Common Report Var(time_report)
f3fdaec4 2173Report the time taken by each compiler pass
6ff3a151 2174
058de654 2175ftls-model=
e6d4b984 2176Common Joined RejectNegative Enum(tls_model) Var(flag_tls_default) Init(TLS_MODEL_GLOBAL_DYNAMIC)
cf03fd63 2177-ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec] Set the default thread-local storage code generation model
058de654 2178
e6d4b984
JM
2179Enum
2180Name(tls_model) Type(enum tls_model) UnknownError(unknown TLS model %qs)
2181
2182EnumValue
2183Enum(tls_model) String(global-dynamic) Value(TLS_MODEL_GLOBAL_DYNAMIC)
2184
2185EnumValue
2186Enum(tls_model) String(local-dynamic) Value(TLS_MODEL_LOCAL_DYNAMIC)
2187
2188EnumValue
2189Enum(tls_model) String(initial-exec) Value(TLS_MODEL_INITIAL_EXEC)
2190
2191EnumValue
2192Enum(tls_model) String(local-exec) Value(TLS_MODEL_LOCAL_EXEC)
2193
474eccc6 2194ftoplevel-reorder
b16650ac 2195Common Report Var(flag_toplevel_reorder) Init(2)
474eccc6
ILT
2196Reorder top level functions, variables, and asms
2197
de32c0cb 2198ftracer
b16650ac 2199Common Report Var(flag_tracer) Optimization
f3fdaec4 2200Perform superblock formation via tail duplication
de32c0cb 2201
31b66477
KC
2202; Zero means that floating-point math operations cannot generate a
2203; (user-visible) trap. This is the case, for example, in nonstop
2204; IEEE 754 arithmetic.
6ff3a151 2205ftrapping-math
5e46b0c6 2206Common Report Var(flag_trapping_math) Init(1) Optimization SetByCombined
f3fdaec4 2207Assume floating-point operations can trap
6ff3a151
NB
2208
2209ftrapv
c662432e 2210Common Report Var(flag_trapv) Optimization
f3fdaec4 2211Trap for signed overflow in addition, subtraction and multiplication
6ff3a151 2212
6de9cd9a 2213ftree-ccp
c662432e 2214Common Report Var(flag_tree_ccp) Optimization
6de9cd9a
DN
2215Enable SSA-CCP optimization on trees
2216
0b4b14ac
RG
2217ftree-bit-ccp
2218Common Report Var(flag_tree_bit_ccp) Optimization
2219Enable SSA-BIT-CCP optimization on trees
2220
0bca51f0 2221ftree-store-ccp
2d2bd949 2222Common Ignore
dce2b2f6 2223Does nothing. Preserved for backward compatibility.
0bca51f0 2224
6de9cd9a 2225ftree-ch
c662432e 2226Common Report Var(flag_tree_ch) Optimization
6de9cd9a
DN
2227Enable loop header copying on trees
2228
21d01365 2229ftree-coalesce-inlined-vars
0f9f9784
AO
2230Common Report Var(flag_ssa_coalesce_vars,1) Init(2) RejectNegative Optimization
2231Enable coalescing of copy-related user variables that are inlined
21d01365
AO
2232
2233ftree-coalesce-vars
0f9f9784
AO
2234Common Report Var(flag_ssa_coalesce_vars,2) Optimization
2235Enable coalescing of all copy-related user variables
21d01365 2236
6de9cd9a 2237ftree-copyrename
0f9f9784
AO
2238Common Report Var(flag_tree_copyrename) Optimization
2239Replace SSA temporaries with better names in copies
6de9cd9a 2240
0bca51f0 2241ftree-copy-prop
c662432e 2242Common Report Var(flag_tree_copy_prop) Optimization
0bca51f0
DN
2243Enable copy propagation on trees
2244
2245ftree-store-copy-prop
2d2bd949 2246Common Ignore
e9033855 2247Does nothing. Preserved for backward compatibility.
0bca51f0 2248
a5828d1e
MM
2249ftree-cselim
2250Common Report Var(flag_tree_cselim) Init(2) Optimization
2251Transform condition stores into unconditional ones
2252
b6e99746
MJ
2253ftree-switch-conversion
2254Common Report Var(flag_tree_switch_conversion) Optimization
2255Perform conversions of switch initializations.
2256
6de9cd9a 2257ftree-dce
c662432e 2258Common Report Var(flag_tree_dce) Optimization
6de9cd9a
DN
2259Enable SSA dead code elimination optimization on trees
2260
2261ftree-dominator-opts
c662432e 2262Common Report Var(flag_tree_dom) Optimization
6de9cd9a
DN
2263Enable dominator optimizations
2264
c9e93168
TV
2265ftree-tail-merge
2266Common Report Var(flag_tree_tail_merge) Optimization
2267Enable tail merging on trees
2268
6de9cd9a 2269ftree-dse
c662432e 2270Common Report Var(flag_tree_dse) Optimization
6de9cd9a
DN
2271Enable dead store elimination
2272
248fc9f3
RG
2273ftree-forwprop
2274Common Report Var(flag_tree_forwprop) Init(1) Optimization
2275Enable forward propagation on trees
2276
ff2ad0f7 2277ftree-fre
c662432e 2278Common Report Var(flag_tree_fre) Optimization
ff2ad0f7
DN
2279Enable Full Redundancy Elimination (FRE) on trees
2280
8b57bfeb
JJ
2281foptimize-strlen
2282Common Report Var(flag_optimize_strlen) Optimization
2283Enable string length optimizations on trees
2284
ae93744d
JL
2285fisolate-erroneous-paths-dereference
2286Common Report Var(flag_isolate_erroneous_paths_dereference) Optimization
408e8aa4
SL
2287Detect paths that trigger erroneous or undefined behavior due to
2288dereferencing a null pointer. Isolate those paths from the main control
2289flow and turn the statement with erroneous or undefined behavior into a trap.
ae93744d
JL
2290
2291fisolate-erroneous-paths-attribute
2292Common Report Var(flag_isolate_erroneous_paths_attribute) Optimization
408e8aa4
SL
2293Detect paths that trigger erroneous or undefined behavior due a null value
2294being used in a way forbidden by a returns_nonnull or nonnull
ae93744d 2295attribute. Isolate those paths from the main control flow and turn the
408e8aa4 2296statement with erroneous or undefined behavior into a trap.
8fdc414d 2297
dea61d92 2298ftree-loop-distribution
53ed2f0e 2299Common Report Var(flag_tree_loop_distribution) Optimization
dea61d92
SP
2300Enable loop distribution on trees
2301
20769d5e
SP
2302ftree-loop-distribute-patterns
2303Common Report Var(flag_tree_loop_distribute_patterns) Optimization
2304Enable loop distribution for patterns transformed into a library call
2305
1b08d87d 2306ftree-loop-im
c662432e 2307Common Report Var(flag_tree_loop_im) Init(1) Optimization
a7e5372d
ZD
2308Enable loop invariant motion on trees
2309
599eabdb 2310ftree-loop-linear
7633415c
SP
2311Common Alias(floop-interchange)
2312Enable loop interchange transforms. Same as -floop-interchange
599eabdb 2313
1b08d87d 2314ftree-loop-ivcanon
c662432e 2315Common Report Var(flag_tree_loop_ivcanon) Init(1) Optimization
1b08d87d
DB
2316Create canonical induction variables in loops
2317
c66b6c66 2318ftree-loop-optimize
c662432e 2319Common Report Var(flag_tree_loop_optimize) Init(1) Optimization
c66b6c66
ZD
2320Enable loop optimizations on tree level
2321
5f40b3cb 2322ftree-parallelize-loops=
b16650ac 2323Common Report Joined RejectNegative UInteger Var(flag_tree_parallelize_loops) Init(1) Optimization
5f40b3cb
ZD
2324Enable automatic parallelization of loops
2325
248fc9f3
RG
2326ftree-phiprop
2327Common Report Var(flag_tree_phiprop) Init(1) Optimization
2328Enable hoisting loads from conditional pointers.
2329
6de9cd9a 2330ftree-pre
c662432e 2331Common Report Var(flag_tree_pre) Optimization
6de9cd9a
DN
2332Enable SSA-PRE optimization on trees
2333
fa06ad0d
JR
2334ftree-partial-pre
2335Common Report Var(flag_tree_partial_pre) Optimization
2336In SSA-PRE optimization on trees, enable partial-partial redundancy elimination
2337
248fc9f3 2338ftree-pta
14379e66 2339Common Report Var(flag_tree_pta) Optimization
248fc9f3
RG
2340Perform function-local points-to analysis on trees.
2341
13c59415
UB
2342ftree-reassoc
2343Common Report Var(flag_tree_reassoc) Init(1) Optimization
2344Enable reassociation on tree level
2345
c75ab022 2346ftree-salias
2d2bd949 2347Common Ignore
1353232d 2348Does nothing. Preserved for backward compatibility.
c75ab022 2349
fa555252 2350ftree-sink
c662432e 2351Common Report Var(flag_tree_sink) Optimization
fa555252
DB
2352Enable SSA code sinking on trees
2353
75cfe445
BS
2354ftree-slsr
2355Common Report Var(flag_tree_slsr) Optimization
2356Perform straight-line strength reduction
2357
6de9cd9a 2358ftree-sra
c662432e 2359Common Report Var(flag_tree_sra) Optimization
6de9cd9a
DN
2360Perform scalar replacement of aggregates
2361
2362ftree-ter
3020190e 2363Common Report Var(flag_tree_ter) Optimization
6de9cd9a
DN
2364Replace temporary expressions in the SSA->normal pass
2365
c662432e
NC
2366ftree-lrs
2367Common Report Var(flag_tree_live_range_split) Optimization
2368Perform live range splitting during the SSA->normal pass
2369
0bca51f0 2370ftree-vrp
c662432e 2371Common Report Var(flag_tree_vrp) Init(0) Optimization
0bca51f0
DN
2372Perform Value Range Propagation on trees
2373
de32c0cb 2374funit-at-a-time
b16650ac 2375Common Report Var(flag_unit_at_a_time) Init(1)
f3fdaec4 2376Compile whole compilation unit at a time
de32c0cb
NB
2377
2378funroll-loops
c662432e 2379Common Report Var(flag_unroll_loops) Optimization
f3fdaec4 2380Perform loop unrolling when iteration count is known
de32c0cb
NB
2381
2382funroll-all-loops
c662432e 2383Common Report Var(flag_unroll_all_loops) Optimization
f3fdaec4 2384Perform loop unrolling for all loops
de32c0cb 2385
f9cc1a70
PB
2386; Nonzero means that loop optimizer may assume that the induction variables
2387; that control loops do not overflow and that the loops with nontrivial
2388; exit condition are not infinite
2389funsafe-loop-optimizations
c662432e 2390Common Report Var(flag_unsafe_loop_optimizations) Optimization
f9cc1a70
PB
2391Allow loop optimizations to assume that the loops behave in normal way
2392
a1a82611 2393fassociative-math
b16650ac 2394Common Report Var(flag_associative_math) SetByCombined Optimization
a1a82611
RE
2395Allow optimization for floating-point arithmetic which may change the
2396result of the operation due to rounding.
2397
2398freciprocal-math
b16650ac 2399Common Report Var(flag_reciprocal_math) SetByCombined Optimization
a1a82611
RE
2400Same as -fassociative-math for expressions which include division.
2401
31b66477
KC
2402; Nonzero means that unsafe floating-point math optimizations are allowed
2403; for the sake of speed. IEEE compliance is not guaranteed, and operations
2404; are allowed to assume that their arguments and results are "normal"
2405; (e.g., nonnegative for SQRT).
6ff3a151 2406funsafe-math-optimizations
5e46b0c6 2407Common Report Var(flag_unsafe_math_optimizations) Optimization SetByCombined
f3fdaec4 2408Allow math optimizations that may violate IEEE or ISO standards
6ff3a151 2409
de32c0cb 2410funswitch-loops
c662432e 2411Common Report Var(flag_unswitch_loops) Optimization
f3fdaec4 2412Perform loop unswitching
de32c0cb 2413
6ff3a151 2414funwind-tables
c662432e 2415Common Report Var(flag_unwind_tables) Optimization
f3fdaec4 2416Just generate unwind tables for exception handling
6ff3a151 2417
b352afba 2418fuse-ld=bfd
b78e932d 2419Common Driver Negative(fuse-ld=gold)
b352afba
NC
2420Use the bfd linker instead of the default linker
2421
2422fuse-ld=gold
b78e932d 2423Common Driver Negative(fuse-ld=bfd)
b352afba
NC
2424Use the gold linker instead of the default linker
2425
da18ea94 2426fuse-linker-plugin
063d671d 2427Common Undocumented Var(flag_use_linker_plugin)
da18ea94 2428
e90afde6
JM
2429; Positive if we should track variables, negative if we should run
2430; the var-tracking pass only to discard debug annotations, zero if
2431; we're not to run it. When flag_var_tracking == 2 (AUTODETECT_VALUE) it
2432; will be set according to optimize, debug_info_level and debug_hooks
2433; in process_options ().
014a1138 2434fvar-tracking
e90afde6 2435Common Report Var(flag_var_tracking) Init(2) Optimization
014a1138
JZ
2436Perform variable tracking
2437
e90afde6
JM
2438; Positive if we should track variables at assignments, negative if
2439; we should run the var-tracking pass only to discard debug
2440; annotations. When flag_var_tracking_assignments ==
2441; AUTODETECT_VALUE it will be set according to flag_var_tracking.
b5b8b0ac 2442fvar-tracking-assignments
e90afde6 2443Common Report Var(flag_var_tracking_assignments) Init(2) Optimization
b5b8b0ac
AO
2444Perform variable tracking by annotating assignments
2445
e90afde6
JM
2446; Nonzero if we should toggle flag_var_tracking_assignments after
2447; processing options and computing its default. */
b5b8b0ac 2448fvar-tracking-assignments-toggle
e90afde6 2449Common Report Var(flag_var_tracking_assignments_toggle) Optimization
b5b8b0ac
AO
2450Toggle -fvar-tracking-assignments
2451
1267ca30
EB
2452; Positive if we should track uninitialized variables, negative if
2453; we should run the var-tracking pass only to discard debug
2454; annotations. When flag_var_tracking_uninit == AUTODETECT_VALUE it
2455; will be set according to flag_var_tracking.
62760ffd
CT
2456fvar-tracking-uninit
2457Common Report Var(flag_var_tracking_uninit) Optimization
2458Perform variable tracking and also tag variables that are uninitialized
2459
79fe1b3b 2460ftree-vectorize
c662432e 2461Common Report Var(flag_tree_vectorize) Optimization
ea0f3e87 2462Enable vectorization on trees
79fe1b3b 2463
78c60e3d 2464ftree-vectorizer-verbose=
477e804b
SS
2465Common Joined RejectNegative Ignore
2466Does nothing. Preserved for backward compatibility.
78c60e3d 2467
ea0f3e87
XDL
2468ftree-loop-vectorize
2469Common Report Var(flag_tree_loop_vectorize) Optimization
2470Enable loop vectorization on trees
2471
a70d6342 2472ftree-slp-vectorize
ea0f3e87 2473Common Report Var(flag_tree_slp_vectorize) Optimization
a70d6342
IR
2474Enable basic block vectorization (SLP) on trees
2475
d6d11272 2476fvect-cost-model=
b16650ac 2477Common Joined RejectNegative Enum(vect_cost_model) Var(flag_vect_cost_model) Init(VECT_COST_MODEL_DEFAULT) Optimization
d6d11272
XDL
2478Specifies the cost model for vectorization
2479
8b5e1202 2480fsimd-cost-model=
b16650ac 2481Common Joined RejectNegative Enum(vect_cost_model) Var(flag_simd_cost_model) Init(VECT_COST_MODEL_UNLIMITED) Optimization
8b5e1202
SO
2482Specifies the vectorization cost model for code marked with a simd directive
2483
d6d11272
XDL
2484Enum
2485Name(vect_cost_model) Type(enum vect_cost_model) UnknownError(unknown vectorizer cost model %qs)
2486
2487EnumValue
2488Enum(vect_cost_model) String(unlimited) Value(VECT_COST_MODEL_UNLIMITED)
2489
2490EnumValue
2491Enum(vect_cost_model) String(dynamic) Value(VECT_COST_MODEL_DYNAMIC)
2492
2493EnumValue
2494Enum(vect_cost_model) String(cheap) Value(VECT_COST_MODEL_CHEAP)
2495
792ed98b 2496fvect-cost-model
d6d11272
XDL
2497Common RejectNegative Alias(fvect-cost-model=,dynamic)
2498Enables the dynamic vectorizer cost model. Preserved for backward compatibility.
2499
2500fno-vect-cost-model
2501Common RejectNegative Alias(fvect-cost-model=,unlimited)
2502Enables the unlimited vectorizer cost model. Preserved for backward compatibility.
792ed98b 2503
c12cc930 2504ftree-vect-loop-version
d6d11272
XDL
2505Common Ignore
2506Does nothing. Preserved for backward compatibility.
c12cc930 2507
fbf798fc 2508ftree-scev-cprop
21af5cdf 2509Common Report Var(flag_tree_scev_cprop) Init(1) Optimization
fbf798fc
DN
2510Enable copy propagation of scalar-evolution information.
2511
31b66477
KC
2512; -fverbose-asm causes extra commentary information to be produced in
2513; the generated assembly code (to make it more readable). This option
2514; is generally only of use to those who actually need to read the
2515; generated assembly code (perhaps while debugging the compiler itself).
2516; -fno-verbose-asm, the default, causes the extra information
2517; to not be added and is useful when comparing two assembler files.
6ff3a151 2518fverbose-asm
50431bc4 2519Common Report Var(flag_verbose_asm)
f3fdaec4 2520Add extra commentary to assembler output
6ff3a151 2521
d7afec4b 2522fvisibility=
e6d4b984 2523Common Joined RejectNegative Enum(symbol_visibility) Var(default_visibility) Init(VISIBILITY_DEFAULT)
d7afec4b
ND
2524-fvisibility=[default|internal|hidden|protected] Set the default symbol visibility
2525
e6d4b984
JM
2526Enum
2527Name(symbol_visibility) Type(enum symbol_visibility) UnknownError(unrecognized visibility value %qs)
2528
2529EnumValue
2530Enum(symbol_visibility) String(default) Value(VISIBILITY_DEFAULT)
2531
2532EnumValue
2533Enum(symbol_visibility) String(internal) Value(VISIBILITY_INTERNAL)
2534
2535EnumValue
2536Enum(symbol_visibility) String(hidden) Value(VISIBILITY_HIDDEN)
2537
2538EnumValue
2539Enum(symbol_visibility) String(protected) Value(VISIBILITY_PROTECTED)
d7afec4b 2540
2077db1b
CT
2541fvtable-verify=
2542Common Joined RejectNegative Enum(vtv_priority) Var(flag_vtable_verify) Init(VTV_NO_PRIORITY)
2543Validate vtable pointers before using them.
2544
2545Enum
2546Name(vtv_priority) Type(enum vtv_priority) UnknownError(unknown vtable verify initialization priority %qs)
2547
2548EnumValue
2549Enum(vtv_priority) String(none) Value(VTV_NO_PRIORITY)
2550
2551EnumValue
2552Enum(vtv_priority) String(std) Value(VTV_STANDARD_PRIORITY)
2553
2554EnumValue
2555Enum(vtv_priority) String(preinit) Value(VTV_PREINIT_PRIORITY)
2556
2557fvtv-counts
2558Common Var(flag_vtv_counts)
2559Output vtable verification counters.
2560
2561fvtv-debug
2562Common Var(flag_vtv_debug)
2563Output vtable verification pointer sets information.
2564
fca9dc00 2565fvpt
c662432e 2566Common Report Var(flag_value_profile_transformations) Optimization
fca9dc00
ZD
2567Use expression value profiles in optimizations
2568
62551c66 2569fweb
c662432e 2570Common Report Var(flag_web) Init(2) Optimization
62551c66
JH
2571Construct webs and split unrelated uses of single variable
2572
c2699190
XDL
2573ftree-builtin-call-dce
2574Common Report Var(flag_tree_builtin_call_dce) Init(0) Optimization
2575Enable conditional dead code elimination for builtin calls
2576
ce91e74c 2577fwhole-program
b16650ac 2578Common Report Var(flag_whole_program) Init(0)
ce91e74c
JH
2579Perform whole program optimizations
2580
6ff3a151 2581fwrapv
c662432e 2582Common Report Var(flag_wrapv) Optimization
f3fdaec4 2583Assume signed arithmetic overflow wraps around
6ff3a151 2584
6ff3a151 2585fzero-initialized-in-bss
50431bc4 2586Common Report Var(flag_zero_initialized_in_bss) Init(1)
f3fdaec4 2587Put zero initialized data in the bss section
6ff3a151 2588
e01cc6dc
NB
2589g
2590Common JoinedOrMissing
df38ffef
NB
2591Generate debug information in default format
2592
2593gcoff
6782438d 2594Common JoinedOrMissing Negative(gdwarf)
df38ffef
NB
2595Generate debug information in COFF format
2596
6782438d
SKS
2597gdwarf
2598Common JoinedOrMissing Negative(gdwarf-)
2599Generate debug information in default version of DWARF format
2600
53b2323e 2601gdwarf-
98095aa3 2602Common Joined UInteger Var(dwarf_version) Init(4) Negative(gstabs)
53b2323e 2603Generate debug information in DWARF v2 (or later) format
df38ffef
NB
2604
2605ggdb
2606Common JoinedOrMissing
2607Generate debug information in default extended format
2608
5175cbaf 2609gno-pubnames
7a1dd0fa 2610Common Negative(gpubnames) Var(debug_generate_pub_sections, 0) Init(-1)
5175cbaf
SA
2611Don't generate DWARF pubnames and pubtypes sections.
2612
2613gpubnames
7a1dd0fa 2614Common Negative(ggnu-pubnames) Var(debug_generate_pub_sections, 1)
5175cbaf
SA
2615Generate DWARF pubnames and pubtypes sections.
2616
7a1dd0fa
SA
2617ggnu-pubnames
2618Common Negative(gno-pubnames) Var(debug_generate_pub_sections, 2)
2619Generate DWARF pubnames and pubtypes sections with GNU extensions.
2620
e967adf4 2621gno-record-gcc-switches
98095aa3 2622Common RejectNegative Var(dwarf_record_gcc_switches,0) Init(1)
e967adf4
JJ
2623Don't record gcc command line switches in DWARF DW_AT_producer.
2624
2625grecord-gcc-switches
2626Common RejectNegative Var(dwarf_record_gcc_switches,1)
2627Record gcc command line switches in DWARF DW_AT_producer.
2628
99ea153e
SA
2629gno-split-dwarf
2630Common Driver RejectNegative Var(dwarf_split_debug_info,0) Init(0)
2631Don't generate debug information in separate .dwo files
2632
2633gsplit-dwarf
2634Common Driver RejectNegative Var(dwarf_split_debug_info,1)
2635Generate debug information in separate .dwo files
2636
df38ffef 2637gstabs
14c7833c 2638Common JoinedOrMissing Negative(gstabs+)
df38ffef
NB
2639Generate debug information in STABS format
2640
2641gstabs+
14c7833c 2642Common JoinedOrMissing Negative(gvms)
df38ffef
NB
2643Generate debug information in extended STABS format
2644
65f753a0 2645gno-strict-dwarf
98095aa3 2646Common RejectNegative Var(dwarf_strict,0) Init(0)
65f753a0
JJ
2647Emit DWARF additions beyond selected version
2648
2649gstrict-dwarf
f0036cca 2650Common Report RejectNegative Var(dwarf_strict,1)
65f753a0
JJ
2651Don't emit DWARF additions beyond selected version
2652
2153915d
AO
2653gtoggle
2654Common Report Var(flag_gtoggle)
2655Toggle debug information generation
2656
df38ffef 2657gvms
14c7833c 2658Common JoinedOrMissing Negative(gxcoff)
df38ffef
NB
2659Generate debug information in VMS format
2660
2661gxcoff
14c7833c 2662Common JoinedOrMissing Negative(gxcoff+)
df38ffef
NB
2663Generate debug information in XCOFF format
2664
2665gxcoff+
14c7833c 2666Common JoinedOrMissing Negative(gcoff)
df38ffef 2667Generate debug information in extended XCOFF format
e01cc6dc 2668
29d7cbd1
RO
2669Enum
2670Name(compressed_debug_sections) Type(int)
2671
2672; Since -gz= is completely handled in specs, the values aren't used and we
2673; assign arbitrary constants.
2674EnumValue
2675Enum(compressed_debug_sections) String(none) Value(0)
2676
2677EnumValue
2678Enum(compressed_debug_sections) String(zlib) Value(1)
2679
2680EnumValue
2681Enum(compressed_debug_sections) String(zlib-gnu) Value(2)
2682
2683gz
2684Common Driver
2685Generate compressed debug sections
2686
2687gz=
2688Common Driver Joined Enum(compressed_debug_sections)
2689-gz=<format> Generate compressed debug sections in format <format>
2690
6d721f67
JM
2691h
2692Driver Joined Separate
2693
4adbd5dd
MK
2694iplugindir=
2695Common Joined Var(plugindir_string) Init(0)
2696-iplugindir=<dir> Set <dir> to be the default plugin directory
2697
e0cdc09f
MK
2698imultiarch
2699Common Joined Separate RejectDriver Var(imultiarch) Init(0)
2700-imultiarch <dir> Set <dir> to be the multiarch include subdirectory
2701
603349bf
JM
2702l
2703Driver Joined Separate
2704
dd9f93dc
JM
2705n
2706Driver
2707
603349bf
JM
2708no-canonical-prefixes
2709Driver
2710
d9d16a19
JM
2711nodefaultlibs
2712Driver
2713
bab79a40
JM
2714nostartfiles
2715Driver
2716
d9d16a19
JM
2717nostdlib
2718Driver
2719
d185d268 2720o
d5478783 2721Common Driver Joined Separate Var(asm_file_name) MissingArgError(missing filename after %qs)
cf03fd63 2722-o <file> Place output into <file>
d185d268
NB
2723
2724p
50431bc4 2725Common Var(profile_flag)
cf03fd63 2726Enable function profiling
d185d268 2727
603349bf
JM
2728pass-exit-codes
2729Driver Var(pass_exit_codes)
2730
d185d268 2731pedantic
c1771a20 2732Common Alias(Wpedantic)
d185d268
NB
2733
2734pedantic-errors
d5478783 2735Common Var(flag_pedantic_errors)
cf03fd63 2736Like -pedantic but issue them as errors
d185d268 2737
d9d16a19
JM
2738pg
2739Driver
2740
603349bf
JM
2741pipe
2742Driver Var(use_pipes)
2743
2744print-file-name=
2745Driver JoinedOrMissing Var(print_file_name)
2746
2747print-libgcc-file-name
2748Driver
2749
2750print-multi-directory
2751Driver Var(print_multi_directory)
2752
2753print-multi-lib
2754Driver Var(print_multi_lib)
2755
2756print-multi-os-directory
2757Driver Var(print_multi_os_directory)
e0cdc09f
MK
2758
2759print-multiarch
2760Driver Var(print_multiarch)
603349bf
JM
2761
2762print-prog-name=
2763Driver JoinedOrMissing Var(print_prog_name)
2764
2765print-search-dirs
2766Driver Var(print_search_dirs)
2767
2768print-sysroot
2769Driver Var(print_sysroot)
2770
2771print-sysroot-headers-suffix
2772Driver Var(print_sysroot_headers_suffix)
2773
d7b42618 2774quiet
603349bf 2775Common Var(quiet_flag) RejectDriver
cf03fd63 2776Do not display functions compiled or elapsed time
d7b42618 2777
dd9f93dc
JM
2778r
2779Driver
2780
2781s
2782Driver
2783
603349bf
JM
2784save-temps
2785Driver
2786
2787save-temps=
2788Driver Joined
2789
dd9f93dc
JM
2790t
2791Driver
2792
603349bf
JM
2793time
2794Driver Var(report_times)
2795
2796time=
2797Driver JoinedOrMissing
2798
e200444e
JM
2799u
2800Driver Joined Separate
2801
5642f5d5
JM
2802undef
2803Driver
2804; C option, but driver must not handle as "-u ndef".
2805
603349bf 2806v
d5478783
JM
2807Common Driver Var(verbose_flag)
2808Enable verbose output
603349bf 2809
d185d268 2810version
603349bf 2811Common Var(version_flag) RejectDriver
cf03fd63 2812Display the compiler's version
d185d268
NB
2813
2814w
50431bc4 2815Common Var(inhibit_warnings)
cf03fd63 2816Suppress warnings
d185d268 2817
603349bf
JM
2818wrapper
2819Driver Separate Var(wrapper_string)
2820
2821x
2822Driver Joined Separate
2823
528dc603 2824shared
5460e1fc 2825Driver RejectNegative Negative(pie)
528dc603
L
2826Create a shared library
2827
603349bf
JM
2828shared-libgcc
2829Driver
2830
2831specs
5de8299c 2832Driver Separate Alias(specs=)
603349bf
JM
2833
2834specs=
2835Driver Joined
2836
d9d16a19
JM
2837static
2838Driver
2839
603349bf
JM
2840static-libgcc
2841Driver
2842
2843static-libgfortran
2844Driver
2845; Documented for Fortran, but always accepted by driver.
2846
2847static-libstdc++
2848Driver
2849
7a938933
ILT
2850static-libgo
2851Driver
2852; Documented for Go, but always accepted by driver.
2853
7e8d1b2d
L
2854static-libasan
2855Driver
2856
32b4b7f5
DV
2857static-libtsan
2858Driver
2859
9065ada9
JJ
2860static-liblsan
2861Driver
2862
de5a5fa1
MP
2863static-libubsan
2864Driver
2865
e200444e
JM
2866symbolic
2867Driver
2868
428b3812 2869no-pie
5460e1fc 2870Driver RejectNegative Negative(shared)
428b3812
L
2871Don't create a position independent executable
2872
2873pie
2874Driver RejectNegative Negative(no-pie)
528dc603
L
2875Create a position independent executable
2876
6d721f67
JM
2877z
2878Driver Joined Separate
2879
1e288103
TV
2880fipa-ra
2881Common Report Var(flag_ipa_ra) Optimization
d996e61a
RO
2882Use caller save register across calls if possible
2883
d7b42618 2884; This comment is to ensure we retain the blank line above.