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