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