]> git.ipfire.org Git - thirdparty/gcc.git/blame_incremental - gcc/common.opt
MAINTAINERS: Add myself as an aarch64 port reviewer
[thirdparty/gcc.git] / gcc / common.opt
... / ...
CommitLineData
1; Options for the language- and target-independent parts of the compiler.
2
3; Copyright (C) 2003-2025 Free Software Foundation, Inc.
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
9; Software Foundation; either version 3, or (at your option) any later
10; version.
11;
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.
16;
17; You should have received a copy of the GNU General Public License
18; along with GCC; see the file COPYING3. If not see
19; <http://www.gnu.org/licenses/>.
20
21; See the GCC internals manual (options.texi) for a description of this file's format.
22
23; Please try to keep this file in ASCII collating order.
24
25Variable
26int target_flags
27
28Variable
29int optimize
30
31Variable
32int optimize_size
33
34Variable
35int optimize_debug
36
37; Not used directly to control optimizations, only to save -Ofast
38; setting for "optimize" attributes.
39Variable
40int optimize_fast
41
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
49; This variable is set to non-0 only by LTO front-end. 1 indicates that
50; the output produced will be used for incremental linking (thus weak symbols
51; can still be bound) and 2 indicates that the IL is going to be linked and
52; and output to LTO object file.
53Variable
54enum incremental_link flag_incremental_link = INCREMENTAL_LINK_NONE
55
56Variable
57int flag_default_complex_method = 1
58
59; Language specific warning pass for unused results.
60Variable
61bool flag_warn_unused_result = false
62
63; Nonzero if we should write GIMPLE bytecode for link-time optimization.
64Variable
65int flag_generate_lto
66
67; Nonzero if we should write GIMPLE bytecode for offload compilation.
68Variable
69int flag_generate_offload = 0
70
71; Nonzero means we should be saving declaration info into a .X file.
72Variable
73int flag_gen_aux_info = 0
74
75; Nonzero if we are compiling code for a shared library, zero for
76; executable.
77Variable
78int flag_shlib
79
80; These three are really VEC(char_p,heap) *.
81
82Variable
83void *flag_instrument_functions_exclude_functions
84
85Variable
86void *flag_instrument_functions_exclude_files
87
88Variable
89void *flag_ignored_attributes
90
91; Generic structs (e.g. templates not explicitly specialized)
92; may not have a compilation unit associated with them, and so
93; may need to be treated differently from ordinary structs.
94;
95; Structs only handled by reference (indirectly), will also usually
96; not need as much debugging information.
97
98Variable
99enum debug_struct_file debug_struct_ordinary[DINFO_USAGE_NUM_ENUMS] = { DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY }
100
101Variable
102enum debug_struct_file debug_struct_generic[DINFO_USAGE_NUM_ENUMS] = { DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY }
103
104; True if we should exit after parsing options.
105Variable
106bool exit_after_options
107
108; Type(s) of debugging information we are producing (if any). See
109; flag-types.h for the definitions of the different possible types of
110; debugging information.
111Variable
112uint32_t write_symbols = NO_DEBUG
113
114; Level of debugging information we are producing. See flag-types.h
115; for the definitions of the different possible levels.
116Variable
117enum debug_info_levels debug_info_level = DINFO_LEVEL_NONE
118
119; Level of CTF debugging information we are producing. See flag-types.h
120; for the definitions of the different possible levels.
121Variable
122enum ctf_debug_info_levels ctf_debug_info_level = CTFINFO_LEVEL_NONE
123
124; Original value of maximum field alignment in bytes, specified via
125; -fpack-struct=<value>.
126Variable
127unsigned int initial_max_fld_align = TARGET_DEFAULT_PACK_STRUCT
128
129; Type of stack check.
130Variable
131enum stack_check_type flag_stack_check = NO_STACK_CHECK
132
133; True if stack usage information needs to be computed.
134Variable
135bool flag_stack_usage_info = false
136
137; -dA causes debug commentary information to be produced in
138; the generated assembly code (to make it more readable). This option
139; is generally only of use to those who actually need to read the
140; generated assembly code (perhaps while debugging the compiler itself).
141; Currently, this switch is only used by dwarf2out.cc; however, it is intended
142; to be a catchall for printing debug information in the assembler file.
143Variable
144int flag_debug_asm
145
146; Balance between GNAT encodings and standard DWARF to emit.
147Variable
148enum dwarf_gnat_encodings gnat_encodings = DWARF_GNAT_ENCODINGS_DEFAULT
149
150; -dP causes the rtl to be emitted as a comment in assembly.
151Variable
152int flag_dump_rtl_in_asm
153
154; Whether -da was passed (used only in handle_common_deferred_options).
155Variable
156bool flag_dump_all_passed
157
158; Other flags saying which kinds of debugging dump have been requested.
159
160Variable
161int rtl_dump_and_exit
162
163Variable
164int flag_print_asm_name
165
166; Name of top-level original source file (what was input to cpp).
167; This comes from the #-command at the beginning of the actual input.
168; If there isn't any there, then this is the cc1 input file name.
169Variable
170const char *main_input_filename
171
172; Pointer to base name in main_input_filename, with directories and a
173; single final extension removed, and the length of this base
174; name.
175
176Variable
177const char *main_input_basename
178
179Variable
180int main_input_baselength
181
182; The base name used for auxiliary output files.
183; dump_base_name minus dump_base_ext.
184
185Variable
186const char *aux_base_name
187
188; Which options have been printed by --help.
189Variable
190char *help_printed
191
192; Which enums have been printed by --help. 0 = not printed, no
193; relevant options seen, 1 = relevant option seen, not yet printed, 2
194; = printed.
195Variable
196char *help_enum_printed
197
198; The number of columns for --help output.
199Variable
200unsigned int help_columns
201
202; Whether this options structure has been through finish_options
203Variable
204bool flag_opts_finished
205
206; What the sanitizer should instrument
207Variable
208unsigned int flag_sanitize
209
210; What sanitizers should recover from errors
211Variable
212unsigned int flag_sanitize_recover = (SANITIZE_UNDEFINED | SANITIZE_UNDEFINED_NONDEFAULT | SANITIZE_KERNEL_ADDRESS | SANITIZE_KERNEL_HWADDRESS) & ~(SANITIZE_UNREACHABLE | SANITIZE_RETURN)
213
214; What sanitizers should use __builtin_trap () instead of runtime diagnostics
215Variable
216unsigned int flag_sanitize_trap
217
218; Flag whether a prefix has been added to dump_base_name
219Variable
220bool dump_base_name_prefixed = false
221
222; What subset of registers should be zeroed on function return
223Variable
224unsigned int flag_zero_call_used_regs
225
226###
227Driver
228
229-assemble
230Driver Alias(S)
231
232-compile
233Driver Alias(c)
234
235-completion=
236Common Driver Joined Undocumented
237Provide bash completion for options starting with provided string.
238
239-coverage
240Driver Alias(coverage)
241
242-debug
243Common Alias(g)
244
245-dump
246Common Separate Alias(d)
247
248-dump=
249Common Joined Alias(d)
250
251-dumpbase
252Driver Common Separate Alias(dumpbase)
253
254-dumpbase-ext
255Driver Common Separate Alias(dumpbase-ext)
256
257-dumpdir
258Driver Common Separate Alias(dumpdir)
259
260-entry
261Driver Separate Alias(e)
262
263-entry=
264Driver Joined Alias(e)
265
266-extra-warnings
267Common Warning Alias(Wextra)
268
269-for-assembler
270Driver Separate Alias(Xassembler)
271
272-for-assembler=
273Driver JoinedOrMissing Alias(Xassembler)
274
275-for-linker
276Driver Separate Alias(Xlinker)
277
278-for-linker=
279Driver JoinedOrMissing Alias(Xlinker)
280
281-force-link
282Driver Separate Alias(u)
283
284-force-link=
285Driver Joined Alias(u)
286
287-help
288Common Driver Var(help_flag)
289Display this information.
290
291-help=
292Common Driver Joined
293--help=<class> Display descriptions of a specific class of options. <class> is one or more of optimizers, target, warnings, undocumented, params.
294
295-language
296Driver Separate Alias(x)
297
298-language=
299Driver Joined Alias(x)
300
301-library-directory
302Driver Separate Alias(L)
303
304-library-directory=
305Driver Joined Alias(L)
306
307-no-canonical-prefixes
308Driver Alias(no-canonical-prefixes)
309
310-no-standard-libraries
311Driver Alias(nostdlib)
312
313-no-sysroot-suffix
314Driver Var(no_sysroot_suffix)
315
316-no-warnings
317Common Alias(w)
318
319-optimize
320Common Alias(O)
321
322-output
323Common Driver Separate Alias(o) MissingArgError(missing filename after %qs)
324
325-output=
326Common Driver Joined Alias(o) MissingArgError(missing filename after %qs)
327
328-pass-exit-codes
329Driver Alias(pass-exit-codes)
330
331-pedantic
332Common Alias(Wpedantic)
333
334-pedantic-errors
335Common Alias(pedantic-errors)
336
337-pie
338Driver Alias(pie)
339
340-static-pie
341Driver Alias(static-pie)
342
343-pipe
344Driver Alias(pipe)
345
346-prefix
347Driver Separate Alias(B)
348
349-prefix=
350Driver JoinedOrMissing Alias(B)
351
352-preprocess
353Driver Alias(E)
354
355-print-file-name
356Driver Separate Alias(print-file-name=)
357
358-print-file-name=
359Driver JoinedOrMissing Alias(print-file-name=)
360
361-print-libgcc-file-name
362Driver Alias(print-libgcc-file-name)
363
364-print-multi-directory
365Driver Alias(print-multi-directory)
366
367-print-multi-lib
368Driver Alias(print-multi-lib)
369
370-print-multi-os-directory
371Driver Alias(print-multi-os-directory)
372
373-print-multiarch
374Driver Alias(print-multiarch)
375
376-print-prog-name
377Driver Separate Alias(print-prog-name=)
378
379-print-prog-name=
380Driver JoinedOrMissing Alias(print-prog-name=)
381
382-print-search-dirs
383Driver Alias(print-search-dirs)
384
385-print-sysroot
386Driver Alias(print-sysroot)
387
388-print-sysroot-headers-suffix
389Driver Alias(print-sysroot-headers-suffix)
390
391-profile
392Common Alias(p)
393
394-save-temps
395Driver Alias(save-temps)
396
397-shared
398Driver Alias(shared)
399
400-specs
401Driver Separate Alias(specs=)
402
403-specs=
404Driver Joined Alias(specs=)
405
406-static
407Driver Alias(static)
408
409-symbolic
410Driver Alias(symbolic)
411
412-target-help
413Common Driver
414Display target specific command line options (including assembler and linker options).
415
416-time
417Driver Alias(time)
418
419;; Truncate the file specified after linking.
420;; This option is used by lto-wrapper to reduce the peak disk-usage when
421;; linking with many .LTRANS units.
422truncate
423Driver Separate Undocumented MissingArgError(missing filename after %qs)
424
425-verbose
426Driver Alias(v)
427
428;; The driver used to convert options such as --help into forms such
429;; as -fhelp; the following four entries are for compatibility with
430;; any direct uses of those (undocumented) -f forms
431fhelp
432Common Driver Alias(-help)
433
434fhelp=
435Common Driver Joined Alias(-help=)
436
437ftarget-help
438Common Driver Alias(-target-help)
439
440fversion
441Common Driver Alias(-version)
442
443-sysroot
444Driver Separate Alias(-sysroot=)
445
446-sysroot=
447Driver JoinedOrMissing
448
449-version
450Common Driver
451
452B
453Driver Joined Separate
454
455E
456Driver
457
458L
459Driver Joined Separate
460
461N
462Driver
463
464O
465Common JoinedOrMissing Optimization
466-O<number> Set optimization level to <number>.
467
468Os
469Common Optimization
470Optimize for space rather than speed.
471
472Ofast
473Common Optimization
474Optimize for speed disregarding exact standards compliance.
475
476Og
477Common Optimization
478Optimize for debugging experience rather than speed or size.
479
480Oz
481Common Optimization
482Optimize for space aggressively rather than speed.
483
484Q
485Driver
486
487Qn
488Driver Negative(Qy)
489
490Qy
491Driver Negative(Qn)
492
493R
494Driver Joined Separate
495
496S
497Driver
498
499T
500Driver Joined Separate
501
502Tbss
503Driver Separate
504
505Tbss=
506Driver Joined
507
508Tdata
509Driver Separate
510
511Tdata=
512Driver Joined
513
514Ttext
515Driver Separate
516
517Ttext=
518Driver Joined
519
520W
521Common RejectNegative Warning Alias(Wextra)
522This switch is deprecated; use -Wextra instead.
523
524Wa,
525Driver JoinedOrMissing RejectNegative
526
527Wl,
528Driver JoinedOrMissing RejectNegative
529
530Wp,
531Driver JoinedOrMissing RejectNegative
532
533Waggregate-return
534Common Var(warn_aggregate_return) Warning
535Warn about returning structures, unions or arrays.
536
537Waggressive-loop-optimizations
538Common Var(warn_aggressive_loop_optimizations) Init(1) Warning
539Warn if a loop with constant number of iterations triggers undefined behavior.
540
541Warray-bounds
542Common Alias(Warray-bounds=, 1, 0) Warning
543
544Warray-bounds=
545Common Joined RejectNegative UInteger Var(warn_array_bounds) Warning IntegerRange(0, 2)
546Warn if an array is accessed out of bounds.
547
548Wauto-profile
549Common Var(warn_auto_profile) Warning
550Warn about problems with auto-profile data.
551
552Wuse-after-free
553Common Var(warn_use_after_free) Warning
554Warn for uses of pointers to deallocated storage.
555
556Wuse-after-free=
557Common Joined RejectNegative UInteger Var(warn_use_after_free) Warning IntegerRange(0, 3)
558Warn for uses of pointers to deallocated storage.
559
560Wattributes
561Common Var(warn_attributes) Init(1) Warning
562Warn about inappropriate attribute usage.
563
564Wattributes=
565Common Joined
566Do not warn about specified attributes.
567
568Wattribute-alias
569Common Alias(Wattribute_alias=, 1, 0) Warning
570Warn about type safety and similar errors and mismatches in declarations with alias attributes.
571
572Wattribute-alias=
573Common Joined RejectNegative UInteger Var(warn_attribute_alias) Init(1) Warning IntegerRange(0, 2)
574Warn about type safety and similar errors and mismatches in declarations with alias attributes.
575
576Wcannot-profile
577Common Var(warn_cannot_profile) Init(1) Warning
578Warn when profiling instrumentation was requested, but could not be applied to
579a certain function.
580
581Wcast-align
582Common Var(warn_cast_align) Warning
583Warn about pointer casts which increase alignment.
584
585Wcast-align=strict
586Common Var(warn_cast_align,2) Warning
587Warn about pointer casts which increase alignment.
588
589Wcomplain-wrong-lang
590Common Var(warn_complain_wrong_lang) Init(1) Warning
591Complain when a command-line option is valid, but not applicable to the current front end.
592
593Wcpp
594Common Var(warn_cpp) Init(1) Warning
595Warn when a #warning directive is encountered.
596
597Wattribute-warning
598Common Var(warn_attribute_warning) Init(1) Warning
599Warn about uses of __attribute__((warning)) declarations.
600
601Wdeprecated
602Common Var(warn_deprecated) Init(1) Warning
603Warn if a deprecated compiler feature, class, method, or field is used.
604
605Wdeprecated-declarations
606Common Var(warn_deprecated_decl) Init(1) Warning
607Warn about uses of __attribute__((deprecated)) declarations.
608
609Wdisabled-optimization
610Common Var(warn_disabled_optimization) Warning
611Warn when an optimization pass is disabled.
612
613Werror
614Common Var(warnings_are_errors)
615Turn all warnings into errors.
616
617Werror=
618Common Joined
619Turn the specified warning into an error.
620
621Wextra
622Common Var(extra_warnings) Warning
623Print extra (possibly unwanted) warnings.
624
625Wfatal-errors
626Common Var(flag_fatal_errors)
627Exit on the first error occurred.
628
629Wframe-larger-than=
630Common RejectNegative Joined Host_Wide_Int ByteSize Warning Var(warn_frame_larger_than_size) Init(HOST_WIDE_INT_MAX)
631-Wframe-larger-than=<byte-size> Warn if a function's stack frame requires in excess of <byte-size>.
632
633Wno-frame-larger-than
634Common Alias(Wframe-larger-than=,18446744073709551615EiB,none) Warning
635Disable -Wframe-larger-than= warning. Equivalent to -Wframe-larger-than=<SIZE_MAX> or larger.
636
637Wfree-nonheap-object
638Common Var(warn_free_nonheap_object) Init(1) Warning
639Warn when attempting to free a non-heap object.
640
641Whardened
642Common Var(warn_hardened) Init(1) Warning
643Warn when -fhardened did not enable an option from its set.
644
645Whsa
646Common Ignore Warning
647Does nothing. Preserved for backward compatibility.
648
649Wimplicit-fallthrough
650Common Alias(Wimplicit-fallthrough=,3,0) Warning
651
652Wimplicit-fallthrough=
653Common Var(warn_implicit_fallthrough) RejectNegative Joined UInteger Warning IntegerRange(0, 5)
654Warn when a switch case falls through.
655
656Winfinite-recursion
657Var(warn_infinite_recursion) Warning
658Warn for infinitely recursive calls.
659
660Winline
661Common Var(warn_inline) Warning Optimization
662Warn when an inlined function cannot be inlined.
663
664Winvalid-memory-model
665Common Var(warn_invalid_memory_model) Init(1) Warning
666Warn when an atomic memory model parameter is known to be outside the valid range.
667
668Wlarger-than-
669Common RejectNegative Joined Warning Undocumented Alias(Wlarger-than=)
670
671Wlarger-than=
672Common RejectNegative Joined Host_Wide_Int ByteSize Warning Var(warn_larger_than_size) Init(HOST_WIDE_INT_MAX)
673-Wlarger-than=<byte-size> Warn if an object's size exceeds <byte-size>.
674
675Wno-larger-than
676Common Alias(Wlarger-than=,18446744073709551615EiB,none) Warning
677Disable -Wlarger-than= warning. Equivalent to -Wlarger-than=<SIZE_MAX> or larger.
678
679Wnonnull-compare
680Var(warn_nonnull_compare) Warning
681Warn if comparing pointer parameter with nonnull attribute with NULL.
682
683Wnull-dereference
684Common Var(warn_null_dereference) Warning
685Warn if dereferencing a NULL pointer may lead to erroneous or undefined behavior.
686
687Wunsafe-loop-optimizations
688Common Ignore Warning
689Does nothing. Preserved for backward compatibility.
690
691Wmissing-noreturn
692Common Warning Alias(Wsuggest-attribute=noreturn)
693
694Wmusttail-local-addr
695Common Var(warn_musttail_local_addr) Init(1) Warning
696Warn about passing a pointer/reference to a local or temporary variable to a musttail call argument.
697
698Wmaybe-musttail-local-addr
699Common Var(warn_maybe_musttail_local_addr) Warning EnabledBy(Wextra)
700Warn about pointer/reference to a local or temporary variable possibly escaping to a musttail call.
701
702Wodr
703Common Var(warn_odr_violations) Init(1) Warning
704Warn about some C++ One Definition Rule violations during link time optimization.
705
706Woverflow
707Common Var(warn_overflow) Init(1) Warning
708Warn about overflow in arithmetic expressions.
709
710Wlto-type-mismatch
711Common Var(warn_lto_type_mismatch) Init(1) Warning
712During link time optimization warn about mismatched types of global declarations.
713
714Wpacked
715Common Var(warn_packed) Warning
716Warn when the packed attribute has no effect on struct layout.
717
718Wpadded
719Common Var(warn_padded) Warning
720Warn when padding is required to align structure members.
721
722Wpedantic
723Common Var(pedantic) Init(0) Warning
724Issue warnings needed for strict compliance to the standard.
725
726Wreturn-local-addr
727Common Var(warn_return_local_addr) Init(1) Warning
728Warn about returning a pointer/reference to a local or temporary variable.
729
730Wshadow
731Common Var(warn_shadow) Warning
732Warn when one variable shadows another. Same as -Wshadow=global.
733
734Wshadow=global
735Common Warning Alias(Wshadow)
736Warn when one variable shadows another (globally).
737
738Wshadow=local
739Common Var(warn_shadow_local) Warning EnabledBy(Wshadow)
740Warn when one local variable shadows another local variable or parameter.
741
742Wshadow-local
743Common Warning Undocumented Alias(Wshadow=local)
744
745Wshadow=compatible-local
746Common Var(warn_shadow_compatible_local) Warning EnabledBy(Wshadow=local)
747Warn when one local variable shadows another local variable or parameter of compatible type.
748
749Wshadow-compatible-local
750Common Warning Undocumented Alias(Wshadow=compatible-local)
751
752Wstack-protector
753Common Var(warn_stack_protect) Warning
754Warn when not issuing stack smashing protection for some reason.
755
756Wstack-usage=
757Common Joined RejectNegative Host_Wide_Int ByteSize Var(warn_stack_usage) Warning Init(HOST_WIDE_INT_MAX)
758-Wstack-usage=<byte-size> Warn if stack usage might exceed <byte-size>.
759
760Wno-stack-usage
761Common Alias(Wstack-usage=,18446744073709551615EiB,none) Warning
762Disable Wstack-usage= warning. Equivalent to Wstack-usage=<SIZE_MAX> or larger.
763
764Wstrict-aliasing
765Common Warning
766Warn about code which might break strict aliasing rules.
767
768Wstrict-aliasing=
769Common Joined RejectNegative UInteger Var(warn_strict_aliasing) Warning
770Warn about code which might break strict aliasing rules.
771
772Wstrict-overflow
773Common Warning
774Warn about optimizations that assume that signed overflow is undefined.
775
776Wstrict-overflow=
777Common Joined RejectNegative UInteger Var(warn_strict_overflow) Warning
778Warn about optimizations that assume that signed overflow is undefined.
779
780Wsuggest-attribute=cold
781Common Var(warn_suggest_attribute_cold) Warning
782Warn about functions which might be candidates for __attribute__((cold)).
783
784Wsuggest-attribute=const
785Common Var(warn_suggest_attribute_const) Warning
786Warn about functions which might be candidates for __attribute__((const)).
787
788Wsuggest-attribute=pure
789Common Var(warn_suggest_attribute_pure) Warning
790Warn about functions which might be candidates for __attribute__((pure)).
791
792Wsuggest-attribute=noreturn
793Common Var(warn_suggest_attribute_noreturn) Warning
794Warn about functions which might be candidates for __attribute__((noreturn)).
795
796Wsuggest-attribute=malloc
797Common Var(warn_suggest_attribute_malloc) Warning
798Warn about functions which might be candidates for __attribute__((malloc)).
799
800Wsuggest-attribute=returns_nonnull
801Common Var(warn_suggest_attribute_returns_nonnull) Warning
802Warn about functions which might be candidates for __attribute__((returns_nonnull)).
803
804Wsuggest-final-types
805Common Var(warn_suggest_final_types) Warning
806Warn about C++ polymorphic types where adding final keyword would improve code quality.
807
808Wsuggest-final-methods
809Common Var(warn_suggest_final_methods) Warning
810Warn about C++ virtual methods where adding final keyword would improve code quality.
811
812Wswitch-unreachable
813Common Var(warn_switch_unreachable) Warning Init(1)
814Warn about statements between switch's controlling expression and the first
815case.
816
817Wsystem-headers
818Common Var(warn_system_headers) Warning
819Do not suppress warnings from system headers.
820
821Wtautological-compare
822Common Var(warn_tautological_compare) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
823Warn if a comparison always evaluates to true or false.
824
825Wtrampolines
826Common Var(warn_trampolines) Warning
827Warn whenever a trampoline is generated.
828
829Wtrivial-auto-var-init
830Common Var(warn_trivial_auto_var_init) Warning Init(0)
831Warn about cases where -ftrivial-auto-var-init cannot initialize an auto variable.
832
833Wtype-limits
834Common Var(warn_type_limits) Warning EnabledBy(Wextra)
835Warn if a comparison is always true or always false due to the limited range of the data type.
836
837Wuninitialized
838Common Var(warn_uninitialized) Warning EnabledBy(Wextra)
839Warn about uninitialized automatic variables.
840
841Wmaybe-uninitialized
842Common Var(warn_maybe_uninitialized) Warning EnabledBy(Wuninitialized)
843Warn about maybe uninitialized automatic variables.
844
845Wunreachable-code
846Common Ignore Warning
847Does nothing. Preserved for backward compatibility.
848
849Wunused
850Common Var(warn_unused) Init(0) Warning
851Enable all -Wunused- warnings.
852
853Wunused-but-set-parameter
854Common Var(warn_unused_but_set_parameter) Warning EnabledBy(Wunused && Wextra)
855Warn when a function parameter is only set, otherwise unused.
856
857Wunused-but-set-variable
858Common Var(warn_unused_but_set_variable) Warning EnabledBy(Wunused)
859Warn when a variable is only set, otherwise unused.
860
861Wunused-function
862Common Var(warn_unused_function) Warning EnabledBy(Wunused)
863Warn when a function is unused.
864
865Wunused-label
866Common Var(warn_unused_label) Warning EnabledBy(Wunused)
867Warn when a label is unused.
868
869Wunused-parameter
870Common Var(warn_unused_parameter) Warning EnabledBy(Wunused && Wextra)
871Warn when a function parameter is unused.
872
873Wunused-value
874Common Var(warn_unused_value) Warning EnabledBy(Wunused)
875Warn when an expression value is unused.
876
877Wunused-variable
878Common Var(warn_unused_variable) Warning EnabledBy(Wunused)
879Warn when a variable is unused.
880
881Wcoverage-mismatch
882Common Var(warn_coverage_mismatch) Init(1) Warning
883Warn in case profiles in -fprofile-use do not match.
884
885Wcoverage-invalid-line-number
886Common Var(warn_coverage_invalid_linenum) Init(1) Warning
887Warn in case a function ends earlier than it begins due to an invalid linenum macros.
888
889Wcoverage-too-many-conditions
890Common Var(warn_too_many_conditions) Init(1) Warning
891Warn when a conditional has too many terms and condition coverage profiling
892gives up instrumenting the expression.
893
894fpath-coverage-limit=
895Common RejectNegative Joined UInteger Var(path_coverage_limit) Init(250000)
896-fpath-coverage-limit=<number> Don't instrument functions path count exceeding
897<number>.
898
899Wcoverage-too-many-paths
900Common Var(warn_too_many_paths) Init(1) Warning
901Warn if a function exceeds the number of paths (controlled by
902-fpath-coverage-limit) and path coverage give up instrumenting the function.
903The limit is approximate and conservative and coverage might give up even if
904the actual number is slightly below the limit.
905
906Wmissing-profile
907Common Var(warn_missing_profile) Init(1) Warning
908Warn in case profiles in -fprofile-use do not exist.
909
910Wvector-operation-performance
911Common Var(warn_vector_operation_performance) Warning
912Warn when a vector operation is compiled outside the SIMD.
913
914Wtsan
915Common Var(warn_tsan) Init(1) Warning
916Warn about unsupported features in ThreadSanitizer.
917
918Xassembler
919Driver Separate
920
921Xlinker
922Driver Separate
923
924Xpreprocessor
925Driver Separate
926
927Z
928Driver
929
930aux-info
931Common Separate Var(aux_info_file_name)
932-aux-info <file> Emit declaration information into <file>.
933
934aux-info=
935Common Joined Alias(aux-info)
936
937coverage
938Driver
939
940c
941Driver
942
943d
944Common Joined
945-d<letters> Enable dumps from specific passes of the compiler.
946
947dumpbase
948Driver Common Separate Var(dump_base_name)
949-dumpbase <file> Set the file basename to be used for dumps.
950
951dumpbase-ext
952Driver Common Separate Var(dump_base_ext)
953-dumpbase-ext .<ext> Drop a trailing .<ext> from the dump basename to name auxiliary output files.
954
955dumpdir
956Driver Common Separate Var(dump_dir_name)
957-dumpdir <dir> Set the directory name to be used for dumps.
958
959dumpmachine
960Driver
961
962dumpspecs
963Driver
964
965dumpversion
966Driver
967
968dumpfullversion
969Driver
970
971e
972Driver Joined Separate
973
974; This option has historically been passed down to the linker by an
975; accident of a %{e*} spec, so ensure it continues to be passed down
976; as a single option. The supported option for this purpose is
977; -rdynamic. See PR 47390.
978export-dynamic
979Driver Undocumented
980
981; The version of the C++ ABI in use. The following values are allowed:
982;
983; 0: The version of the ABI believed most conformant with the C++ ABI
984; specification. This ABI may change as bugs are discovered and fixed.
985; Therefore, 0 will not necessarily indicate the same ABI in different
986; versions of G++.
987;
988; 1: The version of the ABI first used in G++ 3.2. No longer selectable.
989;
990; 2: The version of the ABI first used in G++ 3.4, and the default
991; until GCC 4.9.
992;
993; 3: The version of the ABI that fixes the missing underscore
994; in template non-type arguments of pointer type.
995;
996; 4: The version of the ABI that introduces unambiguous mangling of
997; vector types. First selectable in G++ 4.5.
998;
999; 5: The version of the ABI that ignores attribute const/noreturn
1000; in function pointer mangling, and corrects mangling of decltype and
1001; function parameters used in other parameters and the return type.
1002; First selectable in G++ 4.6.
1003;
1004; 6: The version of the ABI that doesn't promote scoped enums to int and
1005; changes the mangling of template argument packs, const/static_cast,
1006; prefix ++ and --, and a class scope function used as a template
1007; argument.
1008; First selectable in G++ 4.7.
1009;
1010; 7: The version of the ABI that treats nullptr_t as a builtin type and
1011; corrects the mangling of lambdas in default argument scope.
1012; First selectable in G++ 4.8.
1013;
1014; 8: The version of the ABI that corrects the substitution behavior of
1015; function types with function-cv-qualifiers.
1016; First selectable in G++ 4.9 and default in G++ 5.
1017;
1018; 9: The version of the ABI that corrects the alignment of nullptr_t.
1019; First selectable and default in G++ 5.2.
1020;
1021; 10: The version of the ABI that mangles attributes that affect type
1022; identity, such as ia32 calling convention attributes (stdcall, etc.)
1023; Default in G++ 6 (set in c_common_post_options).
1024;
1025; 11: The version of the ABI that corrects mangling of sizeof... expressions
1026; and introduces new inheriting constructor handling.
1027; Default in G++ 7.
1028;
1029; 12: Corrects the calling convention for classes with only deleted copy/move
1030; constructors and changes passing/returning of empty records.
1031; Default in G++ 8.1.
1032;
1033; 13: Fixes the accidental change in 12 to the calling convention for classes
1034; with deleted copy constructor and trivial move constructor.
1035; Default in G++ 8.2.
1036;
1037; 14: Corrects the mangling of nullptr expression.
1038; Default in G++ 10.
1039;
1040; 15: Corrects G++ 10 ABI tag regression [PR98481].
1041; Available, but not default, in G++ 10.3.
1042;
1043; 16: Changes the mangling of __alignof__ to be distinct from that of alignof.
1044; Adds missing 'on' in mangling of operator names in some cases.
1045; Default in G++ 11.
1046;
1047; 17: Fixes layout of classes that inherit from aggregate classes with default
1048; member initializers in C++14 and up.
1049; Default in G++ 12.
1050;
1051; 18: Corrects errors in mangling of lambdas with additional context.
1052; Default in G++ 13.
1053;
1054; 19: Emits ABI tags if needed in structured binding mangled names.
1055; Ignores cv-quals on [[no_unique_address]] members.
1056; Mangles constraints on function templates.
1057; Default in G++ 14.
1058;
1059; 20: Fix mangling of lambdas in static data member initializers.
1060; Default in G++ 15.
1061;
1062; 21: Fix noexcept lambda capture pruning.
1063; Fix C++20 layout of base with all explicitly defaulted constructors.
1064; Default in G++ 16.
1065;
1066; Additional positive integers will be assigned as new versions of
1067; the ABI become the default version of the ABI.
1068fabi-version=
1069Common Joined RejectNegative UInteger Var(flag_abi_version) Init(0)
1070The version of the C++ ABI in use.
1071
1072faggressive-loop-optimizations
1073Common Var(flag_aggressive_loop_optimizations) Optimization Init(1)
1074Aggressively optimize loops using language constraints.
1075
1076falign-functions
1077Common Var(flag_align_functions) Optimization
1078Align the start of functions.
1079
1080falign-functions=
1081Common RejectNegative Joined Var(str_align_functions) Optimization
1082
1083falign-jumps
1084Common Var(flag_align_jumps) Optimization
1085Align labels which are only reached by jumping.
1086
1087falign-jumps=
1088Common RejectNegative Joined Var(str_align_jumps) Optimization
1089
1090falign-labels
1091Common Var(flag_align_labels) Optimization
1092Align all labels.
1093
1094falign-labels=
1095Common RejectNegative Joined Var(str_align_labels) Optimization
1096
1097falign-loops
1098Common Var(flag_align_loops) Optimization
1099Align the start of loops.
1100
1101falign-loops=
1102Common RejectNegative Joined Var(str_align_loops) Optimization
1103
1104fallow-store-data-races
1105Common Var(flag_store_data_races) Optimization
1106Allow the compiler to introduce new data races on stores.
1107
1108fanalyzer
1109Common Var(flag_analyzer)
1110Enable static analysis pass.
1111
1112fargument-alias
1113Common Ignore
1114Does nothing. Preserved for backward compatibility.
1115
1116fargument-noalias
1117Common Ignore
1118Does nothing. Preserved for backward compatibility.
1119
1120fargument-noalias-global
1121Common Ignore
1122Does nothing. Preserved for backward compatibility.
1123
1124fargument-noalias-anything
1125Common Ignore
1126Does nothing. Preserved for backward compatibility.
1127
1128fsanitize=
1129Common Driver Joined
1130Select what to sanitize.
1131
1132fsanitize-coverage=
1133Common Joined Enum(sanitize_coverage) Var(flag_sanitize_coverage) EnumBitSet
1134Select type of coverage sanitization.
1135
1136Enum
1137Name(sanitize_coverage) Type(int)
1138
1139EnumValue
1140Enum(sanitize_coverage) String(trace-pc) Value(SANITIZE_COV_TRACE_PC)
1141
1142EnumValue
1143Enum(sanitize_coverage) String(trace-cmp) Value(SANITIZE_COV_TRACE_CMP)
1144
1145fasan-shadow-offset=
1146Common Joined RejectNegative Var(common_deferred_options) Defer
1147-fasan-shadow-offset=<number> Use custom shadow memory offset.
1148
1149fsanitize-sections=
1150Common Joined RejectNegative Var(common_deferred_options) Defer
1151-fsanitize-sections=<sec1,sec2,...> Sanitize global variables
1152in user-defined sections.
1153
1154fsanitize-recover=
1155Common Joined
1156After diagnosing undefined behavior attempt to continue execution.
1157
1158fsanitize-recover
1159Common
1160This switch is deprecated; use -fsanitize-recover= instead.
1161
1162fsanitize-trap=
1163Common Driver Joined
1164Use traps instead of diagnostics of undefined behavior sanitizers.
1165
1166fsanitize-trap
1167Common Driver
1168
1169fsanitize-address-use-after-scope
1170Common Driver Var(flag_sanitize_address_use_after_scope) Init(0)
1171
1172fsanitize-undefined-trap-on-error
1173Common Driver Alias(fsanitize-trap)
1174This switch is deprecated; use -fsanitize-trap= instead.
1175
1176fasynchronous-unwind-tables
1177Common Var(flag_asynchronous_unwind_tables) Optimization
1178Generate unwind tables that are exact at each instruction boundary.
1179
1180fauto-inc-dec
1181Common Var(flag_auto_inc_dec) Init(1) Optimization
1182Generate auto-inc/dec instructions.
1183
1184fauto-profile
1185Common Var(flag_auto_profile)
1186Use sample profile information for call graph node weights. The default
1187profile file is fbdata.afdo in 'pwd'.
1188
1189fauto-profile=
1190Common Joined RejectNegative Var(auto_profile_file)
1191Use sample profile information for call graph node weights. The profile
1192file is specified in the argument.
1193
1194fauto-profile-inlining
1195Common Var(flag_auto_profile_inlining) Init(1) Optimization
1196Perform inlining using auto-profile.
1197
1198; -fcheck-bounds causes gcc to generate array bounds checks.
1199; For C, C++ and ObjC: defaults off.
1200; For Java: defaults to on.
1201; For Fortran: defaults to off.
1202fbounds-check
1203Common Var(flag_bounds_check)
1204Generate code to check bounds before indexing arrays.
1205
1206fbranch-count-reg
1207Common Var(flag_branch_on_count_reg) Optimization
1208Replace add, compare, branch with branch on count register.
1209
1210fbranch-probabilities
1211Common Var(flag_branch_probabilities) Optimization
1212Use profiling information for branch probabilities.
1213
1214fbranch-target-load-optimize
1215Common Ignore
1216Does nothing. Preserved for backward compatibility.
1217
1218fbranch-target-load-optimize2
1219Common Ignore
1220Does nothing. Preserved for backward compatibility.
1221
1222fbtr-bb-exclusive
1223Common Ignore
1224Does nothing. Preserved for backward compatibility.
1225
1226fcallgraph-info
1227Common RejectNegative Var(flag_callgraph_info) Init(NO_CALLGRAPH_INFO);
1228Output callgraph information on a per-file basis.
1229
1230fcallgraph-info=
1231Common RejectNegative Joined
1232Output callgraph information on a per-file basis with decorations.
1233
1234fcall-saved-
1235Common Joined RejectNegative Var(common_deferred_options) Defer
1236-fcall-saved-<register> Mark <register> as being preserved across functions.
1237
1238fcall-used-
1239Common Joined RejectNegative Var(common_deferred_options) Defer
1240-fcall-used-<register> Mark <register> as being corrupted by function calls.
1241
1242; Nonzero for -fcaller-saves: allocate values in regs that need to
1243; be saved across function calls, if that produces overall better code.
1244; Optional now, so people can test it.
1245fcaller-saves
1246Common Var(flag_caller_saves) Optimization
1247Save registers around function calls.
1248
1249fcheck-data-deps
1250Common Ignore
1251This switch is deprecated; do not use.
1252
1253fcheck-new
1254Common Var(flag_check_new)
1255Check the return value of new in C++.
1256
1257fchecking
1258Common Var(flag_checking) Init(CHECKING_P ? ENABLE_EXTRA_CHECKING ? 2 : 1 : 0)
1259Perform internal consistency checkings.
1260
1261fchecking=
1262Common Joined RejectNegative UInteger Var(flag_checking)
1263Perform internal consistency checkings.
1264
1265fcanon-prefix-map
1266Common Var(common_deferred_options) Defer
1267For -f*-prefix-map= options compare canonicalized pathnames rather than just strings.
1268
1269fcode-hoisting
1270Common Var(flag_code_hoisting) Optimization
1271Enable code hoisting.
1272
1273fcombine-stack-adjustments
1274Common Var(flag_combine_stack_adjustments) Optimization
1275Looks for opportunities to reduce stack adjustments and stack references.
1276
1277fcommon
1278Common Var(flag_no_common,0) Init(1)
1279Put uninitialized globals in the common section.
1280
1281fcompare-debug
1282Driver
1283; Converted by the driver to -fcompare-debug= options.
1284
1285fcompare-debug=
1286Common Driver JoinedOrMissing RejectNegative Var(flag_compare_debug_opt)
1287-fcompare-debug[=<opts>] Compile with and without e.g. -gtoggle, and compare the final-insns dump.
1288
1289fcompare-debug-second
1290Common Driver RejectNegative Var(flag_compare_debug)
1291Run only the second compilation of -fcompare-debug.
1292
1293fcompare-elim
1294Common Var(flag_compare_elim_after_reload) Optimization
1295Perform comparison elimination after register allocation has finished.
1296
1297fconserve-stack
1298Common Var(flag_conserve_stack) Optimization
1299Do not perform optimizations increasing noticeably stack usage.
1300
1301fcprop-registers
1302Common Var(flag_cprop_registers) Optimization
1303Perform a register copy-propagation optimization pass.
1304
1305ffold-mem-offsets
1306Common Var(flag_fold_mem_offsets) Init(1) Optimization
1307Fold instructions calculating memory offsets to the memory access instruction if possible.
1308
1309fcrossjumping
1310Common Var(flag_crossjumping) Optimization
1311Perform cross-jumping optimization.
1312
1313fcse-follow-jumps
1314Common Var(flag_cse_follow_jumps) Optimization
1315When running CSE, follow jumps to their targets.
1316
1317fcse-skip-blocks
1318Common Ignore
1319Does nothing. Preserved for backward compatibility.
1320
1321fcx-method=
1322Common Joined RejectNegative Enum(complex_method) Var(flag_complex_method) Optimization SetByCombined
1323
1324Enum
1325Name(complex_method) Type(int)
1326
1327; straightforward implementation of complex divide acceptable.
1328EnumValue
1329Enum(complex_method) String(limited-range) Value(0)
1330
1331; wide ranges of inputs must work for complex divide.
1332EnumValue
1333Enum(complex_method) String(fortran) Value(1)
1334
1335; C99-like requirements for complex multiply and divide.
1336EnumValue
1337Enum(complex_method) String(stdc) Value(2)
1338
1339fcx-limited-range
1340Common Alias(fcx-method=,limited-range,stdc)
1341Omit range reduction step when performing complex division.
1342
1343fcx-fortran-rules
1344Common Alias(fcx-method=,fortran,stdc)
1345Complex multiplication and division follow Fortran rules.
1346
1347fdata-sections
1348Common Var(flag_data_sections)
1349Place data items into their own section.
1350
1351fdbg-cnt-list
1352Common Var(flag_dbg_cnt_list)
1353List all available debugging counters with their limits and counts.
1354
1355fdbg-cnt=
1356Common RejectNegative Joined Var(common_deferred_options) Defer
1357-fdbg-cnt=<counter>[:<lower_limit1>-]<upper_limit1>[:<lower_limit2>-<upper_limit2>:...][,<counter>:...] Set the debug counter limit.
1358
1359fdebug-prefix-map=
1360Common Joined RejectNegative Var(common_deferred_options) Defer
1361-fdebug-prefix-map=<old>=<new> Map one directory name to another in debug information.
1362
1363ffile-prefix-map=
1364Common Joined RejectNegative Var(common_deferred_options) Defer
1365-ffile-prefix-map=<old>=<new> Map one directory name to another in compilation result.
1366
1367fdebug-types-section
1368Common Var(flag_debug_types_section) Init(0)
1369Output .debug_types section when using DWARF v4 debuginfo.
1370
1371; Nonzero for -fdefer-pop: don't pop args after each function call
1372; instead save them up to pop many calls' args with one insns.
1373fdefer-pop
1374Common Var(flag_defer_pop) Optimization
1375Defer popping functions args from stack until later.
1376
1377fdelayed-branch
1378Common Var(flag_delayed_branch) Optimization
1379Attempt to fill delay slots of branch instructions.
1380
1381fdelete-dead-exceptions
1382Common Var(flag_delete_dead_exceptions) Init(0) Optimization
1383Delete dead instructions that may throw exceptions.
1384
1385fdelete-null-pointer-checks
1386Common Var(flag_delete_null_pointer_checks) Init(-1) Optimization
1387Delete useless null pointer checks.
1388
1389fdevirtualize-at-ltrans
1390Common Var(flag_ltrans_devirtualize)
1391Stream extra data to support more aggressive devirtualization in LTO local transformation mode.
1392
1393fdevirtualize-speculatively
1394Common Var(flag_devirtualize_speculatively) Optimization
1395Perform speculative devirtualization.
1396
1397fdevirtualize
1398Common Var(flag_devirtualize) Optimization
1399Try to convert virtual calls to direct ones.
1400
1401fdiagnostics-show-location=
1402Common Joined RejectNegative Enum(diagnostic_prefixing_rule)
1403-fdiagnostics-show-location=[once|every-line] How often to emit source location at the beginning of line-wrapped diagnostics.
1404
1405; Required for these enum values.
1406SourceInclude
1407pretty-print.h
1408
1409Enum
1410Name(diagnostic_prefixing_rule) Type(int)
1411
1412EnumValue
1413Enum(diagnostic_prefixing_rule) String(once) Value(DIAGNOSTICS_SHOW_PREFIX_ONCE)
1414
1415EnumValue
1416Enum(diagnostic_prefixing_rule) String(every-line) Value(DIAGNOSTICS_SHOW_PREFIX_EVERY_LINE)
1417
1418fdiagnostics-show-caret
1419Common Var(flag_diagnostics_show_caret) Init(1)
1420Show the source line with a caret indicating the column.
1421
1422fdiagnostics-show-event-links
1423Common Var(flag_diagnostics_show_event_links) Init(1)
1424Show lines linking related events in diagnostic paths.
1425
1426fdiagnostics-show-labels
1427Common Var(flag_diagnostics_show_labels) Init(1)
1428Show labels annotating ranges of source code when showing source.
1429
1430fdiagnostics-show-line-numbers
1431Common Var(flag_diagnostics_show_line_numbers) Init(1)
1432Show line numbers in the left margin when showing source.
1433
1434fdiagnostics-color
1435Common Alias(fdiagnostics-color=,always,never)
1436;
1437
1438fdiagnostics-color=
1439Driver Common Joined RejectNegative Var(flag_diagnostics_show_color) Enum(diagnostic_color_rule) Init(DIAGNOSTICS_COLOR_NO)
1440-fdiagnostics-color=[never|always|auto] Colorize diagnostics.
1441
1442; Required for these enum values.
1443SourceInclude
1444diagnostic-color.h
1445
1446Enum
1447Name(diagnostic_color_rule) Type(int)
1448
1449EnumValue
1450Enum(diagnostic_color_rule) String(never) Value(DIAGNOSTICS_COLOR_NO)
1451
1452EnumValue
1453Enum(diagnostic_color_rule) String(always) Value(DIAGNOSTICS_COLOR_YES)
1454
1455EnumValue
1456Enum(diagnostic_color_rule) String(auto) Value(DIAGNOSTICS_COLOR_AUTO)
1457
1458fdiagnostics-json-formatting
1459Common Var(flag_diagnostics_json_formatting) Init(1)
1460Enable formatting of JSON output.
1461
1462fdiagnostics-urls=
1463Driver Common Joined RejectNegative Var(flag_diagnostics_show_urls) Enum(diagnostic_url_rule) Init(DIAGNOSTICS_URL_AUTO)
1464-fdiagnostics-urls=[never|always|auto] Embed URLs in diagnostics.
1465
1466; Required for these enum values.
1467SourceInclude
1468diagnostic-url.h
1469
1470Enum
1471Name(diagnostic_url_rule) Type(int)
1472
1473EnumValue
1474Enum(diagnostic_url_rule) String(never) Value(DIAGNOSTICS_URL_NO)
1475
1476EnumValue
1477Enum(diagnostic_url_rule) String(always) Value(DIAGNOSTICS_URL_YES)
1478
1479EnumValue
1480Enum(diagnostic_url_rule) String(auto) Value(DIAGNOSTICS_URL_AUTO)
1481
1482fdiagnostics-column-unit=
1483Common Joined RejectNegative Enum(diagnostics_column_unit)
1484-fdiagnostics-column-unit=[display|byte] Select whether column numbers are output as display columns (default) or raw bytes.
1485
1486fdiagnostics-column-origin=
1487Common Joined RejectNegative UInteger
1488-fdiagnostics-column-origin=<number> Set the number of the first column. The default is 1-based as per GNU style, but some utilities may expect 0-based, for example.
1489
1490fdiagnostics-format=
1491Common Joined RejectNegative Enum(diagnostics_output_format)
1492-fdiagnostics-format=[text|sarif-stderr|sarif-file] Select output format.
1493
1494fdiagnostics-add-output=
1495Common Joined RejectNegative
1496Add output format.
1497
1498fdiagnostics-set-output=
1499Common Joined RejectNegative
1500Set output format.
1501
1502fdiagnostics-escape-format=
1503Common Joined RejectNegative Enum(diagnostics_escape_format)
1504-fdiagnostics-escape-format=[unicode|bytes] Select how to escape non-printable-ASCII bytes in the source for diagnostics that suggest it.
1505
1506; Required for these enum values.
1507SourceInclude
1508diagnostic.h
1509
1510Enum
1511Name(diagnostics_column_unit) Type(int)
1512
1513EnumValue
1514Enum(diagnostics_column_unit) String(display) Value(DIAGNOSTICS_COLUMN_UNIT_DISPLAY)
1515
1516EnumValue
1517Enum(diagnostics_column_unit) String(byte) Value(DIAGNOSTICS_COLUMN_UNIT_BYTE)
1518
1519Enum
1520Name(diagnostics_escape_format) Type(int)
1521
1522EnumValue
1523Enum(diagnostics_escape_format) String(unicode) Value(DIAGNOSTICS_ESCAPE_FORMAT_UNICODE)
1524
1525EnumValue
1526Enum(diagnostics_escape_format) String(bytes) Value(DIAGNOSTICS_ESCAPE_FORMAT_BYTES)
1527
1528Enum
1529Name(diagnostics_output_format) Type(int)
1530
1531EnumValue
1532Enum(diagnostics_output_format) String(text) Value(DIAGNOSTICS_OUTPUT_FORMAT_TEXT)
1533
1534EnumValue
1535Enum(diagnostics_output_format) String(sarif-stderr) Value(DIAGNOSTICS_OUTPUT_FORMAT_SARIF_STDERR)
1536
1537EnumValue
1538Enum(diagnostics_output_format) String(sarif-file) Value(DIAGNOSTICS_OUTPUT_FORMAT_SARIF_FILE)
1539
1540fdiagnostics-parseable-fixits
1541Common Var(flag_diagnostics_parseable_fixits)
1542Print fix-it hints in machine-readable form.
1543
1544fdiagnostics-generate-patch
1545Common Var(flag_diagnostics_generate_patch)
1546Print fix-it hints to stderr in unified diff format.
1547
1548fdiagnostics-show-option
1549Common Var(flag_diagnostics_show_option) Init(1)
1550Amend appropriate diagnostic messages with the command line option that controls them.
1551
1552fdiagnostics-show-cwe
1553Common Var(flag_diagnostics_show_cwe) Init(1)
1554Print CWE identifiers for diagnostic messages, where available.
1555
1556fdiagnostics-show-rules
1557Common Var(flag_diagnostics_show_rules) Init(1)
1558Print any rules associated with diagnostic messages.
1559
1560fdiagnostics-show-highlight-colors
1561Common Var(flag_diagnostics_show_highlight_colors) Init(1)
1562Use color within diagnostic messages to highlight pertinent information.
1563
1564fdiagnostics-path-format=
1565Common Joined RejectNegative Var(flag_diagnostics_path_format) Enum(diagnostic_path_format) Init(DPF_INLINE_EVENTS)
1566Specify how to print any control-flow path associated with a diagnostic.
1567
1568fdiagnostics-plain-output
1569Driver Common RejectNegative
1570Turn off any diagnostics features that complicate the output, such as line numbers, color, and warning URLs.
1571
1572ftabstop=
1573Common Joined RejectNegative UInteger
1574-ftabstop=<number> Distance between tab stops for column reporting.
1575
1576Enum
1577Name(diagnostic_path_format) Type(int)
1578
1579EnumValue
1580Enum(diagnostic_path_format) String(none) Value(DPF_NONE)
1581
1582EnumValue
1583Enum(diagnostic_path_format) String(separate-events) Value(DPF_SEPARATE_EVENTS)
1584
1585EnumValue
1586Enum(diagnostic_path_format) String(inline-events) Value(DPF_INLINE_EVENTS)
1587
1588fdiagnostics-show-path-depths
1589Common Var(flag_diagnostics_show_path_depths) Init(0)
1590Show stack depths of events in paths.
1591
1592fdiagnostics-text-art-charset=
1593Driver Common Joined RejectNegative Var(flag_diagnostics_text_art_charset) Enum(diagnostic_text_art_charset) Init(DIAGNOSTICS_TEXT_ART_CHARSET_EMOJI)
1594-fdiagnostics-text-art-charset=[none|ascii|unicode|emoji] Determine which characters to use in text arg diagrams.
1595
1596Enum
1597Name(diagnostic_text_art_charset) Type(int)
1598
1599EnumValue
1600Enum(diagnostic_text_art_charset) String(none) Value(DIAGNOSTICS_TEXT_ART_CHARSET_NONE)
1601
1602EnumValue
1603Enum(diagnostic_text_art_charset) String(ascii) Value(DIAGNOSTICS_TEXT_ART_CHARSET_ASCII)
1604
1605EnumValue
1606Enum(diagnostic_text_art_charset) String(unicode) Value(DIAGNOSTICS_TEXT_ART_CHARSET_UNICODE)
1607
1608EnumValue
1609Enum(diagnostic_text_art_charset) String(emoji) Value(DIAGNOSTICS_TEXT_ART_CHARSET_EMOJI)
1610
1611fdiagnostics-minimum-margin-width=
1612Common Joined UInteger Var(diagnostics_minimum_margin_width) Init(6)
1613Set minimum width of left margin of source code when showing source.
1614
1615fdisable-
1616Common Joined RejectNegative Var(common_deferred_options) Defer
1617-fdisable-[tree|rtl|ipa]-<pass>=range1+range2 Disable an optimization pass.
1618
1619fenable-
1620Common Joined RejectNegative Var(common_deferred_options) Defer
1621-fenable-[tree|rtl|ipa]-<pass>=range1+range2 Enable an optimization pass.
1622
1623fdump-
1624Common Joined RejectNegative Var(common_deferred_options) Defer
1625-fdump-<type> Dump various compiler internals to a file.
1626
1627fdump-final-insns
1628Driver RejectNegative
1629
1630fdump-final-insns=
1631Common RejectNegative Joined Var(flag_dump_final_insns)
1632-fdump-final-insns=filename Dump to filename the insns at the end of translation.
1633
1634fdump-go-spec=
1635Common RejectNegative Joined Var(flag_dump_go_spec)
1636-fdump-go-spec=filename Write all declarations to file as Go code.
1637
1638fdump-noaddr
1639Common Var(flag_dump_noaddr)
1640Suppress output of addresses in debugging dumps.
1641
1642freport-bug
1643Common Driver Var(flag_report_bug)
1644Collect and dump debug information into temporary file if ICE in C/C++
1645compiler occurred.
1646
1647fdump-internal-locations
1648Common Var(flag_dump_locations) Init(0)
1649Dump detailed information on GCC's internal representation of source code locations.
1650
1651fdump-passes
1652Common Var(flag_dump_passes) Init(0)
1653Dump optimization passes.
1654
1655fdump-unnumbered
1656Common Var(flag_dump_unnumbered)
1657Suppress output of instruction numbers, line number notes and addresses in debugging dumps.
1658
1659fdump-unnumbered-links
1660Common Var(flag_dump_unnumbered_links)
1661Suppress output of previous and next insn numbers in debugging dumps.
1662
1663fdwarf2-cfi-asm
1664Common Var(flag_dwarf2_cfi_asm) Init(HAVE_GAS_CFI_DIRECTIVE)
1665Enable CFI tables via GAS assembler directives.
1666
1667fearly-inlining
1668Common Var(flag_early_inlining) Init(1) Optimization
1669Perform early inlining.
1670
1671feliminate-dwarf2-dups
1672Common Ignore
1673Does nothing. Preserved for backward compatibility.
1674
1675fipa-sra
1676Common Var(flag_ipa_sra) Init(0) Optimization
1677Perform interprocedural reduction of aggregates.
1678
1679feliminate-unused-debug-symbols
1680Common Var(flag_debug_only_used_symbols) Init(1)
1681Perform unused symbol elimination in debug info.
1682
1683feliminate-unused-debug-types
1684Common Var(flag_eliminate_unused_debug_types) Init(1)
1685Perform unused type elimination in debug info.
1686
1687femit-class-debug-always
1688Common Var(flag_emit_class_debug_always) Init(0)
1689Do not suppress C++ class debug information.
1690
1691fexceptions
1692Common Var(flag_exceptions) Optimization EnabledBy(fnon-call-exceptions)
1693Enable exception handling.
1694
1695fexpensive-optimizations
1696Common Var(flag_expensive_optimizations) Optimization
1697Perform a number of minor, expensive optimizations.
1698
1699fexcess-precision=
1700Common Joined RejectNegative Enum(excess_precision) Var(flag_excess_precision) Init(EXCESS_PRECISION_DEFAULT) Optimization SetByCombined
1701-fexcess-precision=[fast|standard|16] Specify handling of excess floating-point precision.
1702
1703Enum
1704Name(excess_precision) Type(enum excess_precision) UnknownError(unknown excess precision style %qs)
1705
1706EnumValue
1707Enum(excess_precision) String(fast) Value(EXCESS_PRECISION_FAST)
1708
1709EnumValue
1710Enum(excess_precision) String(standard) Value(EXCESS_PRECISION_STANDARD)
1711
1712EnumValue
1713Enum(excess_precision) String(16) Value(EXCESS_PRECISION_FLOAT16)
1714
1715; Whether we permit the extended set of values for FLT_EVAL_METHOD
1716; introduced in ISO/IEC TS 18661-3, or limit ourselves to those in C99/C11.
1717fpermitted-flt-eval-methods=
1718Common Joined RejectNegative Enum(permitted_flt_eval_methods) Var(flag_permitted_flt_eval_methods) Init(PERMITTED_FLT_EVAL_METHODS_DEFAULT)
1719-fpermitted-flt-eval-methods=[c11|ts-18661] Specify which values of FLT_EVAL_METHOD are permitted.
1720
1721Enum
1722Name(permitted_flt_eval_methods) Type(enum permitted_flt_eval_methods) UnknownError(unknown specification for the set of FLT_EVAL_METHOD values to permit %qs)
1723
1724EnumValue
1725Enum(permitted_flt_eval_methods) String(c11) Value(PERMITTED_FLT_EVAL_METHODS_C11)
1726
1727EnumValue
1728Enum(permitted_flt_eval_methods) String(ts-18661-3) Value(PERMITTED_FLT_EVAL_METHODS_TS_18661)
1729
1730ffast-math
1731Common Optimization
1732
1733ffat-lto-objects
1734Common Var(flag_fat_lto_objects)
1735Output lto objects containing both the intermediate language and binary output.
1736
1737ffinite-math-only
1738Common Var(flag_finite_math_only) Optimization SetByCombined
1739Assume no NaNs or infinities are generated.
1740
1741ffinite-loops
1742Common Var(flag_finite_loops) Optimization Init(0)
1743Assume that loops with an exit will terminate and not loop indefinitely.
1744
1745ffixed-
1746Common Joined RejectNegative Var(common_deferred_options) Defer
1747-ffixed-<register> Mark <register> as being unavailable to the compiler.
1748
1749ffloat-store
1750Common Var(flag_float_store) Optimization
1751Don't allocate floats and doubles in extended-precision registers.
1752
1753fforce-addr
1754Common Ignore
1755Does nothing. Preserved for backward compatibility.
1756
1757fforward-propagate
1758Common Var(flag_forward_propagate) Optimization
1759Perform a forward propagation pass on RTL.
1760
1761ffp-contract=
1762Common Joined RejectNegative Enum(fp_contract_mode) Var(flag_fp_contract_mode) Init(FP_CONTRACT_FAST) Optimization
1763-ffp-contract=[off|on|fast] Perform floating-point expression contraction.
1764
1765Enum
1766Name(fp_contract_mode) Type(enum fp_contract_mode) UnknownError(unknown floating point contraction style %qs)
1767
1768EnumValue
1769Enum(fp_contract_mode) String(off) Value(FP_CONTRACT_OFF)
1770
1771EnumValue
1772Enum(fp_contract_mode) String(on) Value(FP_CONTRACT_ON)
1773
1774EnumValue
1775Enum(fp_contract_mode) String(fast) Value(FP_CONTRACT_FAST)
1776
1777ffp-int-builtin-inexact
1778Common Var(flag_fp_int_builtin_inexact) Init(1) Optimization
1779Allow built-in functions ceil, floor, round, trunc to raise \"inexact\" exceptions.
1780
1781; Nonzero means don't put addresses of constant functions in registers.
1782; Used for compiling the Unix kernel, where strange substitutions are
1783; done on the assembly output.
1784ffunction-cse
1785Common Var(flag_no_function_cse,0) Optimization
1786Allow function addresses to be held in registers.
1787
1788ffunction-sections
1789Common Var(flag_function_sections)
1790Place each function into its own section.
1791
1792fgcse
1793Common Var(flag_gcse) Optimization
1794Perform global common subexpression elimination.
1795
1796fgcse-lm
1797Common Var(flag_gcse_lm) Init(1) Optimization
1798Perform enhanced load motion during global common subexpression elimination.
1799
1800fgcse-sm
1801Common Var(flag_gcse_sm) Init(0) Optimization
1802Perform store motion after global common subexpression elimination.
1803
1804favoid-store-forwarding
1805Common Var(flag_avoid_store_forwarding) Init(0) Optimization
1806Try to avoid store forwarding.
1807
1808fgcse-las
1809Common Var(flag_gcse_las) Init(0) Optimization
1810Perform redundant load after store elimination in global common subexpression
1811elimination.
1812
1813fgcse-after-reload
1814Common Var(flag_gcse_after_reload) Optimization
1815Perform global common subexpression elimination after register allocation has
1816finished.
1817
1818Enum
1819Name(dwarf_gnat_encodings) Type(int)
1820
1821EnumValue
1822Enum(dwarf_gnat_encodings) String(all) Value(DWARF_GNAT_ENCODINGS_ALL)
1823
1824EnumValue
1825Enum(dwarf_gnat_encodings) String(gdb) Value(DWARF_GNAT_ENCODINGS_GDB)
1826
1827EnumValue
1828Enum(dwarf_gnat_encodings) String(minimal) Value(DWARF_GNAT_ENCODINGS_MINIMAL)
1829
1830fgnat-encodings=
1831Common Enum(dwarf_gnat_encodings) Joined RejectNegative Undocumented Var(gnat_encodings)
1832-fgnat-encodings=[all|gdb|minimal] Select the balance between GNAT encodings and standard DWARF emitted in the debug information.
1833
1834; This option is not documented yet as its semantics will change.
1835fgraphite
1836Common Var(flag_graphite) Optimization
1837Enable in and out of Graphite representation.
1838
1839fgraphite-identity
1840Common Var(flag_graphite_identity) Optimization
1841Enable Graphite Identity transformation.
1842
1843fhoist-adjacent-loads
1844Common Var(flag_hoist_adjacent_loads) Optimization
1845Enable hoisting adjacent loads to encourage generating conditional move
1846instructions.
1847
1848fkeep-gc-roots-live
1849Common Undocumented Var(flag_keep_gc_roots_live) Optimization
1850; Always keep a pointer to a live memory block
1851
1852flarge-source-files
1853Common Ignore
1854Does nothing. Preserved for backward compatibility.
1855
1856flate-combine-instructions
1857Common Var(flag_late_combine_instructions) Optimization Init(0)
1858Run two instruction combination passes late in the pass pipeline;
1859one before register allocation and one after.
1860
1861floop-parallelize-all
1862Common Var(flag_loop_parallelize_all) Optimization
1863Mark all loops as parallel.
1864
1865floop-strip-mine
1866Common Alias(floop-nest-optimize)
1867Enable loop nest transforms. Same as -floop-nest-optimize.
1868
1869floop-interchange
1870Common Var(flag_loop_interchange) Optimization
1871Enable loop interchange on trees.
1872
1873floop-block
1874Common Alias(floop-nest-optimize)
1875Enable loop nest transforms. Same as -floop-nest-optimize.
1876
1877floop-unroll-and-jam
1878Common Var(flag_unroll_jam) Optimization
1879Perform unroll-and-jam on loops.
1880
1881fgnu-tm
1882Common Var(flag_tm)
1883Enable support for GNU transactional memory.
1884
1885fgnu-unique
1886Common Var(flag_gnu_unique) Init(1)
1887Use STB_GNU_UNIQUE if supported by the assembler.
1888
1889floop-flatten
1890Common Ignore
1891Does nothing. Preserved for backward compatibility.
1892
1893floop-nest-optimize
1894Common Var(flag_loop_nest_optimize) Optimization
1895Enable the loop nest optimizer.
1896
1897fstrict-volatile-bitfields
1898Common Var(flag_strict_volatile_bitfields) Init(-1) Optimization
1899Force bitfield accesses to match their type width.
1900
1901fstore-merging
1902Common Var(flag_store_merging) Optimization
1903Merge adjacent stores.
1904
1905fguess-branch-probability
1906Common Var(flag_guess_branch_prob) Optimization
1907Enable guessing of branch probabilities.
1908
1909fhardened
1910Common Driver Var(flag_hardened)
1911Enable various security-relevant flags.
1912
1913fharden-compares
1914Common Var(flag_harden_compares) Optimization
1915Harden conditionals not used in branches, checking reversed conditions.
1916
1917fharden-conditional-branches
1918Common Var(flag_harden_conditional_branches) Optimization
1919Harden conditional branches by checking reversed conditions.
1920
1921fharden-control-flow-redundancy
1922Common Var(flag_harden_control_flow_redundancy) Optimization
1923Harden control flow by recording and checking execution paths.
1924
1925fhardcfr-skip-leaf
1926Common Var(flag_harden_control_flow_redundancy_skip_leaf) Optimization
1927Disable CFR in leaf functions.
1928
1929fhardcfr-check-returning-calls
1930Common Var(flag_harden_control_flow_redundancy_check_returning_calls) Init(-1) Optimization
1931Check CFR execution paths also before calls followed by returns of their results.
1932
1933fhardcfr-check-exceptions
1934Common Var(flag_harden_control_flow_redundancy_check_exceptions) Init(-1) Optimization
1935Check CFR execution paths also when exiting a function through an exception.
1936
1937fhardcfr-check-noreturn-calls=
1938Common Joined RejectNegative Enum(hardcfr_check_noreturn_calls) Var(flag_harden_control_flow_redundancy_check_noreturn) Init(HCFRNR_UNSPECIFIED) Optimization
1939-fhardcfr-check-noreturn-calls=[always|no-xthrow|nothrow|never] Check CFR execution paths also before calling noreturn functions.
1940
1941Enum
1942Name(hardcfr_check_noreturn_calls) Type(enum hardcfr_noret) UnknownError(unknown hardcfr noreturn checking level %qs)
1943
1944EnumValue
1945Enum(hardcfr_check_noreturn_calls) String(never) Value(HCFRNR_NEVER)
1946
1947EnumValue
1948Enum(hardcfr_check_noreturn_calls) String(nothrow) Value(HCFRNR_NOTHROW)
1949
1950EnumValue
1951Enum(hardcfr_check_noreturn_calls) String(no-xthrow) Value(HCFRNR_NO_XTHROW)
1952
1953EnumValue
1954Enum(hardcfr_check_noreturn_calls) String(always) Value(HCFRNR_ALWAYS)
1955
1956; Nonzero means ignore `#ident' directives. 0 means handle them.
1957; Generate position-independent code for executables if possible
1958; On SVR4 targets, it also controls whether or not to emit a
1959; string identifying the compiler.
1960fident
1961Common Var(flag_no_ident,0)
1962Process #ident directives.
1963
1964fif-conversion
1965Common Var(flag_if_conversion) Optimization
1966Perform conversion of conditional jumps to branchless equivalents.
1967
1968fif-conversion2
1969Common Var(flag_if_conversion2) Optimization
1970Perform conversion of conditional jumps to conditional execution.
1971
1972fstack-reuse=
1973Common Joined RejectNegative Enum(stack_reuse_level) Var(flag_stack_reuse) Init(SR_ALL) Optimization
1974-fstack-reuse=[all|named_vars|none] Set stack reuse level for local variables.
1975
1976Enum
1977Name(stack_reuse_level) Type(enum stack_reuse_level) UnknownError(unknown Stack Reuse Level %qs)
1978
1979EnumValue
1980Enum(stack_reuse_level) String(all) Value(SR_ALL)
1981
1982EnumValue
1983Enum(stack_reuse_level) String(named_vars) Value(SR_NAMED_VARS)
1984
1985EnumValue
1986Enum(stack_reuse_level) String(none) Value(SR_NONE)
1987
1988ftree-loop-if-convert
1989Common Var(flag_tree_loop_if_convert) Init(-1) Optimization
1990Convert conditional jumps in innermost loops to branchless equivalents.
1991
1992ftree-loop-if-convert-stores
1993Common Ignore
1994Does nothing. Preserved for backward compatibility.
1995
1996; -finhibit-size-directive inhibits output of .size for ELF.
1997; This is used only for compiling crtstuff.c,
1998; and it may be extended to other effects
1999; needed for crtstuff.c on other systems.
2000finhibit-size-directive
2001Common Var(flag_inhibit_size_directive)
2002Do not generate .size directives.
2003
2004findirect-inlining
2005Common Var(flag_indirect_inlining) Optimization
2006Perform indirect inlining.
2007
2008; General flag to enable inlining. Specifying -fno-inline will disable
2009; all inlining apart from always-inline functions.
2010finline
2011Common Var(flag_no_inline,0) Init(0) Optimization
2012Enable inlining of function declared \"inline\", disabling disables all inlining.
2013
2014finline-small-functions
2015Common Var(flag_inline_small_functions) Optimization
2016Integrate functions into their callers when code size is known not to grow.
2017
2018finline-functions
2019Common Var(flag_inline_functions) Optimization
2020Integrate functions not declared \"inline\" into their callers when profitable.
2021
2022finline-functions-called-once
2023Common Var(flag_inline_functions_called_once) Optimization
2024Integrate functions only required by their single caller.
2025
2026finline-limit-
2027Common RejectNegative Joined Alias(finline-limit=)
2028
2029finline-limit=
2030Common RejectNegative Joined UInteger
2031-finline-limit=<number> Limit the size of inlined functions to <number>.
2032
2033finline-atomics
2034Common Var(flag_inline_atomics) Init(1) Optimization
2035Inline __atomic operations when a lock free instruction sequence is available.
2036
2037finline-stringops
2038Common RejectNegative Enum(ilsop_fn) Var(flag_inline_stringops, ILSOP_ALL) Enum(ilsop_fn) Init(ILSOP_NONE) Optimization Undocumented
2039
2040fno-inline-stringops
2041Common RejectNegative Enum(ilsop_fn) Var(flag_inline_stringops, ILSOP_NONE) Enum(ilsop_fn) Optimization Undocumented
2042
2043finline-stringops=
2044Common Joined Var(flag_inline_stringops) EnumSet Enum(ilsop_fn) Optimization
2045-finline-stringops[=memcmp|memcpy|memmove|memset]
2046Expand supported mem/str operations inline, even if against optimization.
2047
2048Enum
2049Name(ilsop_fn) Type(enum ilsop_fn) UnknownError(unavailable stringop for inlining %qs)
2050
2051; This is not part of any set.
2052; EnumValue
2053; Enum(ilsop_fn) String(none) Value(ILSOP_NONE)
2054
2055EnumValue
2056Enum(ilsop_fn) String(memcmp) Value(ILSOP_MEMCMP) Set(1)
2057
2058EnumValue
2059Enum(ilsop_fn) String(memcpy) Value(ILSOP_MEMCPY) Set(2)
2060
2061EnumValue
2062Enum(ilsop_fn) String(memmove) Value(ILSOP_MEMMOVE) Set(3)
2063
2064EnumValue
2065Enum(ilsop_fn) String(memset) Value(ILSOP_MEMSET) Set(4)
2066
2067; This is not part of any set either.
2068; EnumValue
2069; Enum(ilsop_fn) String(all) Value(ILSOP_ALL)
2070
2071fcf-protection
2072Common RejectNegative Alias(fcf-protection=,full)
2073Equivalent to -fcf-protection=full.
2074
2075fcf-protection=
2076Common Joined RejectNegative Enum(cf_protection_level) EnumSet Var(flag_cf_protection) Init(CF_NONE)
2077-fcf-protection=[full|branch|return|none|check] Instrument functions with checks to verify jump/call/return control-flow transfer
2078instructions have valid targets.
2079
2080Enum
2081Name(cf_protection_level) Type(enum cf_protection_level) UnknownError(unknown Control-Flow Protection Level %qs)
2082
2083EnumValue
2084Enum(cf_protection_level) String(full) Value(CF_FULL) Set(1)
2085
2086EnumValue
2087Enum(cf_protection_level) String(branch) Value(CF_BRANCH) Set(2)
2088
2089EnumValue
2090Enum(cf_protection_level) String(return) Value(CF_RETURN) Set(3)
2091
2092EnumValue
2093Enum(cf_protection_level) String(check) Value(CF_CHECK) Set(4)
2094
2095EnumValue
2096Enum(cf_protection_level) String(none) Value(CF_NONE) Set(1)
2097
2098finstrument-functions
2099Common Var(flag_instrument_function_entry_exit,1)
2100Instrument function entry and exit with profiling calls.
2101
2102finstrument-functions-once
2103Common Var(flag_instrument_function_entry_exit,2)
2104Instrument function entry and exit with profiling calls invoked once.
2105
2106finstrument-functions-exclude-function-list=
2107Common RejectNegative Joined
2108-finstrument-functions-exclude-function-list=name,... Do not instrument listed functions.
2109
2110finstrument-functions-exclude-file-list=
2111Common RejectNegative Joined
2112-finstrument-functions-exclude-file-list=filename,... Do not instrument functions listed in files.
2113
2114fipa-cp
2115Common Var(flag_ipa_cp) Optimization
2116Perform interprocedural constant propagation.
2117
2118fipa-cp-clone
2119Common Var(flag_ipa_cp_clone) Optimization
2120Perform cloning to make Interprocedural constant propagation stronger.
2121
2122fipa-cp-alignment
2123Common Ignore
2124Does nothing. Preserved for backward compatibility.
2125
2126fipa-bit-cp
2127Common Var(flag_ipa_bit_cp) Optimization
2128Perform interprocedural bitwise constant propagation.
2129
2130fipa-modref
2131Common Var(flag_ipa_modref) Optimization
2132Perform interprocedural modref analysis.
2133
2134fipa-reorder-for-locality
2135Common Var(flag_ipa_reorder_for_locality) Init(0) Optimization
2136Perform reordering and cloning of functions to maximize locality.
2137
2138fipa-profile
2139Common Var(flag_ipa_profile) Init(0) Optimization
2140Perform interprocedural profile propagation.
2141
2142fipa-pta
2143Common Var(flag_ipa_pta) Init(0) Optimization
2144Perform interprocedural points-to analysis.
2145
2146fipa-pure-const
2147Common Var(flag_ipa_pure_const) Init(0) Optimization
2148Discover pure and const functions.
2149
2150fipa-icf
2151Common Var(flag_ipa_icf) Optimization
2152Perform Identical Code Folding for functions and read-only variables.
2153
2154fipa-icf-functions
2155Common Var(flag_ipa_icf_functions) Optimization
2156Perform Identical Code Folding for functions.
2157
2158fipa-icf-variables
2159Common Var(flag_ipa_icf_variables) Optimization
2160Perform Identical Code Folding for variables.
2161
2162fipa-reference
2163Common Var(flag_ipa_reference) Init(0) Optimization
2164Discover read-only and non addressable static variables.
2165
2166fipa-reference-addressable
2167Common Var(flag_ipa_reference_addressable) Init(0) Optimization
2168Discover read-only, write-only and non-addressable static variables.
2169
2170fipa-stack-alignment
2171Common Var(flag_ipa_stack_alignment) Init(1) Optimization
2172Reduce stack alignment on call sites if possible.
2173
2174fipa-matrix-reorg
2175Common Ignore
2176Does nothing. Preserved for backward compatibility.
2177
2178fipa-struct-reorg
2179Common Ignore
2180Does nothing. Preserved for backward compatibility.
2181
2182fipa-vrp
2183Common Var(flag_ipa_vrp) Optimization
2184Perform IPA Value Range Propagation.
2185
2186fira-algorithm=
2187Common Joined RejectNegative Enum(ira_algorithm) Var(flag_ira_algorithm) Init(IRA_ALGORITHM_CB) Optimization
2188-fira-algorithm=[CB|priority] Set the used IRA algorithm.
2189
2190fipa-strict-aliasing
2191Common Var(flag_ipa_strict_aliasing) Init(1) Optimization
2192Assume strict aliasing rules apply across (uninlined) function boundaries.
2193
2194Enum
2195Name(ira_algorithm) Type(enum ira_algorithm) UnknownError(unknown IRA algorithm %qs)
2196
2197EnumValue
2198Enum(ira_algorithm) String(CB) Value(IRA_ALGORITHM_CB)
2199
2200EnumValue
2201Enum(ira_algorithm) String(priority) Value(IRA_ALGORITHM_PRIORITY)
2202
2203fira-region=
2204Common Joined RejectNegative Enum(ira_region) Var(flag_ira_region) Init(IRA_REGION_ONE) Optimization
2205-fira-region=[one|all|mixed] Set regions for IRA.
2206
2207Enum
2208Name(ira_region) Type(enum ira_region) UnknownError(unknown IRA region %qs)
2209
2210EnumValue
2211Enum(ira_region) String(one) Value(IRA_REGION_ONE)
2212
2213EnumValue
2214Enum(ira_region) String(all) Value(IRA_REGION_ALL)
2215
2216EnumValue
2217Enum(ira_region) String(mixed) Value(IRA_REGION_MIXED)
2218
2219fira-hoist-pressure
2220Common Var(flag_ira_hoist_pressure) Init(1) Optimization
2221Use IRA based register pressure calculation
2222in RTL hoist optimizations.
2223
2224fira-loop-pressure
2225Common Var(flag_ira_loop_pressure) Optimization
2226Use IRA based register pressure calculation
2227in RTL loop optimizations.
2228
2229fira-share-save-slots
2230Common Var(flag_ira_share_save_slots) Init(1) Optimization
2231Share slots for saving different hard registers.
2232
2233fira-share-spill-slots
2234Common Var(flag_ira_share_spill_slots) Init(1) Optimization
2235Share stack slots for spilled pseudo-registers.
2236
2237fira-verbose=
2238Common RejectNegative Joined UInteger Var(flag_ira_verbose) Init(5)
2239-fira-verbose=<number> Control IRA's level of diagnostic messages.
2240
2241fivopts
2242Common Var(flag_ivopts) Init(1) Optimization
2243Optimize induction variables on trees.
2244
2245fjump-tables
2246Common Var(flag_jump_tables) Init(0) Optimization
2247Use jump tables for sufficiently large switch statements.
2248
2249fbit-tests
2250Common Var(flag_bit_tests) Init(0) Optimization
2251Use bit tests for sufficiently large switch statements.
2252
2253fkeep-inline-functions
2254Common Var(flag_keep_inline_functions)
2255Generate code for functions even if they are fully inlined.
2256
2257fkeep-static-functions
2258Common Var(flag_keep_static_functions)
2259Generate code for static functions even if they are never called.
2260
2261fkeep-static-consts
2262Common Var(flag_keep_static_consts) Init(1)
2263Emit static const variables even if they are not used.
2264
2265fleading-underscore
2266Common Var(flag_leading_underscore) Init(-1)
2267Give external symbols a leading underscore.
2268
2269floop-optimize
2270Common Ignore
2271Does nothing. Preserved for backward compatibility.
2272
2273flra-remat
2274Common Var(flag_lra_remat) Optimization
2275Do CFG-sensitive rematerialization in LRA.
2276
2277flto
2278Common
2279Enable link-time optimization.
2280
2281flto=
2282Common RejectNegative Joined Var(flag_lto)
2283Link-time optimization with number of parallel jobs or jobserver.
2284
2285flto-incremental=
2286Common Joined Var(flag_lto_incremental)
2287Enable incremental LTO, with its cache in given directory.
2288
2289flto-incremental-cache-size=
2290Common Joined RejectNegative UInteger Var(flag_lto_incremental_cache_size) Init(2048)
2291Number of cache entries in incremental LTO after which to prune old entries.
2292
2293Enum
2294Name(lto_partition_model) Type(enum lto_partition_model) UnknownError(unknown LTO partitioning model %qs)
2295
2296EnumValue
2297Enum(lto_partition_model) String(none) Value(LTO_PARTITION_NONE)
2298
2299EnumValue
2300Enum(lto_partition_model) String(one) Value(LTO_PARTITION_ONE)
2301
2302EnumValue
2303Enum(lto_partition_model) String(balanced) Value(LTO_PARTITION_BALANCED)
2304
2305EnumValue
2306Enum(lto_partition_model) String(1to1) Value(LTO_PARTITION_1TO1)
2307
2308EnumValue
2309Enum(lto_partition_model) String(max) Value(LTO_PARTITION_MAX)
2310
2311EnumValue
2312Enum(lto_partition_model) String(cache) Value(LTO_PARTITION_CACHE)
2313
2314flto-partition=
2315Common Joined RejectNegative Enum(lto_partition_model) Var(flag_lto_partition) Init(LTO_PARTITION_BALANCED)
2316Specify the algorithm to partition symbols and vars at linktime.
2317
2318; The initial value of -1 comes from Z_DEFAULT_COMPRESSION in zlib.h.
2319flto-compression-level=
2320Common Joined RejectNegative UInteger Var(flag_lto_compression_level) Init(-1) IntegerRange(0, 19)
2321Use zlib/zstd compression level <number> for IL.
2322
2323flto-odr-type-merging
2324Common Ignore
2325Does nothing. Preserved for backward compatibility.
2326
2327flto-report
2328Common Var(flag_lto_report) Init(0)
2329Report various link-time optimization statistics.
2330
2331flto-report-wpa
2332Common Var(flag_lto_report_wpa) Init(0)
2333Report various link-time optimization statistics for WPA only.
2334
2335fmath-errno
2336Common Var(flag_errno_math) Init(1) Optimization SetByCombined
2337Set errno after built-in math functions.
2338
2339fmax-errors=
2340Common Joined RejectNegative UInteger Var(flag_max_errors)
2341-fmax-errors=<number> Maximum number of errors to report.
2342
2343fmalloc-dce
2344Common Var(flag_malloc_dce,2) Init(2) Optimization
2345Allow removal of malloc and free pairs when allocated block is unused.
2346
2347fmalloc-dce=
2348Common Joined RejectNegative UInteger Var(flag_malloc_dse) Optimization IntegerRange(0, 2)
2349
2350fmem-report
2351Common Var(mem_report)
2352Report on permanent memory allocation.
2353
2354fmem-report-wpa
2355Common Var(mem_report_wpa)
2356Report on permanent memory allocation in WPA only.
2357
2358; This will attempt to merge constant section constants, if 1 only
2359; string constants and constants from constant pool, if 2 also constant
2360; variables.
2361fmerge-all-constants
2362Common Var(flag_merge_constants,2) Init(1)
2363Attempt to merge identical constants and constant variables.
2364
2365fmerge-constants
2366Common Var(flag_merge_constants,1)
2367Attempt to merge identical constants across compilation units.
2368
2369fmerge-debug-strings
2370Common Var(flag_merge_debug_strings) Init(1)
2371Attempt to merge identical debug strings across compilation units.
2372
2373fmessage-length=
2374Common RejectNegative Joined UInteger
2375-fmessage-length=<number> Limit diagnostics to <number> characters per line. 0 suppresses line-wrapping.
2376
2377fmin-function-alignment=
2378Common Joined RejectNegative UInteger Var(flag_min_function_alignment) Optimization
2379Align the start of every function.
2380
2381fmodulo-sched
2382Common Var(flag_modulo_sched) Optimization
2383Perform SMS based modulo scheduling before the first scheduling pass.
2384
2385fmodulo-sched-allow-regmoves
2386Common Var(flag_modulo_sched_allow_regmoves) Optimization
2387Perform SMS based modulo scheduling with register moves allowed.
2388
2389fmove-loop-invariants
2390Common Var(flag_move_loop_invariants) Optimization
2391Move loop invariant computations out of loops.
2392
2393fmove-loop-stores
2394Common Var(flag_move_loop_stores) Optimization
2395Move stores out of loops.
2396
2397fmultiflags
2398Common Driver RejectNegative
2399Building block for specs-based multilib-aware TFLAGS.
2400
2401fdce
2402Common Var(flag_dce) Init(1) Optimization
2403Use the RTL dead code elimination pass.
2404
2405fdse
2406Common Var(flag_dse) Init(0) Optimization
2407Use the RTL dead store elimination pass.
2408
2409freschedule-modulo-scheduled-loops
2410Common Var(flag_resched_modulo_sched) Optimization
2411Enable/Disable the traditional scheduling in loops that already passed modulo scheduling.
2412
2413fnon-call-exceptions
2414Common Var(flag_non_call_exceptions) Optimization
2415Support synchronous non-call exceptions.
2416
2417foffload=
2418Driver Joined MissingArgError(targets missing after %qs)
2419
2420foffload-options=
2421Common Driver Joined MissingArgError(options or targets=options missing after %qs)
2422-foffload-options=<targets>=<options> Specify options for the offloading targets.
2423
2424foffload-abi=
2425Common Joined RejectNegative Enum(offload_abi)
2426-foffload-abi=[lp64|ilp32] Set the ABI to use in an offload compiler.
2427
2428Enum
2429Name(offload_abi) Type(enum offload_abi) UnknownError(unknown offload ABI %qs)
2430
2431EnumValue
2432Enum(offload_abi) String(ilp32) Value(OFFLOAD_ABI_ILP32)
2433
2434EnumValue
2435Enum(offload_abi) String(lp64) Value(OFFLOAD_ABI_LP64)
2436
2437foffload-abi-host-opts=
2438Common Joined MissingArgError(option missing after %qs)
2439-foffload-abi-host-opts=<options> Specify host ABI options.
2440
2441fomit-frame-pointer
2442Common Var(flag_omit_frame_pointer) Optimization
2443When possible do not generate stack frames.
2444
2445fopenmp-target-simd-clone
2446Common Alias(fopenmp-target-simd-clone=,any,none)
2447
2448fopenmp-target-simd-clone=
2449Common Joined RejectNegative Enum(target_simd_clone_device) Var(flag_openmp_target_simd_clone) Init(OMP_TARGET_SIMD_CLONE_NONE) Optimization
2450Generate SIMD clones for functions with the OpenMP declare target directive.
2451
2452Enum
2453Name(target_simd_clone_device) Type(int)
2454
2455EnumValue
2456Enum(target_simd_clone_device) String(none) Value(OMP_TARGET_SIMD_CLONE_NONE)
2457
2458EnumValue
2459Enum(target_simd_clone_device) String(host) Value(OMP_TARGET_SIMD_CLONE_HOST)
2460
2461EnumValue
2462Enum(target_simd_clone_device) String(nohost) Value(OMP_TARGET_SIMD_CLONE_NOHOST)
2463
2464EnumValue
2465Enum(target_simd_clone_device) String(any) Value(OMP_TARGET_SIMD_CLONE_ANY)
2466
2467fopt-info
2468Common Var(flag_opt_info) Optimization
2469Enable all optimization info dumps on stderr.
2470
2471fopt-info-
2472Common Joined RejectNegative Var(common_deferred_options) Defer
2473-fopt-info[-<type>=filename] Dump compiler optimization details.
2474
2475fsave-optimization-record
2476Common Var(flag_save_optimization_record) Optimization
2477Write a SRCFILE.opt-record.json file detailing what optimizations were performed.
2478
2479foptimize-crc
2480Common Var(flag_optimize_crc) Optimization
2481Detect loops calculating CRC and replace with faster implementation.
2482If the target supports CRC instruction and the CRC loop uses the same
2483polynomial as the one used in the CRC instruction, directly replace with the
2484corresponding CRC instruction.
2485Otherwise, if the target supports carry-less-multiplication instruction,
2486generate CRC using it.
2487If neither case applies, generate table-based CRC.
2488
2489foptimize-register-move
2490Common Ignore
2491Does nothing. Preserved for backward compatibility.
2492
2493foptimize-sibling-calls
2494Common Var(flag_optimize_sibling_calls) Optimization
2495Optimize sibling and tail recursive calls.
2496
2497fpath-coverage
2498Common Var(path_coverage_flag)
2499Insert path profiling code.
2500
2501fpartial-inlining
2502Common Var(flag_partial_inlining) Optimization
2503Perform partial inlining.
2504
2505fpre-ipa-mem-report
2506Common Var(pre_ipa_mem_report)
2507Report on memory allocation before interprocedural optimization.
2508
2509fpost-ipa-mem-report
2510Common Var(post_ipa_mem_report)
2511Report on memory allocation before interprocedural optimization.
2512
2513fpack-struct
2514Common Var(flag_pack_struct) Optimization
2515Pack structure members together without holes.
2516
2517fpack-struct=
2518Common RejectNegative Joined UInteger Optimization
2519-fpack-struct=<number> Set initial maximum structure member alignment.
2520
2521fpcc-struct-return
2522Common Var(flag_pcc_struct_return,1) Init(DEFAULT_PCC_STRUCT_RETURN) Optimization
2523Return small aggregates in memory, not registers.
2524
2525fpeel-loops
2526Common Var(flag_peel_loops) Optimization
2527Perform loop peeling.
2528
2529fpeephole
2530Common Var(flag_no_peephole,0) Optimization
2531Enable machine specific peephole optimizations.
2532
2533fpeephole2
2534Common Var(flag_peephole2) Optimization
2535Enable an RTL peephole pass before sched2.
2536
2537fPIC
2538Common Var(flag_pic,2) Negative(fPIE) Init(-1)
2539Generate position-independent code if possible (large mode).
2540
2541fPIE
2542Common Var(flag_pie,2) Negative(fpic) Init(-1)
2543Generate position-independent code for executables if possible (large mode).
2544
2545fpic
2546Common Var(flag_pic,1) Negative(fpie) Init(-1)
2547Generate position-independent code if possible (small mode).
2548
2549fpie
2550Common Var(flag_pie,1) Negative(fPIC) Init(-1)
2551Generate position-independent code for executables if possible (small mode).
2552
2553fplt
2554Common Var(flag_plt) Init(1) Optimization
2555Use PLT for PIC calls (-fno-plt: load the address from GOT at call site).
2556
2557fplugin=
2558Common Joined RejectNegative Var(common_deferred_options) Defer
2559Specify a plugin to load.
2560
2561fplugin-arg-
2562Common Joined RejectNegative Var(common_deferred_options) Defer
2563-fplugin-arg-<name>-<key>[=<value>] Specify argument <key>=<value> for plugin <name>.
2564
2565fpredictive-commoning
2566Common Var(flag_predictive_commoning) Optimization
2567Run predictive commoning optimization.
2568
2569fprefetch-loop-arrays
2570Common Var(flag_prefetch_loop_arrays) Init(-1) Optimization
2571Generate prefetch instructions, if available, for arrays in loops.
2572
2573fprofile
2574Common Var(profile_flag)
2575Enable basic program profiling code.
2576
2577fprofile-abs-path
2578Common Var(profile_abs_path_flag)
2579Generate absolute source path names for gcov.
2580
2581fprofile-arcs
2582Common Var(profile_arc_flag)
2583Insert arc-based program profiling code.
2584
2585fcondition-coverage
2586Common Var(condition_coverage_flag)
2587Insert condition coverage profiling code.
2588
2589fprofile-dir=
2590Common Joined RejectNegative Var(profile_data_prefix)
2591Set the top-level directory for storing the profile data.
2592The default is 'pwd'.
2593
2594fprofile-note=
2595Common Joined RejectNegative Var(profile_note_location)
2596Select the name for storing the profile note file.
2597
2598fprofile-correction
2599Common Var(flag_profile_correction)
2600Enable correction of flow inconsistent profile data input.
2601
2602fprofile-update=
2603Common Joined RejectNegative Enum(profile_update) Var(flag_profile_update) Init(PROFILE_UPDATE_SINGLE)
2604-fprofile-update=[single|atomic|prefer-atomic] Set the profile update method.
2605
2606fprofile-filter-files=
2607Common Joined RejectNegative Var(flag_profile_filter_files)
2608Instrument only functions from files whose name matches any of the regular expressions (separated by semi-colons).
2609
2610fprofile-exclude-files=
2611Common Joined RejectNegative Var(flag_profile_exclude_files)
2612Instrument only functions from files whose name does not match any of the regular expressions (separated by semi-colons).
2613
2614Enum
2615Name(profile_reproducibility) Type(enum profile_reproducibility) UnknownError(unknown profile reproducibility method %qs)
2616
2617EnumValue
2618Enum(profile_reproducibility) String(serial) Value(PROFILE_REPRODUCIBILITY_SERIAL)
2619
2620EnumValue
2621Enum(profile_reproducibility) String(parallel-runs) Value(PROFILE_REPRODUCIBILITY_PARALLEL_RUNS)
2622
2623EnumValue
2624Enum(profile_reproducibility) String(multithreaded) Value(PROFILE_REPRODUCIBILITY_MULTITHREADED)
2625
2626fprofile-reproducible=
2627Common Joined RejectNegative Var(flag_profile_reproducible) Enum(profile_reproducibility) Init(PROFILE_REPRODUCIBILITY_SERIAL)
2628-fprofile-reproducible=[serial|parallel-runs|multithreaded] Control level of reproducibility of profile gathered by -fprofile-generate.
2629
2630Enum
2631Name(profile_update) Type(enum profile_update) UnknownError(unknown profile update method %qs)
2632
2633EnumValue
2634Enum(profile_update) String(single) Value(PROFILE_UPDATE_SINGLE)
2635
2636EnumValue
2637Enum(profile_update) String(atomic) Value(PROFILE_UPDATE_ATOMIC)
2638
2639EnumValue
2640Enum(profile_update) String(prefer-atomic) Value(PROFILE_UPDATE_PREFER_ATOMIC)
2641
2642fprofile-prefix-path=
2643Common Joined RejectNegative Var(profile_prefix_path)
2644Remove prefix from absolute path before mangling name for -fprofile-generate= and -fprofile-use=.
2645
2646fprofile-prefix-map=
2647Common Joined RejectNegative Var(common_deferred_options) Defer
2648-fprofile-prefix-map=<old>=<new> Map one directory name to another in GCOV coverage result.
2649
2650fprofile-generate
2651Common
2652Enable common options for generating profile info for profile feedback directed optimizations.
2653
2654fprofile-generate=
2655Common Joined RejectNegative
2656Enable common options for generating profile info for profile feedback directed optimizations, and set -fprofile-dir=.
2657
2658fprofile-info-section
2659Common RejectNegative
2660Register the profile information in the .gcov_info section instead of using a constructor/destructor.
2661
2662fprofile-info-section=
2663Common Joined RejectNegative Var(profile_info_section)
2664Register the profile information in the specified section instead of using a constructor/destructor.
2665
2666fprofile-partial-training
2667Common Var(flag_profile_partial_training) Optimization
2668Do not assume that functions never executed during the train run are cold.
2669
2670fprofile-use
2671Common Var(flag_profile_use)
2672Enable common options for performing profile feedback directed optimizations.
2673
2674fprofile-use=
2675Common Joined RejectNegative
2676Enable common options for performing profile feedback directed optimizations, and set -fprofile-dir=.
2677
2678fprofile-values
2679Common Var(flag_profile_values)
2680Insert code to profile values of expressions.
2681
2682fprofile-report
2683Common Var(profile_report)
2684Report on consistency of profile.
2685
2686fprofile-reorder-functions
2687Common Var(flag_profile_reorder_functions) Optimization
2688Enable function reordering that improves code placement.
2689
2690fpatchable-function-entry=
2691Common Var(flag_patchable_function_entry) Joined Optimization
2692Insert NOP instructions at each function entry.
2693
2694frandom-seed
2695Common Var(common_deferred_options) Defer
2696
2697frandom-seed=
2698Common Joined RejectNegative Var(common_deferred_options) Defer
2699-frandom-seed=<string> Make compile reproducible using <string>.
2700
2701; This switch causes the command line that was used to create an
2702; object file to be recorded into the object file. The exact format
2703; of this recording is target and binary file format dependent.
2704; It is related to the -fverbose-asm switch, but that switch only
2705; records information in the assembler output file as comments, so
2706; they never reach the object file.
2707frecord-gcc-switches
2708Common Var(flag_record_gcc_switches)
2709Record gcc command line switches in the object file.
2710
2711freg-struct-return
2712Common NegativeAlias Alias(fpcc_struct_return) Optimization
2713Return small aggregates in registers.
2714
2715fregmove
2716Common Ignore
2717Does nothing. Preserved for backward compatibility.
2718
2719flifetime-dse
2720Common Var(flag_lifetime_dse,2) Init(2) Optimization
2721Tell DSE that the storage for a C++ object is dead when the constructor
2722starts and when the destructor finishes.
2723
2724flifetime-dse=
2725Common Joined RejectNegative UInteger Var(flag_lifetime_dse) Optimization IntegerRange(0, 2)
2726
2727flimit-function-alignment
2728Common Var(flag_limit_function_alignment) Optimization Init(0)
2729
2730flive-patching
2731Common RejectNegative Alias(flive-patching=,inline-clone) Optimization
2732
2733flive-patching=
2734Common Joined RejectNegative Enum(live_patching_level) Var(flag_live_patching) Init(LIVE_PATCHING_NONE) Optimization
2735-flive-patching=[inline-only-static|inline-clone] Control IPA
2736optimizations to provide a safe compilation for live-patching. At the same
2737time, provides multiple-level control on the enabled IPA optimizations.
2738
2739Enum
2740Name(live_patching_level) Type(enum live_patching_level) UnknownError(unknown Live-Patching Level %qs)
2741
2742EnumValue
2743Enum(live_patching_level) String(inline-only-static) Value(LIVE_PATCHING_INLINE_ONLY_STATIC)
2744
2745EnumValue
2746Enum(live_patching_level) String(inline-clone) Value(LIVE_PATCHING_INLINE_CLONE)
2747
2748fallocation-dce
2749Common Var(flag_allocation_dce) Init(1) Optimization
2750Tell DCE to remove unused C++ allocations.
2751
2752flive-range-shrinkage
2753Common Var(flag_live_range_shrinkage) Init(0) Optimization
2754Relief of register pressure through live range shrinkage.
2755
2756frename-registers
2757Common Var(flag_rename_registers) Optimization EnabledBy(funroll-loops)
2758Perform a register renaming optimization pass.
2759
2760fschedule-fusion
2761Common Var(flag_schedule_fusion) Init(2) Optimization
2762Perform a target dependent instruction fusion optimization pass.
2763
2764freorder-blocks
2765Common Var(flag_reorder_blocks) Optimization
2766Reorder basic blocks to improve code placement.
2767
2768freorder-blocks-algorithm=
2769Common Joined RejectNegative Enum(reorder_blocks_algorithm) Var(flag_reorder_blocks_algorithm) Init(REORDER_BLOCKS_ALGORITHM_SIMPLE) Optimization
2770-freorder-blocks-algorithm=[simple|stc] Set the used basic block reordering algorithm.
2771
2772Enum
2773Name(reorder_blocks_algorithm) Type(enum reorder_blocks_algorithm) UnknownError(unknown basic block reordering algorithm %qs)
2774
2775EnumValue
2776Enum(reorder_blocks_algorithm) String(simple) Value(REORDER_BLOCKS_ALGORITHM_SIMPLE)
2777
2778EnumValue
2779Enum(reorder_blocks_algorithm) String(stc) Value(REORDER_BLOCKS_ALGORITHM_STC)
2780
2781freorder-blocks-and-partition
2782Common Var(flag_reorder_blocks_and_partition) Optimization
2783Reorder basic blocks and partition into hot and cold sections.
2784
2785freorder-functions
2786Common Var(flag_reorder_functions) Optimization
2787Reorder functions to improve code placement.
2788
2789frerun-cse-after-loop
2790Common Var(flag_rerun_cse_after_loop) Optimization
2791Add a common subexpression elimination pass after loop optimizations.
2792
2793frerun-loop-opt
2794Common Ignore
2795Does nothing. Preserved for backward compatibility.
2796
2797frounding-math
2798Common Var(flag_rounding_math) Optimization SetByCombined
2799Disable optimizations that assume default FP rounding behavior.
2800
2801fsched-interblock
2802Common Var(flag_schedule_interblock) Init(1) Optimization
2803Enable scheduling across basic blocks.
2804
2805fsched-pressure
2806Common Var(flag_sched_pressure) Init(0) Optimization
2807Enable register pressure sensitive insn scheduling.
2808
2809fsched-spec
2810Common Var(flag_schedule_speculative) Init(1) Optimization
2811Allow speculative motion of non-loads.
2812
2813fsched-spec-load
2814Common Var(flag_schedule_speculative_load) Optimization
2815Allow speculative motion of some loads.
2816
2817fsched-spec-load-dangerous
2818Common Var(flag_schedule_speculative_load_dangerous) Optimization
2819Allow speculative motion of more loads.
2820
2821fsched-verbose=
2822Common RejectNegative Joined UInteger Var(sched_verbose_param) Init(1)
2823-fsched-verbose=<number> Set the verbosity level of the scheduler.
2824
2825fsched2-use-superblocks
2826Common Var(flag_sched2_use_superblocks) Optimization
2827If scheduling post reload, do superblock scheduling.
2828
2829fsched2-use-traces
2830Common Ignore
2831Does nothing. Preserved for backward compatibility.
2832
2833fschedule-insns
2834Common Var(flag_schedule_insns) Optimization
2835Reschedule instructions before register allocation.
2836
2837fschedule-insns2
2838Common Var(flag_schedule_insns_after_reload) Optimization
2839Reschedule instructions after register allocation.
2840
2841; This flag should be on when a target implements non-trivial
2842; scheduling hooks, maybe saving some information for its own sake.
2843; On IA64, for example, this is used for correct bundling.
2844fselective-scheduling
2845Common Var(flag_selective_scheduling) Optimization
2846Schedule instructions using selective scheduling algorithm.
2847
2848fselective-scheduling2
2849Common Var(flag_selective_scheduling2) Optimization
2850Run selective scheduling after reload.
2851
2852fself-test=
2853Common Undocumented Joined Var(flag_self_test)
2854Run self-tests, using the given path to locate test files.
2855
2856fsel-sched-pipelining
2857Common Var(flag_sel_sched_pipelining) Init(0) Optimization
2858Perform software pipelining of inner loops during selective scheduling.
2859
2860fsel-sched-pipelining-outer-loops
2861Common Var(flag_sel_sched_pipelining_outer_loops) Init(0) Optimization
2862Perform software pipelining of outer loops during selective scheduling.
2863
2864fsel-sched-reschedule-pipelined
2865Common Var(flag_sel_sched_reschedule_pipelined) Init(0) Optimization
2866Reschedule pipelined regions without pipelining.
2867
2868fsemantic-interposition
2869Common Var(flag_semantic_interposition) Init(1) Optimization
2870Allow interposing function (or variables) by ones with different semantics (or initializer) respectively by dynamic linker.
2871
2872; sched_stalled_insns means that insns can be moved prematurely from the queue
2873; of stalled insns into the ready list.
2874fsched-stalled-insns
2875Common Var(flag_sched_stalled_insns) Optimization UInteger
2876Allow premature scheduling of queued insns.
2877
2878fsched-stalled-insns=
2879Common RejectNegative Joined UInteger Optimization
2880-fsched-stalled-insns=<number> Set number of queued insns that can be prematurely scheduled.
2881
2882; sched_stalled_insns_dep controls how many recently scheduled cycles will
2883; be examined for a dependency on a stalled insn that is candidate for
2884; premature removal from the queue of stalled insns into the ready list (has
2885; an effect only if the flag 'sched_stalled_insns' is set).
2886fsched-stalled-insns-dep
2887Common Var(flag_sched_stalled_insns_dep,1) Init(1) Optimization UInteger
2888Set dependence distance checking in premature scheduling of queued insns.
2889
2890fsched-stalled-insns-dep=
2891Common RejectNegative Joined UInteger Optimization
2892-fsched-stalled-insns-dep=<number> Set dependence distance checking in premature scheduling of queued insns.
2893
2894fsched-group-heuristic
2895Common Var(flag_sched_group_heuristic) Init(1) Optimization
2896Enable the group heuristic in the scheduler.
2897
2898fsched-critical-path-heuristic
2899Common Var(flag_sched_critical_path_heuristic) Init(1) Optimization
2900Enable the critical path heuristic in the scheduler.
2901
2902fsched-spec-insn-heuristic
2903Common Var(flag_sched_spec_insn_heuristic) Init(1) Optimization
2904Enable the speculative instruction heuristic in the scheduler.
2905
2906fsched-rank-heuristic
2907Common Var(flag_sched_rank_heuristic) Init(1) Optimization
2908Enable the rank heuristic in the scheduler.
2909
2910fsched-last-insn-heuristic
2911Common Var(flag_sched_last_insn_heuristic) Init(1) Optimization
2912Enable the last instruction heuristic in the scheduler.
2913
2914fsched-dep-count-heuristic
2915Common Var(flag_sched_dep_count_heuristic) Init(1) Optimization
2916Enable the dependent count heuristic in the scheduler.
2917
2918fsection-anchors
2919Common Var(flag_section_anchors) Optimization
2920Access data in the same section from shared anchor points.
2921
2922fsee
2923Common Ignore
2924Does nothing. Preserved for backward compatibility.
2925
2926fzee
2927Common Ignore
2928Does nothing. Preserved for backward compatibility.
2929
2930free
2931Common Var(flag_ree) Init(0) Optimization
2932Turn on Redundant Extensions Elimination pass.
2933
2934fshow-column
2935Common Var(flag_show_column) Init(1)
2936Show column numbers in diagnostics, when available. Default on.
2937
2938fshrink-wrap
2939Common Var(flag_shrink_wrap) Optimization
2940Emit function prologues only before parts of the function that need it,
2941rather than at the top of the function.
2942
2943fshrink-wrap-separate
2944Common Var(flag_shrink_wrap_separate) Init(1) Optimization
2945Shrink-wrap parts of the prologue and epilogue separately.
2946
2947fsignaling-nans
2948Common Var(flag_signaling_nans) Optimization SetByCombined
2949Disable optimizations observable by IEEE signaling NaNs.
2950
2951fsigned-zeros
2952Common Var(flag_signed_zeros) Init(1) Optimization SetByCombined
2953Disable floating point optimizations that ignore the IEEE signedness of zero.
2954
2955fsingle-precision-constant
2956Common Var(flag_single_precision_constant) Optimization
2957Convert floating point constants to single precision constants.
2958
2959fsplit-ivs-in-unroller
2960Common Var(flag_split_ivs_in_unroller) Init(1) Optimization
2961Split lifetimes of induction variables when loops are unrolled.
2962
2963fsplit-stack
2964Common Var(flag_split_stack) Init(-1)
2965Generate discontiguous stack frames.
2966
2967fsplit-wide-types
2968Common Var(flag_split_wide_types) Optimization
2969Split wide types into independent registers.
2970
2971fsplit-wide-types-early
2972Common Var(flag_split_wide_types_early) Optimization
2973Split wide types into independent registers earlier.
2974
2975fssa-backprop
2976Common Var(flag_ssa_backprop) Init(1) Optimization
2977Enable backward propagation of use properties at the SSA level.
2978
2979fssa-phiopt
2980Common Var(flag_ssa_phiopt) Optimization
2981Optimize conditional patterns using SSA PHI nodes.
2982
2983fstdarg-opt
2984Common Var(flag_stdarg_opt) Init(1) Optimization
2985Optimize amount of stdarg registers saved to stack at start of function.
2986
2987fvariable-expansion-in-unroller
2988Common Var(flag_variable_expansion_in_unroller) Optimization
2989Apply variable expansion when loops are unrolled.
2990
2991fstack-check=
2992Common RejectNegative Joined Optimization
2993-fstack-check=[no|generic|specific] Insert stack checking code into the program.
2994
2995fstack-check
2996Common Alias(fstack-check=, specific, no)
2997Insert stack checking code into the program. Same as -fstack-check=specific.
2998
2999fstack-clash-protection
3000Common Var(flag_stack_clash_protection) Optimization
3001Insert code to probe each page of stack space as it is allocated to protect
3002from stack-clash style attacks.
3003
3004fstack-limit
3005Common Var(common_deferred_options) Defer
3006
3007fstack-limit-register=
3008Common RejectNegative Joined Var(common_deferred_options) Defer
3009-fstack-limit-register=<register> Trap if the stack goes past <register>.
3010
3011fstack-limit-symbol=
3012Common RejectNegative Joined Var(common_deferred_options) Defer
3013-fstack-limit-symbol=<name> Trap if the stack goes past symbol <name>.
3014
3015fstack-protector
3016Common Var(flag_stack_protect, 1) Init(-1) Optimization
3017Use propolice as a stack protection method.
3018
3019fstack-protector-all
3020Common RejectNegative Var(flag_stack_protect, 2) Init(-1) Optimization
3021Use a stack protection method for every function.
3022
3023fstack-protector-strong
3024Common RejectNegative Var(flag_stack_protect, 3) Init(-1) Optimization
3025Use a smart stack protection method for certain functions.
3026
3027fstack-protector-explicit
3028Common RejectNegative Var(flag_stack_protect, 4) Optimization
3029Use stack protection method only for functions with the stack_protect attribute.
3030
3031fstack-usage
3032Common RejectNegative Var(flag_stack_usage)
3033Output stack usage information on a per-function basis.
3034
3035fstrength-reduce
3036Common Ignore
3037Does nothing. Preserved for backward compatibility.
3038
3039; Nonzero if we should do (language-dependent) alias analysis.
3040; Typically, this analysis will assume that expressions of certain
3041; types do not alias expressions of certain other types. Only used
3042; if alias analysis (in general) is enabled.
3043fstrict-aliasing
3044Common Var(flag_strict_aliasing) Optimization
3045Assume strict aliasing rules apply.
3046
3047fstrict-overflow
3048Common
3049Treat signed overflow as undefined. Negated as -fwrapv -fwrapv-pointer.
3050
3051fstrub=disable
3052Common RejectNegative Var(flag_strub, 0)
3053Disable stack scrub entirely, disregarding strub attributes.
3054
3055fstrub=strict
3056Common RejectNegative Var(flag_strub, -4)
3057Enable stack scrub as per attributes, with strict call checking.
3058
3059; If any strub-enabling attribute is seen when the default or strict
3060; initializer values are in effect, flag_strub is bumped up by 2. The
3061; scrub mode gate function will then bump these initializer values to
3062; 0 if no strub-enabling attribute is seen. This minimizes the strub
3063; overhead.
3064fstrub=relaxed
3065Common RejectNegative Var(flag_strub, -3) Init(-3)
3066Restore default strub mode: as per attributes, with relaxed checking.
3067
3068fstrub=all
3069Common RejectNegative Var(flag_strub, 3)
3070Enable stack scrubbing for all viable functions.
3071
3072fstrub=at-calls
3073Common RejectNegative Var(flag_strub, 1)
3074Enable at-calls stack scrubbing for all viable functions.
3075
3076fstrub=internal
3077Common RejectNegative Var(flag_strub, 2)
3078Enable internal stack scrubbing for all viable functions.
3079
3080fsync-libcalls
3081Common Var(flag_sync_libcalls) Init(1)
3082Implement __atomic operations via libcalls to legacy __sync functions.
3083
3084fsyntax-only
3085Common Var(flag_syntax_only)
3086Check for syntax errors, then stop.
3087
3088ftest-coverage
3089Common Var(flag_test_coverage)
3090Create data files needed by \"gcov\".
3091
3092fthread-jumps
3093Common Var(flag_thread_jumps) Optimization
3094Perform jump threading optimizations.
3095
3096ftime-report
3097Common Var(time_report)
3098Report the time taken by each compiler pass.
3099
3100ftime-report-details
3101Common Var(time_report_details)
3102Record times taken by sub-phases separately.
3103
3104ftls-model=
3105Common Joined RejectNegative Enum(tls_model) Var(flag_tls_default) Init(TLS_MODEL_GLOBAL_DYNAMIC)
3106-ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec] Set the default thread-local storage code generation model.
3107
3108Enum
3109Name(tls_model) Type(enum tls_model) UnknownError(unknown TLS model %qs)
3110
3111EnumValue
3112Enum(tls_model) String(global-dynamic) Value(TLS_MODEL_GLOBAL_DYNAMIC)
3113
3114EnumValue
3115Enum(tls_model) String(local-dynamic) Value(TLS_MODEL_LOCAL_DYNAMIC)
3116
3117EnumValue
3118Enum(tls_model) String(initial-exec) Value(TLS_MODEL_INITIAL_EXEC)
3119
3120EnumValue
3121Enum(tls_model) String(local-exec) Value(TLS_MODEL_LOCAL_EXEC)
3122
3123ftoplevel-reorder
3124Common Var(flag_toplevel_reorder) Init(2) Optimization
3125Reorder top level functions, variables, and asms.
3126
3127ftracer
3128Common Var(flag_tracer) Optimization
3129Perform superblock formation via tail duplication.
3130
3131ftrampolines
3132Common Var(flag_trampolines) Init(HEAP_TRAMPOLINES_INIT)
3133For targets that normally need trampolines for nested functions, always
3134generate them instead of using descriptors.
3135
3136ftrampoline-impl=
3137Common Joined RejectNegative Enum(trampoline_impl) Var(flag_trampoline_impl) Init(HEAP_TRAMPOLINES_INIT ? TRAMPOLINE_IMPL_HEAP : TRAMPOLINE_IMPL_STACK)
3138Whether trampolines are generated in executable memory rather than
3139executable stack.
3140
3141Enum
3142Name(trampoline_impl) Type(enum trampoline_impl) UnknownError(unknown trampoline implementation %qs)
3143
3144EnumValue
3145Enum(trampoline_impl) String(stack) Value(TRAMPOLINE_IMPL_STACK)
3146
3147EnumValue
3148Enum(trampoline_impl) String(heap) Value(TRAMPOLINE_IMPL_HEAP)
3149
3150
3151; Zero means that floating-point math operations cannot generate a
3152; (user-visible) trap. This is the case, for example, in nonstop
3153; IEEE 754 arithmetic.
3154ftrapping-math
3155Common Var(flag_trapping_math) Init(1) Optimization SetByCombined
3156Assume floating-point operations can trap.
3157
3158ftrapv
3159Common Var(flag_trapv) Optimization
3160Trap for signed overflow in addition, subtraction and multiplication.
3161
3162ftree-ccp
3163Common Var(flag_tree_ccp) Optimization
3164Enable SSA-CCP optimization on trees.
3165
3166ftree-bit-ccp
3167Common Var(flag_tree_bit_ccp) Optimization
3168Enable SSA-BIT-CCP optimization on trees.
3169
3170ftree-store-ccp
3171Common Ignore
3172Does nothing. Preserved for backward compatibility.
3173
3174ftree-ch
3175Common Var(flag_tree_ch) Optimization
3176Enable loop header copying on trees.
3177
3178ftree-coalesce-inlined-vars
3179Common Ignore RejectNegative
3180Does nothing. Preserved for backward compatibility.
3181
3182ftree-coalesce-vars
3183Common Var(flag_tree_coalesce_vars) Optimization
3184Enable SSA coalescing of user variables.
3185
3186ftree-copyrename
3187Common Ignore
3188Does nothing. Preserved for backward compatibility.
3189
3190ftree-copy-prop
3191Common Var(flag_tree_copy_prop) Optimization
3192Enable copy propagation on trees.
3193
3194ftree-store-copy-prop
3195Common Ignore
3196Does nothing. Preserved for backward compatibility.
3197
3198ftree-cselim
3199Common Var(flag_tree_cselim) Optimization
3200Transform condition stores into unconditional ones.
3201
3202ftree-switch-conversion
3203Common Var(flag_tree_switch_conversion) Optimization
3204Perform conversions of switch initializations.
3205
3206ftree-dce
3207Common Var(flag_tree_dce) Optimization
3208Enable SSA dead code elimination optimization on trees.
3209
3210ftree-dominator-opts
3211Common Var(flag_tree_dom) Optimization
3212Enable dominator optimizations.
3213
3214ftree-tail-merge
3215Common Var(flag_tree_tail_merge) Optimization
3216Enable tail merging on trees.
3217
3218ftree-dse
3219Common Var(flag_tree_dse) Optimization
3220Enable dead store elimination.
3221
3222ftree-forwprop
3223Common Var(flag_tree_forwprop) Init(1) Optimization
3224Enable forward propagation on trees.
3225
3226ftree-fre
3227Common Var(flag_tree_fre) Optimization
3228Enable Full Redundancy Elimination (FRE) on trees.
3229
3230foptimize-strlen
3231Common Var(flag_optimize_strlen) Optimization
3232Enable string length optimizations on trees.
3233
3234fisolate-erroneous-paths-dereference
3235Common Var(flag_isolate_erroneous_paths_dereference) Optimization
3236Detect paths that trigger erroneous or undefined behavior due to
3237dereferencing a null pointer. Isolate those paths from the main control
3238flow and turn the statement with erroneous or undefined behavior into a trap.
3239
3240fisolate-erroneous-paths-attribute
3241Common Var(flag_isolate_erroneous_paths_attribute) Optimization
3242Detect paths that trigger erroneous or undefined behavior due to a null value
3243being used in a way forbidden by a returns_nonnull or nonnull
3244attribute. Isolate those paths from the main control flow and turn the
3245statement with erroneous or undefined behavior into a trap.
3246
3247ftree-loop-distribution
3248Common Var(flag_tree_loop_distribution) Optimization
3249Enable loop distribution on trees.
3250
3251ftree-loop-distribute-patterns
3252Common Var(flag_tree_loop_distribute_patterns) Optimization
3253Enable loop distribution for patterns transformed into a library call.
3254
3255ftree-loop-im
3256Common Var(flag_tree_loop_im) Init(1) Optimization
3257Enable loop invariant motion on trees.
3258
3259ftree-loop-linear
3260Common Alias(floop-nest-optimize)
3261Enable loop nest transforms. Same as -floop-nest-optimize.
3262
3263ftree-loop-ivcanon
3264Common Var(flag_tree_loop_ivcanon) Init(1) Optimization
3265Create canonical induction variables in loops.
3266
3267ftree-loop-optimize
3268Common Var(flag_tree_loop_optimize) Init(1) Optimization
3269Enable loop optimizations on tree level.
3270
3271ftree-parallelize-loops=
3272Common Joined RejectNegative UInteger Var(flag_tree_parallelize_loops) Init(1) Optimization
3273-ftree-parallelize-loops=<number> Enable automatic parallelization of loops.
3274
3275ftree-phiprop
3276Common Var(flag_tree_phiprop) Init(1) Optimization
3277Enable hoisting loads from conditional pointers.
3278
3279ftree-pre
3280Common Var(flag_tree_pre) Optimization
3281Enable SSA-PRE optimization on trees.
3282
3283ftree-partial-pre
3284Common Var(flag_tree_partial_pre) Optimization
3285In SSA-PRE optimization on trees, enable partial-partial redundancy elimination.
3286
3287ftree-pta
3288Common Var(flag_tree_pta) Optimization
3289Perform function-local points-to analysis on trees.
3290
3291ftree-reassoc
3292Common Var(flag_tree_reassoc) Init(1) Optimization
3293Enable reassociation on tree level.
3294
3295ftree-salias
3296Common Ignore
3297Does nothing. Preserved for backward compatibility.
3298
3299ftree-sink
3300Common Var(flag_tree_sink) Optimization
3301Enable SSA code sinking on trees.
3302
3303ftree-slsr
3304Common Var(flag_tree_slsr) Optimization
3305Perform straight-line strength reduction.
3306
3307ftree-sra
3308Common Var(flag_tree_sra) Optimization
3309Perform scalar replacement of aggregates.
3310
3311ftree-ter
3312Common Var(flag_tree_ter) Optimization
3313Replace temporary expressions in the SSA->normal pass.
3314
3315ftree-lrs
3316Common Var(flag_tree_live_range_split) Optimization
3317Perform live range splitting during the SSA->normal pass.
3318
3319ftree-vrp
3320Common Var(flag_tree_vrp) Init(0) Optimization
3321Perform Value Range Propagation on trees.
3322
3323fsplit-paths
3324Common Var(flag_split_paths) Init(0) Optimization
3325Split paths leading to loop backedges.
3326
3327funconstrained-commons
3328Common Var(flag_unconstrained_commons) Optimization
3329Assume common declarations may be overridden with ones with a larger
3330trailing array.
3331
3332funit-at-a-time
3333Common Var(flag_unit_at_a_time) Init(1)
3334Compile whole compilation unit at a time.
3335
3336funreachable-traps
3337Common Var(flag_unreachable_traps) Optimization
3338Trap on __builtin_unreachable instead of using it for optimization.
3339
3340funroll-loops
3341Common Var(flag_unroll_loops) Optimization EnabledBy(funroll-all-loops)
3342Perform loop unrolling when iteration count is known.
3343
3344funroll-all-loops
3345Common Var(flag_unroll_all_loops) Optimization
3346Perform loop unrolling for all loops.
3347
3348funroll-completely-grow-size
3349Undocumented Var(flag_cunroll_grow_size) Optimization
3350; Internal undocumented flag, allow size growth during complete unrolling
3351
3352; Nonzero means that loop optimizer may assume that the induction variables
3353; that control loops do not overflow and that the loops with nontrivial
3354; exit condition are not infinite
3355funsafe-loop-optimizations
3356Common Ignore
3357Does nothing. Preserved for backward compatibility.
3358
3359fassociative-math
3360Common Var(flag_associative_math) SetByCombined Optimization
3361Allow optimization for floating-point arithmetic which may change the
3362result of the operation due to rounding.
3363
3364freciprocal-math
3365Common Var(flag_reciprocal_math) SetByCombined Optimization
3366Same as -fassociative-math for expressions which include division.
3367
3368; Nonzero means that unsafe floating-point math optimizations are allowed
3369; for the sake of speed. IEEE compliance is not guaranteed, and operations
3370; are allowed to assume that their arguments and results are "normal"
3371; (e.g., nonnegative for SQRT).
3372funsafe-math-optimizations
3373Common Var(flag_unsafe_math_optimizations) Optimization SetByCombined
3374Allow math optimizations that may violate IEEE or ISO standards.
3375
3376funswitch-loops
3377Common Var(flag_unswitch_loops) Optimization
3378Perform loop unswitching.
3379
3380fsplit-loops
3381Common Var(flag_split_loops) Optimization
3382Perform loop splitting.
3383
3384fversion-loops-for-strides
3385Common Var(flag_version_loops_for_strides) Optimization
3386Version loops based on whether indices have a stride of one.
3387
3388funwind-tables
3389Common Var(flag_unwind_tables) Optimization
3390Just generate unwind tables for exception handling.
3391
3392fuse-ld=bfd
3393Common Driver Negative(fuse-ld=gold)
3394Use the bfd linker instead of the default linker.
3395
3396fuse-ld=gold
3397Common Driver Negative(fuse-ld=bfd)
3398Use the gold linker instead of the default linker.
3399
3400fuse-ld=lld
3401Common Driver Negative(fuse-ld=lld)
3402Use the lld LLVM linker instead of the default linker.
3403
3404fuse-ld=mold
3405Common Driver Negative(fuse-ld=mold)
3406Use the Modern linker (MOLD) linker instead of the default linker.
3407
3408fuse-linker-plugin
3409Common Undocumented Var(flag_use_linker_plugin)
3410
3411; Positive if we should track variables, negative if we should run
3412; the var-tracking pass only to discard debug annotations, zero if
3413; we're not to run it.
3414fvar-tracking
3415Common Var(flag_var_tracking) PerFunction EnabledBy(fvar-tracking-uninit)
3416Perform variable tracking.
3417
3418; Positive if we should track variables at assignments, negative if
3419; we should run the var-tracking pass only to discard debug
3420; annotations.
3421fvar-tracking-assignments
3422Common Var(flag_var_tracking_assignments) PerFunction
3423Perform variable tracking by annotating assignments.
3424
3425; Nonzero if we should toggle flag_var_tracking_assignments after
3426; processing options and computing its default. */
3427fvar-tracking-assignments-toggle
3428Common Var(flag_var_tracking_assignments_toggle) PerFunction
3429Toggle -fvar-tracking-assignments.
3430
3431; Positive if we should track uninitialized variables, negative if
3432; we should run the var-tracking pass only to discard debug
3433; annotations.
3434fvar-tracking-uninit
3435Common Var(flag_var_tracking_uninit) PerFunction
3436Perform variable tracking and also tag variables that are uninitialized.
3437
3438; Alias to enable both -ftree-loop-vectorize and -ftree-slp-vectorize.
3439ftree-vectorize
3440Common Var(flag_tree_vectorize) Optimization
3441Enable vectorization on trees.
3442
3443ftree-vectorizer-verbose=
3444Common Joined RejectNegative Ignore
3445Does nothing. Preserved for backward compatibility.
3446
3447ftree-loop-vectorize
3448Common Var(flag_tree_loop_vectorize) Optimization EnabledBy(ftree-vectorize)
3449Enable loop vectorization on trees.
3450
3451ftree-slp-vectorize
3452Common Var(flag_tree_slp_vectorize) Optimization EnabledBy(ftree-vectorize)
3453Enable basic block vectorization (SLP) on trees.
3454
3455fvect-cost-model=
3456Common Joined RejectNegative Enum(vect_cost_model) Var(flag_vect_cost_model) Init(VECT_COST_MODEL_DEFAULT) Optimization
3457-fvect-cost-model=[unlimited|dynamic|cheap|very-cheap] Specifies the cost model for vectorization.
3458
3459fsimd-cost-model=
3460Common Joined RejectNegative Enum(vect_cost_model) Var(flag_simd_cost_model) Init(VECT_COST_MODEL_UNLIMITED) Optimization
3461-fsimd-cost-model=[unlimited|dynamic|cheap|very-cheap] Specifies the vectorization cost model for code marked with a simd directive.
3462
3463Enum
3464Name(vect_cost_model) Type(enum vect_cost_model) UnknownError(unknown vectorizer cost model %qs)
3465
3466EnumValue
3467Enum(vect_cost_model) String(unlimited) Value(VECT_COST_MODEL_UNLIMITED)
3468
3469EnumValue
3470Enum(vect_cost_model) String(dynamic) Value(VECT_COST_MODEL_DYNAMIC)
3471
3472EnumValue
3473Enum(vect_cost_model) String(cheap) Value(VECT_COST_MODEL_CHEAP)
3474
3475EnumValue
3476Enum(vect_cost_model) String(very-cheap) Value(VECT_COST_MODEL_VERY_CHEAP)
3477
3478fvect-cost-model
3479Common Alias(fvect-cost-model=,dynamic,unlimited)
3480Enables the dynamic vectorizer cost model. Preserved for backward compatibility.
3481
3482ftree-vect-loop-version
3483Common Ignore
3484Does nothing. Preserved for backward compatibility.
3485
3486ftree-scev-cprop
3487Common Var(flag_tree_scev_cprop) Init(1) Optimization
3488Enable copy propagation of scalar-evolution information.
3489
3490ftrivial-auto-var-init=
3491Common Joined RejectNegative Enum(auto_init_type) Var(flag_auto_var_init) Init(AUTO_INIT_UNINITIALIZED) Optimization
3492-ftrivial-auto-var-init=[uninitialized|pattern|zero] Add initializations to automatic variables.
3493
3494Enum
3495Name(auto_init_type) Type(enum auto_init_type) UnknownError(unrecognized automatic variable initialization type %qs)
3496
3497EnumValue
3498Enum(auto_init_type) String(uninitialized) Value(AUTO_INIT_UNINITIALIZED)
3499
3500EnumValue
3501Enum(auto_init_type) String(pattern) Value(AUTO_INIT_PATTERN)
3502
3503EnumValue
3504Enum(auto_init_type) String(zero) Value(AUTO_INIT_ZERO)
3505
3506; -fverbose-asm causes extra commentary information to be produced in
3507; the generated assembly code (to make it more readable). This option
3508; is generally only of use to those who actually need to read the
3509; generated assembly code (perhaps while debugging the compiler itself).
3510; -fno-verbose-asm, the default, causes the extra information
3511; to not be added and is useful when comparing two assembler files.
3512fverbose-asm
3513Common Var(flag_verbose_asm)
3514Add extra commentary to assembler output.
3515
3516fvisibility=
3517Common Joined RejectNegative Enum(symbol_visibility) Var(default_visibility) Init(VISIBILITY_DEFAULT)
3518-fvisibility=[default|internal|hidden|protected] Set the default symbol visibility.
3519
3520Enum
3521Name(symbol_visibility) Type(enum symbol_visibility) UnknownError(unrecognized visibility value %qs)
3522
3523EnumValue
3524Enum(symbol_visibility) String(default) Value(VISIBILITY_DEFAULT)
3525
3526EnumValue
3527Enum(symbol_visibility) String(internal) Value(VISIBILITY_INTERNAL)
3528
3529EnumValue
3530Enum(symbol_visibility) String(hidden) Value(VISIBILITY_HIDDEN)
3531
3532EnumValue
3533Enum(symbol_visibility) String(protected) Value(VISIBILITY_PROTECTED)
3534
3535fvtable-verify=
3536Common Joined RejectNegative Enum(vtv_priority) Var(flag_vtable_verify) Init(VTV_NO_PRIORITY)
3537Validate vtable pointers before using them.
3538
3539Enum
3540Name(vtv_priority) Type(enum vtv_priority) UnknownError(unknown vtable verify initialization priority %qs)
3541
3542EnumValue
3543Enum(vtv_priority) String(none) Value(VTV_NO_PRIORITY)
3544
3545EnumValue
3546Enum(vtv_priority) String(std) Value(VTV_STANDARD_PRIORITY)
3547
3548EnumValue
3549Enum(vtv_priority) String(preinit) Value(VTV_PREINIT_PRIORITY)
3550
3551fvtv-counts
3552Common Var(flag_vtv_counts)
3553Output vtable verification counters.
3554
3555fvtv-debug
3556Common Var(flag_vtv_debug)
3557Output vtable verification pointer sets information.
3558
3559fvpt
3560Common Var(flag_value_profile_transformations) Optimization
3561Use expression value profiles in optimizations.
3562
3563fweb
3564Common Var(flag_web) Optimization EnabledBy(funroll-loops)
3565Construct webs and split unrelated uses of single variable.
3566
3567ftree-builtin-call-dce
3568Common Var(flag_tree_builtin_call_dce) Init(0) Optimization
3569Enable conditional dead code elimination for builtin calls.
3570
3571fwhole-program
3572Common Var(flag_whole_program) Init(0)
3573Perform whole program optimizations.
3574
3575fwrapv-pointer
3576Common Var(flag_wrapv_pointer) Optimization
3577Assume pointer overflow wraps around.
3578
3579fwrapv
3580Common Var(flag_wrapv) Optimization
3581Assume signed arithmetic overflow wraps around.
3582
3583fzero-initialized-in-bss
3584Common Var(flag_zero_initialized_in_bss) Init(1)
3585Put zero initialized data in the bss section.
3586
3587fzero-call-used-regs=
3588Common RejectNegative Joined
3589Clear call-used registers upon function return.
3590
3591fzero-init-padding-bits=
3592Common Joined RejectNegative Enum(zero_init_padding_bits_kind) Var(flag_zero_init_padding_bits) Init(ZERO_INIT_PADDING_BITS_STANDARD)
3593-fzero-init-padding-bits=[standard|unions|all] Zero padding bits in initializers.
3594
3595Enum
3596Name(zero_init_padding_bits_kind) Type(enum zero_init_padding_bits_kind) UnknownError(unrecognized zero init padding bits kind %qs)
3597
3598EnumValue
3599Enum(zero_init_padding_bits_kind) String(standard) Value(ZERO_INIT_PADDING_BITS_STANDARD)
3600
3601EnumValue
3602Enum(zero_init_padding_bits_kind) String(unions) Value(ZERO_INIT_PADDING_BITS_UNIONS)
3603
3604EnumValue
3605Enum(zero_init_padding_bits_kind) String(all) Value(ZERO_INIT_PADDING_BITS_ALL)
3606
3607g
3608Common Driver RejectNegative JoinedOrMissing
3609Generate debug information in default format.
3610
3611gas-loc-support
3612Common Driver Var(dwarf2out_as_loc_support)
3613Assume assembler support for (DWARF2+) .loc directives.
3614
3615gas-locview-support
3616Common Driver Var(dwarf2out_as_locview_support)
3617Assume assembler support for view in (DWARF2+) .loc directives.
3618
3619gcodeview
3620Common Driver JoinedOrMissing
3621Generate debug information in CodeView format.
3622
3623gcoff
3624Common Driver WarnRemoved
3625Does nothing. Preserved for backward compatibility.
3626
3627gcoff1
3628Common Driver WarnRemoved
3629Does nothing. Preserved for backward compatibility.
3630
3631gcoff2
3632Common Driver WarnRemoved
3633Does nothing. Preserved for backward compatibility.
3634
3635gcoff3
3636Common Driver WarnRemoved
3637Does nothing. Preserved for backward compatibility.
3638
3639gcolumn-info
3640Common Driver Var(debug_column_info,1) Init(1)
3641Record DW_AT_decl_column and DW_AT_call_column in DWARF.
3642
3643; The CTF generation process feeds off DWARF dies. This option implicitly
3644; updates the debug_info_level to DINFO_LEVEL_NORMAL.
3645gctf
3646Common Driver RejectNegative JoinedOrMissing
3647Generate CTF debug information at default level.
3648
3649gbtf
3650Common Driver RejectNegative JoinedOrMissing
3651Generate BTF debug information at default level.
3652
3653gprune-btf
3654Common Driver Var(debug_prune_btf) Init(0)
3655Generate pruned BTF when emitting BTF info.
3656
3657gdwarf
3658Common Driver JoinedOrMissing RejectNegative
3659Generate debug information in default version of DWARF format.
3660
3661gdwarf-
3662Common Driver Joined UInteger Var(dwarf_version) Init(DWARF_VERSION_DEFAULT) RejectNegative
3663Generate debug information in DWARF v2 (or later) format.
3664
3665gdwarf32
3666Common Driver Var(dwarf_offset_size,4) Init(4) RejectNegative
3667Use 32-bit DWARF format when emitting DWARF debug information.
3668
3669gdwarf64
3670Common Driver Var(dwarf_offset_size,8) RejectNegative
3671Use 64-bit DWARF format when emitting DWARF debug information.
3672
3673ggdb
3674Common Driver JoinedOrMissing RejectNegative
3675Generate debug information in default extended format.
3676
3677ginline-points
3678Common Driver Var(debug_inline_points)
3679Generate extended entry point information for inlined functions.
3680
3681ginternal-reset-location-views
3682Common Driver Var(debug_internal_reset_location_views) Init(2)
3683Compute locview reset points based on insn length estimates.
3684
3685gno-
3686RejectNegative Joined Undocumented
3687; Catch the gno- prefix, so it doesn't backtrack to g<level>.
3688
3689gno-pubnames
3690Common Driver Negative(gpubnames) Var(debug_generate_pub_sections, 0) Init(-1)
3691Don't generate DWARF pubnames and pubtypes sections.
3692
3693gpubnames
3694Common Driver Negative(ggnu-pubnames) Var(debug_generate_pub_sections, 1)
3695Generate DWARF pubnames and pubtypes sections.
3696
3697ggnu-pubnames
3698Common Driver Negative(gno-pubnames) Var(debug_generate_pub_sections, 2)
3699Generate DWARF pubnames and pubtypes sections with GNU extensions.
3700
3701grecord-gcc-switches
3702Common Driver Var(dwarf_record_gcc_switches) Init(1)
3703Record gcc command line switches in DWARF DW_AT_producer.
3704
3705gsplit-dwarf
3706Common Driver Var(dwarf_split_debug_info) Init(0)
3707Generate debug information in separate .dwo files.
3708
3709gstabs
3710Common Driver WarnRemoved
3711Does nothing. Preserved for backward compatibility.
3712
3713gstabs+
3714Common Driver WarnRemoved
3715Does nothing. Preserved for backward compatibility.
3716
3717gstatement-frontiers
3718Common Driver Var(debug_nonbind_markers_p) PerFunction
3719Emit progressive recommended breakpoint locations.
3720
3721gstrict-dwarf
3722Common Driver Var(dwarf_strict) Init(0)
3723Don't emit DWARF additions beyond selected version.
3724
3725gdescribe-dies
3726Common Driver Var(flag_describe_dies) Init(0)
3727Add description attributes to some DWARF DIEs that have no name attribute.
3728
3729gtoggle
3730Common Driver Var(flag_gtoggle)
3731Toggle debug information generation.
3732
3733gvariable-location-views
3734Common Driver Var(debug_variable_location_views, 1)
3735Augment variable location lists with progressive views.
3736
3737gvariable-location-views=incompat5
3738Common Driver RejectNegative Var(debug_variable_location_views, -1) Init(2)
3739
3740gvms
3741Common Driver JoinedOrMissing RejectNegative
3742Generate debug information in VMS format.
3743
3744gxcoff
3745Common Driver WarnRemoved
3746Does nothing. Preserved for backward compatibility.
3747
3748gxcoff+
3749Common Driver JoinedOrMissing WarnRemoved
3750Does nothing. Preserved for backward compatibility.
3751
3752Enum
3753Name(compressed_debug_sections) Type(int)
3754
3755; Since -gz= is completely handled in specs, the values aren't used and we
3756; assign arbitrary constants.
3757EnumValue
3758Enum(compressed_debug_sections) String(none) Value(0)
3759
3760EnumValue
3761Enum(compressed_debug_sections) String(zlib) Value(1)
3762
3763EnumValue
3764Enum(compressed_debug_sections) String(zstd) Value(2)
3765
3766EnumValue
3767Enum(compressed_debug_sections) String(zlib-gnu) Value(3)
3768
3769gz
3770Common Driver
3771Generate compressed debug sections.
3772
3773gz=
3774Common Driver RejectNegative Joined Enum(compressed_debug_sections)
3775-gz=<format> Generate compressed debug sections in format <format>.
3776
3777h
3778Driver Joined Separate
3779
3780iplugindir=
3781Common Joined Var(plugindir_string) Init(0)
3782-iplugindir=<dir> Set <dir> to be the default plugin directory.
3783
3784imultiarch
3785Common Joined Separate RejectDriver Var(imultiarch) Init(0)
3786-imultiarch <dir> Set <dir> to be the multiarch include subdirectory.
3787
3788l
3789Driver Joined Separate
3790
3791n
3792Driver
3793
3794no-canonical-prefixes
3795Driver
3796
3797nodefaultlibs
3798Driver
3799
3800nostartfiles
3801Driver
3802
3803nolibc
3804Driver
3805
3806nostdlib
3807Driver
3808
3809nostdlib++
3810Driver
3811
3812o
3813Common Driver Joined Separate Var(asm_file_name) MissingArgError(missing filename after %qs)
3814-o <file> Place output into <file>.
3815
3816p
3817Common Var(profile_flag)
3818Enable function profiling.
3819
3820pass-exit-codes
3821Driver Var(pass_exit_codes)
3822
3823pedantic
3824Common Alias(Wpedantic)
3825
3826pedantic-errors
3827Common Var(flag_pedantic_errors)
3828Like -pedantic but issue errors instead of warnings.
3829
3830pg
3831Driver
3832
3833pipe
3834Driver Var(use_pipes)
3835
3836print-file-name=
3837Driver JoinedOrMissing Var(print_file_name)
3838
3839print-libgcc-file-name
3840Driver
3841
3842print-multi-directory
3843Driver Var(print_multi_directory)
3844
3845print-multi-lib
3846Driver Var(print_multi_lib)
3847
3848print-multi-os-directory
3849Driver Var(print_multi_os_directory)
3850
3851print-multiarch
3852Driver Var(print_multiarch)
3853
3854print-prog-name=
3855Driver JoinedOrMissing Var(print_prog_name)
3856
3857print-search-dirs
3858Driver Var(print_search_dirs)
3859
3860print-sysroot
3861Driver Var(print_sysroot)
3862
3863print-sysroot-headers-suffix
3864Driver Var(print_sysroot_headers_suffix)
3865
3866quiet
3867Common Var(quiet_flag) RejectDriver
3868Do not display functions compiled or elapsed time.
3869
3870r
3871Driver
3872
3873s
3874Driver
3875
3876save-temps
3877Driver
3878
3879save-temps=
3880Driver Joined
3881
3882t
3883Driver
3884
3885time
3886Driver Var(report_times)
3887
3888time=
3889Driver JoinedOrMissing
3890
3891u
3892Driver Joined Separate
3893
3894undef
3895Driver
3896; C option, but driver must not handle as "-u ndef".
3897
3898v
3899Common Driver Var(verbose_flag)
3900Enable verbose output.
3901
3902version
3903Common Var(version_flag) RejectDriver
3904Display the compiler's version.
3905
3906w
3907Common Var(inhibit_warnings)
3908Suppress warnings.
3909
3910wrapper
3911Driver Separate Var(wrapper_string)
3912
3913x
3914Driver Joined Separate
3915
3916shared
3917Driver RejectNegative Negative(static-pie)
3918Create a shared library.
3919
3920shared-libgcc
3921Driver
3922
3923specs
3924Driver Separate Alias(specs=)
3925
3926specs=
3927Driver Joined
3928
3929static
3930Driver
3931
3932static-libgcc
3933Driver
3934
3935static-libgfortran
3936Driver
3937; Documented for Fortran, but always accepted by driver.
3938
3939static-libgcobol
3940Driver
3941; Documented for COBOL, but always accepted by driver.
3942
3943static-libgm2
3944Driver
3945; Documented for Modula-2, but always accepted by driver.
3946
3947static-libphobos
3948Driver
3949; Documented for D, but always accepted by driver.
3950
3951static-libquadmath
3952Driver
3953; Documented for Fortran, but always accepted by driver.
3954
3955static-libstdc++
3956Driver
3957
3958static-libgo
3959Driver
3960; Documented for Go, but always accepted by driver.
3961
3962static-libasan
3963Driver
3964
3965static-libhwasan
3966Driver
3967
3968static-libtsan
3969Driver
3970
3971static-liblsan
3972Driver
3973
3974static-libubsan
3975Driver
3976
3977symbolic
3978Driver
3979
3980no-pie
3981Driver RejectNegative Negative(shared)
3982Don't create a dynamically linked position independent executable.
3983
3984pie
3985Driver RejectNegative Negative(no-pie)
3986Create a dynamically linked position independent executable.
3987
3988static-pie
3989Driver RejectNegative Negative(pie)
3990Create a static position independent executable.
3991
3992z
3993Driver Joined Separate
3994
3995fipa-ra
3996Common Var(flag_ipa_ra) Optimization
3997Use caller save register across calls if possible.
3998
3999fext-dce
4000Common Var(flag_ext_dce, 1) Optimization Init(0)
4001Perform dead code elimination on zero and sign extensions with special dataflow analysis.
4002
4003; This comment is to ensure we retain the blank line above.