1 ; Options for the language- and target-independent parts of the compiler.
3 ; Copyright (C) 2003-2022 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
56 ; 0 means straightforward implementation of complex divide acceptable.
57 ; 1 means wide ranges of inputs must work for complex divide.
58 ; 2 means C99-like requirements for complex multiply and divide.
60 int flag_complex_method = 1
63 int flag_default_complex_method = 1
65 ; Language specific warning pass for unused results.
67 bool flag_warn_unused_result = false
69 ; Nonzero if we should write GIMPLE bytecode for link-time optimization.
73 ; Nonzero if we should write GIMPLE bytecode for offload compilation.
75 int flag_generate_offload = 0
77 ; Nonzero means we should be saving declaration info into a .X file.
79 int flag_gen_aux_info = 0
81 ; Nonzero if we are compiling code for a shared library, zero for
86 ; These three are really VEC(char_p,heap) *.
89 void *flag_instrument_functions_exclude_functions
92 void *flag_instrument_functions_exclude_files
95 void *flag_ignored_attributes
97 ; Generic structs (e.g. templates not explicitly specialized)
98 ; may not have a compilation unit associated with them, and so
99 ; may need to be treated differently from ordinary structs.
101 ; Structs only handled by reference (indirectly), will also usually
102 ; not need as much debugging information.
105 enum debug_struct_file debug_struct_ordinary[DINFO_USAGE_NUM_ENUMS] = { DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY }
108 enum debug_struct_file debug_struct_generic[DINFO_USAGE_NUM_ENUMS] = { DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY }
110 ; True if we should exit after parsing options.
112 bool exit_after_options
114 ; Type(s) of debugging information we are producing (if any). See
115 ; flag-types.h for the definitions of the different possible types of
116 ; debugging information.
118 uint32_t write_symbols = NO_DEBUG
120 ; Level of debugging information we are producing. See flag-types.h
121 ; for the definitions of the different possible levels.
123 enum debug_info_levels debug_info_level = DINFO_LEVEL_NONE
125 ; Level of CTF debugging information we are producing. See flag-types.h
126 ; for the definitions of the different possible levels.
128 enum ctf_debug_info_levels ctf_debug_info_level = CTFINFO_LEVEL_NONE
130 ; Original value of maximum field alignment in bytes, specified via
131 ; -fpack-struct=<value>.
133 unsigned int initial_max_fld_align = TARGET_DEFAULT_PACK_STRUCT
135 ; Type of stack check.
137 enum stack_check_type flag_stack_check = NO_STACK_CHECK
139 ; True if stack usage information needs to be computed.
141 bool flag_stack_usage_info = false
143 ; -dA causes debug commentary information to be produced in
144 ; the generated assembly code (to make it more readable). This option
145 ; is generally only of use to those who actually need to read the
146 ; generated assembly code (perhaps while debugging the compiler itself).
147 ; Currently, this switch is only used by dwarf2out.cc; however, it is intended
148 ; to be a catchall for printing debug information in the assembler file.
152 ; Balance between GNAT encodings and standard DWARF to emit.
154 enum dwarf_gnat_encodings gnat_encodings = DWARF_GNAT_ENCODINGS_DEFAULT
156 ; -dP causes the rtl to be emitted as a comment in assembly.
158 int flag_dump_rtl_in_asm
160 ; Whether -da was passed (used only in handle_common_deferred_options).
162 bool flag_dump_all_passed
164 ; Other flags saying which kinds of debugging dump have been requested.
167 int rtl_dump_and_exit
170 int flag_print_asm_name
172 ; Name of top-level original source file (what was input to cpp).
173 ; This comes from the #-command at the beginning of the actual input.
174 ; If there isn't any there, then this is the cc1 input file name.
176 const char *main_input_filename
178 ; Pointer to base name in main_input_filename, with directories and a
179 ; single final extension removed, and the length of this base
183 const char *main_input_basename
186 int main_input_baselength
188 ; The base name used for auxiliary output files.
189 ; dump_base_name minus dump_base_ext.
192 const char *aux_base_name
194 ; Which options have been printed by --help.
198 ; Which enums have been printed by --help. 0 = not printed, no
199 ; relevant options seen, 1 = relevant option seen, not yet printed, 2
202 char *help_enum_printed
204 ; The number of columns for --help output.
206 unsigned int help_columns
208 ; Whether this options structure has been through finish_options
210 bool flag_opts_finished
212 ; What the sanitizer should instrument
214 unsigned int flag_sanitize
216 ; What sanitizers should recover from errors
218 unsigned int flag_sanitize_recover = (SANITIZE_UNDEFINED | SANITIZE_UNDEFINED_NONDEFAULT | SANITIZE_KERNEL_ADDRESS | SANITIZE_KERNEL_HWADDRESS) & ~(SANITIZE_UNREACHABLE | SANITIZE_RETURN)
220 ; What sanitizers should use __builtin_trap () instead of runtime diagnostics
222 unsigned int flag_sanitize_trap
224 ; Flag whether a prefix has been added to dump_base_name
226 bool dump_base_name_prefixed = false
228 ; What subset of registers should be zeroed on function return
230 unsigned int flag_zero_call_used_regs
242 Common Driver Joined Undocumented
243 Provide bash completion for options starting with provided string.
246 Driver Alias(coverage)
252 Common Separate Alias(d)
255 Common Joined Alias(d)
258 Driver Common Separate Alias(dumpbase)
261 Driver Common Separate Alias(dumpbase-ext)
264 Driver Common Separate Alias(dumpdir)
267 Driver Separate Alias(e)
270 Driver Joined Alias(e)
273 Common Warning Alias(Wextra)
276 Driver Separate Alias(Xassembler)
279 Driver JoinedOrMissing Alias(Xassembler)
282 Driver Separate Alias(Xlinker)
285 Driver JoinedOrMissing Alias(Xlinker)
288 Driver Separate Alias(u)
291 Driver Joined Alias(u)
294 Common Driver Var(help_flag)
295 Display this information.
299 --help=<class> Display descriptions of a specific class of options. <class> is one or more of optimizers, target, warnings, undocumented, params.
302 Driver Separate Alias(x)
305 Driver Joined Alias(x)
308 Driver Separate Alias(L)
311 Driver Joined Alias(L)
313 -no-canonical-prefixes
314 Driver Alias(no-canonical-prefixes)
316 -no-standard-libraries
317 Driver Alias(nostdlib)
320 Driver Var(no_sysroot_suffix)
329 Common Driver Separate Alias(o) MissingArgError(missing filename after %qs)
332 Common Driver Joined Alias(o) MissingArgError(missing filename after %qs)
335 Driver Alias(pass-exit-codes)
338 Common Alias(Wpedantic)
341 Common Alias(pedantic-errors)
347 Driver Alias(static-pie)
353 Driver Separate Alias(B)
356 Driver JoinedOrMissing Alias(B)
362 Driver Separate Alias(print-file-name=)
365 Driver JoinedOrMissing Alias(print-file-name=)
367 -print-libgcc-file-name
368 Driver Alias(print-libgcc-file-name)
370 -print-multi-directory
371 Driver Alias(print-multi-directory)
374 Driver Alias(print-multi-lib)
376 -print-multi-os-directory
377 Driver Alias(print-multi-os-directory)
380 Driver Alias(print-multiarch)
383 Driver Separate Alias(print-prog-name=)
386 Driver JoinedOrMissing Alias(print-prog-name=)
389 Driver Alias(print-search-dirs)
392 Driver Alias(print-sysroot)
394 -print-sysroot-headers-suffix
395 Driver Alias(print-sysroot-headers-suffix)
401 Driver Alias(save-temps)
407 Driver Separate Alias(specs=)
410 Driver Joined Alias(specs=)
416 Driver Alias(symbolic)
420 Display target specific command line options (including assembler and linker options).
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 Var(warn_array_bounds) Warning
543 Warn if an array is accessed out of bounds.
546 Common Joined RejectNegative UInteger Var(warn_array_bounds) Warning IntegerRange(0, 2)
547 Warn if an array is accessed out of bounds.
550 Common Var(warn_use_after_free) Warning
551 Warn for uses of pointers to deallocated storage.
554 Common Joined RejectNegative UInteger Var(warn_use_after_free) Warning IntegerRange(0, 3)
555 Warn for uses of pointers to deallocated storage.
558 Common Var(warn_attributes) Init(1) Warning
559 Warn about inappropriate attribute usage.
563 Do not warn about specified attributes.
566 Common Alias(Wattribute_alias=, 1, 0) Warning
567 Warn about type safety and similar errors and mismatches in declarations with alias attributes.
570 Common Joined RejectNegative UInteger Var(warn_attribute_alias) Init(1) Warning IntegerRange(0, 2)
571 Warn about type safety and similar errors and mismatches in declarations with alias attributes.
574 Common Var(warn_cannot_profile) Init(1) Warning
575 Warn when profiling instrumentation was requested, but could not be applied to
579 Common Var(warn_cast_align) Warning
580 Warn about pointer casts which increase alignment.
583 Common Var(warn_cast_align,2) Warning
584 Warn about pointer casts which increase alignment.
587 Common Var(warn_cpp) Init(1) Warning
588 Warn when a #warning directive is encountered.
591 Common Var(warn_attribute_warning) Init(1) Warning
592 Warn about uses of __attribute__((warning)) declarations.
595 Common Var(warn_deprecated) Init(1) Warning
596 Warn if a deprecated compiler feature, class, method, or field is used.
598 Wdeprecated-declarations
599 Common Var(warn_deprecated_decl) Init(1) Warning
600 Warn about uses of __attribute__((deprecated)) declarations.
602 Wdisabled-optimization
603 Common Var(warn_disabled_optimization) Warning
604 Warn when an optimization pass is disabled.
607 Common Var(warnings_are_errors)
608 Treat all warnings as errors.
612 Treat specified warning as error.
615 Common Var(extra_warnings) Warning
616 Print extra (possibly unwanted) warnings.
619 Common Var(flag_fatal_errors)
620 Exit on the first error occurred.
623 Common RejectNegative Joined Host_Wide_Int ByteSize Warning Var(warn_frame_larger_than_size) Init(HOST_WIDE_INT_MAX)
624 -Wframe-larger-than=<byte-size> Warn if a function's stack frame requires in excess of <byte-size>.
626 Wno-frame-larger-than
627 Common Alias(Wframe-larger-than=,18446744073709551615EiB,none) Warning
628 Disable -Wframe-larger-than= warning. Equivalent to -Wframe-larger-than=<SIZE_MAX> or larger.
631 Common Var(warn_free_nonheap_object) Init(1) Warning
632 Warn when attempting to free a non-heap object.
635 Common Ignore Warning
636 Does nothing. Preserved for backward compatibility.
638 Wimplicit-fallthrough
639 Common Alias(Wimplicit-fallthrough=,3,0) Warning
641 Wimplicit-fallthrough=
642 Common Var(warn_implicit_fallthrough) RejectNegative Joined UInteger Warning IntegerRange(0, 5)
643 Warn when a switch case falls through.
646 Var(warn_infinite_recursion) Warning
647 Warn for infinitely recursive calls.
650 Common Var(warn_inline) Warning Optimization
651 Warn when an inlined function cannot be inlined.
653 Winvalid-memory-model
654 Common Var(warn_invalid_memory_model) Init(1) Warning
655 Warn when an atomic memory model parameter is known to be outside the valid range.
658 Common RejectNegative Joined Warning Undocumented Alias(Wlarger-than=)
661 Common RejectNegative Joined Host_Wide_Int ByteSize Warning Var(warn_larger_than_size) Init(HOST_WIDE_INT_MAX)
662 -Wlarger-than=<byte-size> Warn if an object's size exceeds <byte-size>.
665 Common Alias(Wlarger-than=,18446744073709551615EiB,none) Warning
666 Disable -Wlarger-than= warning. Equivalent to -Wlarger-than=<SIZE_MAX> or larger.
669 Var(warn_nonnull_compare) Warning
670 Warn if comparing pointer parameter with nonnull attribute with NULL.
673 Common Var(warn_null_dereference) Warning
674 Warn if dereferencing a NULL pointer may lead to erroneous or undefined behavior.
676 Wunsafe-loop-optimizations
677 Common Ignore Warning
678 Does nothing. Preserved for backward compatibility.
681 Common Warning Alias(Wsuggest-attribute=noreturn)
684 Common Var(warn_odr_violations) Init(1) Warning
685 Warn about some C++ One Definition Rule violations during link time optimization.
688 Common Var(warn_overflow) Init(1) Warning
689 Warn about overflow in arithmetic expressions.
692 Common Var(warn_lto_type_mismatch) Init(1) Warning
693 During link time optimization warn about mismatched types of global declarations.
696 Common Var(warn_packed) Warning
697 Warn when the packed attribute has no effect on struct layout.
700 Common Var(warn_padded) Warning
701 Warn when padding is required to align structure members.
704 Common Var(pedantic) Init(0) Warning
705 Issue warnings needed for strict compliance to the standard.
708 Common Var(warn_return_local_addr) Init(1) Warning
709 Warn about returning a pointer/reference to a local or temporary variable.
712 Common Var(warn_shadow) Warning
713 Warn when one variable shadows another. Same as -Wshadow=global.
716 Common Warning Alias(Wshadow)
717 Warn when one variable shadows another (globally).
720 Common Var(warn_shadow_local) Warning EnabledBy(Wshadow)
721 Warn when one local variable shadows another local variable or parameter.
724 Common Warning Undocumented Alias(Wshadow=local)
726 Wshadow=compatible-local
727 Common Var(warn_shadow_compatible_local) Warning EnabledBy(Wshadow=local)
728 Warn when one local variable shadows another local variable or parameter of compatible type.
730 Wshadow-compatible-local
731 Common Warning Undocumented Alias(Wshadow=compatible-local)
734 Common Var(warn_stack_protect) Warning
735 Warn when not issuing stack smashing protection for some reason.
738 Common Joined RejectNegative Host_Wide_Int ByteSize Var(warn_stack_usage) Warning Init(HOST_WIDE_INT_MAX)
739 -Wstack-usage=<byte-size> Warn if stack usage might exceed <byte-size>.
742 Common Alias(Wstack-usage=,18446744073709551615EiB,none) Warning
743 Disable Wstack-usage= warning. Equivalent to Wstack-usage=<SIZE_MAX> or larger.
747 Warn about code which might break strict aliasing rules.
750 Common Joined RejectNegative UInteger Var(warn_strict_aliasing) Warning
751 Warn about code which might break strict aliasing rules.
755 Warn about optimizations that assume that signed overflow is undefined.
758 Common Joined RejectNegative UInteger Var(warn_strict_overflow) Warning
759 Warn about optimizations that assume that signed overflow is undefined.
761 Wsuggest-attribute=cold
762 Common Var(warn_suggest_attribute_cold) Warning
763 Warn about functions which might be candidates for __attribute__((cold)).
765 Wsuggest-attribute=const
766 Common Var(warn_suggest_attribute_const) Warning
767 Warn about functions which might be candidates for __attribute__((const)).
769 Wsuggest-attribute=pure
770 Common Var(warn_suggest_attribute_pure) Warning
771 Warn about functions which might be candidates for __attribute__((pure)).
773 Wsuggest-attribute=noreturn
774 Common Var(warn_suggest_attribute_noreturn) Warning
775 Warn about functions which might be candidates for __attribute__((noreturn)).
777 Wsuggest-attribute=malloc
778 Common Var(warn_suggest_attribute_malloc) Warning
779 Warn about functions which might be candidates for __attribute__((malloc)).
782 Common Var(warn_suggest_final_types) Warning
783 Warn about C++ polymorphic types where adding final keyword would improve code quality.
785 Wsuggest-final-methods
786 Common Var(warn_suggest_final_methods) Warning
787 Warn about C++ virtual methods where adding final keyword would improve code quality.
790 Common Var(warn_switch_unreachable) Warning Init(1)
791 Warn about statements between switch's controlling expression and the first
795 Common Var(warn_system_headers) Warning
796 Do not suppress warnings from system headers.
799 Common Var(warn_trampolines) Warning
800 Warn whenever a trampoline is generated.
802 Wtrivial-auto-var-init
803 Common Var(warn_trivial_auto_var_init) Warning Init(0)
804 Warn about cases where -ftrivial-auto-var-init cannot initialize an auto variable.
807 Common Var(warn_type_limits) Warning EnabledBy(Wextra)
808 Warn if a comparison is always true or always false due to the limited range of the data type.
811 Common Var(warn_uninitialized) Warning EnabledBy(Wextra)
812 Warn about uninitialized automatic variables.
815 Common Var(warn_maybe_uninitialized) Warning EnabledBy(Wuninitialized)
816 Warn about maybe uninitialized automatic variables.
819 Common Ignore Warning
820 Does nothing. Preserved for backward compatibility.
823 Common Var(warn_unused) Init(0) Warning
824 Enable all -Wunused- warnings.
826 Wunused-but-set-parameter
827 Common Var(warn_unused_but_set_parameter) Warning EnabledBy(Wunused && Wextra)
828 Warn when a function parameter is only set, otherwise unused.
830 Wunused-but-set-variable
831 Common Var(warn_unused_but_set_variable) Warning EnabledBy(Wunused)
832 Warn when a variable is only set, otherwise unused.
835 Common Var(warn_unused_function) Warning EnabledBy(Wunused)
836 Warn when a function is unused.
839 Common Var(warn_unused_label) Warning EnabledBy(Wunused)
840 Warn when a label is unused.
843 Common Var(warn_unused_parameter) Warning EnabledBy(Wunused && Wextra)
844 Warn when a function parameter is unused.
847 Common Var(warn_unused_value) Warning EnabledBy(Wunused)
848 Warn when an expression value is unused.
851 Common Var(warn_unused_variable) Warning EnabledBy(Wunused)
852 Warn when a variable is unused.
855 Common Var(warn_coverage_mismatch) Init(1) Warning
856 Warn in case profiles in -fprofile-use do not match.
858 Wcoverage-invalid-line-number
859 Common Var(warn_coverage_invalid_linenum) Init(1) Warning
860 Warn in case a function ends earlier than it begins due to an invalid linenum macros.
863 Common Var(warn_missing_profile) Init(1) Warning
864 Warn in case profiles in -fprofile-use do not exist.
866 Wvector-operation-performance
867 Common Var(warn_vector_operation_performance) Warning
868 Warn when a vector operation is compiled outside the SIMD.
871 Common Var(warn_tsan) Init(1) Warning
872 Warn about unsupported features in ThreadSanitizer.
887 Common Separate Var(aux_info_file_name)
888 -aux-info <file> Emit declaration information into <file>.
891 Common Joined Alias(aux-info)
901 -d<letters> Enable dumps from specific passes of the compiler.
904 Driver Common Separate Var(dump_base_name)
905 -dumpbase <file> Set the file basename to be used for dumps.
908 Driver Common Separate Var(dump_base_ext)
909 -dumpbase-ext .<ext> Drop a trailing .<ext> from the dump basename to name auxiliary output files.
912 Driver Common Separate Var(dump_dir_name)
913 -dumpdir <dir> Set the directory name to be used for dumps.
928 Driver Joined Separate
930 ; This option has historically been passed down to the linker by an
931 ; accident of a %{e*} spec, so ensure it continues to be passed down
932 ; as a single option. The supported option for this purpose is
933 ; -rdynamic. See PR 47390.
937 ; The version of the C++ ABI in use. The following values are allowed:
939 ; 0: The version of the ABI believed most conformant with the C++ ABI
940 ; specification. This ABI may change as bugs are discovered and fixed.
941 ; Therefore, 0 will not necessarily indicate the same ABI in different
944 ; 1: The version of the ABI first used in G++ 3.2. No longer selectable.
946 ; 2: The version of the ABI first used in G++ 3.4, and the default
949 ; 3: The version of the ABI that fixes the missing underscore
950 ; in template non-type arguments of pointer type.
952 ; 4: The version of the ABI that introduces unambiguous mangling of
953 ; vector types. First selectable in G++ 4.5.
955 ; 5: The version of the ABI that ignores attribute const/noreturn
956 ; in function pointer mangling, and corrects mangling of decltype and
957 ; function parameters used in other parameters and the return type.
958 ; First selectable in G++ 4.6.
960 ; 6: The version of the ABI that doesn't promote scoped enums to int and
961 ; changes the mangling of template argument packs, const/static_cast,
962 ; prefix ++ and --, and a class scope function used as a template
964 ; First selectable in G++ 4.7.
966 ; 7: The version of the ABI that treats nullptr_t as a builtin type and
967 ; corrects the mangling of lambdas in default argument scope.
968 ; First selectable in G++ 4.8.
970 ; 8: The version of the ABI that corrects the substitution behavior of
971 ; function types with function-cv-qualifiers.
972 ; First selectable in G++ 4.9 and default in G++ 5.
974 ; 9: The version of the ABI that corrects the alignment of nullptr_t.
975 ; First selectable and default in G++ 5.2.
977 ; 10: The version of the ABI that mangles attributes that affect type
978 ; identity, such as ia32 calling convention attributes (stdcall, etc.)
979 ; Default in G++ 6 (set in c_common_post_options).
981 ; 11: The version of the ABI that corrects mangling of sizeof... expressions
982 ; and introduces new inheriting constructor handling.
985 ; 12: Corrects the calling convention for classes with only deleted copy/move
986 ; constructors and changes passing/returning of empty records.
987 ; Default in G++ 8.1.
989 ; 13: Fixes the accidental change in 12 to the calling convention for classes
990 ; with deleted copy constructor and trivial move constructor.
991 ; Default in G++ 8.2.
993 ; 14: Corrects the mangling of nullptr expression.
996 ; 15: Corrects G++ 10 ABI tag regression [PR98481].
997 ; Available, but not default, in G++ 10.3.
999 ; 16: Changes the mangling of __alignof__ to be distinct from that of alignof.
1000 ; Adds missing 'on' in mangling of operator names in some cases.
1001 ; Default in G++ 11.
1003 ; 17: Fixes layout of classes that inherit from aggregate classes with default
1004 ; member initializers in C++14 and up.
1005 ; Default in G++ 12.
1007 ; Additional positive integers will be assigned as new versions of
1008 ; the ABI become the default version of the ABI.
1010 Common Joined RejectNegative UInteger Var(flag_abi_version) Init(0)
1011 The version of the C++ ABI in use.
1013 faggressive-loop-optimizations
1014 Common Var(flag_aggressive_loop_optimizations) Optimization Init(1)
1015 Aggressively optimize loops using language constraints.
1018 Common Var(flag_align_functions) Optimization
1019 Align the start of functions.
1022 Common RejectNegative Joined Var(str_align_functions) Optimization
1024 flimit-function-alignment
1025 Common Var(flag_limit_function_alignment) Optimization Init(0)
1028 Common Var(flag_align_jumps) Optimization
1029 Align labels which are only reached by jumping.
1032 Common RejectNegative Joined Var(str_align_jumps) Optimization
1035 Common Var(flag_align_labels) Optimization
1039 Common RejectNegative Joined Var(str_align_labels) Optimization
1042 Common Var(flag_align_loops) Optimization
1043 Align the start of loops.
1046 Common RejectNegative Joined Var(str_align_loops) Optimization
1048 fallow-store-data-races
1049 Common Var(flag_store_data_races) Optimization
1050 Allow the compiler to introduce new data races on stores.
1053 Common Var(flag_analyzer)
1054 Enable static analysis pass.
1058 Does nothing. Preserved for backward compatibility.
1062 Does nothing. Preserved for backward compatibility.
1064 fargument-noalias-global
1066 Does nothing. Preserved for backward compatibility.
1068 fargument-noalias-anything
1070 Does nothing. Preserved for backward compatibility.
1073 Common Driver Joined
1074 Select what to sanitize.
1077 Common Joined Enum(sanitize_coverage) Var(flag_sanitize_coverage) EnumBitSet
1078 Select type of coverage sanitization.
1081 Name(sanitize_coverage) Type(int)
1084 Enum(sanitize_coverage) String(trace-pc) Value(SANITIZE_COV_TRACE_PC)
1087 Enum(sanitize_coverage) String(trace-cmp) Value(SANITIZE_COV_TRACE_CMP)
1089 fasan-shadow-offset=
1090 Common Joined RejectNegative Var(common_deferred_options) Defer
1091 -fasan-shadow-offset=<number> Use custom shadow memory offset.
1094 Common Joined RejectNegative Var(common_deferred_options) Defer
1095 -fsanitize-sections=<sec1,sec2,...> Sanitize global variables
1096 in user-defined sections.
1100 After diagnosing undefined behavior attempt to continue execution.
1104 This switch is deprecated; use -fsanitize-recover= instead.
1107 Common Driver Joined
1108 Use traps instead of diagnostics of undefined behavior sanitizers.
1113 fsanitize-address-use-after-scope
1114 Common Driver Var(flag_sanitize_address_use_after_scope) Init(0)
1116 fsanitize-undefined-trap-on-error
1117 Common Driver Alias(fsanitize-trap)
1118 This switch is deprecated; use -fsanitize-trap= instead.
1120 fasynchronous-unwind-tables
1121 Common Var(flag_asynchronous_unwind_tables) Optimization
1122 Generate unwind tables that are exact at each instruction boundary.
1125 Common Var(flag_auto_inc_dec) Init(1) Optimization
1126 Generate auto-inc/dec instructions.
1129 Common Var(flag_auto_profile)
1130 Use sample profile information for call graph node weights. The default
1131 profile file is fbdata.afdo in 'pwd'.
1134 Common Joined RejectNegative Var(auto_profile_file)
1135 Use sample profile information for call graph node weights. The profile
1136 file is specified in the argument.
1138 ; -fcheck-bounds causes gcc to generate array bounds checks.
1139 ; For C, C++ and ObjC: defaults off.
1140 ; For Java: defaults to on.
1141 ; For Fortran: defaults to off.
1143 Common Var(flag_bounds_check)
1144 Generate code to check bounds before indexing arrays.
1147 Common Var(flag_branch_on_count_reg) Optimization
1148 Replace add, compare, branch with branch on count register.
1150 fbranch-probabilities
1151 Common Var(flag_branch_probabilities) Optimization
1152 Use profiling information for branch probabilities.
1154 fbranch-target-load-optimize
1156 Does nothing. Preserved for backward compatibility.
1158 fbranch-target-load-optimize2
1160 Does nothing. Preserved for backward compatibility.
1164 Does nothing. Preserved for backward compatibility.
1167 Common RejectNegative Var(flag_callgraph_info) Init(NO_CALLGRAPH_INFO);
1168 Output callgraph information on a per-file basis.
1171 Common RejectNegative Joined
1172 Output callgraph information on a per-file basis with decorations.
1175 Common Joined RejectNegative Var(common_deferred_options) Defer
1176 -fcall-saved-<register> Mark <register> as being preserved across functions.
1179 Common Joined RejectNegative Var(common_deferred_options) Defer
1180 -fcall-used-<register> Mark <register> as being corrupted by function calls.
1182 ; Nonzero for -fcaller-saves: allocate values in regs that need to
1183 ; be saved across function calls, if that produces overall better code.
1184 ; Optional now, so people can test it.
1186 Common Var(flag_caller_saves) Optimization
1187 Save registers around function calls.
1191 This switch is deprecated; do not use.
1194 Common Var(flag_check_new)
1195 Check the return value of new in C++.
1198 Common Var(flag_checking) Init(CHECKING_P ? ENABLE_EXTRA_CHECKING ? 2 : 1 : 0)
1199 Perform internal consistency checkings.
1202 Common Joined RejectNegative UInteger Var(flag_checking)
1203 Perform internal consistency checkings.
1206 Common Var(flag_code_hoisting) Optimization
1207 Enable code hoisting.
1209 fcombine-stack-adjustments
1210 Common Var(flag_combine_stack_adjustments) Optimization
1211 Looks for opportunities to reduce stack adjustments and stack references.
1214 Common Var(flag_no_common,0) Init(1)
1215 Put uninitialized globals in the common section.
1219 ; Converted by the driver to -fcompare-debug= options.
1222 Common Driver JoinedOrMissing RejectNegative Var(flag_compare_debug_opt)
1223 -fcompare-debug[=<opts>] Compile with and without e.g. -gtoggle, and compare the final-insns dump.
1225 fcompare-debug-second
1226 Common Driver RejectNegative Var(flag_compare_debug)
1227 Run only the second compilation of -fcompare-debug.
1230 Common Var(flag_compare_elim_after_reload) Optimization
1231 Perform comparison elimination after register allocation has finished.
1234 Common Var(flag_conserve_stack) Optimization
1235 Do not perform optimizations increasing noticeably stack usage.
1238 Common Var(flag_cprop_registers) Optimization
1239 Perform a register copy-propagation optimization pass.
1242 Common Var(flag_crossjumping) Optimization
1243 Perform cross-jumping optimization.
1246 Common Var(flag_cse_follow_jumps) Optimization
1247 When running CSE, follow jumps to their targets.
1251 Does nothing. Preserved for backward compatibility.
1254 Common Var(flag_cx_limited_range) Optimization SetByCombined
1255 Omit range reduction step when performing complex division.
1258 Common Var(flag_cx_fortran_rules) Optimization
1259 Complex multiplication and division follow Fortran rules.
1262 Common Var(flag_data_sections)
1263 Place data items into their own section.
1266 Common Var(flag_dbg_cnt_list)
1267 List all available debugging counters with their limits and counts.
1270 Common RejectNegative Joined Var(common_deferred_options) Defer
1271 -fdbg-cnt=<counter>[:<lower_limit1>-]<upper_limit1>[:<lower_limit2>-<upper_limit2>:...][,<counter>:...] Set the debug counter limit.
1274 Common Joined RejectNegative Var(common_deferred_options) Defer
1275 -fdebug-prefix-map=<old>=<new> Map one directory name to another in debug information.
1278 Common Joined RejectNegative Var(common_deferred_options) Defer
1279 -ffile-prefix-map=<old>=<new> Map one directory name to another in compilation result.
1281 fdebug-types-section
1282 Common Var(flag_debug_types_section) Init(0)
1283 Output .debug_types section when using DWARF v4 debuginfo.
1285 ; Nonzero for -fdefer-pop: don't pop args after each function call
1286 ; instead save them up to pop many calls' args with one insns.
1288 Common Var(flag_defer_pop) Optimization
1289 Defer popping functions args from stack until later.
1292 Common Var(flag_delayed_branch) Optimization
1293 Attempt to fill delay slots of branch instructions.
1295 fdelete-dead-exceptions
1296 Common Var(flag_delete_dead_exceptions) Init(0) Optimization
1297 Delete dead instructions that may throw exceptions.
1299 fdelete-null-pointer-checks
1300 Common Var(flag_delete_null_pointer_checks) Init(-1) Optimization
1301 Delete useless null pointer checks.
1303 fdevirtualize-at-ltrans
1304 Common Var(flag_ltrans_devirtualize)
1305 Stream extra data to support more aggressive devirtualization in LTO local transformation mode.
1307 fdevirtualize-speculatively
1308 Common Var(flag_devirtualize_speculatively) Optimization
1309 Perform speculative devirtualization.
1312 Common Var(flag_devirtualize) Optimization
1313 Try to convert virtual calls to direct ones.
1315 fdiagnostics-show-location=
1316 Common Joined RejectNegative Enum(diagnostic_prefixing_rule)
1317 -fdiagnostics-show-location=[once|every-line] How often to emit source location at the beginning of line-wrapped diagnostics.
1319 ; Required for these enum values.
1324 Name(diagnostic_prefixing_rule) Type(int)
1327 Enum(diagnostic_prefixing_rule) String(once) Value(DIAGNOSTICS_SHOW_PREFIX_ONCE)
1330 Enum(diagnostic_prefixing_rule) String(every-line) Value(DIAGNOSTICS_SHOW_PREFIX_EVERY_LINE)
1332 fdiagnostics-show-caret
1333 Common Var(flag_diagnostics_show_caret) Init(1)
1334 Show the source line with a caret indicating the column.
1336 fdiagnostics-show-labels
1337 Common Var(flag_diagnostics_show_labels) Init(1)
1338 Show labels annotating ranges of source code when showing source.
1340 fdiagnostics-show-line-numbers
1341 Common Var(flag_diagnostics_show_line_numbers) Init(1)
1342 Show line numbers in the left margin when showing source.
1345 Common Alias(fdiagnostics-color=,always,never)
1349 Driver Common Joined RejectNegative Var(flag_diagnostics_show_color) Enum(diagnostic_color_rule) Init(DIAGNOSTICS_COLOR_NO)
1350 -fdiagnostics-color=[never|always|auto] Colorize diagnostics.
1352 ; Required for these enum values.
1357 Name(diagnostic_color_rule) Type(int)
1360 Enum(diagnostic_color_rule) String(never) Value(DIAGNOSTICS_COLOR_NO)
1363 Enum(diagnostic_color_rule) String(always) Value(DIAGNOSTICS_COLOR_YES)
1366 Enum(diagnostic_color_rule) String(auto) Value(DIAGNOSTICS_COLOR_AUTO)
1369 Driver Common Joined RejectNegative Var(flag_diagnostics_show_urls) Enum(diagnostic_url_rule) Init(DIAGNOSTICS_URL_AUTO)
1370 -fdiagnostics-urls=[never|always|auto] Embed URLs in diagnostics.
1372 ; Required for these enum values.
1377 Name(diagnostic_url_rule) Type(int)
1380 Enum(diagnostic_url_rule) String(never) Value(DIAGNOSTICS_URL_NO)
1383 Enum(diagnostic_url_rule) String(always) Value(DIAGNOSTICS_URL_YES)
1386 Enum(diagnostic_url_rule) String(auto) Value(DIAGNOSTICS_URL_AUTO)
1388 fdiagnostics-column-unit=
1389 Common Joined RejectNegative Enum(diagnostics_column_unit)
1390 -fdiagnostics-column-unit=[display|byte] Select whether column numbers are output as display columns (default) or raw bytes.
1392 fdiagnostics-column-origin=
1393 Common Joined RejectNegative UInteger
1394 -fdiagnostics-column-origin=<number> Set the number of the first column. The default is 1-based as per GNU style, but some utilities may expect 0-based, for example.
1396 fdiagnostics-format=
1397 Common Joined RejectNegative Enum(diagnostics_output_format)
1398 -fdiagnostics-format=[text|sarif-stderr|sarif-file|json|json-stderr|json-file] Select output format.
1400 fdiagnostics-escape-format=
1401 Common Joined RejectNegative Enum(diagnostics_escape_format)
1402 -fdiagnostics-escape-format=[unicode|bytes] Select how to escape non-printable-ASCII bytes in the source for diagnostics that suggest it.
1404 ; Required for these enum values.
1409 Name(diagnostics_column_unit) Type(int)
1412 Enum(diagnostics_column_unit) String(display) Value(DIAGNOSTICS_COLUMN_UNIT_DISPLAY)
1415 Enum(diagnostics_column_unit) String(byte) Value(DIAGNOSTICS_COLUMN_UNIT_BYTE)
1418 Name(diagnostics_escape_format) Type(int)
1421 Enum(diagnostics_escape_format) String(unicode) Value(DIAGNOSTICS_ESCAPE_FORMAT_UNICODE)
1424 Enum(diagnostics_escape_format) String(bytes) Value(DIAGNOSTICS_ESCAPE_FORMAT_BYTES)
1427 Name(diagnostics_output_format) Type(int)
1430 Enum(diagnostics_output_format) String(text) Value(DIAGNOSTICS_OUTPUT_FORMAT_TEXT)
1433 Enum(diagnostics_output_format) String(json) Value(DIAGNOSTICS_OUTPUT_FORMAT_JSON_STDERR)
1436 Enum(diagnostics_output_format) String(json-stderr) Value(DIAGNOSTICS_OUTPUT_FORMAT_JSON_STDERR)
1439 Enum(diagnostics_output_format) String(json-file) Value(DIAGNOSTICS_OUTPUT_FORMAT_JSON_FILE)
1442 Enum(diagnostics_output_format) String(sarif-stderr) Value(DIAGNOSTICS_OUTPUT_FORMAT_SARIF_STDERR)
1445 Enum(diagnostics_output_format) String(sarif-file) Value(DIAGNOSTICS_OUTPUT_FORMAT_SARIF_FILE)
1447 fdiagnostics-parseable-fixits
1448 Common Var(flag_diagnostics_parseable_fixits)
1449 Print fix-it hints in machine-readable form.
1451 fdiagnostics-generate-patch
1452 Common Var(flag_diagnostics_generate_patch)
1453 Print fix-it hints to stderr in unified diff format.
1455 fdiagnostics-show-option
1456 Common Var(flag_diagnostics_show_option) Init(1)
1457 Amend appropriate diagnostic messages with the command line option that controls them.
1459 fdiagnostics-show-cwe
1460 Common Var(flag_diagnostics_show_cwe) Init(1)
1461 Print CWE identifiers for diagnostic messages, where available.
1463 fdiagnostics-show-rules
1464 Common Var(flag_diagnostics_show_rules) Init(1)
1465 Print any rules associated with diagnostic messages.
1467 fdiagnostics-path-format=
1468 Common Joined RejectNegative Var(flag_diagnostics_path_format) Enum(diagnostic_path_format) Init(DPF_INLINE_EVENTS)
1469 Specify how to print any control-flow path associated with a diagnostic.
1471 fdiagnostics-plain-output
1472 Driver Common RejectNegative
1473 Turn off any diagnostics features that complicate the output, such as line numbers, color, and warning URLs.
1476 Common Joined RejectNegative UInteger
1477 -ftabstop=<number> Distance between tab stops for column reporting.
1480 Name(diagnostic_path_format) Type(int)
1483 Enum(diagnostic_path_format) String(none) Value(DPF_NONE)
1486 Enum(diagnostic_path_format) String(separate-events) Value(DPF_SEPARATE_EVENTS)
1489 Enum(diagnostic_path_format) String(inline-events) Value(DPF_INLINE_EVENTS)
1491 fdiagnostics-show-path-depths
1492 Common Var(flag_diagnostics_show_path_depths) Init(0)
1493 Show stack depths of events in paths.
1495 fdiagnostics-minimum-margin-width=
1496 Common Joined UInteger Var(diagnostics_minimum_margin_width) Init(6)
1497 Set minimum width of left margin of source code when showing source.
1500 Common Joined RejectNegative Var(common_deferred_options) Defer
1501 -fdisable-[tree|rtl|ipa]-<pass>=range1+range2 Disable an optimization pass.
1504 Common Joined RejectNegative Var(common_deferred_options) Defer
1505 -fenable-[tree|rtl|ipa]-<pass>=range1+range2 Enable an optimization pass.
1508 Common Joined RejectNegative Var(common_deferred_options) Defer
1509 -fdump-<type> Dump various compiler internals to a file.
1512 Driver RejectNegative
1515 Common RejectNegative Joined Var(flag_dump_final_insns)
1516 -fdump-final-insns=filename Dump to filename the insns at the end of translation.
1519 Common RejectNegative Joined Var(flag_dump_go_spec)
1520 -fdump-go-spec=filename Write all declarations to file as Go code.
1523 Common Var(flag_dump_noaddr)
1524 Suppress output of addresses in debugging dumps.
1527 Common Driver Var(flag_report_bug)
1528 Collect and dump debug information into temporary file if ICE in C/C++
1531 fdump-internal-locations
1532 Common Var(flag_dump_locations) Init(0)
1533 Dump detailed information on GCC's internal representation of source code locations.
1536 Common Var(flag_dump_passes) Init(0)
1537 Dump optimization passes.
1540 Common Var(flag_dump_unnumbered)
1541 Suppress output of instruction numbers, line number notes and addresses in debugging dumps.
1543 fdump-unnumbered-links
1544 Common Var(flag_dump_unnumbered_links)
1545 Suppress output of previous and next insn numbers in debugging dumps.
1548 Common Var(flag_dwarf2_cfi_asm) Init(HAVE_GAS_CFI_DIRECTIVE)
1549 Enable CFI tables via GAS assembler directives.
1552 Common Var(flag_early_inlining) Init(1) Optimization
1553 Perform early inlining.
1555 feliminate-dwarf2-dups
1557 Does nothing. Preserved for backward compatibility.
1560 Common Var(flag_ipa_sra) Init(0) Optimization
1561 Perform interprocedural reduction of aggregates.
1563 feliminate-unused-debug-symbols
1564 Common Var(flag_debug_only_used_symbols) Init(1)
1565 Perform unused symbol elimination in debug info.
1567 feliminate-unused-debug-types
1568 Common Var(flag_eliminate_unused_debug_types) Init(1)
1569 Perform unused type elimination in debug info.
1571 femit-class-debug-always
1572 Common Var(flag_emit_class_debug_always) Init(0)
1573 Do not suppress C++ class debug information.
1576 Common Var(flag_exceptions) Optimization EnabledBy(fnon-call-exceptions)
1577 Enable exception handling.
1579 fexpensive-optimizations
1580 Common Var(flag_expensive_optimizations) Optimization
1581 Perform a number of minor, expensive optimizations.
1584 Common Joined RejectNegative Enum(excess_precision) Var(flag_excess_precision) Init(EXCESS_PRECISION_DEFAULT) Optimization SetByCombined
1585 -fexcess-precision=[fast|standard|16] Specify handling of excess floating-point precision.
1588 Name(excess_precision) Type(enum excess_precision) UnknownError(unknown excess precision style %qs)
1591 Enum(excess_precision) String(fast) Value(EXCESS_PRECISION_FAST)
1594 Enum(excess_precision) String(standard) Value(EXCESS_PRECISION_STANDARD)
1597 Enum(excess_precision) String(16) Value(EXCESS_PRECISION_FLOAT16)
1599 ; Whether we permit the extended set of values for FLT_EVAL_METHOD
1600 ; introduced in ISO/IEC TS 18661-3, or limit ourselves to those in C99/C11.
1601 fpermitted-flt-eval-methods=
1602 Common Joined RejectNegative Enum(permitted_flt_eval_methods) Var(flag_permitted_flt_eval_methods) Init(PERMITTED_FLT_EVAL_METHODS_DEFAULT)
1603 -fpermitted-flt-eval-methods=[c11|ts-18661] Specify which values of FLT_EVAL_METHOD are permitted.
1606 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)
1609 Enum(permitted_flt_eval_methods) String(c11) Value(PERMITTED_FLT_EVAL_METHODS_C11)
1612 Enum(permitted_flt_eval_methods) String(ts-18661-3) Value(PERMITTED_FLT_EVAL_METHODS_TS_18661)
1618 Common Var(flag_fat_lto_objects)
1619 Output lto objects containing both the intermediate language and binary output.
1622 Common Var(flag_finite_math_only) Optimization SetByCombined
1623 Assume no NaNs or infinities are generated.
1626 Common Var(flag_finite_loops) Optimization Init(0)
1627 Assume that loops with an exit will terminate and not loop indefinitely.
1630 Common Joined RejectNegative Var(common_deferred_options) Defer
1631 -ffixed-<register> Mark <register> as being unavailable to the compiler.
1634 Common Var(flag_float_store) Optimization
1635 Don't allocate floats and doubles in extended-precision registers.
1639 Does nothing. Preserved for backward compatibility.
1642 Common Var(flag_forward_propagate) Optimization
1643 Perform a forward propagation pass on RTL.
1646 Common Joined RejectNegative Enum(fp_contract_mode) Var(flag_fp_contract_mode) Init(FP_CONTRACT_FAST) Optimization
1647 -ffp-contract=[off|on|fast] Perform floating-point expression contraction.
1650 Name(fp_contract_mode) Type(enum fp_contract_mode) UnknownError(unknown floating point contraction style %qs)
1653 Enum(fp_contract_mode) String(off) Value(FP_CONTRACT_OFF)
1655 ; Not implemented, fall back to conservative FP_CONTRACT_OFF.
1657 Enum(fp_contract_mode) String(on) Value(FP_CONTRACT_OFF)
1660 Enum(fp_contract_mode) String(fast) Value(FP_CONTRACT_FAST)
1662 ffp-int-builtin-inexact
1663 Common Var(flag_fp_int_builtin_inexact) Init(1) Optimization
1664 Allow built-in functions ceil, floor, round, trunc to raise \"inexact\" exceptions.
1666 ; Nonzero means don't put addresses of constant functions in registers.
1667 ; Used for compiling the Unix kernel, where strange substitutions are
1668 ; done on the assembly output.
1670 Common Var(flag_no_function_cse,0) Optimization
1671 Allow function addresses to be held in registers.
1674 Common Var(flag_function_sections)
1675 Place each function into its own section.
1678 Common Var(flag_gcse) Optimization
1679 Perform global common subexpression elimination.
1682 Common Var(flag_gcse_lm) Init(1) Optimization
1683 Perform enhanced load motion during global common subexpression elimination.
1686 Common Var(flag_gcse_sm) Init(0) Optimization
1687 Perform store motion after global common subexpression elimination.
1690 Common Var(flag_gcse_las) Init(0) Optimization
1691 Perform redundant load after store elimination in global common subexpression
1695 Common Var(flag_gcse_after_reload) Optimization
1696 Perform global common subexpression elimination after register allocation has
1700 Name(dwarf_gnat_encodings) Type(int)
1703 Enum(dwarf_gnat_encodings) String(all) Value(DWARF_GNAT_ENCODINGS_ALL)
1706 Enum(dwarf_gnat_encodings) String(gdb) Value(DWARF_GNAT_ENCODINGS_GDB)
1709 Enum(dwarf_gnat_encodings) String(minimal) Value(DWARF_GNAT_ENCODINGS_MINIMAL)
1712 Common Enum(dwarf_gnat_encodings) Joined RejectNegative Undocumented Var(gnat_encodings)
1713 -fgnat-encodings=[all|gdb|minimal] Select the balance between GNAT encodings and standard DWARF emitted in the debug information.
1715 ; This option is not documented yet as its semantics will change.
1717 Common Var(flag_graphite) Optimization
1718 Enable in and out of Graphite representation.
1721 Common Var(flag_graphite_identity) Optimization
1722 Enable Graphite Identity transformation.
1724 fhoist-adjacent-loads
1725 Common Var(flag_hoist_adjacent_loads) Optimization
1726 Enable hoisting adjacent loads to encourage generating conditional move
1730 Common Undocumented Var(flag_keep_gc_roots_live) Optimization
1731 ; Always keep a pointer to a live memory block
1734 Common Var(flag_large_source_files) Init(0)
1735 Improve GCC's ability to track column numbers in large source files,
1736 at the expense of slower compilation.
1738 floop-parallelize-all
1739 Common Var(flag_loop_parallelize_all) Optimization
1740 Mark all loops as parallel.
1743 Common Alias(floop-nest-optimize)
1744 Enable loop nest transforms. Same as -floop-nest-optimize.
1747 Common Var(flag_loop_interchange) Optimization
1748 Enable loop interchange on trees.
1751 Common Alias(floop-nest-optimize)
1752 Enable loop nest transforms. Same as -floop-nest-optimize.
1754 floop-unroll-and-jam
1755 Common Var(flag_unroll_jam) Optimization
1756 Perform unroll-and-jam on loops.
1760 Enable support for GNU transactional memory.
1763 Common Var(flag_gnu_unique) Init(1)
1764 Use STB_GNU_UNIQUE if supported by the assembler.
1768 Does nothing. Preserved for backward compatibility.
1771 Common Var(flag_loop_nest_optimize) Optimization
1772 Enable the loop nest optimizer.
1774 fstrict-volatile-bitfields
1775 Common Var(flag_strict_volatile_bitfields) Init(-1) Optimization
1776 Force bitfield accesses to match their type width.
1779 Common Var(flag_store_merging) Optimization
1780 Merge adjacent stores.
1782 fguess-branch-probability
1783 Common Var(flag_guess_branch_prob) Optimization
1784 Enable guessing of branch probabilities.
1787 Common Var(flag_harden_compares) Optimization
1788 Harden conditionals not used in branches, checking reversed conditions.
1790 fharden-conditional-branches
1791 Common Var(flag_harden_conditional_branches) Optimization
1792 Harden conditional branches by checking reversed conditions.
1794 ; Nonzero means ignore `#ident' directives. 0 means handle them.
1795 ; Generate position-independent code for executables if possible
1796 ; On SVR4 targets, it also controls whether or not to emit a
1797 ; string identifying the compiler.
1799 Common Var(flag_no_ident,0)
1800 Process #ident directives.
1803 Common Var(flag_if_conversion) Optimization
1804 Perform conversion of conditional jumps to branchless equivalents.
1807 Common Var(flag_if_conversion2) Optimization
1808 Perform conversion of conditional jumps to conditional execution.
1811 Common Joined RejectNegative Enum(stack_reuse_level) Var(flag_stack_reuse) Init(SR_ALL) Optimization
1812 -fstack-reuse=[all|named_vars|none] Set stack reuse level for local variables.
1815 Name(stack_reuse_level) Type(enum stack_reuse_level) UnknownError(unknown Stack Reuse Level %qs)
1818 Enum(stack_reuse_level) String(all) Value(SR_ALL)
1821 Enum(stack_reuse_level) String(named_vars) Value(SR_NAMED_VARS)
1824 Enum(stack_reuse_level) String(none) Value(SR_NONE)
1826 ftree-loop-if-convert
1827 Common Var(flag_tree_loop_if_convert) Init(-1) Optimization
1828 Convert conditional jumps in innermost loops to branchless equivalents.
1830 ftree-loop-if-convert-stores
1832 Does nothing. Preserved for backward compatibility.
1834 ; -finhibit-size-directive inhibits output of .size for ELF.
1835 ; This is used only for compiling crtstuff.c,
1836 ; and it may be extended to other effects
1837 ; needed for crtstuff.c on other systems.
1838 finhibit-size-directive
1839 Common Var(flag_inhibit_size_directive)
1840 Do not generate .size directives.
1843 Common Var(flag_indirect_inlining) Optimization
1844 Perform indirect inlining.
1846 ; General flag to enable inlining. Specifying -fno-inline will disable
1847 ; all inlining apart from always-inline functions.
1849 Common Var(flag_no_inline,0) Init(0) Optimization
1850 Enable inlining of function declared \"inline\", disabling disables all inlining.
1852 finline-small-functions
1853 Common Var(flag_inline_small_functions) Optimization
1854 Integrate functions into their callers when code size is known not to grow.
1857 Common Var(flag_inline_functions) Optimization
1858 Integrate functions not declared \"inline\" into their callers when profitable.
1860 finline-functions-called-once
1861 Common Var(flag_inline_functions_called_once) Optimization
1862 Integrate functions only required by their single caller.
1865 Common RejectNegative Joined Alias(finline-limit=)
1868 Common RejectNegative Joined UInteger
1869 -finline-limit=<number> Limit the size of inlined functions to <number>.
1872 Common Var(flag_inline_atomics) Init(1) Optimization
1873 Inline __atomic operations when a lock free instruction sequence is available.
1876 Common RejectNegative Alias(fcf-protection=,full)
1879 Common Joined RejectNegative Enum(cf_protection_level) Var(flag_cf_protection) Init(CF_NONE)
1880 -fcf-protection=[full|branch|return|none|check] Instrument functions with checks to verify jump/call/return control-flow transfer
1881 instructions have valid targets.
1884 Name(cf_protection_level) Type(enum cf_protection_level) UnknownError(unknown Control-Flow Protection Level %qs)
1887 Enum(cf_protection_level) String(full) Value(CF_FULL)
1890 Enum(cf_protection_level) String(branch) Value(CF_BRANCH)
1893 Enum(cf_protection_level) String(return) Value(CF_RETURN)
1896 Enum(cf_protection_level) String(check) Value(CF_CHECK)
1899 Enum(cf_protection_level) String(none) Value(CF_NONE)
1901 finstrument-functions
1902 Common Var(flag_instrument_function_entry_exit,1)
1903 Instrument function entry and exit with profiling calls.
1905 finstrument-functions-once
1906 Common Var(flag_instrument_function_entry_exit,2)
1907 Instrument function entry and exit with profiling calls invoked once.
1909 finstrument-functions-exclude-function-list=
1910 Common RejectNegative Joined
1911 -finstrument-functions-exclude-function-list=name,... Do not instrument listed functions.
1913 finstrument-functions-exclude-file-list=
1914 Common RejectNegative Joined
1915 -finstrument-functions-exclude-file-list=filename,... Do not instrument functions listed in files.
1918 Common Var(flag_ipa_cp) Optimization
1919 Perform interprocedural constant propagation.
1922 Common Var(flag_ipa_cp_clone) Optimization
1923 Perform cloning to make Interprocedural constant propagation stronger.
1927 Does nothing. Preserved for backward compatibility.
1930 Common Var(flag_ipa_bit_cp) Optimization
1931 Perform interprocedural bitwise constant propagation.
1934 Common Var(flag_ipa_modref) Optimization
1935 Perform interprocedural modref analysis.
1938 Common Var(flag_ipa_profile) Init(0) Optimization
1939 Perform interprocedural profile propagation.
1942 Common Var(flag_ipa_pta) Init(0) Optimization
1943 Perform interprocedural points-to analysis.
1946 Common Var(flag_ipa_pure_const) Init(0) Optimization
1947 Discover pure and const functions.
1950 Common Var(flag_ipa_icf) Optimization
1951 Perform Identical Code Folding for functions and read-only variables.
1954 Common Var(flag_ipa_icf_functions) Optimization
1955 Perform Identical Code Folding for functions.
1958 Common Var(flag_ipa_icf_variables) Optimization
1959 Perform Identical Code Folding for variables.
1962 Common Var(flag_ipa_reference) Init(0) Optimization
1963 Discover read-only and non addressable static variables.
1965 fipa-reference-addressable
1966 Common Var(flag_ipa_reference_addressable) Init(0) Optimization
1967 Discover read-only, write-only and non-addressable static variables.
1969 fipa-stack-alignment
1970 Common Var(flag_ipa_stack_alignment) Init(1) Optimization
1971 Reduce stack alignment on call sites if possible.
1975 Does nothing. Preserved for backward compatibility.
1979 Does nothing. Preserved for backward compatibility.
1982 Common Var(flag_ipa_vrp) Optimization
1983 Perform IPA Value Range Propagation.
1986 Common Joined RejectNegative Enum(ira_algorithm) Var(flag_ira_algorithm) Init(IRA_ALGORITHM_CB) Optimization
1987 -fira-algorithm=[CB|priority] Set the used IRA algorithm.
1989 fipa-strict-aliasing
1990 Common Var(flag_ipa_strict_aliasing) Init(1) Optimization
1991 Assume strict aliasing rules apply across (uninlined) function boundaries.
1994 Name(ira_algorithm) Type(enum ira_algorithm) UnknownError(unknown IRA algorithm %qs)
1997 Enum(ira_algorithm) String(CB) Value(IRA_ALGORITHM_CB)
2000 Enum(ira_algorithm) String(priority) Value(IRA_ALGORITHM_PRIORITY)
2003 Common Joined RejectNegative Enum(ira_region) Var(flag_ira_region) Init(IRA_REGION_ONE) Optimization
2004 -fira-region=[one|all|mixed] Set regions for IRA.
2007 Name(ira_region) Type(enum ira_region) UnknownError(unknown IRA region %qs)
2010 Enum(ira_region) String(one) Value(IRA_REGION_ONE)
2013 Enum(ira_region) String(all) Value(IRA_REGION_ALL)
2016 Enum(ira_region) String(mixed) Value(IRA_REGION_MIXED)
2019 Common Var(flag_ira_hoist_pressure) Init(1) Optimization
2020 Use IRA based register pressure calculation
2021 in RTL hoist optimizations.
2024 Common Var(flag_ira_loop_pressure) Optimization
2025 Use IRA based register pressure calculation
2026 in RTL loop optimizations.
2028 fira-share-save-slots
2029 Common Var(flag_ira_share_save_slots) Init(1) Optimization
2030 Share slots for saving different hard registers.
2032 fira-share-spill-slots
2033 Common Var(flag_ira_share_spill_slots) Init(1) Optimization
2034 Share stack slots for spilled pseudo-registers.
2037 Common RejectNegative Joined UInteger Var(flag_ira_verbose) Init(5)
2038 -fira-verbose=<number> Control IRA's level of diagnostic messages.
2041 Common Var(flag_ivopts) Init(1) Optimization
2042 Optimize induction variables on trees.
2045 Common Var(flag_jump_tables) Init(1) Optimization
2046 Use jump tables for sufficiently large switch statements.
2049 Common Var(flag_bit_tests) Init(1) Optimization
2050 Use bit tests for sufficiently large switch statements.
2052 fkeep-inline-functions
2053 Common Var(flag_keep_inline_functions)
2054 Generate code for functions even if they are fully inlined.
2056 fkeep-static-functions
2057 Common Var(flag_keep_static_functions)
2058 Generate code for static functions even if they are never called.
2061 Common Var(flag_keep_static_consts) Init(1)
2062 Emit static const variables even if they are not used.
2065 Common Var(flag_leading_underscore) Init(-1)
2066 Give external symbols a leading underscore.
2070 Does nothing. Preserved for backward compatibility.
2073 Common Var(flag_lra_remat) Optimization
2074 Do CFG-sensitive rematerialization in LRA.
2078 Enable link-time optimization.
2081 Common RejectNegative Joined Var(flag_lto)
2082 Link-time optimization with number of parallel jobs or jobserver.
2085 Name(lto_partition_model) Type(enum lto_partition_model) UnknownError(unknown LTO partitioning model %qs)
2088 Enum(lto_partition_model) String(none) Value(LTO_PARTITION_NONE)
2091 Enum(lto_partition_model) String(one) Value(LTO_PARTITION_ONE)
2094 Enum(lto_partition_model) String(balanced) Value(LTO_PARTITION_BALANCED)
2097 Enum(lto_partition_model) String(1to1) Value(LTO_PARTITION_1TO1)
2100 Enum(lto_partition_model) String(max) Value(LTO_PARTITION_MAX)
2103 Common Joined RejectNegative Enum(lto_partition_model) Var(flag_lto_partition) Init(LTO_PARTITION_BALANCED)
2104 Specify the algorithm to partition symbols and vars at linktime.
2106 ; The initial value of -1 comes from Z_DEFAULT_COMPRESSION in zlib.h.
2107 flto-compression-level=
2108 Common Joined RejectNegative UInteger Var(flag_lto_compression_level) Init(-1) IntegerRange(0, 19)
2109 -flto-compression-level=<number> Use zlib/zstd compression level <number> for IL.
2111 flto-odr-type-merging
2113 Does nothing. Preserved for backward compatibility.
2116 Common Var(flag_lto_report) Init(0)
2117 Report various link-time optimization statistics.
2120 Common Var(flag_lto_report_wpa) Init(0)
2121 Report various link-time optimization statistics for WPA only.
2124 Common Var(flag_errno_math) Init(1) Optimization SetByCombined
2125 Set errno after built-in math functions.
2128 Common Joined RejectNegative UInteger Var(flag_max_errors)
2129 -fmax-errors=<number> Maximum number of errors to report.
2132 Common Var(mem_report)
2133 Report on permanent memory allocation.
2136 Common Var(mem_report_wpa)
2137 Report on permanent memory allocation in WPA only.
2139 ; This will attempt to merge constant section constants, if 1 only
2140 ; string constants and constants from constant pool, if 2 also constant
2142 fmerge-all-constants
2143 Common Var(flag_merge_constants,2) Init(1)
2144 Attempt to merge identical constants and constant variables.
2147 Common Var(flag_merge_constants,1)
2148 Attempt to merge identical constants across compilation units.
2150 fmerge-debug-strings
2151 Common Var(flag_merge_debug_strings) Init(1)
2152 Attempt to merge identical debug strings across compilation units.
2155 Common RejectNegative Joined UInteger
2156 -fmessage-length=<number> Limit diagnostics to <number> characters per line. 0 suppresses line-wrapping.
2159 Common Var(flag_modulo_sched) Optimization
2160 Perform SMS based modulo scheduling before the first scheduling pass.
2162 fmodulo-sched-allow-regmoves
2163 Common Var(flag_modulo_sched_allow_regmoves) Optimization
2164 Perform SMS based modulo scheduling with register moves allowed.
2166 fmove-loop-invariants
2167 Common Var(flag_move_loop_invariants) Optimization
2168 Move loop invariant computations out of loops.
2171 Common Var(flag_move_loop_stores) Optimization
2172 Move stores out of loops.
2175 Common Var(flag_dce) Init(1) Optimization
2176 Use the RTL dead code elimination pass.
2179 Common Var(flag_dse) Init(0) Optimization
2180 Use the RTL dead store elimination pass.
2182 freschedule-modulo-scheduled-loops
2183 Common Var(flag_resched_modulo_sched) Optimization
2184 Enable/Disable the traditional scheduling in loops that already passed modulo scheduling.
2186 fnon-call-exceptions
2187 Common Var(flag_non_call_exceptions) Optimization
2188 Support synchronous non-call exceptions.
2191 Driver Joined MissingArgError(targets missing after %qs)
2194 Common Driver Joined MissingArgError(options or targets=options missing after %qs)
2195 -foffload-options=<targets>=<options> Specify options for the offloading targets.
2198 Common Joined RejectNegative Enum(offload_abi)
2199 -foffload-abi=[lp64|ilp32] Set the ABI to use in an offload compiler.
2202 Name(offload_abi) Type(enum offload_abi) UnknownError(unknown offload ABI %qs)
2205 Enum(offload_abi) String(ilp32) Value(OFFLOAD_ABI_ILP32)
2208 Enum(offload_abi) String(lp64) Value(OFFLOAD_ABI_LP64)
2211 Common Var(flag_omit_frame_pointer) Optimization
2212 When possible do not generate stack frames.
2215 Common Var(flag_opt_info) Optimization
2216 Enable all optimization info dumps on stderr.
2219 Common Joined RejectNegative Var(common_deferred_options) Defer
2220 -fopt-info[-<type>=filename] Dump compiler optimization details.
2222 fsave-optimization-record
2223 Common Var(flag_save_optimization_record) Optimization
2224 Write a SRCFILE.opt-record.json file detailing what optimizations were performed.
2226 foptimize-register-move
2228 Does nothing. Preserved for backward compatibility.
2230 foptimize-sibling-calls
2231 Common Var(flag_optimize_sibling_calls) Optimization
2232 Optimize sibling and tail recursive calls.
2235 Common Var(flag_partial_inlining) Optimization
2236 Perform partial inlining.
2239 Common Var(pre_ipa_mem_report)
2240 Report on memory allocation before interprocedural optimization.
2242 fpost-ipa-mem-report
2243 Common Var(post_ipa_mem_report)
2244 Report on memory allocation before interprocedural optimization.
2247 Common Var(flag_pack_struct) Optimization
2248 Pack structure members together without holes.
2251 Common RejectNegative Joined UInteger Optimization
2252 -fpack-struct=<number> Set initial maximum structure member alignment.
2255 Common Var(flag_pcc_struct_return,1) Init(DEFAULT_PCC_STRUCT_RETURN)
2256 Return small aggregates in memory, not registers.
2259 Common Var(flag_peel_loops) Optimization
2260 Perform loop peeling.
2263 Common Var(flag_no_peephole,0) Optimization
2264 Enable machine specific peephole optimizations.
2267 Common Var(flag_peephole2) Optimization
2268 Enable an RTL peephole pass before sched2.
2271 Common Var(flag_pic,2) Negative(fPIE) Init(-1)
2272 Generate position-independent code if possible (large mode).
2275 Common Var(flag_pie,2) Negative(fpic) Init(-1)
2276 Generate position-independent code for executables if possible (large mode).
2279 Common Var(flag_pic,1) Negative(fpie) Init(-1)
2280 Generate position-independent code if possible (small mode).
2283 Common Var(flag_pie,1) Negative(fPIC) Init(-1)
2284 Generate position-independent code for executables if possible (small mode).
2287 Common Var(flag_plt) Init(1) Optimization
2288 Use PLT for PIC calls (-fno-plt: load the address from GOT at call site).
2291 Common Joined RejectNegative Var(common_deferred_options) Defer
2292 Specify a plugin to load.
2295 Common Joined RejectNegative Var(common_deferred_options) Defer
2296 -fplugin-arg-<name>-<key>[=<value>] Specify argument <key>=<value> for plugin <name>.
2298 fpredictive-commoning
2299 Common Var(flag_predictive_commoning) Optimization
2300 Run predictive commoning optimization.
2302 fprefetch-loop-arrays
2303 Common Var(flag_prefetch_loop_arrays) Init(-1) Optimization
2304 Generate prefetch instructions, if available, for arrays in loops.
2307 Common Var(profile_flag)
2308 Enable basic program profiling code.
2311 Common Var(profile_abs_path_flag)
2312 Generate absolute source path names for gcov.
2315 Common Var(profile_arc_flag)
2316 Insert arc-based program profiling code.
2319 Common Joined RejectNegative Var(profile_data_prefix)
2320 Set the top-level directory for storing the profile data.
2321 The default is 'pwd'.
2324 Common Joined RejectNegative Var(profile_note_location)
2325 Select the name for storing the profile note file.
2328 Common Var(flag_profile_correction)
2329 Enable correction of flow inconsistent profile data input.
2332 Common Joined RejectNegative Enum(profile_update) Var(flag_profile_update) Init(PROFILE_UPDATE_SINGLE)
2333 -fprofile-update=[single|atomic|prefer-atomic] Set the profile update method.
2335 fprofile-filter-files=
2336 Common Joined RejectNegative Var(flag_profile_filter_files)
2337 Instrument only functions from files whose name matches any of the regular expressions (separated by semi-colons).
2339 fprofile-exclude-files=
2340 Common Joined RejectNegative Var(flag_profile_exclude_files)
2341 Instrument only functions from files whose name does not match any of the regular expressions (separated by semi-colons).
2344 Name(profile_reproducibility) Type(enum profile_reproducibility) UnknownError(unknown profile reproducibility method %qs)
2347 Enum(profile_reproducibility) String(serial) Value(PROFILE_REPRODUCIBILITY_SERIAL)
2350 Enum(profile_reproducibility) String(parallel-runs) Value(PROFILE_REPRODUCIBILITY_PARALLEL_RUNS)
2353 Enum(profile_reproducibility) String(multithreaded) Value(PROFILE_REPRODUCIBILITY_MULTITHREADED)
2355 fprofile-reproducible=
2356 Common Joined RejectNegative Var(flag_profile_reproducible) Enum(profile_reproducibility) Init(PROFILE_REPRODUCIBILITY_SERIAL)
2357 -fprofile-reproducible=[serial|parallel-runs|multithreaded] Control level of reproducibility of profile gathered by -fprofile-generate.
2360 Name(profile_update) Type(enum profile_update) UnknownError(unknown profile update method %qs)
2363 Enum(profile_update) String(single) Value(PROFILE_UPDATE_SINGLE)
2366 Enum(profile_update) String(atomic) Value(PROFILE_UPDATE_ATOMIC)
2369 Enum(profile_update) String(prefer-atomic) Value(PROFILE_UPDATE_PREFER_ATOMIC)
2371 fprofile-prefix-path=
2372 Common Joined RejectNegative Var(profile_prefix_path)
2373 Remove prefix from absolute path before mangling name for -fprofile-generate= and -fprofile-use=.
2375 fprofile-prefix-map=
2376 Common Joined RejectNegative Var(common_deferred_options) Defer
2377 -fprofile-prefix-map=<old>=<new> Map one directory name to another in GCOV coverage result.
2381 Enable common options for generating profile info for profile feedback directed optimizations.
2384 Common Joined RejectNegative
2385 Enable common options for generating profile info for profile feedback directed optimizations, and set -fprofile-dir=.
2387 fprofile-info-section
2388 Common RejectNegative
2389 Register the profile information in the .gcov_info section instead of using a constructor/destructor.
2391 fprofile-info-section=
2392 Common Joined RejectNegative Var(profile_info_section)
2393 Register the profile information in the specified section instead of using a constructor/destructor.
2395 fprofile-partial-training
2396 Common Var(flag_profile_partial_training) Optimization
2397 Do not assume that functions never executed during the train run are cold.
2400 Common Var(flag_profile_use)
2401 Enable common options for performing profile feedback directed optimizations.
2404 Common Joined RejectNegative
2405 Enable common options for performing profile feedback directed optimizations, and set -fprofile-dir=.
2408 Common Var(flag_profile_values)
2409 Insert code to profile values of expressions.
2412 Common Var(profile_report)
2413 Report on consistency of profile.
2415 fprofile-reorder-functions
2416 Common Var(flag_profile_reorder_functions) Optimization
2417 Enable function reordering that improves code placement.
2419 fpatchable-function-entry=
2420 Common Var(flag_patchable_function_entry) Joined Optimization
2421 Insert NOP instructions at each function entry.
2424 Common Var(common_deferred_options) Defer
2427 Common Joined RejectNegative Var(common_deferred_options) Defer
2428 -frandom-seed=<string> Make compile reproducible using <string>.
2430 ; This switch causes the command line that was used to create an
2431 ; object file to be recorded into the object file. The exact format
2432 ; of this recording is target and binary file format dependent.
2433 ; It is related to the -fverbose-asm switch, but that switch only
2434 ; records information in the assembler output file as comments, so
2435 ; they never reach the object file.
2436 frecord-gcc-switches
2437 Common Var(flag_record_gcc_switches)
2438 Record gcc command line switches in the object file.
2441 Common Var(flag_pcc_struct_return,0) Optimization
2442 Return small aggregates in registers.
2446 Does nothing. Preserved for backward compatibility.
2449 Common Var(flag_lifetime_dse,2) Init(2) Optimization
2450 Tell DSE that the storage for a C++ object is dead when the constructor
2451 starts and when the destructor finishes.
2454 Common Joined RejectNegative UInteger Var(flag_lifetime_dse) Optimization IntegerRange(0, 2)
2457 Common RejectNegative Alias(flive-patching=,inline-clone) Optimization
2460 Common Joined RejectNegative Enum(live_patching_level) Var(flag_live_patching) Init(LIVE_PATCHING_NONE) Optimization
2461 -flive-patching=[inline-only-static|inline-clone] Control IPA
2462 optimizations to provide a safe compilation for live-patching. At the same
2463 time, provides multiple-level control on the enabled IPA optimizations.
2466 Name(live_patching_level) Type(enum live_patching_level) UnknownError(unknown Live-Patching Level %qs)
2469 Enum(live_patching_level) String(inline-only-static) Value(LIVE_PATCHING_INLINE_ONLY_STATIC)
2472 Enum(live_patching_level) String(inline-clone) Value(LIVE_PATCHING_INLINE_CLONE)
2475 Common Var(flag_allocation_dce) Init(1) Optimization
2476 Tell DCE to remove unused C++ allocations.
2478 flive-range-shrinkage
2479 Common Var(flag_live_range_shrinkage) Init(0) Optimization
2480 Relief of register pressure through live range shrinkage.
2483 Common Var(flag_rename_registers) Optimization EnabledBy(funroll-loops)
2484 Perform a register renaming optimization pass.
2487 Common Var(flag_schedule_fusion) Init(2) Optimization
2488 Perform a target dependent instruction fusion optimization pass.
2491 Common Var(flag_reorder_blocks) Optimization
2492 Reorder basic blocks to improve code placement.
2494 freorder-blocks-algorithm=
2495 Common Joined RejectNegative Enum(reorder_blocks_algorithm) Var(flag_reorder_blocks_algorithm) Init(REORDER_BLOCKS_ALGORITHM_SIMPLE) Optimization
2496 -freorder-blocks-algorithm=[simple|stc] Set the used basic block reordering algorithm.
2499 Name(reorder_blocks_algorithm) Type(enum reorder_blocks_algorithm) UnknownError(unknown basic block reordering algorithm %qs)
2502 Enum(reorder_blocks_algorithm) String(simple) Value(REORDER_BLOCKS_ALGORITHM_SIMPLE)
2505 Enum(reorder_blocks_algorithm) String(stc) Value(REORDER_BLOCKS_ALGORITHM_STC)
2507 freorder-blocks-and-partition
2508 Common Var(flag_reorder_blocks_and_partition) Optimization
2509 Reorder basic blocks and partition into hot and cold sections.
2512 Common Var(flag_reorder_functions) Optimization
2513 Reorder functions to improve code placement.
2515 frerun-cse-after-loop
2516 Common Var(flag_rerun_cse_after_loop) Optimization
2517 Add a common subexpression elimination pass after loop optimizations.
2521 Does nothing. Preserved for backward compatibility.
2524 Common Var(flag_rounding_math) Optimization SetByCombined
2525 Disable optimizations that assume default FP rounding behavior.
2528 Common Var(flag_schedule_interblock) Init(1) Optimization
2529 Enable scheduling across basic blocks.
2532 Common Var(flag_sched_pressure) Init(0) Optimization
2533 Enable register pressure sensitive insn scheduling.
2536 Common Var(flag_schedule_speculative) Init(1) Optimization
2537 Allow speculative motion of non-loads.
2540 Common Var(flag_schedule_speculative_load) Optimization
2541 Allow speculative motion of some loads.
2543 fsched-spec-load-dangerous
2544 Common Var(flag_schedule_speculative_load_dangerous) Optimization
2545 Allow speculative motion of more loads.
2548 Common RejectNegative Joined UInteger Var(sched_verbose_param) Init(1)
2549 -fsched-verbose=<number> Set the verbosity level of the scheduler.
2551 fsched2-use-superblocks
2552 Common Var(flag_sched2_use_superblocks) Optimization
2553 If scheduling post reload, do superblock scheduling.
2557 Does nothing. Preserved for backward compatibility.
2560 Common Var(flag_schedule_insns) Optimization
2561 Reschedule instructions before register allocation.
2564 Common Var(flag_schedule_insns_after_reload) Optimization
2565 Reschedule instructions after register allocation.
2567 ; This flag should be on when a target implements non-trivial
2568 ; scheduling hooks, maybe saving some information for its own sake.
2569 ; On IA64, for example, this is used for correct bundling.
2570 fselective-scheduling
2571 Common Var(flag_selective_scheduling) Optimization
2572 Schedule instructions using selective scheduling algorithm.
2574 fselective-scheduling2
2575 Common Var(flag_selective_scheduling2) Optimization
2576 Run selective scheduling after reload.
2579 Common Undocumented Joined Var(flag_self_test)
2580 Run self-tests, using the given path to locate test files.
2582 fsel-sched-pipelining
2583 Common Var(flag_sel_sched_pipelining) Init(0) Optimization
2584 Perform software pipelining of inner loops during selective scheduling.
2586 fsel-sched-pipelining-outer-loops
2587 Common Var(flag_sel_sched_pipelining_outer_loops) Init(0) Optimization
2588 Perform software pipelining of outer loops during selective scheduling.
2590 fsel-sched-reschedule-pipelined
2591 Common Var(flag_sel_sched_reschedule_pipelined) Init(0) Optimization
2592 Reschedule pipelined regions without pipelining.
2594 fsemantic-interposition
2595 Common Var(flag_semantic_interposition) Init(1) Optimization
2596 Allow interposing function (or variables) by ones with different semantics (or initializer) respectively by dynamic linker.
2598 ; sched_stalled_insns means that insns can be moved prematurely from the queue
2599 ; of stalled insns into the ready list.
2600 fsched-stalled-insns
2601 Common Var(flag_sched_stalled_insns) Optimization UInteger
2602 Allow premature scheduling of queued insns.
2604 fsched-stalled-insns=
2605 Common RejectNegative Joined UInteger Optimization
2606 -fsched-stalled-insns=<number> Set number of queued insns that can be prematurely scheduled.
2608 ; sched_stalled_insns_dep controls how many recently scheduled cycles will
2609 ; be examined for a dependency on a stalled insn that is candidate for
2610 ; premature removal from the queue of stalled insns into the ready list (has
2611 ; an effect only if the flag 'sched_stalled_insns' is set).
2612 fsched-stalled-insns-dep
2613 Common Var(flag_sched_stalled_insns_dep,1) Init(1) Optimization UInteger
2614 Set dependence distance checking in premature scheduling of queued insns.
2616 fsched-stalled-insns-dep=
2617 Common RejectNegative Joined UInteger Optimization
2618 -fsched-stalled-insns-dep=<number> Set dependence distance checking in premature scheduling of queued insns.
2620 fsched-group-heuristic
2621 Common Var(flag_sched_group_heuristic) Init(1) Optimization
2622 Enable the group heuristic in the scheduler.
2624 fsched-critical-path-heuristic
2625 Common Var(flag_sched_critical_path_heuristic) Init(1) Optimization
2626 Enable the critical path heuristic in the scheduler.
2628 fsched-spec-insn-heuristic
2629 Common Var(flag_sched_spec_insn_heuristic) Init(1) Optimization
2630 Enable the speculative instruction heuristic in the scheduler.
2632 fsched-rank-heuristic
2633 Common Var(flag_sched_rank_heuristic) Init(1) Optimization
2634 Enable the rank heuristic in the scheduler.
2636 fsched-last-insn-heuristic
2637 Common Var(flag_sched_last_insn_heuristic) Init(1) Optimization
2638 Enable the last instruction heuristic in the scheduler.
2640 fsched-dep-count-heuristic
2641 Common Var(flag_sched_dep_count_heuristic) Init(1) Optimization
2642 Enable the dependent count heuristic in the scheduler.
2645 Common Var(flag_section_anchors) Optimization
2646 Access data in the same section from shared anchor points.
2650 Does nothing. Preserved for backward compatibility.
2654 Does nothing. Preserved for backward compatibility.
2657 Common Var(flag_ree) Init(0) Optimization
2658 Turn on Redundant Extensions Elimination pass.
2661 Common Var(flag_show_column) Init(1)
2662 Show column numbers in diagnostics, when available. Default on.
2665 Common Var(flag_shrink_wrap) Optimization
2666 Emit function prologues only before parts of the function that need it,
2667 rather than at the top of the function.
2669 fshrink-wrap-separate
2670 Common Var(flag_shrink_wrap_separate) Init(1) Optimization
2671 Shrink-wrap parts of the prologue and epilogue separately.
2674 Common Var(flag_signaling_nans) Optimization SetByCombined
2675 Disable optimizations observable by IEEE signaling NaNs.
2678 Common Var(flag_signed_zeros) Init(1) Optimization SetByCombined
2679 Disable floating point optimizations that ignore the IEEE signedness of zero.
2681 fsingle-precision-constant
2682 Common Var(flag_single_precision_constant) Optimization
2683 Convert floating point constants to single precision constants.
2685 fsplit-ivs-in-unroller
2686 Common Var(flag_split_ivs_in_unroller) Init(1) Optimization
2687 Split lifetimes of induction variables when loops are unrolled.
2690 Common Var(flag_split_stack) Init(-1)
2691 Generate discontiguous stack frames.
2694 Common Var(flag_split_wide_types) Optimization
2695 Split wide types into independent registers.
2697 fsplit-wide-types-early
2698 Common Var(flag_split_wide_types_early) Optimization
2699 Split wide types into independent registers earlier.
2702 Common Var(flag_ssa_backprop) Init(1) Optimization
2703 Enable backward propagation of use properties at the SSA level.
2706 Common Var(flag_ssa_phiopt) Optimization
2707 Optimize conditional patterns using SSA PHI nodes.
2710 Common Var(flag_stdarg_opt) Init(1) Optimization
2711 Optimize amount of stdarg registers saved to stack at start of function.
2713 fvariable-expansion-in-unroller
2714 Common Var(flag_variable_expansion_in_unroller) Optimization
2715 Apply variable expansion when loops are unrolled.
2718 Common RejectNegative Joined Optimization
2719 -fstack-check=[no|generic|specific] Insert stack checking code into the program.
2722 Common Alias(fstack-check=, specific, no)
2723 Insert stack checking code into the program. Same as -fstack-check=specific.
2725 fstack-clash-protection
2726 Common Var(flag_stack_clash_protection) Optimization
2727 Insert code to probe each page of stack space as it is allocated to protect
2728 from stack-clash style attacks.
2731 Common Var(common_deferred_options) Defer
2733 fstack-limit-register=
2734 Common RejectNegative Joined Var(common_deferred_options) Defer
2735 -fstack-limit-register=<register> Trap if the stack goes past <register>.
2737 fstack-limit-symbol=
2738 Common RejectNegative Joined Var(common_deferred_options) Defer
2739 -fstack-limit-symbol=<name> Trap if the stack goes past symbol <name>.
2742 Common Var(flag_stack_protect, 1) Init(-1) Optimization
2743 Use propolice as a stack protection method.
2745 fstack-protector-all
2746 Common RejectNegative Var(flag_stack_protect, 2) Init(-1) Optimization
2747 Use a stack protection method for every function.
2749 fstack-protector-strong
2750 Common RejectNegative Var(flag_stack_protect, 3) Init(-1) Optimization
2751 Use a smart stack protection method for certain functions.
2753 fstack-protector-explicit
2754 Common RejectNegative Var(flag_stack_protect, 4) Optimization
2755 Use stack protection method only for functions with the stack_protect attribute.
2758 Common RejectNegative Var(flag_stack_usage)
2759 Output stack usage information on a per-function basis.
2763 Does nothing. Preserved for backward compatibility.
2765 ; Nonzero if we should do (language-dependent) alias analysis.
2766 ; Typically, this analysis will assume that expressions of certain
2767 ; types do not alias expressions of certain other types. Only used
2768 ; if alias analysis (in general) is enabled.
2770 Common Var(flag_strict_aliasing) Optimization
2771 Assume strict aliasing rules apply.
2775 Treat signed overflow as undefined. Negated as -fwrapv -fwrapv-pointer.
2778 Common Var(flag_sync_libcalls) Init(1)
2779 Implement __atomic operations via libcalls to legacy __sync functions.
2782 Common Var(flag_syntax_only)
2783 Check for syntax errors, then stop.
2786 Common Var(flag_test_coverage)
2787 Create data files needed by \"gcov\".
2790 Common Var(flag_thread_jumps) Optimization
2791 Perform jump threading optimizations.
2794 Common Var(time_report)
2795 Report the time taken by each compiler pass.
2797 ftime-report-details
2798 Common Var(time_report_details)
2799 Record times taken by sub-phases separately.
2802 Common Joined RejectNegative Enum(tls_model) Var(flag_tls_default) Init(TLS_MODEL_GLOBAL_DYNAMIC)
2803 -ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec] Set the default thread-local storage code generation model.
2806 Name(tls_model) Type(enum tls_model) UnknownError(unknown TLS model %qs)
2809 Enum(tls_model) String(global-dynamic) Value(TLS_MODEL_GLOBAL_DYNAMIC)
2812 Enum(tls_model) String(local-dynamic) Value(TLS_MODEL_LOCAL_DYNAMIC)
2815 Enum(tls_model) String(initial-exec) Value(TLS_MODEL_INITIAL_EXEC)
2818 Enum(tls_model) String(local-exec) Value(TLS_MODEL_LOCAL_EXEC)
2821 Common Var(flag_toplevel_reorder) Init(2) Optimization
2822 Reorder top level functions, variables, and asms.
2825 Common Var(flag_tracer) Optimization
2826 Perform superblock formation via tail duplication.
2829 Common Var(flag_trampolines) Init(0)
2830 For targets that normally need trampolines for nested functions, always
2831 generate them instead of using descriptors.
2833 ; Zero means that floating-point math operations cannot generate a
2834 ; (user-visible) trap. This is the case, for example, in nonstop
2835 ; IEEE 754 arithmetic.
2837 Common Var(flag_trapping_math) Init(1) Optimization SetByCombined
2838 Assume floating-point operations can trap.
2841 Common Var(flag_trapv) Optimization
2842 Trap for signed overflow in addition, subtraction and multiplication.
2845 Common Var(flag_tree_ccp) Optimization
2846 Enable SSA-CCP optimization on trees.
2849 Common Var(flag_tree_bit_ccp) Optimization
2850 Enable SSA-BIT-CCP optimization on trees.
2854 Does nothing. Preserved for backward compatibility.
2857 Common Var(flag_tree_ch) Optimization
2858 Enable loop header copying on trees.
2860 ftree-coalesce-inlined-vars
2861 Common Ignore RejectNegative
2862 Does nothing. Preserved for backward compatibility.
2865 Common Var(flag_tree_coalesce_vars) Optimization
2866 Enable SSA coalescing of user variables.
2870 Does nothing. Preserved for backward compatibility.
2873 Common Var(flag_tree_copy_prop) Optimization
2874 Enable copy propagation on trees.
2876 ftree-store-copy-prop
2878 Does nothing. Preserved for backward compatibility.
2881 Common Var(flag_tree_cselim) Optimization
2882 Transform condition stores into unconditional ones.
2884 ftree-switch-conversion
2885 Common Var(flag_tree_switch_conversion) Optimization
2886 Perform conversions of switch initializations.
2889 Common Var(flag_tree_dce) Optimization
2890 Enable SSA dead code elimination optimization on trees.
2892 ftree-dominator-opts
2893 Common Var(flag_tree_dom) Optimization
2894 Enable dominator optimizations.
2897 Common Var(flag_tree_tail_merge) Optimization
2898 Enable tail merging on trees.
2901 Common Var(flag_tree_dse) Optimization
2902 Enable dead store elimination.
2905 Common Var(flag_tree_forwprop) Init(1) Optimization
2906 Enable forward propagation on trees.
2909 Common Var(flag_tree_fre) Optimization
2910 Enable Full Redundancy Elimination (FRE) on trees.
2913 Common Var(flag_optimize_strlen) Optimization
2914 Enable string length optimizations on trees.
2916 fisolate-erroneous-paths-dereference
2917 Common Var(flag_isolate_erroneous_paths_dereference) Optimization
2918 Detect paths that trigger erroneous or undefined behavior due to
2919 dereferencing a null pointer. Isolate those paths from the main control
2920 flow and turn the statement with erroneous or undefined behavior into a trap.
2922 fisolate-erroneous-paths-attribute
2923 Common Var(flag_isolate_erroneous_paths_attribute) Optimization
2924 Detect paths that trigger erroneous or undefined behavior due to a null value
2925 being used in a way forbidden by a returns_nonnull or nonnull
2926 attribute. Isolate those paths from the main control flow and turn the
2927 statement with erroneous or undefined behavior into a trap.
2929 ftree-loop-distribution
2930 Common Var(flag_tree_loop_distribution) Optimization
2931 Enable loop distribution on trees.
2933 ftree-loop-distribute-patterns
2934 Common Var(flag_tree_loop_distribute_patterns) Optimization
2935 Enable loop distribution for patterns transformed into a library call.
2938 Common Var(flag_tree_loop_im) Init(1) Optimization
2939 Enable loop invariant motion on trees.
2942 Common Alias(floop-nest-optimize)
2943 Enable loop nest transforms. Same as -floop-nest-optimize.
2946 Common Var(flag_tree_loop_ivcanon) Init(1) Optimization
2947 Create canonical induction variables in loops.
2950 Common Var(flag_tree_loop_optimize) Init(1) Optimization
2951 Enable loop optimizations on tree level.
2953 ftree-parallelize-loops=
2954 Common Joined RejectNegative UInteger Var(flag_tree_parallelize_loops) Init(1) Optimization
2955 -ftree-parallelize-loops=<number> Enable automatic parallelization of loops.
2958 Common Var(flag_tree_phiprop) Init(1) Optimization
2959 Enable hoisting loads from conditional pointers.
2962 Common Var(flag_tree_pre) Optimization
2963 Enable SSA-PRE optimization on trees.
2966 Common Var(flag_tree_partial_pre) Optimization
2967 In SSA-PRE optimization on trees, enable partial-partial redundancy elimination.
2970 Common Var(flag_tree_pta) Optimization
2971 Perform function-local points-to analysis on trees.
2974 Common Var(flag_tree_reassoc) Init(1) Optimization
2975 Enable reassociation on tree level.
2979 Does nothing. Preserved for backward compatibility.
2982 Common Var(flag_tree_sink) Optimization
2983 Enable SSA code sinking on trees.
2986 Common Var(flag_tree_slsr) Optimization
2987 Perform straight-line strength reduction.
2990 Common Var(flag_tree_sra) Optimization
2991 Perform scalar replacement of aggregates.
2994 Common Var(flag_tree_ter) Optimization
2995 Replace temporary expressions in the SSA->normal pass.
2998 Common Var(flag_tree_live_range_split) Optimization
2999 Perform live range splitting during the SSA->normal pass.
3002 Common Var(flag_tree_vrp) Init(0) Optimization
3003 Perform Value Range Propagation on trees.
3006 Common Var(flag_split_paths) Init(0) Optimization
3007 Split paths leading to loop backedges.
3009 funconstrained-commons
3010 Common Var(flag_unconstrained_commons) Optimization
3011 Assume common declarations may be overridden with ones with a larger
3015 Common Var(flag_unit_at_a_time) Init(1)
3016 Compile whole compilation unit at a time.
3019 Common Var(flag_unreachable_traps) Optimization
3020 Trap on __builtin_unreachable instead of using it for optimization.
3023 Common Var(flag_unroll_loops) Optimization EnabledBy(funroll-all-loops)
3024 Perform loop unrolling when iteration count is known.
3027 Common Var(flag_unroll_all_loops) Optimization
3028 Perform loop unrolling for all loops.
3030 funroll-completely-grow-size
3031 Undocumented Var(flag_cunroll_grow_size) Optimization
3032 ; Internal undocumented flag, allow size growth during complete unrolling
3034 ; Nonzero means that loop optimizer may assume that the induction variables
3035 ; that control loops do not overflow and that the loops with nontrivial
3036 ; exit condition are not infinite
3037 funsafe-loop-optimizations
3039 Does nothing. Preserved for backward compatibility.
3042 Common Var(flag_associative_math) SetByCombined Optimization
3043 Allow optimization for floating-point arithmetic which may change the
3044 result of the operation due to rounding.
3047 Common Var(flag_reciprocal_math) SetByCombined Optimization
3048 Same as -fassociative-math for expressions which include division.
3050 ; Nonzero means that unsafe floating-point math optimizations are allowed
3051 ; for the sake of speed. IEEE compliance is not guaranteed, and operations
3052 ; are allowed to assume that their arguments and results are "normal"
3053 ; (e.g., nonnegative for SQRT).
3054 funsafe-math-optimizations
3055 Common Var(flag_unsafe_math_optimizations) Optimization SetByCombined
3056 Allow math optimizations that may violate IEEE or ISO standards.
3059 Common Var(flag_unswitch_loops) Optimization
3060 Perform loop unswitching.
3063 Common Var(flag_split_loops) Optimization
3064 Perform loop splitting.
3066 fversion-loops-for-strides
3067 Common Var(flag_version_loops_for_strides) Optimization
3068 Version loops based on whether indices have a stride of one.
3071 Common Var(flag_unwind_tables) Optimization
3072 Just generate unwind tables for exception handling.
3075 Common Driver Negative(fuse-ld=gold)
3076 Use the bfd linker instead of the default linker.
3079 Common Driver Negative(fuse-ld=bfd)
3080 Use the gold linker instead of the default linker.
3083 Common Driver Negative(fuse-ld=lld)
3084 Use the lld LLVM linker instead of the default linker.
3087 Common Driver Negative(fuse-ld=mold)
3088 Use the Modern linker (MOLD) linker instead of the default linker.
3091 Common Undocumented Var(flag_use_linker_plugin)
3093 ; Positive if we should track variables, negative if we should run
3094 ; the var-tracking pass only to discard debug annotations, zero if
3095 ; we're not to run it.
3097 Common Var(flag_var_tracking) PerFunction EnabledBy(fvar-tracking-uninit)
3098 Perform variable tracking.
3100 ; Positive if we should track variables at assignments, negative if
3101 ; we should run the var-tracking pass only to discard debug
3103 fvar-tracking-assignments
3104 Common Var(flag_var_tracking_assignments) PerFunction
3105 Perform variable tracking by annotating assignments.
3107 ; Nonzero if we should toggle flag_var_tracking_assignments after
3108 ; processing options and computing its default. */
3109 fvar-tracking-assignments-toggle
3110 Common Var(flag_var_tracking_assignments_toggle) PerFunction
3111 Toggle -fvar-tracking-assignments.
3113 ; Positive if we should track uninitialized variables, negative if
3114 ; we should run the var-tracking pass only to discard debug
3116 fvar-tracking-uninit
3117 Common Var(flag_var_tracking_uninit) PerFunction
3118 Perform variable tracking and also tag variables that are uninitialized.
3120 ; Alias to enable both -ftree-loop-vectorize and -ftree-slp-vectorize.
3122 Common Var(flag_tree_vectorize) Optimization
3123 Enable vectorization on trees.
3125 ftree-vectorizer-verbose=
3126 Common Joined RejectNegative Ignore
3127 Does nothing. Preserved for backward compatibility.
3129 ftree-loop-vectorize
3130 Common Var(flag_tree_loop_vectorize) Optimization EnabledBy(ftree-vectorize)
3131 Enable loop vectorization on trees.
3134 Common Var(flag_tree_slp_vectorize) Optimization EnabledBy(ftree-vectorize)
3135 Enable basic block vectorization (SLP) on trees.
3138 Common Joined RejectNegative Enum(vect_cost_model) Var(flag_vect_cost_model) Init(VECT_COST_MODEL_DEFAULT) Optimization
3139 -fvect-cost-model=[unlimited|dynamic|cheap|very-cheap] Specifies the cost model for vectorization.
3142 Common Joined RejectNegative Enum(vect_cost_model) Var(flag_simd_cost_model) Init(VECT_COST_MODEL_UNLIMITED) Optimization
3143 -fsimd-cost-model=[unlimited|dynamic|cheap|very-cheap] Specifies the vectorization cost model for code marked with a simd directive.
3146 Name(vect_cost_model) Type(enum vect_cost_model) UnknownError(unknown vectorizer cost model %qs)
3149 Enum(vect_cost_model) String(unlimited) Value(VECT_COST_MODEL_UNLIMITED)
3152 Enum(vect_cost_model) String(dynamic) Value(VECT_COST_MODEL_DYNAMIC)
3155 Enum(vect_cost_model) String(cheap) Value(VECT_COST_MODEL_CHEAP)
3158 Enum(vect_cost_model) String(very-cheap) Value(VECT_COST_MODEL_VERY_CHEAP)
3161 Common Alias(fvect-cost-model=,dynamic,unlimited)
3162 Enables the dynamic vectorizer cost model. Preserved for backward compatibility.
3164 ftree-vect-loop-version
3166 Does nothing. Preserved for backward compatibility.
3169 Common Var(flag_tree_scev_cprop) Init(1) Optimization
3170 Enable copy propagation of scalar-evolution information.
3172 ftrivial-auto-var-init=
3173 Common Joined RejectNegative Enum(auto_init_type) Var(flag_auto_var_init) Init(AUTO_INIT_UNINITIALIZED) Optimization
3174 -ftrivial-auto-var-init=[uninitialized|pattern|zero] Add initializations to automatic variables.
3177 Name(auto_init_type) Type(enum auto_init_type) UnknownError(unrecognized automatic variable initialization type %qs)
3180 Enum(auto_init_type) String(uninitialized) Value(AUTO_INIT_UNINITIALIZED)
3183 Enum(auto_init_type) String(pattern) Value(AUTO_INIT_PATTERN)
3186 Enum(auto_init_type) String(zero) Value(AUTO_INIT_ZERO)
3188 ; -fverbose-asm causes extra commentary information to be produced in
3189 ; the generated assembly code (to make it more readable). This option
3190 ; is generally only of use to those who actually need to read the
3191 ; generated assembly code (perhaps while debugging the compiler itself).
3192 ; -fno-verbose-asm, the default, causes the extra information
3193 ; to not be added and is useful when comparing two assembler files.
3195 Common Var(flag_verbose_asm)
3196 Add extra commentary to assembler output.
3199 Common Joined RejectNegative Enum(symbol_visibility) Var(default_visibility) Init(VISIBILITY_DEFAULT)
3200 -fvisibility=[default|internal|hidden|protected] Set the default symbol visibility.
3203 Name(symbol_visibility) Type(enum symbol_visibility) UnknownError(unrecognized visibility value %qs)
3206 Enum(symbol_visibility) String(default) Value(VISIBILITY_DEFAULT)
3209 Enum(symbol_visibility) String(internal) Value(VISIBILITY_INTERNAL)
3212 Enum(symbol_visibility) String(hidden) Value(VISIBILITY_HIDDEN)
3215 Enum(symbol_visibility) String(protected) Value(VISIBILITY_PROTECTED)
3218 Common Joined RejectNegative Enum(vtv_priority) Var(flag_vtable_verify) Init(VTV_NO_PRIORITY)
3219 Validate vtable pointers before using them.
3222 Name(vtv_priority) Type(enum vtv_priority) UnknownError(unknown vtable verify initialization priority %qs)
3225 Enum(vtv_priority) String(none) Value(VTV_NO_PRIORITY)
3228 Enum(vtv_priority) String(std) Value(VTV_STANDARD_PRIORITY)
3231 Enum(vtv_priority) String(preinit) Value(VTV_PREINIT_PRIORITY)
3234 Common Var(flag_vtv_counts)
3235 Output vtable verification counters.
3238 Common Var(flag_vtv_debug)
3239 Output vtable verification pointer sets information.
3242 Common Var(flag_value_profile_transformations) Optimization
3243 Use expression value profiles in optimizations.
3246 Common Var(flag_web) Optimization EnabledBy(funroll-loops)
3247 Construct webs and split unrelated uses of single variable.
3249 ftree-builtin-call-dce
3250 Common Var(flag_tree_builtin_call_dce) Init(0) Optimization
3251 Enable conditional dead code elimination for builtin calls.
3254 Common Var(flag_whole_program) Init(0)
3255 Perform whole program optimizations.
3258 Common Var(flag_wrapv_pointer) Optimization
3259 Assume pointer overflow wraps around.
3262 Common Var(flag_wrapv) Optimization
3263 Assume signed arithmetic overflow wraps around.
3265 fzero-initialized-in-bss
3266 Common Var(flag_zero_initialized_in_bss) Init(1)
3267 Put zero initialized data in the bss section.
3269 fzero-call-used-regs=
3270 Common RejectNegative Joined
3271 Clear call-used registers upon function return.
3274 Common Driver RejectNegative JoinedOrMissing
3275 Generate debug information in default format.
3278 Common Driver Var(dwarf2out_as_loc_support)
3279 Assume assembler support for (DWARF2+) .loc directives.
3282 Common Driver Var(dwarf2out_as_locview_support)
3283 Assume assembler support for view in (DWARF2+) .loc directives.
3286 Common Driver WarnRemoved
3287 Does nothing. Preserved for backward compatibility.
3290 Common Driver WarnRemoved
3291 Does nothing. Preserved for backward compatibility.
3294 Common Driver WarnRemoved
3295 Does nothing. Preserved for backward compatibility.
3298 Common Driver WarnRemoved
3299 Does nothing. Preserved for backward compatibility.
3302 Common Driver Var(debug_column_info,1) Init(1)
3303 Record DW_AT_decl_column and DW_AT_call_column in DWARF.
3305 ; The CTF generation process feeds off DWARF dies. This option implicitly
3306 ; updates the debug_info_level to DINFO_LEVEL_NORMAL.
3308 Common Driver RejectNegative JoinedOrMissing
3309 Generate CTF debug information at default level.
3312 Common Driver RejectNegative JoinedOrMissing
3313 Generate BTF debug information at default level.
3316 Common Driver JoinedOrMissing Negative(gdwarf-)
3317 Generate debug information in default version of DWARF format.
3320 Common Driver Joined UInteger Var(dwarf_version) Init(5)
3321 Generate debug information in DWARF v2 (or later) format.
3324 Common Driver Var(dwarf_offset_size,4) Init(4) RejectNegative
3325 Use 32-bit DWARF format when emitting DWARF debug information.
3328 Common Driver Var(dwarf_offset_size,8) RejectNegative
3329 Use 64-bit DWARF format when emitting DWARF debug information.
3332 Common Driver JoinedOrMissing
3333 Generate debug information in default extended format.
3336 Common Driver Var(debug_inline_points)
3337 Generate extended entry point information for inlined functions.
3339 ginternal-reset-location-views
3340 Common Driver Var(debug_internal_reset_location_views) Init(2)
3341 Compute locview reset points based on insn length estimates.
3344 RejectNegative Joined Undocumented
3345 ; Catch the gno- prefix, so it doesn't backtrack to g<level>.
3348 Common Driver Negative(gpubnames) Var(debug_generate_pub_sections, 0) Init(-1)
3349 Don't generate DWARF pubnames and pubtypes sections.
3352 Common Driver Negative(ggnu-pubnames) Var(debug_generate_pub_sections, 1)
3353 Generate DWARF pubnames and pubtypes sections.
3356 Common Driver Negative(gno-pubnames) Var(debug_generate_pub_sections, 2)
3357 Generate DWARF pubnames and pubtypes sections with GNU extensions.
3359 grecord-gcc-switches
3360 Common Driver Var(dwarf_record_gcc_switches) Init(1)
3361 Record gcc command line switches in DWARF DW_AT_producer.
3364 Common Driver Var(dwarf_split_debug_info) Init(0)
3365 Generate debug information in separate .dwo files.
3368 Common Driver WarnRemoved
3369 Does nothing. Preserved for backward compatibility.
3372 Common Driver WarnRemoved
3373 Does nothing. Preserved for backward compatibility.
3375 gstatement-frontiers
3376 Common Driver Var(debug_nonbind_markers_p) PerFunction
3377 Emit progressive recommended breakpoint locations.
3380 Common Driver Var(dwarf_strict) Init(0)
3381 Don't emit DWARF additions beyond selected version.
3384 Common Driver Var(flag_describe_dies) Init(0)
3385 Add description attributes to some DWARF DIEs that have no name attribute.
3388 Common Driver Var(flag_gtoggle)
3389 Toggle debug information generation.
3391 gvariable-location-views
3392 Common Driver Var(debug_variable_location_views, 1)
3393 Augment variable location lists with progressive views.
3395 gvariable-location-views=incompat5
3396 Common Driver RejectNegative Var(debug_variable_location_views, -1) Init(2)
3399 Common Driver JoinedOrMissing
3400 Generate debug information in VMS format.
3403 Common Driver WarnRemoved
3404 Does nothing. Preserved for backward compatibility.
3407 Common Driver JoinedOrMissing WarnRemoved
3408 Does nothing. Preserved for backward compatibility.
3411 Name(compressed_debug_sections) Type(int)
3413 ; Since -gz= is completely handled in specs, the values aren't used and we
3414 ; assign arbitrary constants.
3416 Enum(compressed_debug_sections) String(none) Value(0)
3419 Enum(compressed_debug_sections) String(zlib) Value(1)
3422 Enum(compressed_debug_sections) String(zlib-gnu) Value(2)
3426 Generate compressed debug sections.
3429 Common Driver RejectNegative Joined Enum(compressed_debug_sections)
3430 -gz=<format> Generate compressed debug sections in format <format>.
3433 Driver Joined Separate
3436 Common Joined Var(plugindir_string) Init(0)
3437 -iplugindir=<dir> Set <dir> to be the default plugin directory.
3440 Common Joined Separate RejectDriver Var(imultiarch) Init(0)
3441 -imultiarch <dir> Set <dir> to be the multiarch include subdirectory.
3444 Driver Joined Separate
3449 no-canonical-prefixes
3468 Common Driver Joined Separate Var(asm_file_name) MissingArgError(missing filename after %qs)
3469 -o <file> Place output into <file>.
3472 Common Var(profile_flag)
3473 Enable function profiling.
3476 Driver Var(pass_exit_codes)
3479 Common Alias(Wpedantic)
3482 Common Var(flag_pedantic_errors)
3483 Like -pedantic but issue them as errors.
3489 Driver Var(use_pipes)
3492 Driver JoinedOrMissing Var(print_file_name)
3494 print-libgcc-file-name
3497 print-multi-directory
3498 Driver Var(print_multi_directory)
3501 Driver Var(print_multi_lib)
3503 print-multi-os-directory
3504 Driver Var(print_multi_os_directory)
3507 Driver Var(print_multiarch)
3510 Driver JoinedOrMissing Var(print_prog_name)
3513 Driver Var(print_search_dirs)
3516 Driver Var(print_sysroot)
3518 print-sysroot-headers-suffix
3519 Driver Var(print_sysroot_headers_suffix)
3522 Common Var(quiet_flag) RejectDriver
3523 Do not display functions compiled or elapsed time.
3541 Driver Var(report_times)
3544 Driver JoinedOrMissing
3547 Driver Joined Separate
3551 ; C option, but driver must not handle as "-u ndef".
3554 Common Driver Var(verbose_flag)
3555 Enable verbose output.
3558 Common Var(version_flag) RejectDriver
3559 Display the compiler's version.
3562 Common Var(inhibit_warnings)
3566 Driver Separate Var(wrapper_string)
3569 Driver Joined Separate
3572 Driver RejectNegative Negative(static-pie)
3573 Create a shared library.
3579 Driver Separate Alias(specs=)
3592 ; Documented for Fortran, but always accepted by driver.
3596 ; Documented for D, but always accepted by driver.
3600 ; Documented for Fortran, but always accepted by driver.
3607 ; Documented for Go, but always accepted by driver.
3628 Driver RejectNegative Negative(shared)
3629 Don't create a dynamically linked position independent executable.
3632 Driver RejectNegative Negative(no-pie)
3633 Create a dynamically linked position independent executable.
3636 Driver RejectNegative Negative(pie)
3637 Create a static position independent executable.
3640 Driver Joined Separate
3643 Common Var(flag_ipa_ra) Optimization
3644 Use caller save register across calls if possible.
3646 ; This comment is to ensure we retain the blank line above.