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