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