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-types-section
1198Common Report Var(flag_debug_types_section) Init(0)
1199Output .debug_types section when using DWARF v4 debuginfo.
1200
1201; Nonzero for -fdefer-pop: don't pop args after each function call
1202; instead save them up to pop many calls' args with one insns.
1203fdefer-pop
1204Common Report Var(flag_defer_pop) Optimization
1205Defer popping functions args from stack until later.
1206
1207fdelayed-branch
1208Common Report Var(flag_delayed_branch) Optimization
1209Attempt to fill delay slots of branch instructions.
1210
1211fdelete-dead-exceptions
1212Common Report Var(flag_delete_dead_exceptions) Init(0) Optimization
1213Delete dead instructions that may throw exceptions.
1214
1215fdelete-null-pointer-checks
1216Common Report Var(flag_delete_null_pointer_checks) Init(-1) Optimization
1217Delete useless null pointer checks.
1218
1219fdevirtualize-at-ltrans
1220Common Report Var(flag_ltrans_devirtualize)
1221Stream extra data to support more aggressive devirtualization in LTO local transformation mode.
1222
1223fdevirtualize-speculatively
1224Common Report Var(flag_devirtualize_speculatively) Optimization
1225Perform speculative devirtualization.
1226
1227fdevirtualize
1228Common Report Var(flag_devirtualize) Optimization
1229Try to convert virtual calls to direct ones.
1230
1231fdiagnostics-show-location=
1232Common Joined RejectNegative Enum(diagnostic_prefixing_rule)
1233-fdiagnostics-show-location=[once|every-line]	How often to emit source location at the beginning of line-wrapped diagnostics.
1234
1235; Required for these enum values.
1236SourceInclude
1237pretty-print.h
1238
1239Enum
1240Name(diagnostic_prefixing_rule) Type(int)
1241
1242EnumValue
1243Enum(diagnostic_prefixing_rule) String(once) Value(DIAGNOSTICS_SHOW_PREFIX_ONCE)
1244
1245EnumValue
1246Enum(diagnostic_prefixing_rule) String(every-line) Value(DIAGNOSTICS_SHOW_PREFIX_EVERY_LINE)
1247
1248fdiagnostics-show-caret
1249Common Var(flag_diagnostics_show_caret) Init(1)
1250Show the source line with a caret indicating the column.
1251
1252fdiagnostics-show-labels
1253Common Var(flag_diagnostics_show_labels) Init(1)
1254Show labels annotating ranges of source code when showing source.
1255
1256fdiagnostics-show-line-numbers
1257Common Var(flag_diagnostics_show_line_numbers) Init(1)
1258Show line numbers in the left margin when showing source.
1259
1260fdiagnostics-color
1261Common Alias(fdiagnostics-color=,always,never)
1262;
1263
1264fdiagnostics-color=
1265Driver Common Joined RejectNegative Var(flag_diagnostics_show_color) Enum(diagnostic_color_rule) Init(DIAGNOSTICS_COLOR_NO)
1266-fdiagnostics-color=[never|always|auto]	Colorize diagnostics.
1267
1268; Required for these enum values.
1269SourceInclude
1270diagnostic-color.h
1271
1272Enum
1273Name(diagnostic_color_rule) Type(int)
1274
1275EnumValue
1276Enum(diagnostic_color_rule) String(never) Value(DIAGNOSTICS_COLOR_NO)
1277
1278EnumValue
1279Enum(diagnostic_color_rule) String(always) Value(DIAGNOSTICS_COLOR_YES)
1280
1281EnumValue
1282Enum(diagnostic_color_rule) String(auto) Value(DIAGNOSTICS_COLOR_AUTO)
1283
1284fdiagnostics-format=
1285Common Joined RejectNegative Enum(diagnostics_output_format)
1286-fdiagnostics-format=[text|json] Select output format.
1287
1288; Required for these enum values.
1289SourceInclude
1290diagnostic.h
1291
1292Enum
1293Name(diagnostics_output_format) Type(int)
1294
1295EnumValue
1296Enum(diagnostics_output_format) String(text) Value(DIAGNOSTICS_OUTPUT_FORMAT_TEXT)
1297
1298EnumValue
1299Enum(diagnostics_output_format) String(json) Value(DIAGNOSTICS_OUTPUT_FORMAT_JSON)
1300
1301fdiagnostics-parseable-fixits
1302Common Var(flag_diagnostics_parseable_fixits)
1303Print fix-it hints in machine-readable form.
1304
1305fdiagnostics-generate-patch
1306Common Var(flag_diagnostics_generate_patch)
1307Print fix-it hints to stderr in unified diff format.
1308
1309fdiagnostics-show-option
1310Common Var(flag_diagnostics_show_option) Init(1)
1311Amend appropriate diagnostic messages with the command line option that controls them.
1312
1313fdiagnostics-minimum-margin-width=
1314Common Joined UInteger Var(diagnostics_minimum_margin_width) Init(6)
1315Set minimum width of left margin of source code when showing source.
1316
1317fdisable-
1318Common Joined RejectNegative Var(common_deferred_options) Defer
1319-fdisable-[tree|rtl|ipa]-<pass>=range1+range2 disables an optimization pass.
1320
1321fenable-
1322Common Joined RejectNegative Var(common_deferred_options) Defer
1323-fenable-[tree|rtl|ipa]-<pass>=range1+range2 enables an optimization pass.
1324
1325fdump-
1326Common Joined RejectNegative Var(common_deferred_options) Defer
1327-fdump-<type>	Dump various compiler internals to a file.
1328
1329fdump-final-insns
1330Driver RejectNegative
1331
1332fdump-final-insns=
1333Common RejectNegative Joined Var(flag_dump_final_insns)
1334-fdump-final-insns=filename	Dump to filename the insns at the end of translation.
1335
1336fdump-go-spec=
1337Common RejectNegative Joined Var(flag_dump_go_spec)
1338-fdump-go-spec=filename	Write all declarations to file as Go code.
1339
1340fdump-noaddr
1341Common Report Var(flag_dump_noaddr)
1342Suppress output of addresses in debugging dumps.
1343
1344freport-bug
1345Common Driver Var(flag_report_bug)
1346Collect and dump debug information into temporary file if ICE in C/C++
1347compiler occurred.
1348
1349fdump-internal-locations
1350Common Var(flag_dump_locations) Init(0)
1351Dump detailed information on GCC's internal representation of source code locations.
1352
1353fdump-passes
1354Common Var(flag_dump_passes) Init(0)
1355Dump optimization passes.
1356
1357fdump-unnumbered
1358Common Report Var(flag_dump_unnumbered)
1359Suppress output of instruction numbers, line number notes and addresses in debugging dumps.
1360
1361fdump-unnumbered-links
1362Common Report Var(flag_dump_unnumbered_links)
1363Suppress output of previous and next insn numbers in debugging dumps.
1364
1365fdwarf2-cfi-asm
1366Common Report Var(flag_dwarf2_cfi_asm) Init(HAVE_GAS_CFI_DIRECTIVE)
1367Enable CFI tables via GAS assembler directives.
1368
1369fearly-inlining
1370Common Report Var(flag_early_inlining) Init(1) Optimization
1371Perform early inlining.
1372
1373feliminate-dwarf2-dups
1374Common Ignore
1375Does nothing.  Preserved for backward compatibility.
1376
1377fipa-sra
1378Common Report Var(flag_ipa_sra) Init(0) Optimization
1379Perform interprocedural reduction of aggregates.
1380
1381feliminate-unused-debug-symbols
1382Common Report Var(flag_debug_only_used_symbols)
1383Perform unused symbol elimination in debug info.
1384
1385feliminate-unused-debug-types
1386Common Report Var(flag_eliminate_unused_debug_types) Init(1)
1387Perform unused type elimination in debug info.
1388
1389femit-class-debug-always
1390Common Report Var(flag_emit_class_debug_always) Init(0)
1391Do not suppress C++ class debug information.
1392
1393fexceptions
1394Common Report Var(flag_exceptions) Optimization
1395Enable exception handling.
1396
1397fexpensive-optimizations
1398Common Report Var(flag_expensive_optimizations) Optimization
1399Perform a number of minor, expensive optimizations.
1400
1401fexcess-precision=
1402Common Joined RejectNegative Enum(excess_precision) Var(flag_excess_precision_cmdline) Init(EXCESS_PRECISION_DEFAULT) SetByCombined
1403-fexcess-precision=[fast|standard]	Specify handling of excess floating-point precision.
1404
1405Enum
1406Name(excess_precision) Type(enum excess_precision) UnknownError(unknown excess precision style %qs)
1407
1408EnumValue
1409Enum(excess_precision) String(fast) Value(EXCESS_PRECISION_FAST)
1410
1411EnumValue
1412Enum(excess_precision) String(standard) Value(EXCESS_PRECISION_STANDARD)
1413
1414; Whether we permit the extended set of values for FLT_EVAL_METHOD
1415; introduced in ISO/IEC TS 18661-3, or limit ourselves to those in C99/C11.
1416fpermitted-flt-eval-methods=
1417Common Joined RejectNegative Enum(permitted_flt_eval_methods) Var(flag_permitted_flt_eval_methods) Init(PERMITTED_FLT_EVAL_METHODS_DEFAULT)
1418-fpermitted-flt-eval-methods=[c11|ts-18661]	Specify which values of FLT_EVAL_METHOD are permitted.
1419
1420Enum
1421Name(permitted_flt_eval_methods) Type(enum permitted_flt_eval_methods) UnknownError(unknown specification for the set of FLT_EVAL_METHOD values to permit %qs)
1422
1423EnumValue
1424Enum(permitted_flt_eval_methods) String(c11) Value(PERMITTED_FLT_EVAL_METHODS_C11)
1425
1426EnumValue
1427Enum(permitted_flt_eval_methods) String(ts-18661-3) Value(PERMITTED_FLT_EVAL_METHODS_TS_18661)
1428
1429ffast-math
1430Common Optimization
1431
1432ffat-lto-objects
1433Common Var(flag_fat_lto_objects)
1434Output lto objects containing both the intermediate language and binary output.
1435
1436ffinite-math-only
1437Common Report Var(flag_finite_math_only) Optimization SetByCombined
1438Assume no NaNs or infinities are generated.
1439
1440ffixed-
1441Common Joined RejectNegative Var(common_deferred_options) Defer
1442-ffixed-<register>	Mark <register> as being unavailable to the compiler.
1443
1444ffloat-store
1445Common Report Var(flag_float_store) Optimization
1446Don't allocate floats and doubles in extended-precision registers.
1447
1448fforce-addr
1449Common Ignore
1450Does nothing.  Preserved for backward compatibility.
1451
1452fforward-propagate
1453Common Report Var(flag_forward_propagate) Optimization
1454Perform a forward propagation pass on RTL.
1455
1456ffp-contract=
1457Common Joined RejectNegative Enum(fp_contract_mode) Var(flag_fp_contract_mode) Init(FP_CONTRACT_FAST) Optimization
1458-ffp-contract=[off|on|fast]	Perform floating-point expression contraction.
1459
1460Enum
1461Name(fp_contract_mode) Type(enum fp_contract_mode) UnknownError(unknown floating point contraction style %qs)
1462
1463EnumValue
1464Enum(fp_contract_mode) String(off) Value(FP_CONTRACT_OFF)
1465
1466; Not implemented, fall back to conservative FP_CONTRACT_OFF.
1467EnumValue
1468Enum(fp_contract_mode) String(on) Value(FP_CONTRACT_OFF)
1469
1470EnumValue
1471Enum(fp_contract_mode) String(fast) Value(FP_CONTRACT_FAST)
1472
1473ffp-int-builtin-inexact
1474Common Report Var(flag_fp_int_builtin_inexact) Init(1) Optimization
1475Allow built-in functions ceil, floor, round, trunc to raise \"inexact\" exceptions.
1476
1477; Nonzero means don't put addresses of constant functions in registers.
1478; Used for compiling the Unix kernel, where strange substitutions are
1479; done on the assembly output.
1480ffunction-cse
1481Common Report Var(flag_no_function_cse,0) Optimization
1482Allow function addresses to be held in registers.
1483
1484ffunction-sections
1485Common Report Var(flag_function_sections)
1486Place each function into its own section.
1487
1488fgcse
1489Common Report Var(flag_gcse) Optimization
1490Perform global common subexpression elimination.
1491
1492fgcse-lm
1493Common Report Var(flag_gcse_lm) Init(1) Optimization
1494Perform enhanced load motion during global common subexpression elimination.
1495
1496fgcse-sm
1497Common Report Var(flag_gcse_sm) Init(0) Optimization
1498Perform store motion after global common subexpression elimination.
1499
1500fgcse-las
1501Common Report Var(flag_gcse_las) Init(0) Optimization
1502Perform redundant load after store elimination in global common subexpression
1503elimination.
1504
1505fgcse-after-reload
1506Common Report Var(flag_gcse_after_reload) Optimization
1507Perform global common subexpression elimination after register allocation has
1508finished.
1509
1510Enum
1511Name(dwarf_gnat_encodings) Type(int)
1512
1513EnumValue
1514Enum(dwarf_gnat_encodings) String(all) Value(DWARF_GNAT_ENCODINGS_ALL)
1515
1516EnumValue
1517Enum(dwarf_gnat_encodings) String(gdb) Value(DWARF_GNAT_ENCODINGS_GDB)
1518
1519EnumValue
1520Enum(dwarf_gnat_encodings) String(minimal) Value(DWARF_GNAT_ENCODINGS_MINIMAL)
1521
1522fgnat-encodings=
1523Common Enum(dwarf_gnat_encodings) Joined RejectNegative Report Undocumented Var(gnat_encodings)
1524-fgnat-encodings=[all|gdb|minimal]	Select the balance between GNAT encodings and standard DWARF emitted in the debug information.
1525
1526; This option is not documented yet as its semantics will change.
1527fgraphite
1528Common Report Var(flag_graphite) Optimization
1529Enable in and out of Graphite representation.
1530
1531fgraphite-identity
1532Common Report Var(flag_graphite_identity) Optimization
1533Enable Graphite Identity transformation.
1534
1535fhoist-adjacent-loads
1536Common Report Var(flag_hoist_adjacent_loads) Optimization
1537Enable hoisting adjacent loads to encourage generating conditional move
1538instructions.
1539
1540fkeep-gc-roots-live
1541Common Undocumented Report Var(flag_keep_gc_roots_live) Optimization
1542; Always keep a pointer to a live memory block
1543
1544floop-parallelize-all
1545Common Report Var(flag_loop_parallelize_all) Optimization
1546Mark all loops as parallel.
1547
1548floop-strip-mine
1549Common Alias(floop-nest-optimize)
1550Enable loop nest transforms.  Same as -floop-nest-optimize.
1551
1552floop-interchange
1553Common Report Var(flag_loop_interchange) Optimization
1554Enable loop interchange on trees.
1555
1556floop-block
1557Common Alias(floop-nest-optimize)
1558Enable loop nest transforms.  Same as -floop-nest-optimize.
1559
1560floop-unroll-and-jam
1561Common Report Var(flag_unroll_jam) Optimization
1562Perform unroll-and-jam on loops.
1563
1564fgnu-tm
1565Common Report Var(flag_tm)
1566Enable support for GNU transactional memory.
1567
1568fgnu-unique
1569Common Report Var(flag_gnu_unique) Init(1)
1570Use STB_GNU_UNIQUE if supported by the assembler.
1571
1572floop-flatten
1573Common Ignore
1574Does nothing. Preserved for backward compatibility.
1575
1576floop-nest-optimize
1577Common Report Var(flag_loop_nest_optimize) Optimization
1578Enable the loop nest optimizer.
1579
1580fstrict-volatile-bitfields
1581Common Report Var(flag_strict_volatile_bitfields) Init(-1) Optimization
1582Force bitfield accesses to match their type width.
1583
1584fstore-merging
1585Common Report Var(flag_store_merging) Optimization
1586Merge adjacent stores.
1587
1588fguess-branch-probability
1589Common Report Var(flag_guess_branch_prob) Optimization
1590Enable guessing of branch probabilities.
1591
1592; Nonzero means ignore `#ident' directives.  0 means handle them.
1593; Generate position-independent code for executables if possible
1594; On SVR4 targets, it also controls whether or not to emit a
1595; string identifying the compiler.
1596fident
1597Common Report Var(flag_no_ident,0)
1598Process #ident directives.
1599
1600fif-conversion
1601Common Report Var(flag_if_conversion) Optimization
1602Perform conversion of conditional jumps to branchless equivalents.
1603
1604fif-conversion2
1605Common Report Var(flag_if_conversion2) Optimization
1606Perform conversion of conditional jumps to conditional execution.
1607
1608fstack-reuse=
1609Common Joined RejectNegative Enum(stack_reuse_level) Var(flag_stack_reuse) Init(SR_ALL) Optimization
1610-fstack-reuse=[all|named_vars|none]	Set stack reuse level for local variables.
1611
1612Enum
1613Name(stack_reuse_level) Type(enum stack_reuse_level) UnknownError(unknown Stack Reuse Level %qs)
1614
1615EnumValue
1616Enum(stack_reuse_level) String(all) Value(SR_ALL)
1617
1618EnumValue
1619Enum(stack_reuse_level) String(named_vars) Value(SR_NAMED_VARS)
1620
1621EnumValue
1622Enum(stack_reuse_level) String(none) Value(SR_NONE)
1623
1624ftree-loop-if-convert
1625Common Report Var(flag_tree_loop_if_convert) Init(-1) Optimization
1626Convert conditional jumps in innermost loops to branchless equivalents.
1627
1628ftree-loop-if-convert-stores
1629Common Ignore
1630Does nothing. Preserved for backward compatibility.
1631
1632; -finhibit-size-directive inhibits output of .size for ELF.
1633; This is used only for compiling crtstuff.c,
1634; and it may be extended to other effects
1635; needed for crtstuff.c on other systems.
1636finhibit-size-directive
1637Common Report Var(flag_inhibit_size_directive)
1638Do not generate .size directives.
1639
1640findirect-inlining
1641Common Report Var(flag_indirect_inlining) Optimization
1642Perform indirect inlining.
1643
1644; General flag to enable inlining.  Specifying -fno-inline will disable
1645; all inlining apart from always-inline functions.
1646finline
1647Common Report Var(flag_no_inline,0) Init(0) Optimization
1648Enable inlining of function declared \"inline\", disabling disables all inlining.
1649
1650finline-small-functions
1651Common Report Var(flag_inline_small_functions) Optimization
1652Integrate functions into their callers when code size is known not to grow.
1653
1654finline-functions
1655Common Report Var(flag_inline_functions) Optimization
1656Integrate functions not declared \"inline\" into their callers when profitable.
1657
1658finline-functions-called-once
1659Common Report Var(flag_inline_functions_called_once) Optimization
1660Integrate functions only required by their single caller.
1661
1662finline-limit-
1663Common RejectNegative Joined Alias(finline-limit=)
1664
1665finline-limit=
1666Common RejectNegative Joined UInteger
1667-finline-limit=<number>	Limit the size of inlined functions to <number>.
1668
1669finline-atomics
1670Common Report Var(flag_inline_atomics) Init(1) Optimization
1671Inline __atomic operations when a lock free instruction sequence is available.
1672
1673fcf-protection
1674Common RejectNegative Alias(fcf-protection=,full)
1675
1676fcf-protection=
1677Common Report Joined RejectNegative Enum(cf_protection_level) Var(flag_cf_protection) Init(CF_NONE)
1678-fcf-protection=[full|branch|return|none]	Instrument functions with checks to verify jump/call/return control-flow transfer
1679instructions have valid targets.
1680
1681Enum
1682Name(cf_protection_level) Type(enum cf_protection_level) UnknownError(unknown Control-Flow Protection Level %qs)
1683
1684EnumValue
1685Enum(cf_protection_level) String(full) Value(CF_FULL)
1686
1687EnumValue
1688Enum(cf_protection_level) String(branch) Value(CF_BRANCH)
1689
1690EnumValue
1691Enum(cf_protection_level) String(return) Value(CF_RETURN)
1692
1693EnumValue
1694Enum(cf_protection_level) String(none) Value(CF_NONE)
1695
1696finstrument-functions
1697Common Report Var(flag_instrument_function_entry_exit)
1698Instrument function entry and exit with profiling calls.
1699
1700finstrument-functions-exclude-function-list=
1701Common RejectNegative Joined
1702-finstrument-functions-exclude-function-list=name,...  Do not instrument listed functions.
1703
1704finstrument-functions-exclude-file-list=
1705Common RejectNegative Joined
1706-finstrument-functions-exclude-file-list=filename,...  Do not instrument functions listed in files.
1707
1708fipa-cp
1709Common Report Var(flag_ipa_cp) Optimization
1710Perform interprocedural constant propagation.
1711
1712fipa-cp-clone
1713Common Report Var(flag_ipa_cp_clone) Optimization
1714Perform cloning to make Interprocedural constant propagation stronger.
1715
1716fipa-cp-alignment
1717Common Ignore
1718Does nothing.  Preserved for backward compatibility.
1719
1720fipa-bit-cp
1721Common Report Var(flag_ipa_bit_cp) Optimization
1722Perform interprocedural bitwise constant propagation.
1723
1724fipa-profile
1725Common Report Var(flag_ipa_profile) Init(0) Optimization
1726Perform interprocedural profile propagation.
1727
1728fipa-pta
1729Common Report Var(flag_ipa_pta) Init(0) Optimization
1730Perform interprocedural points-to analysis.
1731
1732fipa-pure-const
1733Common Report Var(flag_ipa_pure_const) Init(0) Optimization
1734Discover pure and const functions.
1735
1736fipa-icf
1737Common Report Var(flag_ipa_icf) Optimization
1738Perform Identical Code Folding for functions and read-only variables.
1739
1740fipa-icf-functions
1741Common Report Var(flag_ipa_icf_functions) Optimization
1742Perform Identical Code Folding for functions.
1743
1744fipa-icf-variables
1745Common Report Var(flag_ipa_icf_variables) Optimization
1746Perform Identical Code Folding for variables.
1747
1748fipa-reference
1749Common Report Var(flag_ipa_reference) Init(0) Optimization
1750Discover read-only and non addressable static variables.
1751
1752fipa-reference-addressable
1753Common Report Var(flag_ipa_reference_addressable) Init(0) Optimization
1754Discover read-only, write-only and non-addressable static variables.
1755
1756fipa-stack-alignment
1757Common Report Var(flag_ipa_stack_alignment) Init(1) Optimization
1758Reduce stack alignment on call sites if possible.
1759
1760fipa-matrix-reorg
1761Common Ignore
1762Does nothing. Preserved for backward compatibility.
1763
1764fipa-struct-reorg
1765Common Ignore
1766Does nothing. Preserved for backward compatibility.
1767
1768fipa-vrp
1769Common Report Var(flag_ipa_vrp) Optimization
1770Perform IPA Value Range Propagation.
1771
1772fira-algorithm=
1773Common Joined RejectNegative Enum(ira_algorithm) Var(flag_ira_algorithm) Init(IRA_ALGORITHM_CB) Optimization
1774-fira-algorithm=[CB|priority]	Set the used IRA algorithm.
1775
1776Enum
1777Name(ira_algorithm) Type(enum ira_algorithm) UnknownError(unknown IRA algorithm %qs)
1778
1779EnumValue
1780Enum(ira_algorithm) String(CB) Value(IRA_ALGORITHM_CB)
1781
1782EnumValue
1783Enum(ira_algorithm) String(priority) Value(IRA_ALGORITHM_PRIORITY)
1784
1785fira-region=
1786Common Joined RejectNegative Enum(ira_region) Var(flag_ira_region) Init(IRA_REGION_AUTODETECT) Optimization
1787-fira-region=[one|all|mixed]	Set regions for IRA.
1788
1789Enum
1790Name(ira_region) Type(enum ira_region) UnknownError(unknown IRA region %qs)
1791
1792EnumValue
1793Enum(ira_region) String(one) Value(IRA_REGION_ONE)
1794
1795EnumValue
1796Enum(ira_region) String(all) Value(IRA_REGION_ALL)
1797
1798EnumValue
1799Enum(ira_region) String(mixed) Value(IRA_REGION_MIXED)
1800
1801fira-hoist-pressure
1802Common Report Var(flag_ira_hoist_pressure) Init(1) Optimization
1803Use IRA based register pressure calculation
1804in RTL hoist optimizations.
1805
1806fira-loop-pressure
1807Common Report Var(flag_ira_loop_pressure) Optimization
1808Use IRA based register pressure calculation
1809in RTL loop optimizations.
1810
1811fira-share-save-slots
1812Common Report Var(flag_ira_share_save_slots) Init(1) Optimization
1813Share slots for saving different hard registers.
1814
1815fira-share-spill-slots
1816Common Report Var(flag_ira_share_spill_slots) Init(1) Optimization
1817Share stack slots for spilled pseudo-registers.
1818
1819fira-verbose=
1820Common RejectNegative Joined UInteger Var(flag_ira_verbose) Init(5)
1821-fira-verbose=<number>	Control IRA's level of diagnostic messages.
1822
1823fivopts
1824Common Report Var(flag_ivopts) Init(1) Optimization
1825Optimize induction variables on trees.
1826
1827fjump-tables
1828Common Var(flag_jump_tables) Init(1) Optimization
1829Use jump tables for sufficiently large switch statements.
1830
1831fkeep-inline-functions
1832Common Report Var(flag_keep_inline_functions)
1833Generate code for functions even if they are fully inlined.
1834
1835fkeep-static-functions
1836Common Report Var(flag_keep_static_functions)
1837Generate code for static functions even if they are never called.
1838
1839fkeep-static-consts
1840Common Report Var(flag_keep_static_consts) Init(1)
1841Emit static const variables even if they are not used.
1842
1843fleading-underscore
1844Common Report Var(flag_leading_underscore) Init(-1)
1845Give external symbols a leading underscore.
1846
1847floop-optimize
1848Common Ignore
1849Does nothing.  Preserved for backward compatibility.
1850
1851flra-remat
1852Common Report Var(flag_lra_remat) Optimization
1853Do CFG-sensitive rematerialization in LRA.
1854
1855flto
1856Common
1857Enable link-time optimization.
1858
1859flto=
1860Common RejectNegative Joined Var(flag_lto)
1861Link-time optimization with number of parallel jobs or jobserver.
1862
1863Enum
1864Name(lto_partition_model) Type(enum lto_partition_model) UnknownError(unknown LTO partitioning model %qs)
1865
1866EnumValue
1867Enum(lto_partition_model) String(none) Value(LTO_PARTITION_NONE)
1868
1869EnumValue
1870Enum(lto_partition_model) String(one) Value(LTO_PARTITION_ONE)
1871
1872EnumValue
1873Enum(lto_partition_model) String(balanced) Value(LTO_PARTITION_BALANCED)
1874
1875EnumValue
1876Enum(lto_partition_model) String(1to1) Value(LTO_PARTITION_1TO1)
1877
1878EnumValue
1879Enum(lto_partition_model) String(max) Value(LTO_PARTITION_MAX)
1880
1881flto-partition=
1882Common Joined RejectNegative Enum(lto_partition_model) Var(flag_lto_partition) Init(LTO_PARTITION_BALANCED)
1883Specify the algorithm to partition symbols and vars at linktime.
1884
1885; The initial value of -1 comes from Z_DEFAULT_COMPRESSION in zlib.h.
1886flto-compression-level=
1887Common Joined RejectNegative UInteger Var(flag_lto_compression_level) Init(-1) IntegerRange(0, 9)
1888-flto-compression-level=<number>	Use zlib compression level <number> for IL.
1889
1890flto-odr-type-merging
1891Common Report Var(flag_lto_odr_type_mering) Init(1)
1892Merge C++ types using One Definition Rule.
1893
1894flto-report
1895Common Report Var(flag_lto_report) Init(0)
1896Report various link-time optimization statistics.
1897
1898flto-report-wpa
1899Common Report Var(flag_lto_report_wpa) Init(0)
1900Report various link-time optimization statistics for WPA only.
1901
1902fmath-errno
1903Common Report Var(flag_errno_math) Init(1) Optimization SetByCombined
1904Set errno after built-in math functions.
1905
1906fmax-errors=
1907Common Joined RejectNegative UInteger Var(flag_max_errors)
1908-fmax-errors=<number>	Maximum number of errors to report.
1909
1910fmem-report
1911Common Report Var(mem_report)
1912Report on permanent memory allocation.
1913
1914fmem-report-wpa
1915Common Report Var(mem_report_wpa)
1916Report on permanent memory allocation in WPA only.
1917
1918; This will attempt to merge constant section constants, if 1 only
1919; string constants and constants from constant pool, if 2 also constant
1920; variables.
1921fmerge-all-constants
1922Common Report Var(flag_merge_constants,2) Init(1)
1923Attempt to merge identical constants and constant variables.
1924
1925fmerge-constants
1926Common Report Var(flag_merge_constants,1)
1927Attempt to merge identical constants across compilation units.
1928
1929fmerge-debug-strings
1930Common Report Var(flag_merge_debug_strings) Init(1)
1931Attempt to merge identical debug strings across compilation units.
1932
1933fmessage-length=
1934Common RejectNegative Joined UInteger
1935-fmessage-length=<number>	Limit diagnostics to <number> characters per line.  0 suppresses line-wrapping.
1936
1937fmodulo-sched
1938Common Report Var(flag_modulo_sched) Optimization
1939Perform SMS based modulo scheduling before the first scheduling pass.
1940
1941fmodulo-sched-allow-regmoves
1942Common Report Var(flag_modulo_sched_allow_regmoves) Optimization
1943Perform SMS based modulo scheduling with register moves allowed.
1944
1945fmove-loop-invariants
1946Common Report Var(flag_move_loop_invariants) Optimization
1947Move loop invariant computations out of loops.
1948
1949fdce
1950Common Var(flag_dce) Init(1) Optimization
1951Use the RTL dead code elimination pass.
1952
1953fdse
1954Common Var(flag_dse) Init(1) Optimization
1955Use the RTL dead store elimination pass.
1956
1957freschedule-modulo-scheduled-loops
1958Common Report Var(flag_resched_modulo_sched) Optimization
1959Enable/Disable the traditional scheduling in loops that already passed modulo scheduling.
1960
1961fnon-call-exceptions
1962Common Report Var(flag_non_call_exceptions) Optimization
1963Support synchronous non-call exceptions.
1964
1965foffload=
1966Common Driver Joined MissingArgError(options or targets missing after %qs)
1967-foffload=<targets>=<options>  Specify offloading targets and options for them.
1968
1969foffload-abi=
1970Common Joined RejectNegative Enum(offload_abi) Var(flag_offload_abi) Init(OFFLOAD_ABI_UNSET)
1971-foffload-abi=[lp64|ilp32]     Set the ABI to use in an offload compiler.
1972
1973Enum
1974Name(offload_abi) Type(enum offload_abi) UnknownError(unknown offload ABI %qs)
1975
1976EnumValue
1977Enum(offload_abi) String(ilp32) Value(OFFLOAD_ABI_ILP32)
1978
1979EnumValue
1980Enum(offload_abi) String(lp64) Value(OFFLOAD_ABI_LP64)
1981
1982fomit-frame-pointer
1983Common Report Var(flag_omit_frame_pointer) Optimization
1984When possible do not generate stack frames.
1985
1986fopt-info
1987Common Report Var(flag_opt_info) Optimization
1988Enable all optimization info dumps on stderr.
1989
1990fopt-info-
1991Common Joined RejectNegative Var(common_deferred_options) Defer
1992-fopt-info[-<type>=filename]	Dump compiler optimization details.
1993
1994fsave-optimization-record
1995Common Report Var(flag_save_optimization_record) Optimization
1996Write a SRCFILE.opt-record.json file detailing what optimizations were performed.
1997
1998foptimize-register-move
1999Common Ignore
2000Does nothing. Preserved for backward compatibility.
2001
2002foptimize-sibling-calls
2003Common Report Var(flag_optimize_sibling_calls) Optimization
2004Optimize sibling and tail recursive calls.
2005
2006fpartial-inlining
2007Common Report Var(flag_partial_inlining) Optimization
2008Perform partial inlining.
2009
2010fpre-ipa-mem-report
2011Common Report Var(pre_ipa_mem_report)
2012Report on memory allocation before interprocedural optimization.
2013
2014fpost-ipa-mem-report
2015Common Report Var(post_ipa_mem_report)
2016Report on memory allocation before interprocedural optimization.
2017
2018fpack-struct
2019Common Report Var(flag_pack_struct) Optimization
2020Pack structure members together without holes.
2021
2022fpack-struct=
2023Common RejectNegative Joined UInteger Optimization
2024-fpack-struct=<number>	Set initial maximum structure member alignment.
2025
2026fpcc-struct-return
2027Common Report Var(flag_pcc_struct_return,1) Init(DEFAULT_PCC_STRUCT_RETURN)
2028Return small aggregates in memory, not registers.
2029
2030fpeel-loops
2031Common Report Var(flag_peel_loops) Optimization
2032Perform loop peeling.
2033
2034fpeephole
2035Common Report Var(flag_no_peephole,0) Optimization
2036Enable machine specific peephole optimizations.
2037
2038fpeephole2
2039Common Report Var(flag_peephole2) Optimization
2040Enable an RTL peephole pass before sched2.
2041
2042fPIC
2043Common Report Var(flag_pic,2) Negative(fPIE) Init(-1)
2044Generate position-independent code if possible (large mode).
2045
2046fPIE
2047Common Report Var(flag_pie,2) Negative(fpic) Init(-1)
2048Generate position-independent code for executables if possible (large mode).
2049
2050fpic
2051Common Report Var(flag_pic,1) Negative(fpie) Init(-1)
2052Generate position-independent code if possible (small mode).
2053
2054fpie
2055Common Report Var(flag_pie,1) Negative(fPIC) Init(-1)
2056Generate position-independent code for executables if possible (small mode).
2057
2058fplt
2059Common Report Var(flag_plt) Init(1) Optimization
2060Use PLT for PIC calls (-fno-plt: load the address from GOT at call site).
2061
2062fplugin=
2063Common Joined RejectNegative Var(common_deferred_options) Defer
2064Specify a plugin to load.
2065
2066fplugin-arg-
2067Common Joined RejectNegative Var(common_deferred_options) Defer
2068-fplugin-arg-<name>-<key>[=<value>]	Specify argument <key>=<value> for plugin <name>.
2069
2070fpredictive-commoning
2071Common Report Var(flag_predictive_commoning) Optimization
2072Run predictive commoning optimization.
2073
2074fprefetch-loop-arrays
2075Common Report Var(flag_prefetch_loop_arrays) Init(-1) Optimization
2076Generate prefetch instructions, if available, for arrays in loops.
2077
2078fprofile
2079Common Report Var(profile_flag)
2080Enable basic program profiling code.
2081
2082fprofile-abs-path
2083Common Report Var(profile_abs_path_flag)
2084Generate absolute source path names for gcov.
2085
2086fprofile-arcs
2087Common Report Var(profile_arc_flag)
2088Insert arc-based program profiling code.
2089
2090fprofile-dir=
2091Common Joined RejectNegative Var(profile_data_prefix)
2092Set the top-level directory for storing the profile data.
2093The default is 'pwd'.
2094
2095fprofile-correction
2096Common Report Var(flag_profile_correction)
2097Enable correction of flow inconsistent profile data input.
2098
2099fprofile-update=
2100Common Joined RejectNegative Enum(profile_update) Var(flag_profile_update) Init(PROFILE_UPDATE_SINGLE)
2101-fprofile-update=[single|atomic|prefer-atomic]	Set the profile update method.
2102
2103fprofile-filter-files=
2104Common Joined RejectNegative Var(flag_profile_filter_files)
2105Instrument only functions from files where names match any regular expression (separated by a semi-colon).
2106
2107fprofile-exclude-files=
2108Common Joined RejectNegative Var(flag_profile_exclude_files)
2109Instrument only functions from files where names do not match all the regular expressions (separated by a semi-colon).
2110
2111Enum
2112Name(profile_update) Type(enum profile_update) UnknownError(unknown profile update method %qs)
2113
2114EnumValue
2115Enum(profile_update) String(single) Value(PROFILE_UPDATE_SINGLE)
2116
2117EnumValue
2118Enum(profile_update) String(atomic) Value(PROFILE_UPDATE_ATOMIC)
2119
2120EnumValue
2121Enum(profile_update) String(prefer-atomic) Value(PROFILE_UPDATE_PREFER_ATOMIC)
2122
2123fprofile-generate
2124Common
2125Enable common options for generating profile info for profile feedback directed optimizations.
2126
2127fprofile-generate=
2128Common Joined RejectNegative
2129Enable common options for generating profile info for profile feedback directed optimizations, and set -fprofile-dir=.
2130
2131fprofile-use
2132Common Var(flag_profile_use)
2133Enable common options for performing profile feedback directed optimizations.
2134
2135fprofile-use=
2136Common Joined RejectNegative
2137Enable common options for performing profile feedback directed optimizations, and set -fprofile-dir=.
2138
2139fprofile-values
2140Common Report Var(flag_profile_values)
2141Insert code to profile values of expressions.
2142
2143fprofile-report
2144Common Report Var(profile_report)
2145Report on consistency of profile.
2146
2147fprofile-reorder-functions
2148Common Report Var(flag_profile_reorder_functions)
2149Enable function reordering that improves code placement.
2150
2151fpatchable-function-entry=
2152Common Joined Optimization
2153Insert NOP instructions at each function entry.
2154
2155frandom-seed
2156Common Var(common_deferred_options) Defer
2157
2158frandom-seed=
2159Common Joined RejectNegative Var(common_deferred_options) Defer
2160-frandom-seed=<string>	Make compile reproducible using <string>.
2161
2162; This switch causes the command line that was used to create an
2163; object file to be recorded into the object file.  The exact format
2164; of this recording is target and binary file format dependent.
2165; It is related to the -fverbose-asm switch, but that switch only
2166; records information in the assembler output file as comments, so
2167; they never reach the object file.
2168frecord-gcc-switches
2169Common Report Var(flag_record_gcc_switches)
2170Record gcc command line switches in the object file.
2171
2172freg-struct-return
2173Common Report Var(flag_pcc_struct_return,0) Optimization
2174Return small aggregates in registers.
2175
2176fregmove
2177Common Ignore
2178Does nothing. Preserved for backward compatibility.
2179
2180flifetime-dse
2181Common Report Var(flag_lifetime_dse,2) Init(2) Optimization
2182Tell DSE that the storage for a C++ object is dead when the constructor
2183starts and when the destructor finishes.
2184
2185flifetime-dse=
2186Common Joined RejectNegative UInteger Var(flag_lifetime_dse) Optimization IntegerRange(0, 2)
2187
2188flive-patching
2189Common RejectNegative Alias(flive-patching=,inline-clone) Optimization
2190
2191flive-patching=
2192Common Report Joined RejectNegative Enum(live_patching_level) Var(flag_live_patching) Init(LIVE_PATCHING_NONE) Optimization
2193-flive-patching=[inline-only-static|inline-clone]	Control IPA
2194optimizations to provide a safe compilation for live-patching.  At the same
2195time, provides multiple-level control on the enabled IPA optimizations.
2196
2197Enum
2198Name(live_patching_level) Type(enum live_patching_level) UnknownError(unknown Live-Patching Level %qs)
2199
2200EnumValue
2201Enum(live_patching_level) String(inline-only-static) Value(LIVE_PATCHING_INLINE_ONLY_STATIC)
2202
2203EnumValue
2204Enum(live_patching_level) String(inline-clone) Value(LIVE_PATCHING_INLINE_CLONE)
2205
2206flive-range-shrinkage
2207Common Report Var(flag_live_range_shrinkage) Init(0) Optimization
2208Relief of register pressure through live range shrinkage.
2209
2210frename-registers
2211Common Report Var(flag_rename_registers) Init(2) Optimization
2212Perform a register renaming optimization pass.
2213
2214fschedule-fusion
2215Common Report Var(flag_schedule_fusion) Init(2) Optimization
2216Perform a target dependent instruction fusion optimization pass.
2217
2218freorder-blocks
2219Common Report Var(flag_reorder_blocks) Optimization
2220Reorder basic blocks to improve code placement.
2221
2222freorder-blocks-algorithm=
2223Common Joined RejectNegative Enum(reorder_blocks_algorithm) Var(flag_reorder_blocks_algorithm) Init(REORDER_BLOCKS_ALGORITHM_SIMPLE) Optimization
2224-freorder-blocks-algorithm=[simple|stc]	Set the used basic block reordering algorithm.
2225
2226Enum
2227Name(reorder_blocks_algorithm) Type(enum reorder_blocks_algorithm) UnknownError(unknown basic block reordering algorithm %qs)
2228
2229EnumValue
2230Enum(reorder_blocks_algorithm) String(simple) Value(REORDER_BLOCKS_ALGORITHM_SIMPLE)
2231
2232EnumValue
2233Enum(reorder_blocks_algorithm) String(stc) Value(REORDER_BLOCKS_ALGORITHM_STC)
2234
2235freorder-blocks-and-partition
2236Common Report Var(flag_reorder_blocks_and_partition) Optimization
2237Reorder basic blocks and partition into hot and cold sections.
2238
2239freorder-functions
2240Common Report Var(flag_reorder_functions) Optimization
2241Reorder functions to improve code placement.
2242
2243frerun-cse-after-loop
2244Common Report Var(flag_rerun_cse_after_loop) Optimization
2245Add a common subexpression elimination pass after loop optimizations.
2246
2247frerun-loop-opt
2248Common Ignore
2249Does nothing.  Preserved for backward compatibility.
2250
2251frounding-math
2252Common Report Var(flag_rounding_math) Optimization SetByCombined
2253Disable optimizations that assume default FP rounding behavior.
2254
2255fsched-interblock
2256Common Report Var(flag_schedule_interblock) Init(1) Optimization
2257Enable scheduling across basic blocks.
2258
2259fsched-pressure
2260Common Report Var(flag_sched_pressure) Init(0) Optimization
2261Enable register pressure sensitive insn scheduling.
2262
2263fsched-spec
2264Common Report Var(flag_schedule_speculative) Init(1) Optimization
2265Allow speculative motion of non-loads.
2266
2267fsched-spec-load
2268Common Report Var(flag_schedule_speculative_load) Optimization
2269Allow speculative motion of some loads.
2270
2271fsched-spec-load-dangerous
2272Common Report Var(flag_schedule_speculative_load_dangerous) Optimization
2273Allow speculative motion of more loads.
2274
2275fsched-verbose=
2276Common RejectNegative Joined UInteger Var(sched_verbose_param) Init(1)
2277-fsched-verbose=<number>	Set the verbosity level of the scheduler.
2278
2279fsched2-use-superblocks
2280Common Report Var(flag_sched2_use_superblocks) Optimization
2281If scheduling post reload, do superblock scheduling.
2282
2283fsched2-use-traces
2284Common Ignore
2285Does nothing.  Preserved for backward compatibility.
2286
2287fschedule-insns
2288Common Report Var(flag_schedule_insns) Optimization
2289Reschedule instructions before register allocation.
2290
2291fschedule-insns2
2292Common Report Var(flag_schedule_insns_after_reload) Optimization
2293Reschedule instructions after register allocation.
2294
2295; This flag should be on when a target implements non-trivial
2296; scheduling hooks, maybe saving some information for its own sake.
2297; On IA64, for example, this is used for correct bundling.
2298fselective-scheduling
2299Common Report Var(flag_selective_scheduling) Optimization
2300Schedule instructions using selective scheduling algorithm.
2301
2302fselective-scheduling2
2303Common Report Var(flag_selective_scheduling2) Optimization
2304Run selective scheduling after reload.
2305
2306fself-test=
2307Common Undocumented Joined Var(flag_self_test)
2308Run self-tests, using the given path to locate test files.
2309
2310fsel-sched-pipelining
2311Common Report Var(flag_sel_sched_pipelining) Init(0) Optimization
2312Perform software pipelining of inner loops during selective scheduling.
2313
2314fsel-sched-pipelining-outer-loops
2315Common Report Var(flag_sel_sched_pipelining_outer_loops) Init(0) Optimization
2316Perform software pipelining of outer loops during selective scheduling.
2317
2318fsel-sched-reschedule-pipelined
2319Common Report Var(flag_sel_sched_reschedule_pipelined) Init(0) Optimization
2320Reschedule pipelined regions without pipelining.
2321
2322fsemantic-interposition
2323Common Report Var(flag_semantic_interposition) Init(1)
2324Allow interposing function (or variables) by ones with different semantics (or initializer) respectively by dynamic linker.
2325
2326; sched_stalled_insns means that insns can be moved prematurely from the queue
2327; of stalled insns into the ready list.
2328fsched-stalled-insns
2329Common Report Var(flag_sched_stalled_insns) Optimization UInteger
2330Allow premature scheduling of queued insns.
2331
2332fsched-stalled-insns=
2333Common RejectNegative Joined UInteger Optimization
2334-fsched-stalled-insns=<number>	Set number of queued insns that can be prematurely scheduled.
2335
2336; sched_stalled_insns_dep controls how many recently scheduled cycles will
2337; be examined for a dependency on a stalled insn that is candidate for
2338; premature removal from the queue of stalled insns into the ready list (has
2339; an effect only if the flag 'sched_stalled_insns' is set).
2340fsched-stalled-insns-dep
2341Common Report Var(flag_sched_stalled_insns_dep,1) Init(1) Optimization UInteger
2342Set dependence distance checking in premature scheduling of queued insns.
2343
2344fsched-stalled-insns-dep=
2345Common RejectNegative Joined UInteger Optimization
2346-fsched-stalled-insns-dep=<number>	Set dependence distance checking in premature scheduling of queued insns.
2347
2348fsched-group-heuristic
2349Common Report Var(flag_sched_group_heuristic) Init(1) Optimization
2350Enable the group heuristic in the scheduler.
2351
2352fsched-critical-path-heuristic
2353Common Report Var(flag_sched_critical_path_heuristic) Init(1) Optimization
2354Enable the critical path heuristic in the scheduler.
2355
2356fsched-spec-insn-heuristic
2357Common Report Var(flag_sched_spec_insn_heuristic) Init(1) Optimization
2358Enable the speculative instruction heuristic in the scheduler.
2359
2360fsched-rank-heuristic
2361Common Report Var(flag_sched_rank_heuristic) Init(1) Optimization
2362Enable the rank heuristic in the scheduler.
2363
2364fsched-last-insn-heuristic
2365Common Report Var(flag_sched_last_insn_heuristic) Init(1) Optimization
2366Enable the last instruction heuristic in the scheduler.
2367
2368fsched-dep-count-heuristic
2369Common Report Var(flag_sched_dep_count_heuristic) Init(1) Optimization
2370Enable the dependent count heuristic in the scheduler.
2371
2372fsection-anchors
2373Common Report Var(flag_section_anchors) Optimization
2374Access data in the same section from shared anchor points.
2375
2376fsee
2377Common Ignore
2378Does nothing.  Preserved for backward compatibility.
2379
2380fzee
2381Common Ignore
2382Does nothing.  Preserved for backward compatibility.
2383
2384free
2385Common Report Var(flag_ree) Init(0)
2386Turn on Redundant Extensions Elimination pass.
2387
2388fshow-column
2389Common Report Var(flag_show_column) Init(1)
2390Show column numbers in diagnostics, when available.  Default on.
2391
2392fshrink-wrap
2393Common Report Var(flag_shrink_wrap) Optimization
2394Emit function prologues only before parts of the function that need it,
2395rather than at the top of the function.
2396
2397fshrink-wrap-separate
2398Common Report Var(flag_shrink_wrap_separate) Init(1) Optimization
2399Shrink-wrap parts of the prologue and epilogue separately.
2400
2401fsignaling-nans
2402Common Report Var(flag_signaling_nans) Optimization SetByCombined
2403Disable optimizations observable by IEEE signaling NaNs.
2404
2405fsigned-zeros
2406Common Report Var(flag_signed_zeros) Init(1) Optimization SetByCombined
2407Disable floating point optimizations that ignore the IEEE signedness of zero.
2408
2409fsingle-precision-constant
2410Common Report Var(flag_single_precision_constant) Optimization
2411Convert floating point constants to single precision constants.
2412
2413fsplit-ivs-in-unroller
2414Common Report Var(flag_split_ivs_in_unroller) Init(1) Optimization
2415Split lifetimes of induction variables when loops are unrolled.
2416
2417fsplit-stack
2418Common Report Var(flag_split_stack) Init(-1)
2419Generate discontiguous stack frames.
2420
2421fsplit-wide-types
2422Common Report Var(flag_split_wide_types) Optimization
2423Split wide types into independent registers.
2424
2425fssa-backprop
2426Common Report Var(flag_ssa_backprop) Init(1) Optimization
2427Enable backward propagation of use properties at the SSA level.
2428
2429fssa-phiopt
2430Common Report Var(flag_ssa_phiopt) Optimization
2431Optimize conditional patterns using SSA PHI nodes.
2432
2433fstdarg-opt
2434Common Report Var(flag_stdarg_opt) Init(1) Optimization
2435Optimize amount of stdarg registers saved to stack at start of function.
2436
2437fvariable-expansion-in-unroller
2438Common Report Var(flag_variable_expansion_in_unroller) Optimization
2439Apply variable expansion when loops are unrolled.
2440
2441fstack-check=
2442Common Report RejectNegative Joined Optimization
2443-fstack-check=[no|generic|specific]	Insert stack checking code into the program.
2444
2445fstack-check
2446Common Alias(fstack-check=, specific, no)
2447Insert stack checking code into the program.  Same as -fstack-check=specific.
2448
2449fstack-clash-protection
2450Common Report Var(flag_stack_clash_protection) Optimization
2451Insert code to probe each page of stack space as it is allocated to protect
2452from stack-clash style attacks.
2453
2454fstack-limit
2455Common Var(common_deferred_options) Defer
2456
2457fstack-limit-register=
2458Common RejectNegative Joined Var(common_deferred_options) Defer
2459-fstack-limit-register=<register>	Trap if the stack goes past <register>.
2460
2461fstack-limit-symbol=
2462Common RejectNegative Joined Var(common_deferred_options) Defer
2463-fstack-limit-symbol=<name>	Trap if the stack goes past symbol <name>.
2464
2465fstack-protector
2466Common Report Var(flag_stack_protect, 1) Init(-1) Optimization
2467Use propolice as a stack protection method.
2468
2469fstack-protector-all
2470Common Report RejectNegative Var(flag_stack_protect, 2) Init(-1) Optimization
2471Use a stack protection method for every function.
2472
2473fstack-protector-strong
2474Common Report RejectNegative Var(flag_stack_protect, 3) Init(-1) Optimization
2475Use a smart stack protection method for certain functions.
2476
2477fstack-protector-explicit
2478Common Report RejectNegative Var(flag_stack_protect, 4) Optimization
2479Use stack protection method only for functions with the stack_protect attribute.
2480
2481fstack-usage
2482Common RejectNegative Var(flag_stack_usage)
2483Output stack usage information on a per-function basis.
2484
2485fstrength-reduce
2486Common Ignore
2487Does nothing.  Preserved for backward compatibility.
2488
2489; Nonzero if we should do (language-dependent) alias analysis.
2490; Typically, this analysis will assume that expressions of certain
2491; types do not alias expressions of certain other types.  Only used
2492; if alias analysis (in general) is enabled.
2493fstrict-aliasing
2494Common Report Var(flag_strict_aliasing) Optimization
2495Assume strict aliasing rules apply.
2496
2497fstrict-overflow
2498Common Report
2499Treat signed overflow as undefined.  Negated as -fwrapv -fwrapv-pointer.
2500
2501fsync-libcalls
2502Common Report Var(flag_sync_libcalls) Init(1)
2503Implement __atomic operations via libcalls to legacy __sync functions.
2504
2505fsyntax-only
2506Common Report Var(flag_syntax_only)
2507Check for syntax errors, then stop.
2508
2509ftest-coverage
2510Common Report Var(flag_test_coverage)
2511Create data files needed by \"gcov\".
2512
2513fthread-jumps
2514Common Report Var(flag_thread_jumps) Optimization
2515Perform jump threading optimizations.
2516
2517ftime-report
2518Common Report Var(time_report)
2519Report the time taken by each compiler pass.
2520
2521ftime-report-details
2522Common Report Var(time_report_details)
2523Record times taken by sub-phases separately.
2524
2525ftls-model=
2526Common Joined RejectNegative Enum(tls_model) Var(flag_tls_default) Init(TLS_MODEL_GLOBAL_DYNAMIC)
2527-ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec]	Set the default thread-local storage code generation model.
2528
2529Enum
2530Name(tls_model) Type(enum tls_model) UnknownError(unknown TLS model %qs)
2531
2532EnumValue
2533Enum(tls_model) String(global-dynamic) Value(TLS_MODEL_GLOBAL_DYNAMIC)
2534
2535EnumValue
2536Enum(tls_model) String(local-dynamic) Value(TLS_MODEL_LOCAL_DYNAMIC)
2537
2538EnumValue
2539Enum(tls_model) String(initial-exec) Value(TLS_MODEL_INITIAL_EXEC)
2540
2541EnumValue
2542Enum(tls_model) String(local-exec) Value(TLS_MODEL_LOCAL_EXEC)
2543
2544ftoplevel-reorder
2545Common Report Var(flag_toplevel_reorder) Init(2)
2546Reorder top level functions, variables, and asms.
2547
2548ftracer
2549Common Report Var(flag_tracer) Optimization
2550Perform superblock formation via tail duplication.
2551
2552ftrampolines
2553Common Report Var(flag_trampolines) Init(0)
2554For targets that normally need trampolines for nested functions, always
2555generate them instead of using descriptors.
2556
2557; Zero means that floating-point math operations cannot generate a
2558; (user-visible) trap.  This is the case, for example, in nonstop
2559; IEEE 754 arithmetic.
2560ftrapping-math
2561Common Report Var(flag_trapping_math) Init(1) Optimization SetByCombined
2562Assume floating-point operations can trap.
2563
2564ftrapv
2565Common Report Var(flag_trapv) Optimization
2566Trap for signed overflow in addition, subtraction and multiplication.
2567
2568ftree-ccp
2569Common Report Var(flag_tree_ccp) Optimization
2570Enable SSA-CCP optimization on trees.
2571
2572ftree-bit-ccp
2573Common Report Var(flag_tree_bit_ccp) Optimization
2574Enable SSA-BIT-CCP optimization on trees.
2575
2576ftree-store-ccp
2577Common Ignore
2578Does nothing.  Preserved for backward compatibility.
2579
2580ftree-ch
2581Common Report Var(flag_tree_ch) Optimization
2582Enable loop header copying on trees.
2583
2584ftree-coalesce-inlined-vars
2585Common Ignore RejectNegative
2586Does nothing.  Preserved for backward compatibility.
2587
2588ftree-coalesce-vars
2589Common Report Var(flag_tree_coalesce_vars) Optimization
2590Enable SSA coalescing of user variables.
2591
2592ftree-copyrename
2593Common Ignore
2594Does nothing.  Preserved for backward compatibility.
2595
2596ftree-copy-prop
2597Common Report Var(flag_tree_copy_prop) Optimization
2598Enable copy propagation on trees.
2599
2600ftree-store-copy-prop
2601Common Ignore
2602Does nothing.  Preserved for backward compatibility.
2603
2604ftree-cselim
2605Common Report Var(flag_tree_cselim) Init(2) Optimization
2606Transform condition stores into unconditional ones.
2607
2608ftree-switch-conversion
2609Common Report Var(flag_tree_switch_conversion) Optimization
2610Perform conversions of switch initializations.
2611
2612ftree-dce
2613Common Report Var(flag_tree_dce) Optimization
2614Enable SSA dead code elimination optimization on trees.
2615
2616ftree-dominator-opts
2617Common Report Var(flag_tree_dom) Optimization
2618Enable dominator optimizations.
2619
2620ftree-tail-merge
2621Common Report Var(flag_tree_tail_merge) Optimization
2622Enable tail merging on trees.
2623
2624ftree-dse
2625Common Report Var(flag_tree_dse) Optimization
2626Enable dead store elimination.
2627
2628ftree-forwprop
2629Common Report Var(flag_tree_forwprop) Init(1) Optimization
2630Enable forward propagation on trees.
2631
2632ftree-fre
2633Common Report Var(flag_tree_fre) Optimization
2634Enable Full Redundancy Elimination (FRE) on trees.
2635
2636foptimize-strlen
2637Common Report Var(flag_optimize_strlen) Optimization
2638Enable string length optimizations on trees.
2639
2640fisolate-erroneous-paths-dereference
2641Common Report Var(flag_isolate_erroneous_paths_dereference) Optimization
2642Detect paths that trigger erroneous or undefined behavior due to
2643dereferencing a null pointer.  Isolate those paths from the main control
2644flow and turn the statement with erroneous or undefined behavior into a trap.
2645
2646fisolate-erroneous-paths-attribute
2647Common Report Var(flag_isolate_erroneous_paths_attribute) Optimization
2648Detect paths that trigger erroneous or undefined behavior due to a null value
2649being used in a way forbidden by a returns_nonnull or nonnull
2650attribute.  Isolate those paths from the main control flow and turn the
2651statement with erroneous or undefined behavior into a trap.
2652
2653ftree-loop-distribution
2654Common Report Var(flag_tree_loop_distribution) Optimization
2655Enable loop distribution on trees.
2656
2657ftree-loop-distribute-patterns
2658Common Report Var(flag_tree_loop_distribute_patterns) Optimization
2659Enable loop distribution for patterns transformed into a library call.
2660
2661ftree-loop-im
2662Common Report Var(flag_tree_loop_im) Init(1) Optimization
2663Enable loop invariant motion on trees.
2664
2665ftree-loop-linear
2666Common Alias(floop-nest-optimize)
2667Enable loop nest transforms.  Same as -floop-nest-optimize.
2668
2669ftree-loop-ivcanon
2670Common Report Var(flag_tree_loop_ivcanon) Init(1) Optimization
2671Create canonical induction variables in loops.
2672
2673ftree-loop-optimize
2674Common Report Var(flag_tree_loop_optimize) Init(1) Optimization
2675Enable loop optimizations on tree level.
2676
2677ftree-parallelize-loops=
2678Common Report Joined RejectNegative UInteger Var(flag_tree_parallelize_loops) Init(1) Optimization
2679-ftree-parallelize-loops=<number>	Enable automatic parallelization of loops.
2680
2681ftree-phiprop
2682Common Report Var(flag_tree_phiprop) Init(1) Optimization
2683Enable hoisting loads from conditional pointers.
2684
2685ftree-pre
2686Common Report Var(flag_tree_pre) Optimization
2687Enable SSA-PRE optimization on trees.
2688
2689ftree-partial-pre
2690Common Report Var(flag_tree_partial_pre) Optimization
2691In SSA-PRE optimization on trees, enable partial-partial redundancy elimination.
2692
2693ftree-pta
2694Common Report Var(flag_tree_pta) Optimization
2695Perform function-local points-to analysis on trees.
2696
2697ftree-reassoc
2698Common Report Var(flag_tree_reassoc) Init(1) Optimization
2699Enable reassociation on tree level.
2700
2701ftree-salias
2702Common Ignore
2703Does nothing.  Preserved for backward compatibility.
2704
2705ftree-sink
2706Common Report Var(flag_tree_sink) Optimization
2707Enable SSA code sinking on trees.
2708
2709ftree-slsr
2710Common Report Var(flag_tree_slsr) Optimization
2711Perform straight-line strength reduction.
2712
2713ftree-sra
2714Common Report Var(flag_tree_sra) Optimization
2715Perform scalar replacement of aggregates.
2716
2717ftree-ter
2718Common Report Var(flag_tree_ter) Optimization
2719Replace temporary expressions in the SSA->normal pass.
2720
2721ftree-lrs
2722Common Report Var(flag_tree_live_range_split) Optimization
2723Perform live range splitting during the SSA->normal pass.
2724
2725ftree-vrp
2726Common Report Var(flag_tree_vrp) Init(0) Optimization
2727Perform Value Range Propagation on trees.
2728
2729fsplit-paths
2730Common Report Var(flag_split_paths) Init(0) Optimization
2731Split paths leading to loop backedges.
2732
2733funconstrained-commons
2734Common Var(flag_unconstrained_commons) Optimization
2735Assume common declarations may be overridden with ones with a larger
2736trailing array.
2737
2738funit-at-a-time
2739Common Report Var(flag_unit_at_a_time) Init(1)
2740Compile whole compilation unit at a time.
2741
2742funroll-loops
2743Common Report Var(flag_unroll_loops) Optimization
2744Perform loop unrolling when iteration count is known.
2745
2746funroll-all-loops
2747Common Report Var(flag_unroll_all_loops) Optimization
2748Perform loop unrolling for all loops.
2749
2750; Nonzero means that loop optimizer may assume that the induction variables
2751; that control loops do not overflow and that the loops with nontrivial
2752; exit condition are not infinite
2753funsafe-loop-optimizations
2754Common Ignore
2755Does nothing.  Preserved for backward compatibility.
2756
2757fassociative-math
2758Common Report Var(flag_associative_math) SetByCombined Optimization
2759Allow optimization for floating-point arithmetic which may change the
2760result of the operation due to rounding.
2761
2762freciprocal-math
2763Common Report Var(flag_reciprocal_math) SetByCombined Optimization
2764Same as -fassociative-math for expressions which include division.
2765
2766; Nonzero means that unsafe floating-point math optimizations are allowed
2767; for the sake of speed.  IEEE compliance is not guaranteed, and operations
2768; are allowed to assume that their arguments and results are "normal"
2769; (e.g., nonnegative for SQRT).
2770funsafe-math-optimizations
2771Common Report Var(flag_unsafe_math_optimizations) Optimization SetByCombined
2772Allow math optimizations that may violate IEEE or ISO standards.
2773
2774funswitch-loops
2775Common Report Var(flag_unswitch_loops) Optimization
2776Perform loop unswitching.
2777
2778fsplit-loops
2779Common Report Var(flag_split_loops) Optimization
2780Perform loop splitting.
2781
2782fversion-loops-for-strides
2783Common Report Var(flag_version_loops_for_strides) Optimization
2784Version loops based on whether indices have a stride of one.
2785
2786funwind-tables
2787Common Report Var(flag_unwind_tables) Optimization
2788Just generate unwind tables for exception handling.
2789
2790fuse-ld=bfd
2791Common Driver Negative(fuse-ld=gold)
2792Use the bfd linker instead of the default linker.
2793
2794fuse-ld=gold
2795Common Driver Negative(fuse-ld=bfd)
2796Use the gold linker instead of the default linker.
2797
2798fuse-ld=lld
2799Common Driver Negative(fuse-ld=lld)
2800Use the lld LLVM linker instead of the default linker.
2801
2802fuse-linker-plugin
2803Common Undocumented Var(flag_use_linker_plugin)
2804
2805; Positive if we should track variables, negative if we should run
2806; the var-tracking pass only to discard debug annotations, zero if
2807; we're not to run it.  When flag_var_tracking == 2 (AUTODETECT_VALUE) it
2808; will be set according to optimize, debug_info_level and debug_hooks
2809; in process_options ().
2810fvar-tracking
2811Common Report Var(flag_var_tracking) Init(2) PerFunction
2812Perform variable tracking.
2813
2814; Positive if we should track variables at assignments, negative if
2815; we should run the var-tracking pass only to discard debug
2816; annotations.  When flag_var_tracking_assignments ==
2817; AUTODETECT_VALUE it will be set according to flag_var_tracking.
2818fvar-tracking-assignments
2819Common Report Var(flag_var_tracking_assignments) Init(2) PerFunction
2820Perform variable tracking by annotating assignments.
2821
2822; Nonzero if we should toggle flag_var_tracking_assignments after
2823; processing options and computing its default.  */
2824fvar-tracking-assignments-toggle
2825Common Report Var(flag_var_tracking_assignments_toggle) PerFunction
2826Toggle -fvar-tracking-assignments.
2827
2828; Positive if we should track uninitialized variables, negative if
2829; we should run the var-tracking pass only to discard debug
2830; annotations.  When flag_var_tracking_uninit == AUTODETECT_VALUE it
2831; will be set according to flag_var_tracking.
2832fvar-tracking-uninit
2833Common Report Var(flag_var_tracking_uninit) PerFunction
2834Perform variable tracking and also tag variables that are uninitialized.
2835
2836; Alias to enable both -ftree-loop-vectorize and -ftree-slp-vectorize.
2837ftree-vectorize
2838Common Report Optimization
2839Enable vectorization on trees.
2840
2841ftree-vectorizer-verbose=
2842Common Joined RejectNegative Ignore
2843Does nothing.  Preserved for backward compatibility.
2844
2845ftree-loop-vectorize
2846Common Report Var(flag_tree_loop_vectorize) Optimization EnabledBy(ftree-vectorize)
2847Enable loop vectorization on trees.
2848
2849ftree-slp-vectorize
2850Common Report Var(flag_tree_slp_vectorize) Optimization EnabledBy(ftree-vectorize)
2851Enable basic block vectorization (SLP) on trees.
2852
2853fvect-cost-model=
2854Common Joined RejectNegative Enum(vect_cost_model) Var(flag_vect_cost_model) Init(VECT_COST_MODEL_DEFAULT) Optimization
2855-fvect-cost-model=[unlimited|dynamic|cheap]	Specifies the cost model for vectorization.
2856
2857fsimd-cost-model=
2858Common Joined RejectNegative Enum(vect_cost_model) Var(flag_simd_cost_model) Init(VECT_COST_MODEL_UNLIMITED) Optimization
2859-fsimd-cost-model=[unlimited|dynamic|cheap]	Specifies the vectorization cost model for code marked with a simd directive.
2860
2861Enum
2862Name(vect_cost_model) Type(enum vect_cost_model) UnknownError(unknown vectorizer cost model %qs)
2863
2864EnumValue
2865Enum(vect_cost_model) String(unlimited) Value(VECT_COST_MODEL_UNLIMITED)
2866
2867EnumValue
2868Enum(vect_cost_model) String(dynamic) Value(VECT_COST_MODEL_DYNAMIC)
2869
2870EnumValue
2871Enum(vect_cost_model) String(cheap) Value(VECT_COST_MODEL_CHEAP)
2872
2873fvect-cost-model
2874Common Alias(fvect-cost-model=,dynamic,unlimited)
2875Enables the dynamic vectorizer cost model.  Preserved for backward compatibility.
2876
2877ftree-vect-loop-version
2878Common Ignore
2879Does nothing. Preserved for backward compatibility.
2880
2881ftree-scev-cprop
2882Common Report Var(flag_tree_scev_cprop) Init(1) Optimization
2883Enable copy propagation of scalar-evolution information.
2884
2885; -fverbose-asm causes extra commentary information to be produced in
2886; the generated assembly code (to make it more readable).  This option
2887; is generally only of use to those who actually need to read the
2888; generated assembly code (perhaps while debugging the compiler itself).
2889; -fno-verbose-asm, the default, causes the extra information
2890; to not be added and is useful when comparing two assembler files.
2891fverbose-asm
2892Common Report Var(flag_verbose_asm)
2893Add extra commentary to assembler output.
2894
2895fvisibility=
2896Common Joined RejectNegative Enum(symbol_visibility) Var(default_visibility) Init(VISIBILITY_DEFAULT)
2897-fvisibility=[default|internal|hidden|protected]	Set the default symbol visibility.
2898
2899Enum
2900Name(symbol_visibility) Type(enum symbol_visibility) UnknownError(unrecognized visibility value %qs)
2901
2902EnumValue
2903Enum(symbol_visibility) String(default) Value(VISIBILITY_DEFAULT)
2904
2905EnumValue
2906Enum(symbol_visibility) String(internal) Value(VISIBILITY_INTERNAL)
2907
2908EnumValue
2909Enum(symbol_visibility) String(hidden) Value(VISIBILITY_HIDDEN)
2910
2911EnumValue
2912Enum(symbol_visibility) String(protected) Value(VISIBILITY_PROTECTED)
2913
2914fvtable-verify=
2915Common Joined RejectNegative Enum(vtv_priority) Var(flag_vtable_verify) Init(VTV_NO_PRIORITY)
2916Validate vtable pointers before using them.
2917
2918Enum
2919Name(vtv_priority) Type(enum vtv_priority) UnknownError(unknown vtable verify initialization priority %qs)
2920
2921EnumValue
2922Enum(vtv_priority) String(none) Value(VTV_NO_PRIORITY)
2923
2924EnumValue
2925Enum(vtv_priority) String(std) Value(VTV_STANDARD_PRIORITY)
2926
2927EnumValue
2928Enum(vtv_priority) String(preinit) Value(VTV_PREINIT_PRIORITY)
2929
2930fvtv-counts
2931Common Var(flag_vtv_counts)
2932Output vtable verification counters.
2933
2934fvtv-debug
2935Common Var(flag_vtv_debug)
2936Output vtable verification pointer sets information.
2937
2938fvpt
2939Common Report Var(flag_value_profile_transformations) Optimization
2940Use expression value profiles in optimizations.
2941
2942fweb
2943Common Report Var(flag_web) Init(2) Optimization
2944Construct webs and split unrelated uses of single variable.
2945
2946ftree-builtin-call-dce
2947Common Report Var(flag_tree_builtin_call_dce) Init(0) Optimization
2948Enable conditional dead code elimination for builtin calls.
2949
2950fwhole-program
2951Common Report Var(flag_whole_program) Init(0)
2952Perform whole program optimizations.
2953
2954fwrapv-pointer
2955Common Report Var(flag_wrapv_pointer) Optimization
2956Assume pointer overflow wraps around.
2957
2958fwrapv
2959Common Report Var(flag_wrapv) Optimization
2960Assume signed arithmetic overflow wraps around.
2961
2962fzero-initialized-in-bss
2963Common Report Var(flag_zero_initialized_in_bss) Init(1)
2964Put zero initialized data in the bss section.
2965
2966g
2967Common Driver RejectNegative JoinedOrMissing
2968Generate debug information in default format.
2969
2970gas-loc-support
2971Common Driver Var(dwarf2out_as_loc_support) Init(2)
2972Assume assembler support for (DWARF2+) .loc directives.
2973
2974gas-locview-support
2975Common Driver Var(dwarf2out_as_locview_support) Init(2)
2976Assume assembler support for view in (DWARF2+) .loc directives.
2977
2978gcoff
2979Common Driver Deprecated
2980Does nothing.  Preserved for backward compatibility.
2981
2982gcoff1
2983Common Driver Deprecated
2984Does nothing.  Preserved for backward compatibility.
2985
2986gcoff2
2987Common Driver Deprecated
2988Does nothing.  Preserved for backward compatibility.
2989
2990gcoff3
2991Common Driver Deprecated
2992Does nothing.  Preserved for backward compatibility.
2993
2994gcolumn-info
2995Common Driver Var(debug_column_info,1) Init(1)
2996Record DW_AT_decl_column and DW_AT_call_column in DWARF.
2997
2998gdwarf
2999Common Driver JoinedOrMissing Negative(gdwarf-)
3000Generate debug information in default version of DWARF format.
3001
3002gdwarf-
3003Common Driver Joined UInteger Var(dwarf_version) Init(4) Negative(gstabs)
3004Generate debug information in DWARF v2 (or later) format.
3005
3006ggdb
3007Common Driver JoinedOrMissing
3008Generate debug information in default extended format.
3009
3010ginline-points
3011Common Driver Var(debug_inline_points) Init(2)
3012Generate extended entry point information for inlined functions.
3013
3014ginternal-reset-location-views
3015Common Driver Var(debug_internal_reset_location_views) Init(2)
3016Compute locview reset points based on insn length estimates.
3017
3018gno-
3019RejectNegative Joined Undocumented
3020; Catch the gno- prefix, so it doesn't backtrack to g<level>.
3021
3022gno-pubnames
3023Common Driver Negative(gpubnames) Var(debug_generate_pub_sections, 0) Init(-1)
3024Don't generate DWARF pubnames and pubtypes sections.
3025
3026gpubnames
3027Common Driver Negative(ggnu-pubnames) Var(debug_generate_pub_sections, 1)
3028Generate DWARF pubnames and pubtypes sections.
3029
3030ggnu-pubnames
3031Common Driver Negative(gno-pubnames) Var(debug_generate_pub_sections, 2)
3032Generate DWARF pubnames and pubtypes sections with GNU extensions.
3033
3034grecord-gcc-switches
3035Common Driver Var(dwarf_record_gcc_switches) Init(1)
3036Record gcc command line switches in DWARF DW_AT_producer.
3037
3038gsplit-dwarf
3039Common Driver Var(dwarf_split_debug_info) Init(0)
3040Generate debug information in separate .dwo files.
3041
3042gstabs
3043Common Driver JoinedOrMissing Negative(gstabs+)
3044Generate debug information in STABS format.
3045
3046gstabs+
3047Common Driver JoinedOrMissing Negative(gvms)
3048Generate debug information in extended STABS format.
3049
3050gstatement-frontiers
3051Common Driver Var(debug_nonbind_markers_p) Init(2)
3052Emit progressive recommended breakpoint locations.
3053
3054gstrict-dwarf
3055Common Driver Report Var(dwarf_strict) Init(0)
3056Don't emit DWARF additions beyond selected version.
3057
3058gdescribe-dies
3059Common Driver Report Var(flag_describe_dies) Init(0)
3060Add description attributes to some DWARF DIEs that have no name attribute.
3061
3062gtoggle
3063Common Driver Report Var(flag_gtoggle)
3064Toggle debug information generation.
3065
3066gvariable-location-views
3067Common Driver Var(debug_variable_location_views, 1) Init(2)
3068Augment variable location lists with progressive views.
3069
3070gvariable-location-views=incompat5
3071Common Driver RejectNegative Var(debug_variable_location_views, -1) Init(2)
3072
3073gvms
3074Common Driver JoinedOrMissing Negative(gxcoff)
3075Generate debug information in VMS format.
3076
3077gxcoff
3078Common Driver JoinedOrMissing Negative(gxcoff+)
3079Generate debug information in XCOFF format.
3080
3081gxcoff+
3082Common Driver JoinedOrMissing Negative(gdwarf)
3083Generate debug information in extended XCOFF format.
3084
3085Enum
3086Name(compressed_debug_sections) Type(int)
3087
3088; Since -gz= is completely handled in specs, the values aren't used and we
3089; assign arbitrary constants.
3090EnumValue
3091Enum(compressed_debug_sections) String(none) Value(0)
3092
3093EnumValue
3094Enum(compressed_debug_sections) String(zlib) Value(1)
3095
3096EnumValue
3097Enum(compressed_debug_sections) String(zlib-gnu) Value(2)
3098
3099gz
3100Common Driver
3101Generate compressed debug sections.
3102
3103gz=
3104Common Driver RejectNegative Joined Enum(compressed_debug_sections)
3105-gz=<format>	Generate compressed debug sections in format <format>.
3106
3107h
3108Driver Joined Separate
3109
3110iplugindir=
3111Common Joined Var(plugindir_string) Init(0)
3112-iplugindir=<dir>	Set <dir> to be the default plugin directory.
3113
3114imultiarch
3115Common Joined Separate RejectDriver Var(imultiarch) Init(0)
3116-imultiarch <dir>	Set <dir> to be the multiarch include subdirectory.
3117
3118l
3119Driver Joined Separate
3120
3121n
3122Driver
3123
3124no-canonical-prefixes
3125Driver
3126
3127nodefaultlibs
3128Driver
3129
3130nostartfiles
3131Driver
3132
3133nolibc
3134Driver
3135
3136nostdlib
3137Driver
3138
3139o
3140Common Driver Joined Separate Var(asm_file_name) MissingArgError(missing filename after %qs)
3141-o <file>	Place output into <file>.
3142
3143p
3144Common Var(profile_flag)
3145Enable function profiling.
3146
3147pass-exit-codes
3148Driver Var(pass_exit_codes)
3149
3150pedantic
3151Common Alias(Wpedantic)
3152
3153pedantic-errors
3154Common Var(flag_pedantic_errors)
3155Like -pedantic but issue them as errors.
3156
3157pg
3158Driver
3159
3160pipe
3161Driver Var(use_pipes)
3162
3163print-file-name=
3164Driver JoinedOrMissing Var(print_file_name)
3165
3166print-libgcc-file-name
3167Driver
3168
3169print-multi-directory
3170Driver Var(print_multi_directory)
3171
3172print-multi-lib
3173Driver Var(print_multi_lib)
3174
3175print-multi-os-directory
3176Driver Var(print_multi_os_directory)
3177
3178print-multiarch
3179Driver Var(print_multiarch)
3180
3181print-prog-name=
3182Driver JoinedOrMissing Var(print_prog_name)
3183
3184print-search-dirs
3185Driver Var(print_search_dirs)
3186
3187print-sysroot
3188Driver Var(print_sysroot)
3189
3190print-sysroot-headers-suffix
3191Driver Var(print_sysroot_headers_suffix)
3192
3193quiet
3194Common Var(quiet_flag) RejectDriver
3195Do not display functions compiled or elapsed time.
3196
3197r
3198Driver
3199
3200s
3201Driver
3202
3203save-temps
3204Driver
3205
3206save-temps=
3207Driver Joined
3208
3209t
3210Driver
3211
3212time
3213Driver Var(report_times)
3214
3215time=
3216Driver JoinedOrMissing
3217
3218u
3219Driver Joined Separate
3220
3221undef
3222Driver
3223; C option, but driver must not handle as "-u ndef".
3224
3225v
3226Common Driver Var(verbose_flag)
3227Enable verbose output.
3228
3229version
3230Common Var(version_flag) RejectDriver
3231Display the compiler's version.
3232
3233w
3234Common Var(inhibit_warnings)
3235Suppress warnings.
3236
3237wrapper
3238Driver Separate Var(wrapper_string)
3239
3240x
3241Driver Joined Separate
3242
3243shared
3244Driver RejectNegative Negative(static-pie)
3245Create a shared library.
3246
3247shared-libgcc
3248Driver
3249
3250specs
3251Driver Separate Alias(specs=)
3252
3253specs=
3254Driver Joined
3255
3256static
3257Driver
3258
3259static-libgcc
3260Driver
3261
3262static-libgfortran
3263Driver
3264; Documented for Fortran, but always accepted by driver.
3265
3266static-libstdc++
3267Driver
3268
3269static-libgo
3270Driver
3271; Documented for Go, but always accepted by driver.
3272
3273static-libasan
3274Driver
3275
3276static-libtsan
3277Driver
3278
3279static-liblsan
3280Driver
3281
3282static-libubsan
3283Driver
3284
3285symbolic
3286Driver
3287
3288no-pie
3289Driver RejectNegative Negative(shared)
3290Don't create a dynamically linked position independent executable.
3291
3292pie
3293Driver RejectNegative Negative(no-pie)
3294Create a dynamically linked position independent executable.
3295
3296static-pie
3297Driver RejectNegative Negative(pie)
3298Create a static position independent executable.
3299
3300z
3301Driver Joined Separate
3302
3303fipa-ra
3304Common Report Var(flag_ipa_ra) Optimization
3305Use caller save register across calls if possible.
3306
3307; This comment is to ensure we retain the blank line above.
3308