1 ; Options for the language- and target-independent parts of the compiler.
3 ; Copyright (C) 2003-2025 Free Software Foundation, Inc.
5 ; This file is part of GCC.
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
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
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/>.
21 ; See the GCC internals manual (options.texi) for a description of this file's format.
23 ; Please try to keep this file in ASCII collating order.
37 ; Not used directly to control optimizations, only to save -Ofast
38 ; setting for "optimize" attributes.
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.
49 ; This variable is set to non-0 only by LTO front-end. 1 indicates that
50 ; the output produced will be used for incremental linking (thus weak symbols
51 ; can still be bound) and 2 indicates that the IL is going to be linked and
52 ; and output to LTO object file.
54 enum incremental_link flag_incremental_link = INCREMENTAL_LINK_NONE
57 int flag_default_complex_method = 1
59 ; Language specific warning pass for unused results.
61 bool flag_warn_unused_result = false
63 ; Nonzero if we should write GIMPLE bytecode for link-time optimization.
67 ; Nonzero if we should write GIMPLE bytecode for offload compilation.
69 int flag_generate_offload = 0
71 ; Nonzero means we should be saving declaration info into a .X file.
73 int flag_gen_aux_info = 0
75 ; Nonzero if we are compiling code for a shared library, zero for
80 ; These three are really VEC(char_p,heap) *.
83 void *flag_instrument_functions_exclude_functions
86 void *flag_instrument_functions_exclude_files
89 void *flag_ignored_attributes
91 ; Generic structs (e.g. templates not explicitly specialized)
92 ; may not have a compilation unit associated with them, and so
93 ; may need to be treated differently from ordinary structs.
95 ; Structs only handled by reference (indirectly), will also usually
96 ; not need as much debugging information.
99 enum debug_struct_file debug_struct_ordinary[DINFO_USAGE_NUM_ENUMS] = { DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY }
102 enum debug_struct_file debug_struct_generic[DINFO_USAGE_NUM_ENUMS] = { DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY }
104 ; True if we should exit after parsing options.
106 bool exit_after_options
108 ; Type(s) of debugging information we are producing (if any). See
109 ; flag-types.h for the definitions of the different possible types of
110 ; debugging information.
112 uint32_t write_symbols = NO_DEBUG
114 ; Level of debugging information we are producing. See flag-types.h
115 ; for the definitions of the different possible levels.
117 enum debug_info_levels debug_info_level = DINFO_LEVEL_NONE
119 ; Level of CTF debugging information we are producing. See flag-types.h
120 ; for the definitions of the different possible levels.
122 enum ctf_debug_info_levels ctf_debug_info_level = CTFINFO_LEVEL_NONE
124 ; Original value of maximum field alignment in bytes, specified via
125 ; -fpack-struct=<value>.
127 unsigned int initial_max_fld_align = TARGET_DEFAULT_PACK_STRUCT
129 ; Type of stack check.
131 enum stack_check_type flag_stack_check = NO_STACK_CHECK
133 ; True if stack usage information needs to be computed.
135 bool flag_stack_usage_info = false
137 ; -dA causes debug commentary information to be produced in
138 ; the generated assembly code (to make it more readable). This option
139 ; is generally only of use to those who actually need to read the
140 ; generated assembly code (perhaps while debugging the compiler itself).
141 ; Currently, this switch is only used by dwarf2out.cc; however, it is intended
142 ; to be a catchall for printing debug information in the assembler file.
146 ; Balance between GNAT encodings and standard DWARF to emit.
148 enum dwarf_gnat_encodings gnat_encodings = DWARF_GNAT_ENCODINGS_DEFAULT
150 ; -dP causes the rtl to be emitted as a comment in assembly.
152 int flag_dump_rtl_in_asm
154 ; Whether -da was passed (used only in handle_common_deferred_options).
156 bool flag_dump_all_passed
158 ; Other flags saying which kinds of debugging dump have been requested.
161 int rtl_dump_and_exit
164 int flag_print_asm_name
166 ; Name of top-level original source file (what was input to cpp).
167 ; This comes from the #-command at the beginning of the actual input.
168 ; If there isn't any there, then this is the cc1 input file name.
170 const char *main_input_filename
172 ; Pointer to base name in main_input_filename, with directories and a
173 ; single final extension removed, and the length of this base
177 const char *main_input_basename
180 int main_input_baselength
182 ; The base name used for auxiliary output files.
183 ; dump_base_name minus dump_base_ext.
186 const char *aux_base_name
188 ; Which options have been printed by --help.
192 ; Which enums have been printed by --help. 0 = not printed, no
193 ; relevant options seen, 1 = relevant option seen, not yet printed, 2
196 char *help_enum_printed
198 ; The number of columns for --help output.
200 unsigned int help_columns
202 ; Whether this options structure has been through finish_options
204 bool flag_opts_finished
206 ; What the sanitizer should instrument
208 unsigned int flag_sanitize
210 ; What sanitizers should recover from errors
212 unsigned int flag_sanitize_recover = (SANITIZE_UNDEFINED | SANITIZE_UNDEFINED_NONDEFAULT | SANITIZE_KERNEL_ADDRESS | SANITIZE_KERNEL_HWADDRESS) & ~(SANITIZE_UNREACHABLE | SANITIZE_RETURN)
214 ; What sanitizers should use __builtin_trap () instead of runtime diagnostics
216 unsigned int flag_sanitize_trap
218 ; Flag whether a prefix has been added to dump_base_name
220 bool dump_base_name_prefixed = false
222 ; What subset of registers should be zeroed on function return
224 unsigned int flag_zero_call_used_regs
236 Common Driver Joined Undocumented
237 Provide bash completion for options starting with provided string.
240 Driver Alias(coverage)
246 Common Separate Alias(d)
249 Common Joined Alias(d)
252 Driver Common Separate Alias(dumpbase)
255 Driver Common Separate Alias(dumpbase-ext)
258 Driver Common Separate Alias(dumpdir)
261 Driver Separate Alias(e)
264 Driver Joined Alias(e)
267 Common Warning Alias(Wextra)
270 Driver Separate Alias(Xassembler)
273 Driver JoinedOrMissing Alias(Xassembler)
276 Driver Separate Alias(Xlinker)
279 Driver JoinedOrMissing Alias(Xlinker)
282 Driver Separate Alias(u)
285 Driver Joined Alias(u)
288 Common Driver Var(help_flag)
289 Display this information.
293 --help=<class> Display descriptions of a specific class of options. <class> is one or more of optimizers, target, warnings, undocumented, params.
296 Driver Separate Alias(x)
299 Driver Joined Alias(x)
302 Driver Separate Alias(L)
305 Driver Joined Alias(L)
307 -no-canonical-prefixes
308 Driver Alias(no-canonical-prefixes)
310 -no-standard-libraries
311 Driver Alias(nostdlib)
314 Driver Var(no_sysroot_suffix)
323 Common Driver Separate Alias(o) MissingArgError(missing filename after %qs)
326 Common Driver Joined Alias(o) MissingArgError(missing filename after %qs)
329 Driver Alias(pass-exit-codes)
332 Common Alias(Wpedantic)
335 Common Alias(pedantic-errors)
341 Driver Alias(static-pie)
347 Driver Separate Alias(B)
350 Driver JoinedOrMissing Alias(B)
356 Driver Separate Alias(print-file-name=)
359 Driver JoinedOrMissing Alias(print-file-name=)
361 -print-libgcc-file-name
362 Driver Alias(print-libgcc-file-name)
364 -print-multi-directory
365 Driver Alias(print-multi-directory)
368 Driver Alias(print-multi-lib)
370 -print-multi-os-directory
371 Driver Alias(print-multi-os-directory)
374 Driver Alias(print-multiarch)
377 Driver Separate Alias(print-prog-name=)
380 Driver JoinedOrMissing Alias(print-prog-name=)
383 Driver Alias(print-search-dirs)
386 Driver Alias(print-sysroot)
388 -print-sysroot-headers-suffix
389 Driver Alias(print-sysroot-headers-suffix)
395 Driver Alias(save-temps)
401 Driver Separate Alias(specs=)
404 Driver Joined Alias(specs=)
410 Driver Alias(symbolic)
414 Display target specific command line options (including assembler and linker options).
419 ;; Truncate the file specified after linking.
420 ;; This option is used by lto-wrapper to reduce the peak disk-usage when
421 ;; linking with many .LTRANS units.
423 Driver Separate Undocumented MissingArgError(missing filename after %qs)
428 ;; The driver used to convert options such as --help into forms such
429 ;; as -fhelp; the following four entries are for compatibility with
430 ;; any direct uses of those (undocumented) -f forms
432 Common Driver Alias(-help)
435 Common Driver Joined Alias(-help=)
438 Common Driver Alias(-target-help)
441 Common Driver Alias(-version)
444 Driver Separate Alias(-sysroot=)
447 Driver JoinedOrMissing
453 Driver Joined Separate
459 Driver Joined Separate
465 Common JoinedOrMissing Optimization
466 -O<number> Set optimization level to <number>.
470 Optimize for space rather than speed.
474 Optimize for speed disregarding exact standards compliance.
478 Optimize for debugging experience rather than speed or size.
482 Optimize for space aggressively rather than speed.
494 Driver Joined Separate
500 Driver Joined Separate
521 Common RejectNegative Warning Alias(Wextra)
522 This switch is deprecated; use -Wextra instead.
525 Driver JoinedOrMissing RejectNegative
528 Driver JoinedOrMissing RejectNegative
531 Driver JoinedOrMissing RejectNegative
534 Common Var(warn_aggregate_return) Warning
535 Warn about returning structures, unions or arrays.
537 Waggressive-loop-optimizations
538 Common Var(warn_aggressive_loop_optimizations) Init(1) Warning
539 Warn if a loop with constant number of iterations triggers undefined behavior.
542 Common Alias(Warray-bounds=, 1, 0) Warning
545 Common Joined RejectNegative UInteger Var(warn_array_bounds) Warning IntegerRange(0, 2)
546 Warn if an array is accessed out of bounds.
549 Common Var(warn_auto_profile) Warning
550 Warn about problems with auto-profile data.
553 Common Var(warn_use_after_free) Warning
554 Warn for uses of pointers to deallocated storage.
557 Common Joined RejectNegative UInteger Var(warn_use_after_free) Warning IntegerRange(0, 3)
558 Warn for uses of pointers to deallocated storage.
561 Common Var(warn_attributes) Init(1) Warning
562 Warn about inappropriate attribute usage.
566 Do not warn about specified attributes.
569 Common Alias(Wattribute_alias=, 1, 0) Warning
570 Warn about type safety and similar errors and mismatches in declarations with alias attributes.
573 Common Joined RejectNegative UInteger Var(warn_attribute_alias) Init(1) Warning IntegerRange(0, 2)
574 Warn about type safety and similar errors and mismatches in declarations with alias attributes.
577 Common Var(warn_cannot_profile) Init(1) Warning
578 Warn when profiling instrumentation was requested, but could not be applied to
582 Common Var(warn_cast_align) Warning
583 Warn about pointer casts which increase alignment.
586 Common Var(warn_cast_align,2) Warning
587 Warn about pointer casts which increase alignment.
590 Common Var(warn_complain_wrong_lang) Init(1) Warning
591 Complain when a command-line option is valid, but not applicable to the current front end.
594 Common Var(warn_cpp) Init(1) Warning
595 Warn when a #warning directive is encountered.
598 Common Var(warn_attribute_warning) Init(1) Warning
599 Warn about uses of __attribute__((warning)) declarations.
602 Common Var(warn_deprecated) Init(1) Warning
603 Warn if a deprecated compiler feature, class, method, or field is used.
605 Wdeprecated-declarations
606 Common Var(warn_deprecated_decl) Init(1) Warning
607 Warn about uses of __attribute__((deprecated)) declarations.
609 Wdisabled-optimization
610 Common Var(warn_disabled_optimization) Warning
611 Warn when an optimization pass is disabled.
614 Common Var(warnings_are_errors)
615 Turn all warnings into errors.
619 Turn the specified warning into an error.
622 Common Var(extra_warnings) Warning
623 Print extra (possibly unwanted) warnings.
626 Common Var(flag_fatal_errors)
627 Exit on the first error occurred.
630 Common RejectNegative Joined Host_Wide_Int ByteSize Warning Var(warn_frame_larger_than_size) Init(HOST_WIDE_INT_MAX)
631 -Wframe-larger-than=<byte-size> Warn if a function's stack frame requires in excess of <byte-size>.
633 Wno-frame-larger-than
634 Common Alias(Wframe-larger-than=,18446744073709551615EiB,none) Warning
635 Disable -Wframe-larger-than= warning. Equivalent to -Wframe-larger-than=<SIZE_MAX> or larger.
638 Common Var(warn_free_nonheap_object) Init(1) Warning
639 Warn when attempting to free a non-heap object.
642 Common Var(warn_hardened) Init(1) Warning
643 Warn when -fhardened did not enable an option from its set.
646 Common Ignore Warning
647 Does nothing. Preserved for backward compatibility.
649 Wimplicit-fallthrough
650 Common Alias(Wimplicit-fallthrough=,3,0) Warning
652 Wimplicit-fallthrough=
653 Common Var(warn_implicit_fallthrough) RejectNegative Joined UInteger Warning IntegerRange(0, 5)
654 Warn when a switch case falls through.
657 Var(warn_infinite_recursion) Warning
658 Warn for infinitely recursive calls.
661 Common Var(warn_inline) Warning Optimization
662 Warn when an inlined function cannot be inlined.
664 Winvalid-memory-model
665 Common Var(warn_invalid_memory_model) Init(1) Warning
666 Warn when an atomic memory model parameter is known to be outside the valid range.
669 Common RejectNegative Joined Warning Undocumented Alias(Wlarger-than=)
672 Common RejectNegative Joined Host_Wide_Int ByteSize Warning Var(warn_larger_than_size) Init(HOST_WIDE_INT_MAX)
673 -Wlarger-than=<byte-size> Warn if an object's size exceeds <byte-size>.
676 Common Alias(Wlarger-than=,18446744073709551615EiB,none) Warning
677 Disable -Wlarger-than= warning. Equivalent to -Wlarger-than=<SIZE_MAX> or larger.
680 Var(warn_nonnull_compare) Warning
681 Warn if comparing pointer parameter with nonnull attribute with NULL.
684 Common Var(warn_null_dereference) Warning
685 Warn if dereferencing a NULL pointer may lead to erroneous or undefined behavior.
687 Wunsafe-loop-optimizations
688 Common Ignore Warning
689 Does nothing. Preserved for backward compatibility.
692 Common Warning Alias(Wsuggest-attribute=noreturn)
695 Common Var(warn_musttail_local_addr) Init(1) Warning
696 Warn about passing a pointer/reference to a local or temporary variable to a musttail call argument.
698 Wmaybe-musttail-local-addr
699 Common Var(warn_maybe_musttail_local_addr) Warning EnabledBy(Wextra)
700 Warn about pointer/reference to a local or temporary variable possibly escaping to a musttail call.
703 Common Var(warn_odr_violations) Init(1) Warning
704 Warn about some C++ One Definition Rule violations during link time optimization.
707 Common Var(warn_overflow) Init(1) Warning
708 Warn about overflow in arithmetic expressions.
711 Common Var(warn_lto_type_mismatch) Init(1) Warning
712 During link time optimization warn about mismatched types of global declarations.
715 Common Var(warn_packed) Warning
716 Warn when the packed attribute has no effect on struct layout.
719 Common Var(warn_padded) Warning
720 Warn when padding is required to align structure members.
723 Common Var(pedantic) Init(0) Warning
724 Issue warnings needed for strict compliance to the standard.
727 Common Var(warn_return_local_addr) Init(1) Warning
728 Warn about returning a pointer/reference to a local or temporary variable.
731 Common Var(warn_shadow) Warning
732 Warn when one variable shadows another. Same as -Wshadow=global.
735 Common Warning Alias(Wshadow)
736 Warn when one variable shadows another (globally).
739 Common Var(warn_shadow_local) Warning EnabledBy(Wshadow)
740 Warn when one local variable shadows another local variable or parameter.
743 Common Warning Undocumented Alias(Wshadow=local)
745 Wshadow=compatible-local
746 Common Var(warn_shadow_compatible_local) Warning EnabledBy(Wshadow=local)
747 Warn when one local variable shadows another local variable or parameter of compatible type.
749 Wshadow-compatible-local
750 Common Warning Undocumented Alias(Wshadow=compatible-local)
753 Common Var(warn_stack_protect) Warning
754 Warn when not issuing stack smashing protection for some reason.
757 Common Joined RejectNegative Host_Wide_Int ByteSize Var(warn_stack_usage) Warning Init(HOST_WIDE_INT_MAX)
758 -Wstack-usage=<byte-size> Warn if stack usage might exceed <byte-size>.
761 Common Alias(Wstack-usage=,18446744073709551615EiB,none) Warning
762 Disable Wstack-usage= warning. Equivalent to Wstack-usage=<SIZE_MAX> or larger.
766 Warn about code which might break strict aliasing rules.
769 Common Joined RejectNegative UInteger Var(warn_strict_aliasing) Warning
770 Warn about code which might break strict aliasing rules.
774 Warn about optimizations that assume that signed overflow is undefined.
777 Common Joined RejectNegative UInteger Var(warn_strict_overflow) Warning
778 Warn about optimizations that assume that signed overflow is undefined.
780 Wsuggest-attribute=cold
781 Common Var(warn_suggest_attribute_cold) Warning
782 Warn about functions which might be candidates for __attribute__((cold)).
784 Wsuggest-attribute=const
785 Common Var(warn_suggest_attribute_const) Warning
786 Warn about functions which might be candidates for __attribute__((const)).
788 Wsuggest-attribute=pure
789 Common Var(warn_suggest_attribute_pure) Warning
790 Warn about functions which might be candidates for __attribute__((pure)).
792 Wsuggest-attribute=noreturn
793 Common Var(warn_suggest_attribute_noreturn) Warning
794 Warn about functions which might be candidates for __attribute__((noreturn)).
796 Wsuggest-attribute=malloc
797 Common Var(warn_suggest_attribute_malloc) Warning
798 Warn about functions which might be candidates for __attribute__((malloc)).
800 Wsuggest-attribute=returns_nonnull
801 Common Var(warn_suggest_attribute_returns_nonnull) Warning
802 Warn about functions which might be candidates for __attribute__((returns_nonnull)).
805 Common Var(warn_suggest_final_types) Warning
806 Warn about C++ polymorphic types where adding final keyword would improve code quality.
808 Wsuggest-final-methods
809 Common Var(warn_suggest_final_methods) Warning
810 Warn about C++ virtual methods where adding final keyword would improve code quality.
813 Common Var(warn_switch_unreachable) Warning Init(1)
814 Warn about statements between switch's controlling expression and the first
818 Common Var(warn_system_headers) Warning
819 Do not suppress warnings from system headers.
821 Wtautological-compare
822 Common Var(warn_tautological_compare) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
823 Warn if a comparison always evaluates to true or false.
826 Common Var(warn_trampolines) Warning
827 Warn whenever a trampoline is generated.
829 Wtrivial-auto-var-init
830 Common Var(warn_trivial_auto_var_init) Warning Init(0)
831 Warn about cases where -ftrivial-auto-var-init cannot initialize an auto variable.
834 Common Var(warn_type_limits) Warning EnabledBy(Wextra)
835 Warn if a comparison is always true or always false due to the limited range of the data type.
838 Common Var(warn_uninitialized) Warning EnabledBy(Wextra)
839 Warn about uninitialized automatic variables.
842 Common Var(warn_maybe_uninitialized) Warning EnabledBy(Wuninitialized)
843 Warn about maybe uninitialized automatic variables.
846 Common Ignore Warning
847 Does nothing. Preserved for backward compatibility.
850 Common Var(warn_unused) Init(0) Warning
851 Enable all -Wunused- warnings.
853 Wunused-but-set-parameter
854 Common Var(warn_unused_but_set_parameter) Warning EnabledBy(Wunused && Wextra)
855 Warn when a function parameter is only set, otherwise unused.
857 Wunused-but-set-variable
858 Common Var(warn_unused_but_set_variable) Warning EnabledBy(Wunused)
859 Warn when a variable is only set, otherwise unused.
862 Common Var(warn_unused_function) Warning EnabledBy(Wunused)
863 Warn when a function is unused.
866 Common Var(warn_unused_label) Warning EnabledBy(Wunused)
867 Warn when a label is unused.
870 Common Var(warn_unused_parameter) Warning EnabledBy(Wunused && Wextra)
871 Warn when a function parameter is unused.
874 Common Var(warn_unused_value) Warning EnabledBy(Wunused)
875 Warn when an expression value is unused.
878 Common Var(warn_unused_variable) Warning EnabledBy(Wunused)
879 Warn when a variable is unused.
882 Common Var(warn_coverage_mismatch) Init(1) Warning
883 Warn in case profiles in -fprofile-use do not match.
885 Wcoverage-invalid-line-number
886 Common Var(warn_coverage_invalid_linenum) Init(1) Warning
887 Warn in case a function ends earlier than it begins due to an invalid linenum macros.
889 Wcoverage-too-many-conditions
890 Common Var(warn_too_many_conditions) Init(1) Warning
891 Warn when a conditional has too many terms and condition coverage profiling
892 gives up instrumenting the expression.
894 fpath-coverage-limit=
895 Common RejectNegative Joined UInteger Var(path_coverage_limit) Init(250000)
896 -fpath-coverage-limit=<number> Don't instrument functions path count exceeding
899 Wcoverage-too-many-paths
900 Common Var(warn_too_many_paths) Init(1) Warning
901 Warn if a function exceeds the number of paths (controlled by
902 -fpath-coverage-limit) and path coverage give up instrumenting the function.
903 The limit is approximate and conservative and coverage might give up even if
904 the actual number is slightly below the limit.
907 Common Var(warn_missing_profile) Init(1) Warning
908 Warn in case profiles in -fprofile-use do not exist.
910 Wvector-operation-performance
911 Common Var(warn_vector_operation_performance) Warning
912 Warn when a vector operation is compiled outside the SIMD.
915 Common Var(warn_tsan) Init(1) Warning
916 Warn about unsupported features in ThreadSanitizer.
931 Common Separate Var(aux_info_file_name)
932 -aux-info <file> Emit declaration information into <file>.
935 Common Joined Alias(aux-info)
945 -d<letters> Enable dumps from specific passes of the compiler.
948 Driver Common Separate Var(dump_base_name)
949 -dumpbase <file> Set the file basename to be used for dumps.
952 Driver Common Separate Var(dump_base_ext)
953 -dumpbase-ext .<ext> Drop a trailing .<ext> from the dump basename to name auxiliary output files.
956 Driver Common Separate Var(dump_dir_name)
957 -dumpdir <dir> Set the directory name to be used for dumps.
972 Driver Joined Separate
974 ; This option has historically been passed down to the linker by an
975 ; accident of a %{e*} spec, so ensure it continues to be passed down
976 ; as a single option. The supported option for this purpose is
977 ; -rdynamic. See PR 47390.
981 ; The version of the C++ ABI in use. The following values are allowed:
983 ; 0: The version of the ABI believed most conformant with the C++ ABI
984 ; specification. This ABI may change as bugs are discovered and fixed.
985 ; Therefore, 0 will not necessarily indicate the same ABI in different
988 ; 1: The version of the ABI first used in G++ 3.2. No longer selectable.
990 ; 2: The version of the ABI first used in G++ 3.4, and the default
993 ; 3: The version of the ABI that fixes the missing underscore
994 ; in template non-type arguments of pointer type.
996 ; 4: The version of the ABI that introduces unambiguous mangling of
997 ; vector types. First selectable in G++ 4.5.
999 ; 5: The version of the ABI that ignores attribute const/noreturn
1000 ; in function pointer mangling, and corrects mangling of decltype and
1001 ; function parameters used in other parameters and the return type.
1002 ; First selectable in G++ 4.6.
1004 ; 6: The version of the ABI that doesn't promote scoped enums to int and
1005 ; changes the mangling of template argument packs, const/static_cast,
1006 ; prefix ++ and --, and a class scope function used as a template
1008 ; First selectable in G++ 4.7.
1010 ; 7: The version of the ABI that treats nullptr_t as a builtin type and
1011 ; corrects the mangling of lambdas in default argument scope.
1012 ; First selectable in G++ 4.8.
1014 ; 8: The version of the ABI that corrects the substitution behavior of
1015 ; function types with function-cv-qualifiers.
1016 ; First selectable in G++ 4.9 and default in G++ 5.
1018 ; 9: The version of the ABI that corrects the alignment of nullptr_t.
1019 ; First selectable and default in G++ 5.2.
1021 ; 10: The version of the ABI that mangles attributes that affect type
1022 ; identity, such as ia32 calling convention attributes (stdcall, etc.)
1023 ; Default in G++ 6 (set in c_common_post_options).
1025 ; 11: The version of the ABI that corrects mangling of sizeof... expressions
1026 ; and introduces new inheriting constructor handling.
1029 ; 12: Corrects the calling convention for classes with only deleted copy/move
1030 ; constructors and changes passing/returning of empty records.
1031 ; Default in G++ 8.1.
1033 ; 13: Fixes the accidental change in 12 to the calling convention for classes
1034 ; with deleted copy constructor and trivial move constructor.
1035 ; Default in G++ 8.2.
1037 ; 14: Corrects the mangling of nullptr expression.
1038 ; Default in G++ 10.
1040 ; 15: Corrects G++ 10 ABI tag regression [PR98481].
1041 ; Available, but not default, in G++ 10.3.
1043 ; 16: Changes the mangling of __alignof__ to be distinct from that of alignof.
1044 ; Adds missing 'on' in mangling of operator names in some cases.
1045 ; Default in G++ 11.
1047 ; 17: Fixes layout of classes that inherit from aggregate classes with default
1048 ; member initializers in C++14 and up.
1049 ; Default in G++ 12.
1051 ; 18: Corrects errors in mangling of lambdas with additional context.
1052 ; Default in G++ 13.
1054 ; 19: Emits ABI tags if needed in structured binding mangled names.
1055 ; Ignores cv-quals on [[no_unique_address]] members.
1056 ; Mangles constraints on function templates.
1057 ; Default in G++ 14.
1059 ; 20: Fix mangling of lambdas in static data member initializers.
1060 ; Default in G++ 15.
1062 ; 21: Fix noexcept lambda capture pruning.
1063 ; Fix C++20 layout of base with all explicitly defaulted constructors.
1064 ; Default in G++ 16.
1066 ; Additional positive integers will be assigned as new versions of
1067 ; the ABI become the default version of the ABI.
1069 Common Joined RejectNegative UInteger Var(flag_abi_version) Init(0)
1070 The version of the C++ ABI in use.
1072 faggressive-loop-optimizations
1073 Common Var(flag_aggressive_loop_optimizations) Optimization Init(1)
1074 Aggressively optimize loops using language constraints.
1077 Common Var(flag_align_functions) Optimization
1078 Align the start of functions.
1081 Common RejectNegative Joined Var(str_align_functions) Optimization
1084 Common Var(flag_align_jumps) Optimization
1085 Align labels which are only reached by jumping.
1088 Common RejectNegative Joined Var(str_align_jumps) Optimization
1091 Common Var(flag_align_labels) Optimization
1095 Common RejectNegative Joined Var(str_align_labels) Optimization
1098 Common Var(flag_align_loops) Optimization
1099 Align the start of loops.
1102 Common RejectNegative Joined Var(str_align_loops) Optimization
1104 fallow-store-data-races
1105 Common Var(flag_store_data_races) Optimization
1106 Allow the compiler to introduce new data races on stores.
1109 Common Var(flag_analyzer)
1110 Enable static analysis pass.
1114 Does nothing. Preserved for backward compatibility.
1118 Does nothing. Preserved for backward compatibility.
1120 fargument-noalias-global
1122 Does nothing. Preserved for backward compatibility.
1124 fargument-noalias-anything
1126 Does nothing. Preserved for backward compatibility.
1129 Common Driver Joined
1130 Select what to sanitize.
1133 Common Joined Enum(sanitize_coverage) Var(flag_sanitize_coverage) EnumBitSet
1134 Select type of coverage sanitization.
1137 Name(sanitize_coverage) Type(int)
1140 Enum(sanitize_coverage) String(trace-pc) Value(SANITIZE_COV_TRACE_PC)
1143 Enum(sanitize_coverage) String(trace-cmp) Value(SANITIZE_COV_TRACE_CMP)
1145 fasan-shadow-offset=
1146 Common Joined RejectNegative Var(common_deferred_options) Defer
1147 -fasan-shadow-offset=<number> Use custom shadow memory offset.
1150 Common Joined RejectNegative Var(common_deferred_options) Defer
1151 -fsanitize-sections=<sec1,sec2,...> Sanitize global variables
1152 in user-defined sections.
1156 After diagnosing undefined behavior attempt to continue execution.
1160 This switch is deprecated; use -fsanitize-recover= instead.
1163 Common Driver Joined
1164 Use traps instead of diagnostics of undefined behavior sanitizers.
1169 fsanitize-address-use-after-scope
1170 Common Driver Var(flag_sanitize_address_use_after_scope) Init(0)
1172 fsanitize-undefined-trap-on-error
1173 Common Driver Alias(fsanitize-trap)
1174 This switch is deprecated; use -fsanitize-trap= instead.
1176 fasynchronous-unwind-tables
1177 Common Var(flag_asynchronous_unwind_tables) Optimization
1178 Generate unwind tables that are exact at each instruction boundary.
1181 Common Var(flag_auto_inc_dec) Init(1) Optimization
1182 Generate auto-inc/dec instructions.
1185 Common Var(flag_auto_profile)
1186 Use sample profile information for call graph node weights. The default
1187 profile file is fbdata.afdo in 'pwd'.
1190 Common Joined RejectNegative Var(auto_profile_file)
1191 Use sample profile information for call graph node weights. The profile
1192 file is specified in the argument.
1194 fauto-profile-inlining
1195 Common Var(flag_auto_profile_inlining) Init(1) Optimization
1196 Perform inlining using auto-profile.
1198 ; -fcheck-bounds causes gcc to generate array bounds checks.
1199 ; For C, C++ and ObjC: defaults off.
1200 ; For Java: defaults to on.
1201 ; For Fortran: defaults to off.
1203 Common Var(flag_bounds_check)
1204 Generate code to check bounds before indexing arrays.
1207 Common Var(flag_branch_on_count_reg) Optimization
1208 Replace add, compare, branch with branch on count register.
1210 fbranch-probabilities
1211 Common Var(flag_branch_probabilities) Optimization
1212 Use profiling information for branch probabilities.
1214 fbranch-target-load-optimize
1216 Does nothing. Preserved for backward compatibility.
1218 fbranch-target-load-optimize2
1220 Does nothing. Preserved for backward compatibility.
1224 Does nothing. Preserved for backward compatibility.
1227 Common RejectNegative Var(flag_callgraph_info) Init(NO_CALLGRAPH_INFO);
1228 Output callgraph information on a per-file basis.
1231 Common RejectNegative Joined
1232 Output callgraph information on a per-file basis with decorations.
1235 Common Joined RejectNegative Var(common_deferred_options) Defer
1236 -fcall-saved-<register> Mark <register> as being preserved across functions.
1239 Common Joined RejectNegative Var(common_deferred_options) Defer
1240 -fcall-used-<register> Mark <register> as being corrupted by function calls.
1242 ; Nonzero for -fcaller-saves: allocate values in regs that need to
1243 ; be saved across function calls, if that produces overall better code.
1244 ; Optional now, so people can test it.
1246 Common Var(flag_caller_saves) Optimization
1247 Save registers around function calls.
1251 This switch is deprecated; do not use.
1254 Common Var(flag_check_new)
1255 Check the return value of new in C++.
1258 Common Var(flag_checking) Init(CHECKING_P ? ENABLE_EXTRA_CHECKING ? 2 : 1 : 0)
1259 Perform internal consistency checkings.
1262 Common Joined RejectNegative UInteger Var(flag_checking)
1263 Perform internal consistency checkings.
1266 Common Var(common_deferred_options) Defer
1267 For -f*-prefix-map= options compare canonicalized pathnames rather than just strings.
1270 Common Var(flag_code_hoisting) Optimization
1271 Enable code hoisting.
1273 fcombine-stack-adjustments
1274 Common Var(flag_combine_stack_adjustments) Optimization
1275 Looks for opportunities to reduce stack adjustments and stack references.
1278 Common Var(flag_no_common,0) Init(1)
1279 Put uninitialized globals in the common section.
1283 ; Converted by the driver to -fcompare-debug= options.
1286 Common Driver JoinedOrMissing RejectNegative Var(flag_compare_debug_opt)
1287 -fcompare-debug[=<opts>] Compile with and without e.g. -gtoggle, and compare the final-insns dump.
1289 fcompare-debug-second
1290 Common Driver RejectNegative Var(flag_compare_debug)
1291 Run only the second compilation of -fcompare-debug.
1294 Common Var(flag_compare_elim_after_reload) Optimization
1295 Perform comparison elimination after register allocation has finished.
1298 Common Var(flag_conserve_stack) Optimization
1299 Do not perform optimizations increasing noticeably stack usage.
1302 Common Var(flag_cprop_registers) Optimization
1303 Perform a register copy-propagation optimization pass.
1306 Common Var(flag_fold_mem_offsets) Init(1) Optimization
1307 Fold instructions calculating memory offsets to the memory access instruction if possible.
1310 Common Var(flag_crossjumping) Optimization
1311 Perform cross-jumping optimization.
1314 Common Var(flag_cse_follow_jumps) Optimization
1315 When running CSE, follow jumps to their targets.
1319 Does nothing. Preserved for backward compatibility.
1322 Common Joined RejectNegative Enum(complex_method) Var(flag_complex_method) Optimization SetByCombined
1325 Name(complex_method) Type(int)
1327 ; straightforward implementation of complex divide acceptable.
1329 Enum(complex_method) String(limited-range) Value(0)
1331 ; wide ranges of inputs must work for complex divide.
1333 Enum(complex_method) String(fortran) Value(1)
1335 ; C99-like requirements for complex multiply and divide.
1337 Enum(complex_method) String(stdc) Value(2)
1340 Common Alias(fcx-method=,limited-range,stdc)
1341 Omit range reduction step when performing complex division.
1344 Common Alias(fcx-method=,fortran,stdc)
1345 Complex multiplication and division follow Fortran rules.
1348 Common Var(flag_data_sections)
1349 Place data items into their own section.
1352 Common Var(flag_dbg_cnt_list)
1353 List all available debugging counters with their limits and counts.
1356 Common RejectNegative Joined Var(common_deferred_options) Defer
1357 -fdbg-cnt=<counter>[:<lower_limit1>-]<upper_limit1>[:<lower_limit2>-<upper_limit2>:...][,<counter>:...] Set the debug counter limit.
1360 Common Joined RejectNegative Var(common_deferred_options) Defer
1361 -fdebug-prefix-map=<old>=<new> Map one directory name to another in debug information.
1364 Common Joined RejectNegative Var(common_deferred_options) Defer
1365 -ffile-prefix-map=<old>=<new> Map one directory name to another in compilation result.
1367 fdebug-types-section
1368 Common Var(flag_debug_types_section) Init(0)
1369 Output .debug_types section when using DWARF v4 debuginfo.
1371 ; Nonzero for -fdefer-pop: don't pop args after each function call
1372 ; instead save them up to pop many calls' args with one insns.
1374 Common Var(flag_defer_pop) Optimization
1375 Defer popping functions args from stack until later.
1378 Common Var(flag_delayed_branch) Optimization
1379 Attempt to fill delay slots of branch instructions.
1381 fdelete-dead-exceptions
1382 Common Var(flag_delete_dead_exceptions) Init(0) Optimization
1383 Delete dead instructions that may throw exceptions.
1385 fdelete-null-pointer-checks
1386 Common Var(flag_delete_null_pointer_checks) Init(-1) Optimization
1387 Delete useless null pointer checks.
1389 fdevirtualize-at-ltrans
1390 Common Var(flag_ltrans_devirtualize)
1391 Stream extra data to support more aggressive devirtualization in LTO local transformation mode.
1393 fdevirtualize-speculatively
1394 Common Var(flag_devirtualize_speculatively) Optimization
1395 Perform speculative devirtualization.
1398 Common Var(flag_devirtualize) Optimization
1399 Try to convert virtual calls to direct ones.
1401 fdiagnostics-show-location=
1402 Common Joined RejectNegative Enum(diagnostic_prefixing_rule)
1403 -fdiagnostics-show-location=[once|every-line] How often to emit source location at the beginning of line-wrapped diagnostics.
1405 ; Required for these enum values.
1410 Name(diagnostic_prefixing_rule) Type(int)
1413 Enum(diagnostic_prefixing_rule) String(once) Value(DIAGNOSTICS_SHOW_PREFIX_ONCE)
1416 Enum(diagnostic_prefixing_rule) String(every-line) Value(DIAGNOSTICS_SHOW_PREFIX_EVERY_LINE)
1418 fdiagnostics-show-caret
1419 Common Var(flag_diagnostics_show_caret) Init(1)
1420 Show the source line with a caret indicating the column.
1422 fdiagnostics-show-event-links
1423 Common Var(flag_diagnostics_show_event_links) Init(1)
1424 Show lines linking related events in diagnostic paths.
1426 fdiagnostics-show-labels
1427 Common Var(flag_diagnostics_show_labels) Init(1)
1428 Show labels annotating ranges of source code when showing source.
1430 fdiagnostics-show-line-numbers
1431 Common Var(flag_diagnostics_show_line_numbers) Init(1)
1432 Show line numbers in the left margin when showing source.
1435 Common Alias(fdiagnostics-color=,always,never)
1439 Driver Common Joined RejectNegative Var(flag_diagnostics_show_color) Enum(diagnostic_color_rule) Init(DIAGNOSTICS_COLOR_NO)
1440 -fdiagnostics-color=[never|always|auto] Colorize diagnostics.
1442 ; Required for these enum values.
1447 Name(diagnostic_color_rule) Type(int)
1450 Enum(diagnostic_color_rule) String(never) Value(DIAGNOSTICS_COLOR_NO)
1453 Enum(diagnostic_color_rule) String(always) Value(DIAGNOSTICS_COLOR_YES)
1456 Enum(diagnostic_color_rule) String(auto) Value(DIAGNOSTICS_COLOR_AUTO)
1458 fdiagnostics-json-formatting
1459 Common Var(flag_diagnostics_json_formatting) Init(1)
1460 Enable formatting of JSON output.
1463 Driver Common Joined RejectNegative Var(flag_diagnostics_show_urls) Enum(diagnostic_url_rule) Init(DIAGNOSTICS_URL_AUTO)
1464 -fdiagnostics-urls=[never|always|auto] Embed URLs in diagnostics.
1466 ; Required for these enum values.
1471 Name(diagnostic_url_rule) Type(int)
1474 Enum(diagnostic_url_rule) String(never) Value(DIAGNOSTICS_URL_NO)
1477 Enum(diagnostic_url_rule) String(always) Value(DIAGNOSTICS_URL_YES)
1480 Enum(diagnostic_url_rule) String(auto) Value(DIAGNOSTICS_URL_AUTO)
1482 fdiagnostics-column-unit=
1483 Common Joined RejectNegative Enum(diagnostics_column_unit)
1484 -fdiagnostics-column-unit=[display|byte] Select whether column numbers are output as display columns (default) or raw bytes.
1486 fdiagnostics-column-origin=
1487 Common Joined RejectNegative UInteger
1488 -fdiagnostics-column-origin=<number> Set the number of the first column. The default is 1-based as per GNU style, but some utilities may expect 0-based, for example.
1490 fdiagnostics-format=
1491 Common Joined RejectNegative Enum(diagnostics_output_format)
1492 -fdiagnostics-format=[text|sarif-stderr|sarif-file] Select output format.
1494 fdiagnostics-add-output=
1495 Common Joined RejectNegative
1498 fdiagnostics-set-output=
1499 Common Joined RejectNegative
1502 fdiagnostics-escape-format=
1503 Common Joined RejectNegative Enum(diagnostics_escape_format)
1504 -fdiagnostics-escape-format=[unicode|bytes] Select how to escape non-printable-ASCII bytes in the source for diagnostics that suggest it.
1506 ; Required for these enum values.
1511 Name(diagnostics_column_unit) Type(int)
1514 Enum(diagnostics_column_unit) String(display) Value(DIAGNOSTICS_COLUMN_UNIT_DISPLAY)
1517 Enum(diagnostics_column_unit) String(byte) Value(DIAGNOSTICS_COLUMN_UNIT_BYTE)
1520 Name(diagnostics_escape_format) Type(int)
1523 Enum(diagnostics_escape_format) String(unicode) Value(DIAGNOSTICS_ESCAPE_FORMAT_UNICODE)
1526 Enum(diagnostics_escape_format) String(bytes) Value(DIAGNOSTICS_ESCAPE_FORMAT_BYTES)
1529 Name(diagnostics_output_format) Type(int)
1532 Enum(diagnostics_output_format) String(text) Value(DIAGNOSTICS_OUTPUT_FORMAT_TEXT)
1535 Enum(diagnostics_output_format) String(sarif-stderr) Value(DIAGNOSTICS_OUTPUT_FORMAT_SARIF_STDERR)
1538 Enum(diagnostics_output_format) String(sarif-file) Value(DIAGNOSTICS_OUTPUT_FORMAT_SARIF_FILE)
1540 fdiagnostics-parseable-fixits
1541 Common Var(flag_diagnostics_parseable_fixits)
1542 Print fix-it hints in machine-readable form.
1544 fdiagnostics-generate-patch
1545 Common Var(flag_diagnostics_generate_patch)
1546 Print fix-it hints to stderr in unified diff format.
1548 fdiagnostics-show-option
1549 Common Var(flag_diagnostics_show_option) Init(1)
1550 Amend appropriate diagnostic messages with the command line option that controls them.
1552 fdiagnostics-show-cwe
1553 Common Var(flag_diagnostics_show_cwe) Init(1)
1554 Print CWE identifiers for diagnostic messages, where available.
1556 fdiagnostics-show-rules
1557 Common Var(flag_diagnostics_show_rules) Init(1)
1558 Print any rules associated with diagnostic messages.
1560 fdiagnostics-show-highlight-colors
1561 Common Var(flag_diagnostics_show_highlight_colors) Init(1)
1562 Use color within diagnostic messages to highlight pertinent information.
1564 fdiagnostics-path-format=
1565 Common Joined RejectNegative Var(flag_diagnostics_path_format) Enum(diagnostic_path_format) Init(DPF_INLINE_EVENTS)
1566 Specify how to print any control-flow path associated with a diagnostic.
1568 fdiagnostics-plain-output
1569 Driver Common RejectNegative
1570 Turn off any diagnostics features that complicate the output, such as line numbers, color, and warning URLs.
1573 Common Joined RejectNegative UInteger
1574 -ftabstop=<number> Distance between tab stops for column reporting.
1577 Name(diagnostic_path_format) Type(int)
1580 Enum(diagnostic_path_format) String(none) Value(DPF_NONE)
1583 Enum(diagnostic_path_format) String(separate-events) Value(DPF_SEPARATE_EVENTS)
1586 Enum(diagnostic_path_format) String(inline-events) Value(DPF_INLINE_EVENTS)
1588 fdiagnostics-show-path-depths
1589 Common Var(flag_diagnostics_show_path_depths) Init(0)
1590 Show stack depths of events in paths.
1592 fdiagnostics-text-art-charset=
1593 Driver Common Joined RejectNegative Var(flag_diagnostics_text_art_charset) Enum(diagnostic_text_art_charset) Init(DIAGNOSTICS_TEXT_ART_CHARSET_EMOJI)
1594 -fdiagnostics-text-art-charset=[none|ascii|unicode|emoji] Determine which characters to use in text arg diagrams.
1597 Name(diagnostic_text_art_charset) Type(int)
1600 Enum(diagnostic_text_art_charset) String(none) Value(DIAGNOSTICS_TEXT_ART_CHARSET_NONE)
1603 Enum(diagnostic_text_art_charset) String(ascii) Value(DIAGNOSTICS_TEXT_ART_CHARSET_ASCII)
1606 Enum(diagnostic_text_art_charset) String(unicode) Value(DIAGNOSTICS_TEXT_ART_CHARSET_UNICODE)
1609 Enum(diagnostic_text_art_charset) String(emoji) Value(DIAGNOSTICS_TEXT_ART_CHARSET_EMOJI)
1611 fdiagnostics-minimum-margin-width=
1612 Common Joined UInteger Var(diagnostics_minimum_margin_width) Init(6)
1613 Set minimum width of left margin of source code when showing source.
1616 Common Joined RejectNegative Var(common_deferred_options) Defer
1617 -fdisable-[tree|rtl|ipa]-<pass>=range1+range2 Disable an optimization pass.
1620 Common Joined RejectNegative Var(common_deferred_options) Defer
1621 -fenable-[tree|rtl|ipa]-<pass>=range1+range2 Enable an optimization pass.
1624 Common Joined RejectNegative Var(common_deferred_options) Defer
1625 -fdump-<type> Dump various compiler internals to a file.
1628 Driver RejectNegative
1631 Common RejectNegative Joined Var(flag_dump_final_insns)
1632 -fdump-final-insns=filename Dump to filename the insns at the end of translation.
1635 Common RejectNegative Joined Var(flag_dump_go_spec)
1636 -fdump-go-spec=filename Write all declarations to file as Go code.
1639 Common Var(flag_dump_noaddr)
1640 Suppress output of addresses in debugging dumps.
1643 Common Driver Var(flag_report_bug)
1644 Collect and dump debug information into temporary file if ICE in C/C++
1647 fdump-internal-locations
1648 Common Var(flag_dump_locations) Init(0)
1649 Dump detailed information on GCC's internal representation of source code locations.
1652 Common Var(flag_dump_passes) Init(0)
1653 Dump optimization passes.
1656 Common Var(flag_dump_unnumbered)
1657 Suppress output of instruction numbers, line number notes and addresses in debugging dumps.
1659 fdump-unnumbered-links
1660 Common Var(flag_dump_unnumbered_links)
1661 Suppress output of previous and next insn numbers in debugging dumps.
1664 Common Var(flag_dwarf2_cfi_asm) Init(HAVE_GAS_CFI_DIRECTIVE)
1665 Enable CFI tables via GAS assembler directives.
1668 Common Var(flag_early_inlining) Init(1) Optimization
1669 Perform early inlining.
1671 feliminate-dwarf2-dups
1673 Does nothing. Preserved for backward compatibility.
1676 Common Var(flag_ipa_sra) Init(0) Optimization
1677 Perform interprocedural reduction of aggregates.
1679 feliminate-unused-debug-symbols
1680 Common Var(flag_debug_only_used_symbols) Init(1)
1681 Perform unused symbol elimination in debug info.
1683 feliminate-unused-debug-types
1684 Common Var(flag_eliminate_unused_debug_types) Init(1)
1685 Perform unused type elimination in debug info.
1687 femit-class-debug-always
1688 Common Var(flag_emit_class_debug_always) Init(0)
1689 Do not suppress C++ class debug information.
1692 Common Var(flag_exceptions) Optimization EnabledBy(fnon-call-exceptions)
1693 Enable exception handling.
1695 fexpensive-optimizations
1696 Common Var(flag_expensive_optimizations) Optimization
1697 Perform a number of minor, expensive optimizations.
1700 Common Joined RejectNegative Enum(excess_precision) Var(flag_excess_precision) Init(EXCESS_PRECISION_DEFAULT) Optimization SetByCombined
1701 -fexcess-precision=[fast|standard|16] Specify handling of excess floating-point precision.
1704 Name(excess_precision) Type(enum excess_precision) UnknownError(unknown excess precision style %qs)
1707 Enum(excess_precision) String(fast) Value(EXCESS_PRECISION_FAST)
1710 Enum(excess_precision) String(standard) Value(EXCESS_PRECISION_STANDARD)
1713 Enum(excess_precision) String(16) Value(EXCESS_PRECISION_FLOAT16)
1715 ; Whether we permit the extended set of values for FLT_EVAL_METHOD
1716 ; introduced in ISO/IEC TS 18661-3, or limit ourselves to those in C99/C11.
1717 fpermitted-flt-eval-methods=
1718 Common Joined RejectNegative Enum(permitted_flt_eval_methods) Var(flag_permitted_flt_eval_methods) Init(PERMITTED_FLT_EVAL_METHODS_DEFAULT)
1719 -fpermitted-flt-eval-methods=[c11|ts-18661] Specify which values of FLT_EVAL_METHOD are permitted.
1722 Name(permitted_flt_eval_methods) Type(enum permitted_flt_eval_methods) UnknownError(unknown specification for the set of FLT_EVAL_METHOD values to permit %qs)
1725 Enum(permitted_flt_eval_methods) String(c11) Value(PERMITTED_FLT_EVAL_METHODS_C11)
1728 Enum(permitted_flt_eval_methods) String(ts-18661-3) Value(PERMITTED_FLT_EVAL_METHODS_TS_18661)
1734 Common Var(flag_fat_lto_objects)
1735 Output lto objects containing both the intermediate language and binary output.
1738 Common Var(flag_finite_math_only) Optimization SetByCombined
1739 Assume no NaNs or infinities are generated.
1742 Common Var(flag_finite_loops) Optimization Init(0)
1743 Assume that loops with an exit will terminate and not loop indefinitely.
1746 Common Joined RejectNegative Var(common_deferred_options) Defer
1747 -ffixed-<register> Mark <register> as being unavailable to the compiler.
1750 Common Var(flag_float_store) Optimization
1751 Don't allocate floats and doubles in extended-precision registers.
1755 Does nothing. Preserved for backward compatibility.
1758 Common Var(flag_forward_propagate) Optimization
1759 Perform a forward propagation pass on RTL.
1762 Common Joined RejectNegative Enum(fp_contract_mode) Var(flag_fp_contract_mode) Init(FP_CONTRACT_FAST) Optimization
1763 -ffp-contract=[off|on|fast] Perform floating-point expression contraction.
1766 Name(fp_contract_mode) Type(enum fp_contract_mode) UnknownError(unknown floating point contraction style %qs)
1769 Enum(fp_contract_mode) String(off) Value(FP_CONTRACT_OFF)
1772 Enum(fp_contract_mode) String(on) Value(FP_CONTRACT_ON)
1775 Enum(fp_contract_mode) String(fast) Value(FP_CONTRACT_FAST)
1777 ffp-int-builtin-inexact
1778 Common Var(flag_fp_int_builtin_inexact) Init(1) Optimization
1779 Allow built-in functions ceil, floor, round, trunc to raise \"inexact\" exceptions.
1781 ; Nonzero means don't put addresses of constant functions in registers.
1782 ; Used for compiling the Unix kernel, where strange substitutions are
1783 ; done on the assembly output.
1785 Common Var(flag_no_function_cse,0) Optimization
1786 Allow function addresses to be held in registers.
1789 Common Var(flag_function_sections)
1790 Place each function into its own section.
1793 Common Var(flag_gcse) Optimization
1794 Perform global common subexpression elimination.
1797 Common Var(flag_gcse_lm) Init(1) Optimization
1798 Perform enhanced load motion during global common subexpression elimination.
1801 Common Var(flag_gcse_sm) Init(0) Optimization
1802 Perform store motion after global common subexpression elimination.
1804 favoid-store-forwarding
1805 Common Var(flag_avoid_store_forwarding) Init(0) Optimization
1806 Try to avoid store forwarding.
1809 Common Var(flag_gcse_las) Init(0) Optimization
1810 Perform redundant load after store elimination in global common subexpression
1814 Common Var(flag_gcse_after_reload) Optimization
1815 Perform global common subexpression elimination after register allocation has
1819 Name(dwarf_gnat_encodings) Type(int)
1822 Enum(dwarf_gnat_encodings) String(all) Value(DWARF_GNAT_ENCODINGS_ALL)
1825 Enum(dwarf_gnat_encodings) String(gdb) Value(DWARF_GNAT_ENCODINGS_GDB)
1828 Enum(dwarf_gnat_encodings) String(minimal) Value(DWARF_GNAT_ENCODINGS_MINIMAL)
1831 Common Enum(dwarf_gnat_encodings) Joined RejectNegative Undocumented Var(gnat_encodings)
1832 -fgnat-encodings=[all|gdb|minimal] Select the balance between GNAT encodings and standard DWARF emitted in the debug information.
1834 ; This option is not documented yet as its semantics will change.
1836 Common Var(flag_graphite) Optimization
1837 Enable in and out of Graphite representation.
1840 Common Var(flag_graphite_identity) Optimization
1841 Enable Graphite Identity transformation.
1843 fhoist-adjacent-loads
1844 Common Var(flag_hoist_adjacent_loads) Optimization
1845 Enable hoisting adjacent loads to encourage generating conditional move
1849 Common Undocumented Var(flag_keep_gc_roots_live) Optimization
1850 ; Always keep a pointer to a live memory block
1854 Does nothing. Preserved for backward compatibility.
1856 flate-combine-instructions
1857 Common Var(flag_late_combine_instructions) Optimization Init(0)
1858 Run two instruction combination passes late in the pass pipeline;
1859 one before register allocation and one after.
1861 floop-parallelize-all
1862 Common Var(flag_loop_parallelize_all) Optimization
1863 Mark all loops as parallel.
1866 Common Alias(floop-nest-optimize)
1867 Enable loop nest transforms. Same as -floop-nest-optimize.
1870 Common Var(flag_loop_interchange) Optimization
1871 Enable loop interchange on trees.
1874 Common Alias(floop-nest-optimize)
1875 Enable loop nest transforms. Same as -floop-nest-optimize.
1877 floop-unroll-and-jam
1878 Common Var(flag_unroll_jam) Optimization
1879 Perform unroll-and-jam on loops.
1883 Enable support for GNU transactional memory.
1886 Common Var(flag_gnu_unique) Init(1)
1887 Use STB_GNU_UNIQUE if supported by the assembler.
1891 Does nothing. Preserved for backward compatibility.
1894 Common Var(flag_loop_nest_optimize) Optimization
1895 Enable the loop nest optimizer.
1897 fstrict-volatile-bitfields
1898 Common Var(flag_strict_volatile_bitfields) Init(-1) Optimization
1899 Force bitfield accesses to match their type width.
1902 Common Var(flag_store_merging) Optimization
1903 Merge adjacent stores.
1905 fguess-branch-probability
1906 Common Var(flag_guess_branch_prob) Optimization
1907 Enable guessing of branch probabilities.
1910 Common Driver Var(flag_hardened)
1911 Enable various security-relevant flags.
1914 Common Var(flag_harden_compares) Optimization
1915 Harden conditionals not used in branches, checking reversed conditions.
1917 fharden-conditional-branches
1918 Common Var(flag_harden_conditional_branches) Optimization
1919 Harden conditional branches by checking reversed conditions.
1921 fharden-control-flow-redundancy
1922 Common Var(flag_harden_control_flow_redundancy) Optimization
1923 Harden control flow by recording and checking execution paths.
1926 Common Var(flag_harden_control_flow_redundancy_skip_leaf) Optimization
1927 Disable CFR in leaf functions.
1929 fhardcfr-check-returning-calls
1930 Common Var(flag_harden_control_flow_redundancy_check_returning_calls) Init(-1) Optimization
1931 Check CFR execution paths also before calls followed by returns of their results.
1933 fhardcfr-check-exceptions
1934 Common Var(flag_harden_control_flow_redundancy_check_exceptions) Init(-1) Optimization
1935 Check CFR execution paths also when exiting a function through an exception.
1937 fhardcfr-check-noreturn-calls=
1938 Common Joined RejectNegative Enum(hardcfr_check_noreturn_calls) Var(flag_harden_control_flow_redundancy_check_noreturn) Init(HCFRNR_UNSPECIFIED) Optimization
1939 -fhardcfr-check-noreturn-calls=[always|no-xthrow|nothrow|never] Check CFR execution paths also before calling noreturn functions.
1942 Name(hardcfr_check_noreturn_calls) Type(enum hardcfr_noret) UnknownError(unknown hardcfr noreturn checking level %qs)
1945 Enum(hardcfr_check_noreturn_calls) String(never) Value(HCFRNR_NEVER)
1948 Enum(hardcfr_check_noreturn_calls) String(nothrow) Value(HCFRNR_NOTHROW)
1951 Enum(hardcfr_check_noreturn_calls) String(no-xthrow) Value(HCFRNR_NO_XTHROW)
1954 Enum(hardcfr_check_noreturn_calls) String(always) Value(HCFRNR_ALWAYS)
1956 ; Nonzero means ignore `#ident' directives. 0 means handle them.
1957 ; Generate position-independent code for executables if possible
1958 ; On SVR4 targets, it also controls whether or not to emit a
1959 ; string identifying the compiler.
1961 Common Var(flag_no_ident,0)
1962 Process #ident directives.
1965 Common Var(flag_if_conversion) Optimization
1966 Perform conversion of conditional jumps to branchless equivalents.
1969 Common Var(flag_if_conversion2) Optimization
1970 Perform conversion of conditional jumps to conditional execution.
1973 Common Joined RejectNegative Enum(stack_reuse_level) Var(flag_stack_reuse) Init(SR_ALL) Optimization
1974 -fstack-reuse=[all|named_vars|none] Set stack reuse level for local variables.
1977 Name(stack_reuse_level) Type(enum stack_reuse_level) UnknownError(unknown Stack Reuse Level %qs)
1980 Enum(stack_reuse_level) String(all) Value(SR_ALL)
1983 Enum(stack_reuse_level) String(named_vars) Value(SR_NAMED_VARS)
1986 Enum(stack_reuse_level) String(none) Value(SR_NONE)
1988 ftree-loop-if-convert
1989 Common Var(flag_tree_loop_if_convert) Init(-1) Optimization
1990 Convert conditional jumps in innermost loops to branchless equivalents.
1992 ftree-loop-if-convert-stores
1994 Does nothing. Preserved for backward compatibility.
1996 ; -finhibit-size-directive inhibits output of .size for ELF.
1997 ; This is used only for compiling crtstuff.c,
1998 ; and it may be extended to other effects
1999 ; needed for crtstuff.c on other systems.
2000 finhibit-size-directive
2001 Common Var(flag_inhibit_size_directive)
2002 Do not generate .size directives.
2005 Common Var(flag_indirect_inlining) Optimization
2006 Perform indirect inlining.
2008 ; General flag to enable inlining. Specifying -fno-inline will disable
2009 ; all inlining apart from always-inline functions.
2011 Common Var(flag_no_inline,0) Init(0) Optimization
2012 Enable inlining of function declared \"inline\", disabling disables all inlining.
2014 finline-small-functions
2015 Common Var(flag_inline_small_functions) Optimization
2016 Integrate functions into their callers when code size is known not to grow.
2019 Common Var(flag_inline_functions) Optimization
2020 Integrate functions not declared \"inline\" into their callers when profitable.
2022 finline-functions-called-once
2023 Common Var(flag_inline_functions_called_once) Optimization
2024 Integrate functions only required by their single caller.
2027 Common RejectNegative Joined Alias(finline-limit=)
2030 Common RejectNegative Joined UInteger
2031 -finline-limit=<number> Limit the size of inlined functions to <number>.
2034 Common Var(flag_inline_atomics) Init(1) Optimization
2035 Inline __atomic operations when a lock free instruction sequence is available.
2038 Common RejectNegative Enum(ilsop_fn) Var(flag_inline_stringops, ILSOP_ALL) Enum(ilsop_fn) Init(ILSOP_NONE) Optimization Undocumented
2040 fno-inline-stringops
2041 Common RejectNegative Enum(ilsop_fn) Var(flag_inline_stringops, ILSOP_NONE) Enum(ilsop_fn) Optimization Undocumented
2044 Common Joined Var(flag_inline_stringops) EnumSet Enum(ilsop_fn) Optimization
2045 -finline-stringops[=memcmp|memcpy|memmove|memset]
2046 Expand supported mem/str operations inline, even if against optimization.
2049 Name(ilsop_fn) Type(enum ilsop_fn) UnknownError(unavailable stringop for inlining %qs)
2051 ; This is not part of any set.
2053 ; Enum(ilsop_fn) String(none) Value(ILSOP_NONE)
2056 Enum(ilsop_fn) String(memcmp) Value(ILSOP_MEMCMP) Set(1)
2059 Enum(ilsop_fn) String(memcpy) Value(ILSOP_MEMCPY) Set(2)
2062 Enum(ilsop_fn) String(memmove) Value(ILSOP_MEMMOVE) Set(3)
2065 Enum(ilsop_fn) String(memset) Value(ILSOP_MEMSET) Set(4)
2067 ; This is not part of any set either.
2069 ; Enum(ilsop_fn) String(all) Value(ILSOP_ALL)
2072 Common RejectNegative Alias(fcf-protection=,full)
2073 Equivalent to -fcf-protection=full.
2076 Common Joined RejectNegative Enum(cf_protection_level) EnumSet Var(flag_cf_protection) Init(CF_NONE)
2077 -fcf-protection=[full|branch|return|none|check] Instrument functions with checks to verify jump/call/return control-flow transfer
2078 instructions have valid targets.
2081 Name(cf_protection_level) Type(enum cf_protection_level) UnknownError(unknown Control-Flow Protection Level %qs)
2084 Enum(cf_protection_level) String(full) Value(CF_FULL) Set(1)
2087 Enum(cf_protection_level) String(branch) Value(CF_BRANCH) Set(2)
2090 Enum(cf_protection_level) String(return) Value(CF_RETURN) Set(3)
2093 Enum(cf_protection_level) String(check) Value(CF_CHECK) Set(4)
2096 Enum(cf_protection_level) String(none) Value(CF_NONE) Set(1)
2098 finstrument-functions
2099 Common Var(flag_instrument_function_entry_exit,1)
2100 Instrument function entry and exit with profiling calls.
2102 finstrument-functions-once
2103 Common Var(flag_instrument_function_entry_exit,2)
2104 Instrument function entry and exit with profiling calls invoked once.
2106 finstrument-functions-exclude-function-list=
2107 Common RejectNegative Joined
2108 -finstrument-functions-exclude-function-list=name,... Do not instrument listed functions.
2110 finstrument-functions-exclude-file-list=
2111 Common RejectNegative Joined
2112 -finstrument-functions-exclude-file-list=filename,... Do not instrument functions listed in files.
2115 Common Var(flag_ipa_cp) Optimization
2116 Perform interprocedural constant propagation.
2119 Common Var(flag_ipa_cp_clone) Optimization
2120 Perform cloning to make Interprocedural constant propagation stronger.
2124 Does nothing. Preserved for backward compatibility.
2127 Common Var(flag_ipa_bit_cp) Optimization
2128 Perform interprocedural bitwise constant propagation.
2131 Common Var(flag_ipa_modref) Optimization
2132 Perform interprocedural modref analysis.
2134 fipa-reorder-for-locality
2135 Common Var(flag_ipa_reorder_for_locality) Init(0) Optimization
2136 Perform reordering and cloning of functions to maximize locality.
2139 Common Var(flag_ipa_profile) Init(0) Optimization
2140 Perform interprocedural profile propagation.
2143 Common Var(flag_ipa_pta) Init(0) Optimization
2144 Perform interprocedural points-to analysis.
2147 Common Var(flag_ipa_pure_const) Init(0) Optimization
2148 Discover pure and const functions.
2151 Common Var(flag_ipa_icf) Optimization
2152 Perform Identical Code Folding for functions and read-only variables.
2155 Common Var(flag_ipa_icf_functions) Optimization
2156 Perform Identical Code Folding for functions.
2159 Common Var(flag_ipa_icf_variables) Optimization
2160 Perform Identical Code Folding for variables.
2163 Common Var(flag_ipa_reference) Init(0) Optimization
2164 Discover read-only and non addressable static variables.
2166 fipa-reference-addressable
2167 Common Var(flag_ipa_reference_addressable) Init(0) Optimization
2168 Discover read-only, write-only and non-addressable static variables.
2170 fipa-stack-alignment
2171 Common Var(flag_ipa_stack_alignment) Init(1) Optimization
2172 Reduce stack alignment on call sites if possible.
2176 Does nothing. Preserved for backward compatibility.
2180 Does nothing. Preserved for backward compatibility.
2183 Common Var(flag_ipa_vrp) Optimization
2184 Perform IPA Value Range Propagation.
2187 Common Joined RejectNegative Enum(ira_algorithm) Var(flag_ira_algorithm) Init(IRA_ALGORITHM_CB) Optimization
2188 -fira-algorithm=[CB|priority] Set the used IRA algorithm.
2190 fipa-strict-aliasing
2191 Common Var(flag_ipa_strict_aliasing) Init(1) Optimization
2192 Assume strict aliasing rules apply across (uninlined) function boundaries.
2195 Name(ira_algorithm) Type(enum ira_algorithm) UnknownError(unknown IRA algorithm %qs)
2198 Enum(ira_algorithm) String(CB) Value(IRA_ALGORITHM_CB)
2201 Enum(ira_algorithm) String(priority) Value(IRA_ALGORITHM_PRIORITY)
2204 Common Joined RejectNegative Enum(ira_region) Var(flag_ira_region) Init(IRA_REGION_ONE) Optimization
2205 -fira-region=[one|all|mixed] Set regions for IRA.
2208 Name(ira_region) Type(enum ira_region) UnknownError(unknown IRA region %qs)
2211 Enum(ira_region) String(one) Value(IRA_REGION_ONE)
2214 Enum(ira_region) String(all) Value(IRA_REGION_ALL)
2217 Enum(ira_region) String(mixed) Value(IRA_REGION_MIXED)
2220 Common Var(flag_ira_hoist_pressure) Init(1) Optimization
2221 Use IRA based register pressure calculation
2222 in RTL hoist optimizations.
2225 Common Var(flag_ira_loop_pressure) Optimization
2226 Use IRA based register pressure calculation
2227 in RTL loop optimizations.
2229 fira-share-save-slots
2230 Common Var(flag_ira_share_save_slots) Init(1) Optimization
2231 Share slots for saving different hard registers.
2233 fira-share-spill-slots
2234 Common Var(flag_ira_share_spill_slots) Init(1) Optimization
2235 Share stack slots for spilled pseudo-registers.
2238 Common RejectNegative Joined UInteger Var(flag_ira_verbose) Init(5)
2239 -fira-verbose=<number> Control IRA's level of diagnostic messages.
2242 Common Var(flag_ivopts) Init(1) Optimization
2243 Optimize induction variables on trees.
2246 Common Var(flag_jump_tables) Init(0) Optimization
2247 Use jump tables for sufficiently large switch statements.
2250 Common Var(flag_bit_tests) Init(0) Optimization
2251 Use bit tests for sufficiently large switch statements.
2253 fkeep-inline-functions
2254 Common Var(flag_keep_inline_functions)
2255 Generate code for functions even if they are fully inlined.
2257 fkeep-static-functions
2258 Common Var(flag_keep_static_functions)
2259 Generate code for static functions even if they are never called.
2262 Common Var(flag_keep_static_consts) Init(1)
2263 Emit static const variables even if they are not used.
2266 Common Var(flag_leading_underscore) Init(-1)
2267 Give external symbols a leading underscore.
2271 Does nothing. Preserved for backward compatibility.
2274 Common Var(flag_lra_remat) Optimization
2275 Do CFG-sensitive rematerialization in LRA.
2279 Enable link-time optimization.
2282 Common RejectNegative Joined Var(flag_lto)
2283 Link-time optimization with number of parallel jobs or jobserver.
2286 Common Joined Var(flag_lto_incremental)
2287 Enable incremental LTO, with its cache in given directory.
2289 flto-incremental-cache-size=
2290 Common Joined RejectNegative UInteger Var(flag_lto_incremental_cache_size) Init(2048)
2291 Number of cache entries in incremental LTO after which to prune old entries.
2294 Name(lto_partition_model) Type(enum lto_partition_model) UnknownError(unknown LTO partitioning model %qs)
2297 Enum(lto_partition_model) String(none) Value(LTO_PARTITION_NONE)
2300 Enum(lto_partition_model) String(one) Value(LTO_PARTITION_ONE)
2303 Enum(lto_partition_model) String(balanced) Value(LTO_PARTITION_BALANCED)
2306 Enum(lto_partition_model) String(1to1) Value(LTO_PARTITION_1TO1)
2309 Enum(lto_partition_model) String(max) Value(LTO_PARTITION_MAX)
2312 Enum(lto_partition_model) String(cache) Value(LTO_PARTITION_CACHE)
2315 Common Joined RejectNegative Enum(lto_partition_model) Var(flag_lto_partition) Init(LTO_PARTITION_BALANCED)
2316 Specify the algorithm to partition symbols and vars at linktime.
2318 ; The initial value of -1 comes from Z_DEFAULT_COMPRESSION in zlib.h.
2319 flto-compression-level=
2320 Common Joined RejectNegative UInteger Var(flag_lto_compression_level) Init(-1) IntegerRange(0, 19)
2321 Use zlib/zstd compression level <number> for IL.
2323 flto-odr-type-merging
2325 Does nothing. Preserved for backward compatibility.
2328 Common Var(flag_lto_report) Init(0)
2329 Report various link-time optimization statistics.
2332 Common Var(flag_lto_report_wpa) Init(0)
2333 Report various link-time optimization statistics for WPA only.
2336 Common Var(flag_errno_math) Init(1) Optimization SetByCombined
2337 Set errno after built-in math functions.
2340 Common Joined RejectNegative UInteger Var(flag_max_errors)
2341 -fmax-errors=<number> Maximum number of errors to report.
2344 Common Var(flag_malloc_dce,2) Init(2) Optimization
2345 Allow removal of malloc and free pairs when allocated block is unused.
2348 Common Joined RejectNegative UInteger Var(flag_malloc_dse) Optimization IntegerRange(0, 2)
2351 Common Var(mem_report)
2352 Report on permanent memory allocation.
2355 Common Var(mem_report_wpa)
2356 Report on permanent memory allocation in WPA only.
2358 ; This will attempt to merge constant section constants, if 1 only
2359 ; string constants and constants from constant pool, if 2 also constant
2361 fmerge-all-constants
2362 Common Var(flag_merge_constants,2) Init(1)
2363 Attempt to merge identical constants and constant variables.
2366 Common Var(flag_merge_constants,1)
2367 Attempt to merge identical constants across compilation units.
2369 fmerge-debug-strings
2370 Common Var(flag_merge_debug_strings) Init(1)
2371 Attempt to merge identical debug strings across compilation units.
2374 Common RejectNegative Joined UInteger
2375 -fmessage-length=<number> Limit diagnostics to <number> characters per line. 0 suppresses line-wrapping.
2377 fmin-function-alignment=
2378 Common Joined RejectNegative UInteger Var(flag_min_function_alignment) Optimization
2379 Align the start of every function.
2382 Common Var(flag_modulo_sched) Optimization
2383 Perform SMS based modulo scheduling before the first scheduling pass.
2385 fmodulo-sched-allow-regmoves
2386 Common Var(flag_modulo_sched_allow_regmoves) Optimization
2387 Perform SMS based modulo scheduling with register moves allowed.
2389 fmove-loop-invariants
2390 Common Var(flag_move_loop_invariants) Optimization
2391 Move loop invariant computations out of loops.
2394 Common Var(flag_move_loop_stores) Optimization
2395 Move stores out of loops.
2398 Common Driver RejectNegative
2399 Building block for specs-based multilib-aware TFLAGS.
2402 Common Var(flag_dce) Init(1) Optimization
2403 Use the RTL dead code elimination pass.
2406 Common Var(flag_dse) Init(0) Optimization
2407 Use the RTL dead store elimination pass.
2409 freschedule-modulo-scheduled-loops
2410 Common Var(flag_resched_modulo_sched) Optimization
2411 Enable/Disable the traditional scheduling in loops that already passed modulo scheduling.
2413 fnon-call-exceptions
2414 Common Var(flag_non_call_exceptions) Optimization
2415 Support synchronous non-call exceptions.
2418 Driver Joined MissingArgError(targets missing after %qs)
2421 Common Driver Joined MissingArgError(options or targets=options missing after %qs)
2422 -foffload-options=<targets>=<options> Specify options for the offloading targets.
2425 Common Joined RejectNegative Enum(offload_abi)
2426 -foffload-abi=[lp64|ilp32] Set the ABI to use in an offload compiler.
2429 Name(offload_abi) Type(enum offload_abi) UnknownError(unknown offload ABI %qs)
2432 Enum(offload_abi) String(ilp32) Value(OFFLOAD_ABI_ILP32)
2435 Enum(offload_abi) String(lp64) Value(OFFLOAD_ABI_LP64)
2437 foffload-abi-host-opts=
2438 Common Joined MissingArgError(option missing after %qs)
2439 -foffload-abi-host-opts=<options> Specify host ABI options.
2442 Common Var(flag_omit_frame_pointer) Optimization
2443 When possible do not generate stack frames.
2445 fopenmp-target-simd-clone
2446 Common Alias(fopenmp-target-simd-clone=,any,none)
2448 fopenmp-target-simd-clone=
2449 Common Joined RejectNegative Enum(target_simd_clone_device) Var(flag_openmp_target_simd_clone) Init(OMP_TARGET_SIMD_CLONE_NONE) Optimization
2450 Generate SIMD clones for functions with the OpenMP declare target directive.
2453 Name(target_simd_clone_device) Type(int)
2456 Enum(target_simd_clone_device) String(none) Value(OMP_TARGET_SIMD_CLONE_NONE)
2459 Enum(target_simd_clone_device) String(host) Value(OMP_TARGET_SIMD_CLONE_HOST)
2462 Enum(target_simd_clone_device) String(nohost) Value(OMP_TARGET_SIMD_CLONE_NOHOST)
2465 Enum(target_simd_clone_device) String(any) Value(OMP_TARGET_SIMD_CLONE_ANY)
2468 Common Var(flag_opt_info) Optimization
2469 Enable all optimization info dumps on stderr.
2472 Common Joined RejectNegative Var(common_deferred_options) Defer
2473 -fopt-info[-<type>=filename] Dump compiler optimization details.
2475 fsave-optimization-record
2476 Common Var(flag_save_optimization_record) Optimization
2477 Write a SRCFILE.opt-record.json file detailing what optimizations were performed.
2480 Common Var(flag_optimize_crc) Optimization
2481 Detect loops calculating CRC and replace with faster implementation.
2482 If the target supports CRC instruction and the CRC loop uses the same
2483 polynomial as the one used in the CRC instruction, directly replace with the
2484 corresponding CRC instruction.
2485 Otherwise, if the target supports carry-less-multiplication instruction,
2486 generate CRC using it.
2487 If neither case applies, generate table-based CRC.
2489 foptimize-register-move
2491 Does nothing. Preserved for backward compatibility.
2493 foptimize-sibling-calls
2494 Common Var(flag_optimize_sibling_calls) Optimization
2495 Optimize sibling and tail recursive calls.
2498 Common Var(path_coverage_flag)
2499 Insert path profiling code.
2502 Common Var(flag_partial_inlining) Optimization
2503 Perform partial inlining.
2506 Common Var(pre_ipa_mem_report)
2507 Report on memory allocation before interprocedural optimization.
2509 fpost-ipa-mem-report
2510 Common Var(post_ipa_mem_report)
2511 Report on memory allocation before interprocedural optimization.
2514 Common Var(flag_pack_struct) Optimization
2515 Pack structure members together without holes.
2518 Common RejectNegative Joined UInteger Optimization
2519 -fpack-struct=<number> Set initial maximum structure member alignment.
2522 Common Var(flag_pcc_struct_return,1) Init(DEFAULT_PCC_STRUCT_RETURN) Optimization
2523 Return small aggregates in memory, not registers.
2526 Common Var(flag_peel_loops) Optimization
2527 Perform loop peeling.
2530 Common Var(flag_no_peephole,0) Optimization
2531 Enable machine specific peephole optimizations.
2534 Common Var(flag_peephole2) Optimization
2535 Enable an RTL peephole pass before sched2.
2538 Common Var(flag_pic,2) Negative(fPIE) Init(-1)
2539 Generate position-independent code if possible (large mode).
2542 Common Var(flag_pie,2) Negative(fpic) Init(-1)
2543 Generate position-independent code for executables if possible (large mode).
2546 Common Var(flag_pic,1) Negative(fpie) Init(-1)
2547 Generate position-independent code if possible (small mode).
2550 Common Var(flag_pie,1) Negative(fPIC) Init(-1)
2551 Generate position-independent code for executables if possible (small mode).
2554 Common Var(flag_plt) Init(1) Optimization
2555 Use PLT for PIC calls (-fno-plt: load the address from GOT at call site).
2558 Common Joined RejectNegative Var(common_deferred_options) Defer
2559 Specify a plugin to load.
2562 Common Joined RejectNegative Var(common_deferred_options) Defer
2563 -fplugin-arg-<name>-<key>[=<value>] Specify argument <key>=<value> for plugin <name>.
2565 fpredictive-commoning
2566 Common Var(flag_predictive_commoning) Optimization
2567 Run predictive commoning optimization.
2569 fprefetch-loop-arrays
2570 Common Var(flag_prefetch_loop_arrays) Init(-1) Optimization
2571 Generate prefetch instructions, if available, for arrays in loops.
2574 Common Var(profile_flag)
2575 Enable basic program profiling code.
2578 Common Var(profile_abs_path_flag)
2579 Generate absolute source path names for gcov.
2582 Common Var(profile_arc_flag)
2583 Insert arc-based program profiling code.
2586 Common Var(condition_coverage_flag)
2587 Insert condition coverage profiling code.
2590 Common Joined RejectNegative Var(profile_data_prefix)
2591 Set the top-level directory for storing the profile data.
2592 The default is 'pwd'.
2595 Common Joined RejectNegative Var(profile_note_location)
2596 Select the name for storing the profile note file.
2599 Common Var(flag_profile_correction)
2600 Enable correction of flow inconsistent profile data input.
2603 Common Joined RejectNegative Enum(profile_update) Var(flag_profile_update) Init(PROFILE_UPDATE_SINGLE)
2604 -fprofile-update=[single|atomic|prefer-atomic] Set the profile update method.
2606 fprofile-filter-files=
2607 Common Joined RejectNegative Var(flag_profile_filter_files)
2608 Instrument only functions from files whose name matches any of the regular expressions (separated by semi-colons).
2610 fprofile-exclude-files=
2611 Common Joined RejectNegative Var(flag_profile_exclude_files)
2612 Instrument only functions from files whose name does not match any of the regular expressions (separated by semi-colons).
2615 Name(profile_reproducibility) Type(enum profile_reproducibility) UnknownError(unknown profile reproducibility method %qs)
2618 Enum(profile_reproducibility) String(serial) Value(PROFILE_REPRODUCIBILITY_SERIAL)
2621 Enum(profile_reproducibility) String(parallel-runs) Value(PROFILE_REPRODUCIBILITY_PARALLEL_RUNS)
2624 Enum(profile_reproducibility) String(multithreaded) Value(PROFILE_REPRODUCIBILITY_MULTITHREADED)
2626 fprofile-reproducible=
2627 Common Joined RejectNegative Var(flag_profile_reproducible) Enum(profile_reproducibility) Init(PROFILE_REPRODUCIBILITY_SERIAL)
2628 -fprofile-reproducible=[serial|parallel-runs|multithreaded] Control level of reproducibility of profile gathered by -fprofile-generate.
2631 Name(profile_update) Type(enum profile_update) UnknownError(unknown profile update method %qs)
2634 Enum(profile_update) String(single) Value(PROFILE_UPDATE_SINGLE)
2637 Enum(profile_update) String(atomic) Value(PROFILE_UPDATE_ATOMIC)
2640 Enum(profile_update) String(prefer-atomic) Value(PROFILE_UPDATE_PREFER_ATOMIC)
2642 fprofile-prefix-path=
2643 Common Joined RejectNegative Var(profile_prefix_path)
2644 Remove prefix from absolute path before mangling name for -fprofile-generate= and -fprofile-use=.
2646 fprofile-prefix-map=
2647 Common Joined RejectNegative Var(common_deferred_options) Defer
2648 -fprofile-prefix-map=<old>=<new> Map one directory name to another in GCOV coverage result.
2652 Enable common options for generating profile info for profile feedback directed optimizations.
2655 Common Joined RejectNegative
2656 Enable common options for generating profile info for profile feedback directed optimizations, and set -fprofile-dir=.
2658 fprofile-info-section
2659 Common RejectNegative
2660 Register the profile information in the .gcov_info section instead of using a constructor/destructor.
2662 fprofile-info-section=
2663 Common Joined RejectNegative Var(profile_info_section)
2664 Register the profile information in the specified section instead of using a constructor/destructor.
2666 fprofile-partial-training
2667 Common Var(flag_profile_partial_training) Optimization
2668 Do not assume that functions never executed during the train run are cold.
2671 Common Var(flag_profile_use)
2672 Enable common options for performing profile feedback directed optimizations.
2675 Common Joined RejectNegative
2676 Enable common options for performing profile feedback directed optimizations, and set -fprofile-dir=.
2679 Common Var(flag_profile_values)
2680 Insert code to profile values of expressions.
2683 Common Var(profile_report)
2684 Report on consistency of profile.
2686 fprofile-reorder-functions
2687 Common Var(flag_profile_reorder_functions) Optimization
2688 Enable function reordering that improves code placement.
2690 fpatchable-function-entry=
2691 Common Var(flag_patchable_function_entry) Joined Optimization
2692 Insert NOP instructions at each function entry.
2695 Common Var(common_deferred_options) Defer
2698 Common Joined RejectNegative Var(common_deferred_options) Defer
2699 -frandom-seed=<string> Make compile reproducible using <string>.
2701 ; This switch causes the command line that was used to create an
2702 ; object file to be recorded into the object file. The exact format
2703 ; of this recording is target and binary file format dependent.
2704 ; It is related to the -fverbose-asm switch, but that switch only
2705 ; records information in the assembler output file as comments, so
2706 ; they never reach the object file.
2707 frecord-gcc-switches
2708 Common Var(flag_record_gcc_switches)
2709 Record gcc command line switches in the object file.
2712 Common NegativeAlias Alias(fpcc_struct_return) Optimization
2713 Return small aggregates in registers.
2717 Does nothing. Preserved for backward compatibility.
2720 Common Var(flag_lifetime_dse,2) Init(2) Optimization
2721 Tell DSE that the storage for a C++ object is dead when the constructor
2722 starts and when the destructor finishes.
2725 Common Joined RejectNegative UInteger Var(flag_lifetime_dse) Optimization IntegerRange(0, 2)
2727 flimit-function-alignment
2728 Common Var(flag_limit_function_alignment) Optimization Init(0)
2731 Common RejectNegative Alias(flive-patching=,inline-clone) Optimization
2734 Common Joined RejectNegative Enum(live_patching_level) Var(flag_live_patching) Init(LIVE_PATCHING_NONE) Optimization
2735 -flive-patching=[inline-only-static|inline-clone] Control IPA
2736 optimizations to provide a safe compilation for live-patching. At the same
2737 time, provides multiple-level control on the enabled IPA optimizations.
2740 Name(live_patching_level) Type(enum live_patching_level) UnknownError(unknown Live-Patching Level %qs)
2743 Enum(live_patching_level) String(inline-only-static) Value(LIVE_PATCHING_INLINE_ONLY_STATIC)
2746 Enum(live_patching_level) String(inline-clone) Value(LIVE_PATCHING_INLINE_CLONE)
2749 Common Var(flag_allocation_dce) Init(1) Optimization
2750 Tell DCE to remove unused C++ allocations.
2752 flive-range-shrinkage
2753 Common Var(flag_live_range_shrinkage) Init(0) Optimization
2754 Relief of register pressure through live range shrinkage.
2757 Common Var(flag_rename_registers) Optimization EnabledBy(funroll-loops)
2758 Perform a register renaming optimization pass.
2761 Common Var(flag_schedule_fusion) Init(2) Optimization
2762 Perform a target dependent instruction fusion optimization pass.
2765 Common Var(flag_reorder_blocks) Optimization
2766 Reorder basic blocks to improve code placement.
2768 freorder-blocks-algorithm=
2769 Common Joined RejectNegative Enum(reorder_blocks_algorithm) Var(flag_reorder_blocks_algorithm) Init(REORDER_BLOCKS_ALGORITHM_SIMPLE) Optimization
2770 -freorder-blocks-algorithm=[simple|stc] Set the used basic block reordering algorithm.
2773 Name(reorder_blocks_algorithm) Type(enum reorder_blocks_algorithm) UnknownError(unknown basic block reordering algorithm %qs)
2776 Enum(reorder_blocks_algorithm) String(simple) Value(REORDER_BLOCKS_ALGORITHM_SIMPLE)
2779 Enum(reorder_blocks_algorithm) String(stc) Value(REORDER_BLOCKS_ALGORITHM_STC)
2781 freorder-blocks-and-partition
2782 Common Var(flag_reorder_blocks_and_partition) Optimization
2783 Reorder basic blocks and partition into hot and cold sections.
2786 Common Var(flag_reorder_functions) Optimization
2787 Reorder functions to improve code placement.
2789 frerun-cse-after-loop
2790 Common Var(flag_rerun_cse_after_loop) Optimization
2791 Add a common subexpression elimination pass after loop optimizations.
2795 Does nothing. Preserved for backward compatibility.
2798 Common Var(flag_rounding_math) Optimization SetByCombined
2799 Disable optimizations that assume default FP rounding behavior.
2802 Common Var(flag_schedule_interblock) Init(1) Optimization
2803 Enable scheduling across basic blocks.
2806 Common Var(flag_sched_pressure) Init(0) Optimization
2807 Enable register pressure sensitive insn scheduling.
2810 Common Var(flag_schedule_speculative) Init(1) Optimization
2811 Allow speculative motion of non-loads.
2814 Common Var(flag_schedule_speculative_load) Optimization
2815 Allow speculative motion of some loads.
2817 fsched-spec-load-dangerous
2818 Common Var(flag_schedule_speculative_load_dangerous) Optimization
2819 Allow speculative motion of more loads.
2822 Common RejectNegative Joined UInteger Var(sched_verbose_param) Init(1)
2823 -fsched-verbose=<number> Set the verbosity level of the scheduler.
2825 fsched2-use-superblocks
2826 Common Var(flag_sched2_use_superblocks) Optimization
2827 If scheduling post reload, do superblock scheduling.
2831 Does nothing. Preserved for backward compatibility.
2834 Common Var(flag_schedule_insns) Optimization
2835 Reschedule instructions before register allocation.
2838 Common Var(flag_schedule_insns_after_reload) Optimization
2839 Reschedule instructions after register allocation.
2841 ; This flag should be on when a target implements non-trivial
2842 ; scheduling hooks, maybe saving some information for its own sake.
2843 ; On IA64, for example, this is used for correct bundling.
2844 fselective-scheduling
2845 Common Var(flag_selective_scheduling) Optimization
2846 Schedule instructions using selective scheduling algorithm.
2848 fselective-scheduling2
2849 Common Var(flag_selective_scheduling2) Optimization
2850 Run selective scheduling after reload.
2853 Common Undocumented Joined Var(flag_self_test)
2854 Run self-tests, using the given path to locate test files.
2856 fsel-sched-pipelining
2857 Common Var(flag_sel_sched_pipelining) Init(0) Optimization
2858 Perform software pipelining of inner loops during selective scheduling.
2860 fsel-sched-pipelining-outer-loops
2861 Common Var(flag_sel_sched_pipelining_outer_loops) Init(0) Optimization
2862 Perform software pipelining of outer loops during selective scheduling.
2864 fsel-sched-reschedule-pipelined
2865 Common Var(flag_sel_sched_reschedule_pipelined) Init(0) Optimization
2866 Reschedule pipelined regions without pipelining.
2868 fsemantic-interposition
2869 Common Var(flag_semantic_interposition) Init(1) Optimization
2870 Allow interposing function (or variables) by ones with different semantics (or initializer) respectively by dynamic linker.
2872 ; sched_stalled_insns means that insns can be moved prematurely from the queue
2873 ; of stalled insns into the ready list.
2874 fsched-stalled-insns
2875 Common Var(flag_sched_stalled_insns) Optimization UInteger
2876 Allow premature scheduling of queued insns.
2878 fsched-stalled-insns=
2879 Common RejectNegative Joined UInteger Optimization
2880 -fsched-stalled-insns=<number> Set number of queued insns that can be prematurely scheduled.
2882 ; sched_stalled_insns_dep controls how many recently scheduled cycles will
2883 ; be examined for a dependency on a stalled insn that is candidate for
2884 ; premature removal from the queue of stalled insns into the ready list (has
2885 ; an effect only if the flag 'sched_stalled_insns' is set).
2886 fsched-stalled-insns-dep
2887 Common Var(flag_sched_stalled_insns_dep,1) Init(1) Optimization UInteger
2888 Set dependence distance checking in premature scheduling of queued insns.
2890 fsched-stalled-insns-dep=
2891 Common RejectNegative Joined UInteger Optimization
2892 -fsched-stalled-insns-dep=<number> Set dependence distance checking in premature scheduling of queued insns.
2894 fsched-group-heuristic
2895 Common Var(flag_sched_group_heuristic) Init(1) Optimization
2896 Enable the group heuristic in the scheduler.
2898 fsched-critical-path-heuristic
2899 Common Var(flag_sched_critical_path_heuristic) Init(1) Optimization
2900 Enable the critical path heuristic in the scheduler.
2902 fsched-spec-insn-heuristic
2903 Common Var(flag_sched_spec_insn_heuristic) Init(1) Optimization
2904 Enable the speculative instruction heuristic in the scheduler.
2906 fsched-rank-heuristic
2907 Common Var(flag_sched_rank_heuristic) Init(1) Optimization
2908 Enable the rank heuristic in the scheduler.
2910 fsched-last-insn-heuristic
2911 Common Var(flag_sched_last_insn_heuristic) Init(1) Optimization
2912 Enable the last instruction heuristic in the scheduler.
2914 fsched-dep-count-heuristic
2915 Common Var(flag_sched_dep_count_heuristic) Init(1) Optimization
2916 Enable the dependent count heuristic in the scheduler.
2919 Common Var(flag_section_anchors) Optimization
2920 Access data in the same section from shared anchor points.
2924 Does nothing. Preserved for backward compatibility.
2928 Does nothing. Preserved for backward compatibility.
2931 Common Var(flag_ree) Init(0) Optimization
2932 Turn on Redundant Extensions Elimination pass.
2935 Common Var(flag_show_column) Init(1)
2936 Show column numbers in diagnostics, when available. Default on.
2939 Common Var(flag_shrink_wrap) Optimization
2940 Emit function prologues only before parts of the function that need it,
2941 rather than at the top of the function.
2943 fshrink-wrap-separate
2944 Common Var(flag_shrink_wrap_separate) Init(1) Optimization
2945 Shrink-wrap parts of the prologue and epilogue separately.
2948 Common Var(flag_signaling_nans) Optimization SetByCombined
2949 Disable optimizations observable by IEEE signaling NaNs.
2952 Common Var(flag_signed_zeros) Init(1) Optimization SetByCombined
2953 Disable floating point optimizations that ignore the IEEE signedness of zero.
2955 fsingle-precision-constant
2956 Common Var(flag_single_precision_constant) Optimization
2957 Convert floating point constants to single precision constants.
2959 fsplit-ivs-in-unroller
2960 Common Var(flag_split_ivs_in_unroller) Init(1) Optimization
2961 Split lifetimes of induction variables when loops are unrolled.
2964 Common Var(flag_split_stack) Init(-1)
2965 Generate discontiguous stack frames.
2968 Common Var(flag_split_wide_types) Optimization
2969 Split wide types into independent registers.
2971 fsplit-wide-types-early
2972 Common Var(flag_split_wide_types_early) Optimization
2973 Split wide types into independent registers earlier.
2976 Common Var(flag_ssa_backprop) Init(1) Optimization
2977 Enable backward propagation of use properties at the SSA level.
2980 Common Var(flag_ssa_phiopt) Optimization
2981 Optimize conditional patterns using SSA PHI nodes.
2984 Common Var(flag_stdarg_opt) Init(1) Optimization
2985 Optimize amount of stdarg registers saved to stack at start of function.
2987 fvariable-expansion-in-unroller
2988 Common Var(flag_variable_expansion_in_unroller) Optimization
2989 Apply variable expansion when loops are unrolled.
2992 Common RejectNegative Joined Optimization
2993 -fstack-check=[no|generic|specific] Insert stack checking code into the program.
2996 Common Alias(fstack-check=, specific, no)
2997 Insert stack checking code into the program. Same as -fstack-check=specific.
2999 fstack-clash-protection
3000 Common Var(flag_stack_clash_protection) Optimization
3001 Insert code to probe each page of stack space as it is allocated to protect
3002 from stack-clash style attacks.
3005 Common Var(common_deferred_options) Defer
3007 fstack-limit-register=
3008 Common RejectNegative Joined Var(common_deferred_options) Defer
3009 -fstack-limit-register=<register> Trap if the stack goes past <register>.
3011 fstack-limit-symbol=
3012 Common RejectNegative Joined Var(common_deferred_options) Defer
3013 -fstack-limit-symbol=<name> Trap if the stack goes past symbol <name>.
3016 Common Var(flag_stack_protect, 1) Init(-1) Optimization
3017 Use propolice as a stack protection method.
3019 fstack-protector-all
3020 Common RejectNegative Var(flag_stack_protect, 2) Init(-1) Optimization
3021 Use a stack protection method for every function.
3023 fstack-protector-strong
3024 Common RejectNegative Var(flag_stack_protect, 3) Init(-1) Optimization
3025 Use a smart stack protection method for certain functions.
3027 fstack-protector-explicit
3028 Common RejectNegative Var(flag_stack_protect, 4) Optimization
3029 Use stack protection method only for functions with the stack_protect attribute.
3032 Common RejectNegative Var(flag_stack_usage)
3033 Output stack usage information on a per-function basis.
3037 Does nothing. Preserved for backward compatibility.
3039 ; Nonzero if we should do (language-dependent) alias analysis.
3040 ; Typically, this analysis will assume that expressions of certain
3041 ; types do not alias expressions of certain other types. Only used
3042 ; if alias analysis (in general) is enabled.
3044 Common Var(flag_strict_aliasing) Optimization
3045 Assume strict aliasing rules apply.
3049 Treat signed overflow as undefined. Negated as -fwrapv -fwrapv-pointer.
3052 Common RejectNegative Var(flag_strub, 0)
3053 Disable stack scrub entirely, disregarding strub attributes.
3056 Common RejectNegative Var(flag_strub, -4)
3057 Enable stack scrub as per attributes, with strict call checking.
3059 ; If any strub-enabling attribute is seen when the default or strict
3060 ; initializer values are in effect, flag_strub is bumped up by 2. The
3061 ; scrub mode gate function will then bump these initializer values to
3062 ; 0 if no strub-enabling attribute is seen. This minimizes the strub
3065 Common RejectNegative Var(flag_strub, -3) Init(-3)
3066 Restore default strub mode: as per attributes, with relaxed checking.
3069 Common RejectNegative Var(flag_strub, 3)
3070 Enable stack scrubbing for all viable functions.
3073 Common RejectNegative Var(flag_strub, 1)
3074 Enable at-calls stack scrubbing for all viable functions.
3077 Common RejectNegative Var(flag_strub, 2)
3078 Enable internal stack scrubbing for all viable functions.
3081 Common Var(flag_sync_libcalls) Init(1)
3082 Implement __atomic operations via libcalls to legacy __sync functions.
3085 Common Var(flag_syntax_only)
3086 Check for syntax errors, then stop.
3089 Common Var(flag_test_coverage)
3090 Create data files needed by \"gcov\".
3093 Common Var(flag_thread_jumps) Optimization
3094 Perform jump threading optimizations.
3097 Common Var(time_report)
3098 Report the time taken by each compiler pass.
3100 ftime-report-details
3101 Common Var(time_report_details)
3102 Record times taken by sub-phases separately.
3105 Common Joined RejectNegative Enum(tls_model) Var(flag_tls_default) Init(TLS_MODEL_GLOBAL_DYNAMIC)
3106 -ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec] Set the default thread-local storage code generation model.
3109 Name(tls_model) Type(enum tls_model) UnknownError(unknown TLS model %qs)
3112 Enum(tls_model) String(global-dynamic) Value(TLS_MODEL_GLOBAL_DYNAMIC)
3115 Enum(tls_model) String(local-dynamic) Value(TLS_MODEL_LOCAL_DYNAMIC)
3118 Enum(tls_model) String(initial-exec) Value(TLS_MODEL_INITIAL_EXEC)
3121 Enum(tls_model) String(local-exec) Value(TLS_MODEL_LOCAL_EXEC)
3124 Common Var(flag_toplevel_reorder) Init(2) Optimization
3125 Reorder top level functions, variables, and asms.
3128 Common Var(flag_tracer) Optimization
3129 Perform superblock formation via tail duplication.
3132 Common Var(flag_trampolines) Init(HEAP_TRAMPOLINES_INIT)
3133 For targets that normally need trampolines for nested functions, always
3134 generate them instead of using descriptors.
3137 Common Joined RejectNegative Enum(trampoline_impl) Var(flag_trampoline_impl) Init(HEAP_TRAMPOLINES_INIT ? TRAMPOLINE_IMPL_HEAP : TRAMPOLINE_IMPL_STACK)
3138 Whether trampolines are generated in executable memory rather than
3142 Name(trampoline_impl) Type(enum trampoline_impl) UnknownError(unknown trampoline implementation %qs)
3145 Enum(trampoline_impl) String(stack) Value(TRAMPOLINE_IMPL_STACK)
3148 Enum(trampoline_impl) String(heap) Value(TRAMPOLINE_IMPL_HEAP)
3151 ; Zero means that floating-point math operations cannot generate a
3152 ; (user-visible) trap. This is the case, for example, in nonstop
3153 ; IEEE 754 arithmetic.
3155 Common Var(flag_trapping_math) Init(1) Optimization SetByCombined
3156 Assume floating-point operations can trap.
3159 Common Var(flag_trapv) Optimization
3160 Trap for signed overflow in addition, subtraction and multiplication.
3163 Common Var(flag_tree_ccp) Optimization
3164 Enable SSA-CCP optimization on trees.
3167 Common Var(flag_tree_bit_ccp) Optimization
3168 Enable SSA-BIT-CCP optimization on trees.
3172 Does nothing. Preserved for backward compatibility.
3175 Common Var(flag_tree_ch) Optimization
3176 Enable loop header copying on trees.
3178 ftree-coalesce-inlined-vars
3179 Common Ignore RejectNegative
3180 Does nothing. Preserved for backward compatibility.
3183 Common Var(flag_tree_coalesce_vars) Optimization
3184 Enable SSA coalescing of user variables.
3188 Does nothing. Preserved for backward compatibility.
3191 Common Var(flag_tree_copy_prop) Optimization
3192 Enable copy propagation on trees.
3194 ftree-store-copy-prop
3196 Does nothing. Preserved for backward compatibility.
3199 Common Var(flag_tree_cselim) Optimization
3200 Transform condition stores into unconditional ones.
3202 ftree-switch-conversion
3203 Common Var(flag_tree_switch_conversion) Optimization
3204 Perform conversions of switch initializations.
3207 Common Var(flag_tree_dce) Optimization
3208 Enable SSA dead code elimination optimization on trees.
3210 ftree-dominator-opts
3211 Common Var(flag_tree_dom) Optimization
3212 Enable dominator optimizations.
3215 Common Var(flag_tree_tail_merge) Optimization
3216 Enable tail merging on trees.
3219 Common Var(flag_tree_dse) Optimization
3220 Enable dead store elimination.
3223 Common Var(flag_tree_forwprop) Init(1) Optimization
3224 Enable forward propagation on trees.
3227 Common Var(flag_tree_fre) Optimization
3228 Enable Full Redundancy Elimination (FRE) on trees.
3231 Common Var(flag_optimize_strlen) Optimization
3232 Enable string length optimizations on trees.
3234 fisolate-erroneous-paths-dereference
3235 Common Var(flag_isolate_erroneous_paths_dereference) Optimization
3236 Detect paths that trigger erroneous or undefined behavior due to
3237 dereferencing a null pointer. Isolate those paths from the main control
3238 flow and turn the statement with erroneous or undefined behavior into a trap.
3240 fisolate-erroneous-paths-attribute
3241 Common Var(flag_isolate_erroneous_paths_attribute) Optimization
3242 Detect paths that trigger erroneous or undefined behavior due to a null value
3243 being used in a way forbidden by a returns_nonnull or nonnull
3244 attribute. Isolate those paths from the main control flow and turn the
3245 statement with erroneous or undefined behavior into a trap.
3247 ftree-loop-distribution
3248 Common Var(flag_tree_loop_distribution) Optimization
3249 Enable loop distribution on trees.
3251 ftree-loop-distribute-patterns
3252 Common Var(flag_tree_loop_distribute_patterns) Optimization
3253 Enable loop distribution for patterns transformed into a library call.
3256 Common Var(flag_tree_loop_im) Init(1) Optimization
3257 Enable loop invariant motion on trees.
3260 Common Alias(floop-nest-optimize)
3261 Enable loop nest transforms. Same as -floop-nest-optimize.
3264 Common Var(flag_tree_loop_ivcanon) Init(1) Optimization
3265 Create canonical induction variables in loops.
3268 Common Var(flag_tree_loop_optimize) Init(1) Optimization
3269 Enable loop optimizations on tree level.
3271 ftree-parallelize-loops=
3272 Common Joined RejectNegative UInteger Var(flag_tree_parallelize_loops) Init(1) Optimization
3273 -ftree-parallelize-loops=<number> Enable automatic parallelization of loops.
3276 Common Var(flag_tree_phiprop) Init(1) Optimization
3277 Enable hoisting loads from conditional pointers.
3280 Common Var(flag_tree_pre) Optimization
3281 Enable SSA-PRE optimization on trees.
3284 Common Var(flag_tree_partial_pre) Optimization
3285 In SSA-PRE optimization on trees, enable partial-partial redundancy elimination.
3288 Common Var(flag_tree_pta) Optimization
3289 Perform function-local points-to analysis on trees.
3292 Common Var(flag_tree_reassoc) Init(1) Optimization
3293 Enable reassociation on tree level.
3297 Does nothing. Preserved for backward compatibility.
3300 Common Var(flag_tree_sink) Optimization
3301 Enable SSA code sinking on trees.
3304 Common Var(flag_tree_slsr) Optimization
3305 Perform straight-line strength reduction.
3308 Common Var(flag_tree_sra) Optimization
3309 Perform scalar replacement of aggregates.
3312 Common Var(flag_tree_ter) Optimization
3313 Replace temporary expressions in the SSA->normal pass.
3316 Common Var(flag_tree_live_range_split) Optimization
3317 Perform live range splitting during the SSA->normal pass.
3320 Common Var(flag_tree_vrp) Init(0) Optimization
3321 Perform Value Range Propagation on trees.
3324 Common Var(flag_split_paths) Init(0) Optimization
3325 Split paths leading to loop backedges.
3327 funconstrained-commons
3328 Common Var(flag_unconstrained_commons) Optimization
3329 Assume common declarations may be overridden with ones with a larger
3333 Common Var(flag_unit_at_a_time) Init(1)
3334 Compile whole compilation unit at a time.
3337 Common Var(flag_unreachable_traps) Optimization
3338 Trap on __builtin_unreachable instead of using it for optimization.
3341 Common Var(flag_unroll_loops) Optimization EnabledBy(funroll-all-loops)
3342 Perform loop unrolling when iteration count is known.
3345 Common Var(flag_unroll_all_loops) Optimization
3346 Perform loop unrolling for all loops.
3348 funroll-completely-grow-size
3349 Undocumented Var(flag_cunroll_grow_size) Optimization
3350 ; Internal undocumented flag, allow size growth during complete unrolling
3352 ; Nonzero means that loop optimizer may assume that the induction variables
3353 ; that control loops do not overflow and that the loops with nontrivial
3354 ; exit condition are not infinite
3355 funsafe-loop-optimizations
3357 Does nothing. Preserved for backward compatibility.
3360 Common Var(flag_associative_math) SetByCombined Optimization
3361 Allow optimization for floating-point arithmetic which may change the
3362 result of the operation due to rounding.
3365 Common Var(flag_reciprocal_math) SetByCombined Optimization
3366 Same as -fassociative-math for expressions which include division.
3368 ; Nonzero means that unsafe floating-point math optimizations are allowed
3369 ; for the sake of speed. IEEE compliance is not guaranteed, and operations
3370 ; are allowed to assume that their arguments and results are "normal"
3371 ; (e.g., nonnegative for SQRT).
3372 funsafe-math-optimizations
3373 Common Var(flag_unsafe_math_optimizations) Optimization SetByCombined
3374 Allow math optimizations that may violate IEEE or ISO standards.
3377 Common Var(flag_unswitch_loops) Optimization
3378 Perform loop unswitching.
3381 Common Var(flag_split_loops) Optimization
3382 Perform loop splitting.
3384 fversion-loops-for-strides
3385 Common Var(flag_version_loops_for_strides) Optimization
3386 Version loops based on whether indices have a stride of one.
3389 Common Var(flag_unwind_tables) Optimization
3390 Just generate unwind tables for exception handling.
3393 Common Driver Negative(fuse-ld=gold)
3394 Use the bfd linker instead of the default linker.
3397 Common Driver Negative(fuse-ld=bfd)
3398 Use the gold linker instead of the default linker.
3401 Common Driver Negative(fuse-ld=lld)
3402 Use the lld LLVM linker instead of the default linker.
3405 Common Driver Negative(fuse-ld=mold)
3406 Use the Modern linker (MOLD) linker instead of the default linker.
3409 Common Undocumented Var(flag_use_linker_plugin)
3411 ; Positive if we should track variables, negative if we should run
3412 ; the var-tracking pass only to discard debug annotations, zero if
3413 ; we're not to run it.
3415 Common Var(flag_var_tracking) PerFunction EnabledBy(fvar-tracking-uninit)
3416 Perform variable tracking.
3418 ; Positive if we should track variables at assignments, negative if
3419 ; we should run the var-tracking pass only to discard debug
3421 fvar-tracking-assignments
3422 Common Var(flag_var_tracking_assignments) PerFunction
3423 Perform variable tracking by annotating assignments.
3425 ; Nonzero if we should toggle flag_var_tracking_assignments after
3426 ; processing options and computing its default. */
3427 fvar-tracking-assignments-toggle
3428 Common Var(flag_var_tracking_assignments_toggle) PerFunction
3429 Toggle -fvar-tracking-assignments.
3431 ; Positive if we should track uninitialized variables, negative if
3432 ; we should run the var-tracking pass only to discard debug
3434 fvar-tracking-uninit
3435 Common Var(flag_var_tracking_uninit) PerFunction
3436 Perform variable tracking and also tag variables that are uninitialized.
3438 ; Alias to enable both -ftree-loop-vectorize and -ftree-slp-vectorize.
3440 Common Var(flag_tree_vectorize) Optimization
3441 Enable vectorization on trees.
3443 ftree-vectorizer-verbose=
3444 Common Joined RejectNegative Ignore
3445 Does nothing. Preserved for backward compatibility.
3447 ftree-loop-vectorize
3448 Common Var(flag_tree_loop_vectorize) Optimization EnabledBy(ftree-vectorize)
3449 Enable loop vectorization on trees.
3452 Common Var(flag_tree_slp_vectorize) Optimization EnabledBy(ftree-vectorize)
3453 Enable basic block vectorization (SLP) on trees.
3456 Common Joined RejectNegative Enum(vect_cost_model) Var(flag_vect_cost_model) Init(VECT_COST_MODEL_DEFAULT) Optimization
3457 -fvect-cost-model=[unlimited|dynamic|cheap|very-cheap] Specifies the cost model for vectorization.
3460 Common Joined RejectNegative Enum(vect_cost_model) Var(flag_simd_cost_model) Init(VECT_COST_MODEL_UNLIMITED) Optimization
3461 -fsimd-cost-model=[unlimited|dynamic|cheap|very-cheap] Specifies the vectorization cost model for code marked with a simd directive.
3464 Name(vect_cost_model) Type(enum vect_cost_model) UnknownError(unknown vectorizer cost model %qs)
3467 Enum(vect_cost_model) String(unlimited) Value(VECT_COST_MODEL_UNLIMITED)
3470 Enum(vect_cost_model) String(dynamic) Value(VECT_COST_MODEL_DYNAMIC)
3473 Enum(vect_cost_model) String(cheap) Value(VECT_COST_MODEL_CHEAP)
3476 Enum(vect_cost_model) String(very-cheap) Value(VECT_COST_MODEL_VERY_CHEAP)
3479 Common Alias(fvect-cost-model=,dynamic,unlimited)
3480 Enables the dynamic vectorizer cost model. Preserved for backward compatibility.
3482 ftree-vect-loop-version
3484 Does nothing. Preserved for backward compatibility.
3487 Common Var(flag_tree_scev_cprop) Init(1) Optimization
3488 Enable copy propagation of scalar-evolution information.
3490 ftrivial-auto-var-init=
3491 Common Joined RejectNegative Enum(auto_init_type) Var(flag_auto_var_init) Init(AUTO_INIT_UNINITIALIZED) Optimization
3492 -ftrivial-auto-var-init=[uninitialized|pattern|zero] Add initializations to automatic variables.
3495 Name(auto_init_type) Type(enum auto_init_type) UnknownError(unrecognized automatic variable initialization type %qs)
3498 Enum(auto_init_type) String(uninitialized) Value(AUTO_INIT_UNINITIALIZED)
3501 Enum(auto_init_type) String(pattern) Value(AUTO_INIT_PATTERN)
3504 Enum(auto_init_type) String(zero) Value(AUTO_INIT_ZERO)
3506 ; -fverbose-asm causes extra commentary information to be produced in
3507 ; the generated assembly code (to make it more readable). This option
3508 ; is generally only of use to those who actually need to read the
3509 ; generated assembly code (perhaps while debugging the compiler itself).
3510 ; -fno-verbose-asm, the default, causes the extra information
3511 ; to not be added and is useful when comparing two assembler files.
3513 Common Var(flag_verbose_asm)
3514 Add extra commentary to assembler output.
3517 Common Joined RejectNegative Enum(symbol_visibility) Var(default_visibility) Init(VISIBILITY_DEFAULT)
3518 -fvisibility=[default|internal|hidden|protected] Set the default symbol visibility.
3521 Name(symbol_visibility) Type(enum symbol_visibility) UnknownError(unrecognized visibility value %qs)
3524 Enum(symbol_visibility) String(default) Value(VISIBILITY_DEFAULT)
3527 Enum(symbol_visibility) String(internal) Value(VISIBILITY_INTERNAL)
3530 Enum(symbol_visibility) String(hidden) Value(VISIBILITY_HIDDEN)
3533 Enum(symbol_visibility) String(protected) Value(VISIBILITY_PROTECTED)
3536 Common Joined RejectNegative Enum(vtv_priority) Var(flag_vtable_verify) Init(VTV_NO_PRIORITY)
3537 Validate vtable pointers before using them.
3540 Name(vtv_priority) Type(enum vtv_priority) UnknownError(unknown vtable verify initialization priority %qs)
3543 Enum(vtv_priority) String(none) Value(VTV_NO_PRIORITY)
3546 Enum(vtv_priority) String(std) Value(VTV_STANDARD_PRIORITY)
3549 Enum(vtv_priority) String(preinit) Value(VTV_PREINIT_PRIORITY)
3552 Common Var(flag_vtv_counts)
3553 Output vtable verification counters.
3556 Common Var(flag_vtv_debug)
3557 Output vtable verification pointer sets information.
3560 Common Var(flag_value_profile_transformations) Optimization
3561 Use expression value profiles in optimizations.
3564 Common Var(flag_web) Optimization EnabledBy(funroll-loops)
3565 Construct webs and split unrelated uses of single variable.
3567 ftree-builtin-call-dce
3568 Common Var(flag_tree_builtin_call_dce) Init(0) Optimization
3569 Enable conditional dead code elimination for builtin calls.
3572 Common Var(flag_whole_program) Init(0)
3573 Perform whole program optimizations.
3576 Common Var(flag_wrapv_pointer) Optimization
3577 Assume pointer overflow wraps around.
3580 Common Var(flag_wrapv) Optimization
3581 Assume signed arithmetic overflow wraps around.
3583 fzero-initialized-in-bss
3584 Common Var(flag_zero_initialized_in_bss) Init(1)
3585 Put zero initialized data in the bss section.
3587 fzero-call-used-regs=
3588 Common RejectNegative Joined
3589 Clear call-used registers upon function return.
3591 fzero-init-padding-bits=
3592 Common Joined RejectNegative Enum(zero_init_padding_bits_kind) Var(flag_zero_init_padding_bits) Init(ZERO_INIT_PADDING_BITS_STANDARD)
3593 -fzero-init-padding-bits=[standard|unions|all] Zero padding bits in initializers.
3596 Name(zero_init_padding_bits_kind) Type(enum zero_init_padding_bits_kind) UnknownError(unrecognized zero init padding bits kind %qs)
3599 Enum(zero_init_padding_bits_kind) String(standard) Value(ZERO_INIT_PADDING_BITS_STANDARD)
3602 Enum(zero_init_padding_bits_kind) String(unions) Value(ZERO_INIT_PADDING_BITS_UNIONS)
3605 Enum(zero_init_padding_bits_kind) String(all) Value(ZERO_INIT_PADDING_BITS_ALL)
3608 Common Driver RejectNegative JoinedOrMissing
3609 Generate debug information in default format.
3612 Common Driver Var(dwarf2out_as_loc_support)
3613 Assume assembler support for (DWARF2+) .loc directives.
3616 Common Driver Var(dwarf2out_as_locview_support)
3617 Assume assembler support for view in (DWARF2+) .loc directives.
3620 Common Driver JoinedOrMissing
3621 Generate debug information in CodeView format.
3624 Common Driver WarnRemoved
3625 Does nothing. Preserved for backward compatibility.
3628 Common Driver WarnRemoved
3629 Does nothing. Preserved for backward compatibility.
3632 Common Driver WarnRemoved
3633 Does nothing. Preserved for backward compatibility.
3636 Common Driver WarnRemoved
3637 Does nothing. Preserved for backward compatibility.
3640 Common Driver Var(debug_column_info,1) Init(1)
3641 Record DW_AT_decl_column and DW_AT_call_column in DWARF.
3643 ; The CTF generation process feeds off DWARF dies. This option implicitly
3644 ; updates the debug_info_level to DINFO_LEVEL_NORMAL.
3646 Common Driver RejectNegative JoinedOrMissing
3647 Generate CTF debug information at default level.
3650 Common Driver RejectNegative JoinedOrMissing
3651 Generate BTF debug information at default level.
3654 Common Driver Var(debug_prune_btf) Init(0)
3655 Generate pruned BTF when emitting BTF info.
3658 Common Driver JoinedOrMissing RejectNegative
3659 Generate debug information in default version of DWARF format.
3662 Common Driver Joined UInteger Var(dwarf_version) Init(DWARF_VERSION_DEFAULT) RejectNegative
3663 Generate debug information in DWARF v2 (or later) format.
3666 Common Driver Var(dwarf_offset_size,4) Init(4) RejectNegative
3667 Use 32-bit DWARF format when emitting DWARF debug information.
3670 Common Driver Var(dwarf_offset_size,8) RejectNegative
3671 Use 64-bit DWARF format when emitting DWARF debug information.
3674 Common Driver JoinedOrMissing RejectNegative
3675 Generate debug information in default extended format.
3678 Common Driver Var(debug_inline_points)
3679 Generate extended entry point information for inlined functions.
3681 ginternal-reset-location-views
3682 Common Driver Var(debug_internal_reset_location_views) Init(2)
3683 Compute locview reset points based on insn length estimates.
3686 RejectNegative Joined Undocumented
3687 ; Catch the gno- prefix, so it doesn't backtrack to g<level>.
3690 Common Driver Negative(gpubnames) Var(debug_generate_pub_sections, 0) Init(-1)
3691 Don't generate DWARF pubnames and pubtypes sections.
3694 Common Driver Negative(ggnu-pubnames) Var(debug_generate_pub_sections, 1)
3695 Generate DWARF pubnames and pubtypes sections.
3698 Common Driver Negative(gno-pubnames) Var(debug_generate_pub_sections, 2)
3699 Generate DWARF pubnames and pubtypes sections with GNU extensions.
3701 grecord-gcc-switches
3702 Common Driver Var(dwarf_record_gcc_switches) Init(1)
3703 Record gcc command line switches in DWARF DW_AT_producer.
3706 Common Driver Var(dwarf_split_debug_info) Init(0)
3707 Generate debug information in separate .dwo files.
3710 Common Driver WarnRemoved
3711 Does nothing. Preserved for backward compatibility.
3714 Common Driver WarnRemoved
3715 Does nothing. Preserved for backward compatibility.
3717 gstatement-frontiers
3718 Common Driver Var(debug_nonbind_markers_p) PerFunction
3719 Emit progressive recommended breakpoint locations.
3722 Common Driver Var(dwarf_strict) Init(0)
3723 Don't emit DWARF additions beyond selected version.
3726 Common Driver Var(flag_describe_dies) Init(0)
3727 Add description attributes to some DWARF DIEs that have no name attribute.
3730 Common Driver Var(flag_gtoggle)
3731 Toggle debug information generation.
3733 gvariable-location-views
3734 Common Driver Var(debug_variable_location_views, 1)
3735 Augment variable location lists with progressive views.
3737 gvariable-location-views=incompat5
3738 Common Driver RejectNegative Var(debug_variable_location_views, -1) Init(2)
3741 Common Driver JoinedOrMissing RejectNegative
3742 Generate debug information in VMS format.
3745 Common Driver WarnRemoved
3746 Does nothing. Preserved for backward compatibility.
3749 Common Driver JoinedOrMissing WarnRemoved
3750 Does nothing. Preserved for backward compatibility.
3753 Name(compressed_debug_sections) Type(int)
3755 ; Since -gz= is completely handled in specs, the values aren't used and we
3756 ; assign arbitrary constants.
3758 Enum(compressed_debug_sections) String(none) Value(0)
3761 Enum(compressed_debug_sections) String(zlib) Value(1)
3764 Enum(compressed_debug_sections) String(zstd) Value(2)
3767 Enum(compressed_debug_sections) String(zlib-gnu) Value(3)
3771 Generate compressed debug sections.
3774 Common Driver RejectNegative Joined Enum(compressed_debug_sections)
3775 -gz=<format> Generate compressed debug sections in format <format>.
3778 Driver Joined Separate
3781 Common Joined Var(plugindir_string) Init(0)
3782 -iplugindir=<dir> Set <dir> to be the default plugin directory.
3785 Common Joined Separate RejectDriver Var(imultiarch) Init(0)
3786 -imultiarch <dir> Set <dir> to be the multiarch include subdirectory.
3789 Driver Joined Separate
3794 no-canonical-prefixes
3813 Common Driver Joined Separate Var(asm_file_name) MissingArgError(missing filename after %qs)
3814 -o <file> Place output into <file>.
3817 Common Var(profile_flag)
3818 Enable function profiling.
3821 Driver Var(pass_exit_codes)
3824 Common Alias(Wpedantic)
3827 Common Var(flag_pedantic_errors)
3828 Like -pedantic but issue errors instead of warnings.
3834 Driver Var(use_pipes)
3837 Driver JoinedOrMissing Var(print_file_name)
3839 print-libgcc-file-name
3842 print-multi-directory
3843 Driver Var(print_multi_directory)
3846 Driver Var(print_multi_lib)
3848 print-multi-os-directory
3849 Driver Var(print_multi_os_directory)
3852 Driver Var(print_multiarch)
3855 Driver JoinedOrMissing Var(print_prog_name)
3858 Driver Var(print_search_dirs)
3861 Driver Var(print_sysroot)
3863 print-sysroot-headers-suffix
3864 Driver Var(print_sysroot_headers_suffix)
3867 Common Var(quiet_flag) RejectDriver
3868 Do not display functions compiled or elapsed time.
3886 Driver Var(report_times)
3889 Driver JoinedOrMissing
3892 Driver Joined Separate
3896 ; C option, but driver must not handle as "-u ndef".
3899 Common Driver Var(verbose_flag)
3900 Enable verbose output.
3903 Common Var(version_flag) RejectDriver
3904 Display the compiler's version.
3907 Common Var(inhibit_warnings)
3911 Driver Separate Var(wrapper_string)
3914 Driver Joined Separate
3917 Driver RejectNegative Negative(static-pie)
3918 Create a shared library.
3924 Driver Separate Alias(specs=)
3937 ; Documented for Fortran, but always accepted by driver.
3941 ; Documented for COBOL, but always accepted by driver.
3945 ; Documented for Modula-2, but always accepted by driver.
3949 ; Documented for D, but always accepted by driver.
3953 ; Documented for Fortran, but always accepted by driver.
3960 ; Documented for Go, but always accepted by driver.
3981 Driver RejectNegative Negative(shared)
3982 Don't create a dynamically linked position independent executable.
3985 Driver RejectNegative Negative(no-pie)
3986 Create a dynamically linked position independent executable.
3989 Driver RejectNegative Negative(pie)
3990 Create a static position independent executable.
3993 Driver Joined Separate
3996 Common Var(flag_ipa_ra) Optimization
3997 Use caller save register across calls if possible.
4000 Common Var(flag_ext_dce, 1) Optimization Init(0)
4001 Perform dead code elimination on zero and sign extensions with special dataflow analysis.
4003 ; This comment is to ensure we retain the blank line above.