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