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