1 ; Options for the language- and target-independent parts of the compiler.
3 ; Copyright (C) 2003-2021 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 ; Nonzero means use GNU-only extensions in the generated symbolic
126 ; debugging information. Currently, this only has an effect when
127 ; write_symbols is set to DBX_DEBUG or XCOFF_DEBUG.
129 bool use_gnu_debug_info_extensions
131 ; Level of CTF debugging information we are producing. See flag-types.h
132 ; for the definitions of the different possible levels.
134 enum ctf_debug_info_levels ctf_debug_info_level = CTFINFO_LEVEL_NONE
136 ; Original value of maximum field alignment in bytes, specified via
137 ; -fpack-struct=<value>.
139 unsigned int initial_max_fld_align = TARGET_DEFAULT_PACK_STRUCT
141 ; Type of stack check.
143 enum stack_check_type flag_stack_check = NO_STACK_CHECK
145 ; True if stack usage information needs to be computed.
147 bool flag_stack_usage_info = false
149 ; -dA causes debug commentary information to be produced in
150 ; the generated assembly code (to make it more readable). This option
151 ; is generally only of use to those who actually need to read the
152 ; generated assembly code (perhaps while debugging the compiler itself).
153 ; Currently, this switch is only used by dwarf2out.c; however, it is intended
154 ; to be a catchall for printing debug information in the assembler file.
158 ; Balance between GNAT encodings and standard DWARF to emit.
160 enum dwarf_gnat_encodings gnat_encodings = DWARF_GNAT_ENCODINGS_DEFAULT
162 ; -dP causes the rtl to be emitted as a comment in assembly.
164 int flag_dump_rtl_in_asm
166 ; Whether -da was passed (used only in handle_common_deferred_options).
168 bool flag_dump_all_passed
170 ; Other flags saying which kinds of debugging dump have been requested.
173 int rtl_dump_and_exit
176 int flag_print_asm_name
178 ; Name of top-level original source file (what was input to cpp).
179 ; This comes from the #-command at the beginning of the actual input.
180 ; If there isn't any there, then this is the cc1 input file name.
182 const char *main_input_filename
184 ; Pointer to base name in main_input_filename, with directories and a
185 ; single final extension removed, and the length of this base
189 const char *main_input_basename
192 int main_input_baselength
194 ; The base name used for auxiliary output files.
195 ; dump_base_name minus dump_base_ext.
198 const char *aux_base_name
200 ; Which options have been printed by --help.
204 ; Which enums have been printed by --help. 0 = not printed, no
205 ; relevant options seen, 1 = relevant option seen, not yet printed, 2
208 char *help_enum_printed
210 ; The number of columns for --help output.
212 unsigned int help_columns
214 ; Whether this options structure has been through finish_options
216 bool flag_opts_finished
218 ; What the sanitizer should instrument
220 unsigned int flag_sanitize
222 ; What sanitizers should recover from errors
224 unsigned int flag_sanitize_recover = (SANITIZE_UNDEFINED | SANITIZE_UNDEFINED_NONDEFAULT | SANITIZE_KERNEL_ADDRESS | SANITIZE_KERNEL_HWADDRESS) & ~(SANITIZE_UNREACHABLE | SANITIZE_RETURN)
226 ; What the coverage sanitizers should instrument
228 unsigned int flag_sanitize_coverage
230 ; Flag whether a prefix has been added to dump_base_name
232 bool dump_base_name_prefixed = false
234 ; What subset of registers should be zeroed on function return
236 unsigned int flag_zero_call_used_regs
248 Common Driver Joined Undocumented
249 Provide bash completion for options starting with provided string.
252 Driver Alias(coverage)
258 Common Separate Alias(d)
261 Common Joined Alias(d)
264 Driver Common Separate Alias(dumpbase)
267 Driver Common Separate Alias(dumpbase-ext)
270 Driver Common Separate Alias(dumpdir)
273 Driver Separate Alias(e)
276 Driver Joined Alias(e)
279 Common Warning Alias(Wextra)
282 Driver Separate Alias(Xassembler)
285 Driver JoinedOrMissing Alias(Xassembler)
288 Driver Separate Alias(Xlinker)
291 Driver JoinedOrMissing Alias(Xlinker)
294 Driver Separate Alias(u)
297 Driver Joined Alias(u)
300 Common Driver Var(help_flag)
301 Display this information.
305 --help=<class> Display descriptions of a specific class of options. <class> is one or more of optimizers, target, warnings, undocumented, params.
308 Driver Separate Alias(x)
311 Driver Joined Alias(x)
314 Driver Separate Alias(L)
317 Driver Joined Alias(L)
319 -no-canonical-prefixes
320 Driver Alias(no-canonical-prefixes)
322 -no-standard-libraries
323 Driver Alias(nostdlib)
326 Driver Var(no_sysroot_suffix)
335 Common Driver Separate Alias(o) MissingArgError(missing filename after %qs)
338 Common Driver Joined Alias(o) MissingArgError(missing filename after %qs)
341 Driver Alias(pass-exit-codes)
344 Common Alias(Wpedantic)
347 Common Alias(pedantic-errors)
353 Driver Alias(static-pie)
359 Driver Separate Alias(B)
362 Driver JoinedOrMissing Alias(B)
368 Driver Separate Alias(print-file-name=)
371 Driver JoinedOrMissing Alias(print-file-name=)
373 -print-libgcc-file-name
374 Driver Alias(print-libgcc-file-name)
376 -print-multi-directory
377 Driver Alias(print-multi-directory)
380 Driver Alias(print-multi-lib)
382 -print-multi-os-directory
383 Driver Alias(print-multi-os-directory)
386 Driver Alias(print-multiarch)
389 Driver Separate Alias(print-prog-name=)
392 Driver JoinedOrMissing Alias(print-prog-name=)
395 Driver Alias(print-search-dirs)
398 Driver Alias(print-sysroot)
400 -print-sysroot-headers-suffix
401 Driver Alias(print-sysroot-headers-suffix)
407 Driver Alias(save-temps)
413 Driver Separate Alias(specs=)
416 Driver Joined Alias(specs=)
422 Driver Alias(symbolic)
426 Alias for --help=target.
434 ;; The driver used to convert options such as --help into forms such
435 ;; as -fhelp; the following four entries are for compatibility with
436 ;; any direct uses of those (undocumented) -f forms
438 Common Driver Alias(-help)
441 Common Driver Joined Alias(-help=)
444 Common Driver Alias(-target-help)
447 Common Driver Alias(-version)
450 Driver Separate Alias(-sysroot=)
453 Driver JoinedOrMissing
459 Driver Joined Separate
465 Driver Joined Separate
471 Common JoinedOrMissing Optimization
472 -O<number> Set optimization level to <number>.
476 Optimize for space rather than speed.
480 Optimize for speed disregarding exact standards compliance.
484 Optimize for debugging experience rather than speed or size.
488 Optimize for space aggressively rather than speed.
500 Driver Joined Separate
506 Driver Joined Separate
527 Common RejectNegative Warning Alias(Wextra)
528 This switch is deprecated; use -Wextra instead.
531 Driver JoinedOrMissing RejectNegative
534 Driver JoinedOrMissing RejectNegative
537 Driver JoinedOrMissing RejectNegative
540 Common Var(warn_aggregate_return) Warning
541 Warn about returning structures, unions or arrays.
543 Waggressive-loop-optimizations
544 Common Var(warn_aggressive_loop_optimizations) Init(1) Warning
545 Warn if a loop with constant number of iterations triggers undefined behavior.
548 Common Var(warn_array_bounds) Warning
549 Warn if an array is accessed out of bounds.
552 Common Joined RejectNegative UInteger Var(warn_array_bounds) Warning IntegerRange(0, 2)
553 Warn if an array is accessed out of bounds.
556 Common Var(warn_attributes) Init(1) Warning
557 Warn about inappropriate attribute usage.
561 Do not warn about specified attributes.
564 Common Alias(Wattribute_alias=, 1, 0) Warning
565 Warn about type safety and similar errors and mismatches in declarations with alias attributes.
568 Common Joined RejectNegative UInteger Var(warn_attribute_alias) Init(1) Warning IntegerRange(0, 2)
569 Warn about type safety and similar errors and mismatches in declarations with alias attributes.
572 Common Var(warn_cannot_profile) Init(1) Warning
573 Warn when profiling instrumentation was requested, but could not be applied to
577 Common Var(warn_cast_align) Warning
578 Warn about pointer casts which increase alignment.
581 Common Var(warn_cast_align,2) Warning
582 Warn about pointer casts which increase alignment.
585 Common Var(warn_cpp) Init(1) Warning
586 Warn when a #warning directive is encountered.
589 Common Var(warn_attribute_warning) Init(1) Warning
590 Warn about uses of __attribute__((warning)) declarations.
593 Common Var(warn_deprecated) Init(1) Warning
594 Warn if a deprecated compiler feature, class, method, or field is used.
596 Wdeprecated-declarations
597 Common Var(warn_deprecated_decl) Init(1) Warning
598 Warn about uses of __attribute__((deprecated)) declarations.
600 Wdisabled-optimization
601 Common Var(warn_disabled_optimization) Warning
602 Warn when an optimization pass is disabled.
605 Common Var(warnings_are_errors)
606 Treat all warnings as errors.
610 Treat specified warning as error.
613 Common Var(extra_warnings) Warning
614 Print extra (possibly unwanted) warnings.
617 Common Var(flag_fatal_errors)
618 Exit on the first error occurred.
621 Common RejectNegative Joined Host_Wide_Int ByteSize Warning Var(warn_frame_larger_than_size) Init(HOST_WIDE_INT_MAX)
622 -Wframe-larger-than=<byte-size> Warn if a function's stack frame requires in excess of <byte-size>.
624 Wno-frame-larger-than
625 Common Alias(Wframe-larger-than=,18446744073709551615EiB,none) Warning
626 Disable -Wframe-larger-than= warning. Equivalent to -Wframe-larger-than=<SIZE_MAX> or larger.
629 Common Var(warn_free_nonheap_object) Init(1) Warning
630 Warn when attempting to free a non-heap object.
633 Common Ignore Warning
634 Does nothing. Preserved for backward compatibility.
636 Wimplicit-fallthrough
637 Common Alias(Wimplicit-fallthrough=,3,0) Warning
639 Wimplicit-fallthrough=
640 Common Var(warn_implicit_fallthrough) RejectNegative Joined UInteger Warning IntegerRange(0, 5)
641 Warn when a switch case falls through.
644 Var(warn_infinite_recursion) Warning
645 Warn for infinitely recursive calls.
648 Common Var(warn_inline) Warning Optimization
649 Warn when an inlined function cannot be inlined.
651 Winvalid-memory-model
652 Common Var(warn_invalid_memory_model) Init(1) Warning
653 Warn when an atomic memory model parameter is known to be outside the valid range.
656 Common RejectNegative Joined Warning Undocumented Alias(Wlarger-than=)
659 Common RejectNegative Joined Host_Wide_Int ByteSize Warning Var(warn_larger_than_size) Init(HOST_WIDE_INT_MAX)
660 -Wlarger-than=<byte-size> Warn if an object's size exceeds <byte-size>.
663 Common Alias(Wlarger-than=,18446744073709551615EiB,none) Warning
664 Disable -Wlarger-than= warning. Equivalent to -Wlarger-than=<SIZE_MAX> or larger.
667 Var(warn_nonnull_compare) Warning
668 Warn if comparing pointer parameter with nonnull attribute with NULL.
671 Common Var(warn_null_dereference) Warning
672 Warn if dereferencing a NULL pointer may lead to erroneous or undefined behavior.
674 Wunsafe-loop-optimizations
675 Common Ignore Warning
676 Does nothing. Preserved for backward compatibility.
679 Common Warning Alias(Wsuggest-attribute=noreturn)
682 Common Var(warn_odr_violations) Init(1) Warning
683 Warn about some C++ One Definition Rule violations during link time optimization.
686 Common Var(warn_overflow) Init(1) Warning
687 Warn about overflow in arithmetic expressions.
690 Common Var(warn_lto_type_mismatch) Init(1) Warning
691 During link time optimization warn about mismatched types of global declarations.
694 Common Var(warn_packed) Warning
695 Warn when the packed attribute has no effect on struct layout.
698 Common Var(warn_padded) Warning
699 Warn when padding is required to align structure members.
702 Common Var(pedantic) Init(0) Warning
703 Issue warnings needed for strict compliance to the standard.
706 Common Var(warn_return_local_addr) Init(1) Warning
707 Warn about returning a pointer/reference to a local or temporary variable.
710 Common Var(warn_shadow) Warning
711 Warn when one variable shadows another. Same as -Wshadow=global.
714 Common Warning Alias(Wshadow)
715 Warn when one variable shadows another (globally).
718 Common Var(warn_shadow_local) Warning EnabledBy(Wshadow)
719 Warn when one local variable shadows another local variable or parameter.
722 Common Warning Undocumented Alias(Wshadow=local)
724 Wshadow=compatible-local
725 Common Var(warn_shadow_compatible_local) Warning EnabledBy(Wshadow=local)
726 Warn when one local variable shadows another local variable or parameter of compatible type.
728 Wshadow-compatible-local
729 Common Warning Undocumented Alias(Wshadow=compatible-local)
732 Common Var(warn_stack_protect) Warning
733 Warn when not issuing stack smashing protection for some reason.
736 Common Joined RejectNegative Host_Wide_Int ByteSize Var(warn_stack_usage) Warning Init(HOST_WIDE_INT_MAX)
737 -Wstack-usage=<byte-size> Warn if stack usage might exceed <byte-size>.
740 Common Alias(Wstack-usage=,18446744073709551615EiB,none) Warning
741 Disable Wstack-usage= warning. Equivalent to Wstack-usage=<SIZE_MAX> or larger.
745 Warn about code which might break strict aliasing rules.
748 Common Joined RejectNegative UInteger Var(warn_strict_aliasing) Warning
749 Warn about code which might break strict aliasing rules.
753 Warn about optimizations that assume that signed overflow is undefined.
756 Common Joined RejectNegative UInteger Var(warn_strict_overflow) Warning
757 Warn about optimizations that assume that signed overflow is undefined.
759 Wsuggest-attribute=cold
760 Common Var(warn_suggest_attribute_cold) Warning
761 Warn about functions which might be candidates for __attribute__((cold)).
763 Wsuggest-attribute=const
764 Common Var(warn_suggest_attribute_const) Warning
765 Warn about functions which might be candidates for __attribute__((const)).
767 Wsuggest-attribute=pure
768 Common Var(warn_suggest_attribute_pure) Warning
769 Warn about functions which might be candidates for __attribute__((pure)).
771 Wsuggest-attribute=noreturn
772 Common Var(warn_suggest_attribute_noreturn) Warning
773 Warn about functions which might be candidates for __attribute__((noreturn)).
775 Wsuggest-attribute=malloc
776 Common Var(warn_suggest_attribute_malloc) Warning
777 Warn about functions which might be candidates for __attribute__((malloc)).
780 Common Var(warn_suggest_final_types) Warning
781 Warn about C++ polymorphic types where adding final keyword would improve code quality.
783 Wsuggest-final-methods
784 Common Var(warn_suggest_final_methods) Warning
785 Warn about C++ virtual methods where adding final keyword would improve code quality.
788 Common Var(warn_switch_unreachable) Warning Init(1)
789 Warn about statements between switch's controlling expression and the first
793 Common Var(warn_system_headers) Warning
794 Do not suppress warnings from system headers.
797 Common Var(warn_trampolines) Warning
798 Warn whenever a trampoline is generated.
801 Common Var(warn_type_limits) Warning EnabledBy(Wextra)
802 Warn if a comparison is always true or always false due to the limited range of the data type.
805 Common Var(warn_uninitialized) Warning EnabledBy(Wextra)
806 Warn about uninitialized automatic variables.
809 Common Var(warn_maybe_uninitialized) Warning EnabledBy(Wuninitialized)
810 Warn about maybe uninitialized automatic variables.
813 Common Ignore Warning
814 Does nothing. Preserved for backward compatibility.
817 Common Var(warn_unused) Init(0) Warning
818 Enable all -Wunused- warnings.
820 Wunused-but-set-parameter
821 Common Var(warn_unused_but_set_parameter) Warning EnabledBy(Wunused && Wextra)
822 Warn when a function parameter is only set, otherwise unused.
824 Wunused-but-set-variable
825 Common Var(warn_unused_but_set_variable) Warning EnabledBy(Wunused)
826 Warn when a variable is only set, otherwise unused.
829 Common Var(warn_unused_function) Warning EnabledBy(Wunused)
830 Warn when a function is unused.
833 Common Var(warn_unused_label) Warning EnabledBy(Wunused)
834 Warn when a label is unused.
837 Common Var(warn_unused_parameter) Warning EnabledBy(Wunused && Wextra)
838 Warn when a function parameter is unused.
841 Common Var(warn_unused_value) Warning EnabledBy(Wunused)
842 Warn when an expression value is unused.
845 Common Var(warn_unused_variable) Warning EnabledBy(Wunused)
846 Warn when a variable is unused.
849 Common Var(warn_coverage_mismatch) Init(1) Warning
850 Warn in case profiles in -fprofile-use do not match.
852 Wcoverage-invalid-line-number
853 Common Var(warn_coverage_invalid_linenum) Init(1) Warning
854 Warn in case a function ends earlier than it begins due to an invalid linenum macros.
857 Common Var(warn_missing_profile) Init(1) Warning
858 Warn in case profiles in -fprofile-use do not exist.
860 Wvector-operation-performance
861 Common Var(warn_vector_operation_performance) Warning
862 Warn when a vector operation is compiled outside the SIMD.
865 Common Var(warn_tsan) Init(1) Warning
866 Warn about unsupported features in ThreadSanitizer.
881 Common Separate Var(aux_info_file_name)
882 -aux-info <file> Emit declaration information into <file>.
885 Common Joined Alias(aux-info)
895 -d<letters> Enable dumps from specific passes of the compiler.
898 Driver Common Separate Var(dump_base_name)
899 -dumpbase <file> Set the file basename to be used for dumps.
902 Driver Common Separate Var(dump_base_ext)
903 -dumpbase-ext .<ext> Drop a trailing .<ext> from the dump basename to name auxiliary output files.
906 Driver Common Separate Var(dump_dir_name)
907 -dumpdir <dir> Set the directory name to be used for dumps.
922 Driver Joined Separate
924 ; This option has historically been passed down to the linker by an
925 ; accident of a %{e*} spec, so ensure it continues to be passed down
926 ; as a single option. The supported option for this purpose is
927 ; -rdynamic. See PR 47390.
931 ; The version of the C++ ABI in use. The following values are allowed:
933 ; 0: The version of the ABI believed most conformant with the C++ ABI
934 ; specification. This ABI may change as bugs are discovered and fixed.
935 ; Therefore, 0 will not necessarily indicate the same ABI in different
938 ; 1: The version of the ABI first used in G++ 3.2. No longer selectable.
940 ; 2: The version of the ABI first used in G++ 3.4, and the default
943 ; 3: The version of the ABI that fixes the missing underscore
944 ; in template non-type arguments of pointer type.
946 ; 4: The version of the ABI that introduces unambiguous mangling of
947 ; vector types. First selectable in G++ 4.5.
949 ; 5: The version of the ABI that ignores attribute const/noreturn
950 ; in function pointer mangling, and corrects mangling of decltype and
951 ; function parameters used in other parameters and the return type.
952 ; First selectable in G++ 4.6.
954 ; 6: The version of the ABI that doesn't promote scoped enums to int and
955 ; changes the mangling of template argument packs, const/static_cast,
956 ; prefix ++ and --, and a class scope function used as a template
958 ; First selectable in G++ 4.7.
960 ; 7: The version of the ABI that treats nullptr_t as a builtin type and
961 ; corrects the mangling of lambdas in default argument scope.
962 ; First selectable in G++ 4.8.
964 ; 8: The version of the ABI that corrects the substitution behavior of
965 ; function types with function-cv-qualifiers.
966 ; First selectable in G++ 4.9 and default in G++ 5.
968 ; 9: The version of the ABI that corrects the alignment of nullptr_t.
969 ; First selectable and default in G++ 5.2.
971 ; 10: The version of the ABI that mangles attributes that affect type
972 ; identity, such as ia32 calling convention attributes (stdcall, etc.)
973 ; Default in G++ 6 (set in c_common_post_options).
975 ; 11: The version of the ABI that corrects mangling of sizeof... expressions
976 ; and introduces new inheriting constructor handling.
979 ; 12: Corrects the calling convention for classes with only deleted copy/move
980 ; constructors and changes passing/returning of empty records.
981 ; Default in G++ 8.1.
983 ; 13: Fixes the accidental change in 12 to the calling convention for classes
984 ; with deleted copy constructor and trivial move constructor.
985 ; Default in G++ 8.2.
987 ; 14: Corrects the mangling of nullptr expression.
990 ; 15: Corrects G++ 10 ABI tag regression [PR98481].
991 ; Available, but not default, in G++ 10.3.
993 ; 16: Changes the mangling of __alignof__ to be distinct from that of alignof.
994 ; Adds missing 'on' in mangling of operator names in some cases.
997 ; 17: Fixes layout of classes that inherit from aggregate classes with default
998 ; member initializers in C++14 and up.
1001 ; Additional positive integers will be assigned as new versions of
1002 ; the ABI become the default version of the ABI.
1004 Common Joined RejectNegative UInteger Var(flag_abi_version) Init(0)
1005 The version of the C++ ABI in use.
1007 faggressive-loop-optimizations
1008 Common Var(flag_aggressive_loop_optimizations) Optimization Init(1)
1009 Aggressively optimize loops using language constraints.
1012 Common Var(flag_align_functions) Optimization
1013 Align the start of functions.
1016 Common RejectNegative Joined Var(str_align_functions) Optimization
1018 flimit-function-alignment
1019 Common Var(flag_limit_function_alignment) Optimization Init(0)
1022 Common Var(flag_align_jumps) Optimization
1023 Align labels which are only reached by jumping.
1026 Common RejectNegative Joined Var(str_align_jumps) Optimization
1029 Common Var(flag_align_labels) Optimization
1033 Common RejectNegative Joined Var(str_align_labels) Optimization
1036 Common Var(flag_align_loops) Optimization
1037 Align the start of loops.
1040 Common RejectNegative Joined Var(str_align_loops) Optimization
1042 fallow-store-data-races
1043 Common Var(flag_store_data_races) Optimization
1044 Allow the compiler to introduce new data races on stores.
1047 Common Var(flag_analyzer)
1048 Enable static analysis pass.
1052 Does nothing. Preserved for backward compatibility.
1056 Does nothing. Preserved for backward compatibility.
1058 fargument-noalias-global
1060 Does nothing. Preserved for backward compatibility.
1062 fargument-noalias-anything
1064 Does nothing. Preserved for backward compatibility.
1067 Common Driver Joined
1068 Select what to sanitize.
1071 Common Joined RejectNegative Enum(sanitize_coverage)
1072 Select type of coverage sanitization.
1075 Name(sanitize_coverage) Type(int)
1078 Enum(sanitize_coverage) String(trace-pc) Value(SANITIZE_COV_TRACE_PC)
1081 Enum(sanitize_coverage) String(trace-cmp) Value(SANITIZE_COV_TRACE_CMP)
1083 fasan-shadow-offset=
1084 Common Joined RejectNegative Var(common_deferred_options) Defer
1085 -fasan-shadow-offset=<number> Use custom shadow memory offset.
1088 Common Joined RejectNegative Var(common_deferred_options) Defer
1089 -fsanitize-sections=<sec1,sec2,...> Sanitize global variables
1090 in user-defined sections.
1094 After diagnosing undefined behavior attempt to continue execution.
1098 This switch is deprecated; use -fsanitize-recover= instead.
1100 fsanitize-address-use-after-scope
1101 Common Driver Var(flag_sanitize_address_use_after_scope) Init(0)
1103 fsanitize-undefined-trap-on-error
1104 Common Driver Var(flag_sanitize_undefined_trap_on_error) Init(0)
1105 Use trap instead of a library function for undefined behavior sanitization.
1107 fasynchronous-unwind-tables
1108 Common Var(flag_asynchronous_unwind_tables) Optimization
1109 Generate unwind tables that are exact at each instruction boundary.
1112 Common Var(flag_auto_inc_dec) Init(1) Optimization
1113 Generate auto-inc/dec instructions.
1116 Common Var(flag_auto_profile)
1117 Use sample profile information for call graph node weights. The default
1118 profile file is fbdata.afdo in 'pwd'.
1121 Common Joined RejectNegative Var(auto_profile_file)
1122 Use sample profile information for call graph node weights. The profile
1123 file is specified in the argument.
1125 ; -fcheck-bounds causes gcc to generate array bounds checks.
1126 ; For C, C++ and ObjC: defaults off.
1127 ; For Java: defaults to on.
1128 ; For Fortran: defaults to off.
1130 Common Var(flag_bounds_check)
1131 Generate code to check bounds before indexing arrays.
1134 Common Var(flag_branch_on_count_reg) Optimization
1135 Replace add, compare, branch with branch on count register.
1137 fbranch-probabilities
1138 Common Var(flag_branch_probabilities) Optimization
1139 Use profiling information for branch probabilities.
1141 fbranch-target-load-optimize
1143 Does nothing. Preserved for backward compatibility.
1145 fbranch-target-load-optimize2
1147 Does nothing. Preserved for backward compatibility.
1151 Does nothing. Preserved for backward compatibility.
1154 Common RejectNegative Var(flag_callgraph_info) Init(NO_CALLGRAPH_INFO);
1155 Output callgraph information on a per-file basis.
1158 Common RejectNegative Joined
1159 Output callgraph information on a per-file basis with decorations.
1162 Common Joined RejectNegative Var(common_deferred_options) Defer
1163 -fcall-saved-<register> Mark <register> as being preserved across functions.
1166 Common Joined RejectNegative Var(common_deferred_options) Defer
1167 -fcall-used-<register> Mark <register> as being corrupted by function calls.
1169 ; Nonzero for -fcaller-saves: allocate values in regs that need to
1170 ; be saved across function calls, if that produces overall better code.
1171 ; Optional now, so people can test it.
1173 Common Var(flag_caller_saves) Optimization
1174 Save registers around function calls.
1178 This switch is deprecated; do not use.
1181 Common Var(flag_check_new)
1182 Check the return value of new in C++.
1185 Common Var(flag_checking) Init(CHECKING_P ? ENABLE_EXTRA_CHECKING ? 2 : 1 : 0)
1186 Perform internal consistency checkings.
1189 Common Joined RejectNegative UInteger Var(flag_checking)
1190 Perform internal consistency checkings.
1193 Common Var(flag_code_hoisting) Optimization
1194 Enable code hoisting.
1196 fcombine-stack-adjustments
1197 Common Var(flag_combine_stack_adjustments) Optimization
1198 Looks for opportunities to reduce stack adjustments and stack references.
1201 Common Var(flag_no_common,0) Init(1)
1202 Put uninitialized globals in the common section.
1206 ; Converted by the driver to -fcompare-debug= options.
1209 Common Driver JoinedOrMissing RejectNegative Var(flag_compare_debug_opt)
1210 -fcompare-debug[=<opts>] Compile with and without e.g. -gtoggle, and compare the final-insns dump.
1212 fcompare-debug-second
1213 Common Driver RejectNegative Var(flag_compare_debug)
1214 Run only the second compilation of -fcompare-debug.
1217 Common Var(flag_compare_elim_after_reload) Optimization
1218 Perform comparison elimination after register allocation has finished.
1221 Common Var(flag_conserve_stack) Optimization
1222 Do not perform optimizations increasing noticeably stack usage.
1225 Common Var(flag_cprop_registers) Optimization
1226 Perform a register copy-propagation optimization pass.
1229 Common Var(flag_crossjumping) Optimization
1230 Perform cross-jumping optimization.
1233 Common Var(flag_cse_follow_jumps) Optimization
1234 When running CSE, follow jumps to their targets.
1238 Does nothing. Preserved for backward compatibility.
1241 Common Var(flag_cx_limited_range) Optimization SetByCombined
1242 Omit range reduction step when performing complex division.
1245 Common Var(flag_cx_fortran_rules) Optimization
1246 Complex multiplication and division follow Fortran rules.
1249 Common Var(flag_data_sections)
1250 Place data items into their own section.
1253 Common Var(flag_dbg_cnt_list)
1254 List all available debugging counters with their limits and counts.
1257 Common RejectNegative Joined Var(common_deferred_options) Defer
1258 -fdbg-cnt=<counter>[:<lower_limit1>-]<upper_limit1>[:<lower_limit2>-<upper_limit2>:...][,<counter>:...] Set the debug counter limit.
1261 Common Joined RejectNegative Var(common_deferred_options) Defer
1262 -fdebug-prefix-map=<old>=<new> Map one directory name to another in debug information.
1265 Common Joined RejectNegative Var(common_deferred_options) Defer
1266 -ffile-prefix-map=<old>=<new> Map one directory name to another in compilation result.
1268 fdebug-types-section
1269 Common Var(flag_debug_types_section) Init(0)
1270 Output .debug_types section when using DWARF v4 debuginfo.
1272 ; Nonzero for -fdefer-pop: don't pop args after each function call
1273 ; instead save them up to pop many calls' args with one insns.
1275 Common Var(flag_defer_pop) Optimization
1276 Defer popping functions args from stack until later.
1279 Common Var(flag_delayed_branch) Optimization
1280 Attempt to fill delay slots of branch instructions.
1282 fdelete-dead-exceptions
1283 Common Var(flag_delete_dead_exceptions) Init(0) Optimization
1284 Delete dead instructions that may throw exceptions.
1286 fdelete-null-pointer-checks
1287 Common Var(flag_delete_null_pointer_checks) Init(-1) Optimization
1288 Delete useless null pointer checks.
1290 fdevirtualize-at-ltrans
1291 Common Var(flag_ltrans_devirtualize)
1292 Stream extra data to support more aggressive devirtualization in LTO local transformation mode.
1294 fdevirtualize-speculatively
1295 Common Var(flag_devirtualize_speculatively) Optimization
1296 Perform speculative devirtualization.
1299 Common Var(flag_devirtualize) Optimization
1300 Try to convert virtual calls to direct ones.
1302 fdiagnostics-show-location=
1303 Common Joined RejectNegative Enum(diagnostic_prefixing_rule)
1304 -fdiagnostics-show-location=[once|every-line] How often to emit source location at the beginning of line-wrapped diagnostics.
1306 ; Required for these enum values.
1311 Name(diagnostic_prefixing_rule) Type(int)
1314 Enum(diagnostic_prefixing_rule) String(once) Value(DIAGNOSTICS_SHOW_PREFIX_ONCE)
1317 Enum(diagnostic_prefixing_rule) String(every-line) Value(DIAGNOSTICS_SHOW_PREFIX_EVERY_LINE)
1319 fdiagnostics-show-caret
1320 Common Var(flag_diagnostics_show_caret) Init(1)
1321 Show the source line with a caret indicating the column.
1323 fdiagnostics-show-labels
1324 Common Var(flag_diagnostics_show_labels) Init(1)
1325 Show labels annotating ranges of source code when showing source.
1327 fdiagnostics-show-line-numbers
1328 Common Var(flag_diagnostics_show_line_numbers) Init(1)
1329 Show line numbers in the left margin when showing source.
1332 Common Alias(fdiagnostics-color=,always,never)
1336 Driver Common Joined RejectNegative Var(flag_diagnostics_show_color) Enum(diagnostic_color_rule) Init(DIAGNOSTICS_COLOR_NO)
1337 -fdiagnostics-color=[never|always|auto] Colorize diagnostics.
1339 ; Required for these enum values.
1344 Name(diagnostic_color_rule) Type(int)
1347 Enum(diagnostic_color_rule) String(never) Value(DIAGNOSTICS_COLOR_NO)
1350 Enum(diagnostic_color_rule) String(always) Value(DIAGNOSTICS_COLOR_YES)
1353 Enum(diagnostic_color_rule) String(auto) Value(DIAGNOSTICS_COLOR_AUTO)
1356 Driver Common Joined RejectNegative Var(flag_diagnostics_show_urls) Enum(diagnostic_url_rule) Init(DIAGNOSTICS_URL_AUTO)
1357 -fdiagnostics-urls=[never|always|auto] Embed URLs in diagnostics.
1359 ; Required for these enum values.
1364 Name(diagnostic_url_rule) Type(int)
1367 Enum(diagnostic_url_rule) String(never) Value(DIAGNOSTICS_URL_NO)
1370 Enum(diagnostic_url_rule) String(always) Value(DIAGNOSTICS_URL_YES)
1373 Enum(diagnostic_url_rule) String(auto) Value(DIAGNOSTICS_URL_AUTO)
1375 fdiagnostics-column-unit=
1376 Common Joined RejectNegative Enum(diagnostics_column_unit)
1377 -fdiagnostics-column-unit=[display|byte] Select whether column numbers are output as display columns (default) or raw bytes.
1379 fdiagnostics-column-origin=
1380 Common Joined RejectNegative UInteger
1381 -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.
1383 fdiagnostics-format=
1384 Common Joined RejectNegative Enum(diagnostics_output_format)
1385 -fdiagnostics-format=[text|json] Select output format.
1387 fdiagnostics-escape-format=
1388 Common Joined RejectNegative Enum(diagnostics_escape_format)
1389 -fdiagnostics-escape-format=[unicode|bytes] Select how to escape non-printable-ASCII bytes in the source for diagnostics that suggest it.
1391 ; Required for these enum values.
1396 Name(diagnostics_column_unit) Type(int)
1399 Enum(diagnostics_column_unit) String(display) Value(DIAGNOSTICS_COLUMN_UNIT_DISPLAY)
1402 Enum(diagnostics_column_unit) String(byte) Value(DIAGNOSTICS_COLUMN_UNIT_BYTE)
1405 Name(diagnostics_escape_format) Type(int)
1408 Enum(diagnostics_escape_format) String(unicode) Value(DIAGNOSTICS_ESCAPE_FORMAT_UNICODE)
1411 Enum(diagnostics_escape_format) String(bytes) Value(DIAGNOSTICS_ESCAPE_FORMAT_BYTES)
1414 Name(diagnostics_output_format) Type(int)
1417 Enum(diagnostics_output_format) String(text) Value(DIAGNOSTICS_OUTPUT_FORMAT_TEXT)
1420 Enum(diagnostics_output_format) String(json) Value(DIAGNOSTICS_OUTPUT_FORMAT_JSON)
1422 fdiagnostics-parseable-fixits
1423 Common Var(flag_diagnostics_parseable_fixits)
1424 Print fix-it hints in machine-readable form.
1426 fdiagnostics-generate-patch
1427 Common Var(flag_diagnostics_generate_patch)
1428 Print fix-it hints to stderr in unified diff format.
1430 fdiagnostics-show-option
1431 Common Var(flag_diagnostics_show_option) Init(1)
1432 Amend appropriate diagnostic messages with the command line option that controls them.
1434 fdiagnostics-show-cwe
1435 Common Var(flag_diagnostics_show_cwe) Init(1)
1436 Print CWE identifiers for diagnostic messages, where available.
1438 fdiagnostics-path-format=
1439 Common Joined RejectNegative Var(flag_diagnostics_path_format) Enum(diagnostic_path_format) Init(DPF_INLINE_EVENTS)
1440 Specify how to print any control-flow path associated with a diagnostic.
1442 fdiagnostics-plain-output
1443 Driver Common RejectNegative
1444 Turn off any diagnostics features that complicate the output, such as line numbers, color, and warning URLs.
1447 Common Joined RejectNegative UInteger
1448 -ftabstop=<number> Distance between tab stops for column reporting.
1451 Name(diagnostic_path_format) Type(int)
1454 Enum(diagnostic_path_format) String(none) Value(DPF_NONE)
1457 Enum(diagnostic_path_format) String(separate-events) Value(DPF_SEPARATE_EVENTS)
1460 Enum(diagnostic_path_format) String(inline-events) Value(DPF_INLINE_EVENTS)
1462 fdiagnostics-show-path-depths
1463 Common Var(flag_diagnostics_show_path_depths) Init(0)
1464 Show stack depths of events in paths.
1466 fdiagnostics-minimum-margin-width=
1467 Common Joined UInteger Var(diagnostics_minimum_margin_width) Init(6)
1468 Set minimum width of left margin of source code when showing source.
1471 Common Joined RejectNegative Var(common_deferred_options) Defer
1472 -fdisable-[tree|rtl|ipa]-<pass>=range1+range2 Disable an optimization pass.
1475 Common Joined RejectNegative Var(common_deferred_options) Defer
1476 -fenable-[tree|rtl|ipa]-<pass>=range1+range2 Enable an optimization pass.
1479 Common Joined RejectNegative Var(common_deferred_options) Defer
1480 -fdump-<type> Dump various compiler internals to a file.
1483 Driver RejectNegative
1486 Common RejectNegative Joined Var(flag_dump_final_insns)
1487 -fdump-final-insns=filename Dump to filename the insns at the end of translation.
1490 Common RejectNegative Joined Var(flag_dump_go_spec)
1491 -fdump-go-spec=filename Write all declarations to file as Go code.
1494 Common Var(flag_dump_noaddr)
1495 Suppress output of addresses in debugging dumps.
1498 Common Driver Var(flag_report_bug)
1499 Collect and dump debug information into temporary file if ICE in C/C++
1502 fdump-internal-locations
1503 Common Var(flag_dump_locations) Init(0)
1504 Dump detailed information on GCC's internal representation of source code locations.
1507 Common Var(flag_dump_passes) Init(0)
1508 Dump optimization passes.
1511 Common Var(flag_dump_unnumbered)
1512 Suppress output of instruction numbers, line number notes and addresses in debugging dumps.
1514 fdump-unnumbered-links
1515 Common Var(flag_dump_unnumbered_links)
1516 Suppress output of previous and next insn numbers in debugging dumps.
1519 Common Var(flag_dwarf2_cfi_asm) Init(HAVE_GAS_CFI_DIRECTIVE)
1520 Enable CFI tables via GAS assembler directives.
1523 Common Var(flag_early_inlining) Init(1) Optimization
1524 Perform early inlining.
1526 feliminate-dwarf2-dups
1528 Does nothing. Preserved for backward compatibility.
1531 Common Var(flag_ipa_sra) Init(0) Optimization
1532 Perform interprocedural reduction of aggregates.
1534 feliminate-unused-debug-symbols
1535 Common Var(flag_debug_only_used_symbols) Init(1)
1536 Perform unused symbol elimination in debug info.
1538 feliminate-unused-debug-types
1539 Common Var(flag_eliminate_unused_debug_types) Init(1)
1540 Perform unused type elimination in debug info.
1542 femit-class-debug-always
1543 Common Var(flag_emit_class_debug_always) Init(0)
1544 Do not suppress C++ class debug information.
1547 Common Var(flag_exceptions) Optimization EnabledBy(fnon-call-exceptions)
1548 Enable exception handling.
1550 fexpensive-optimizations
1551 Common Var(flag_expensive_optimizations) Optimization
1552 Perform a number of minor, expensive optimizations.
1555 Common Joined RejectNegative Enum(excess_precision) Var(flag_excess_precision) Init(EXCESS_PRECISION_DEFAULT) Optimization SetByCombined
1556 -fexcess-precision=[fast|standard|16] Specify handling of excess floating-point precision.
1559 Name(excess_precision) Type(enum excess_precision) UnknownError(unknown excess precision style %qs)
1562 Enum(excess_precision) String(fast) Value(EXCESS_PRECISION_FAST)
1565 Enum(excess_precision) String(standard) Value(EXCESS_PRECISION_STANDARD)
1568 Enum(excess_precision) String(16) Value(EXCESS_PRECISION_FLOAT16)
1570 ; Whether we permit the extended set of values for FLT_EVAL_METHOD
1571 ; introduced in ISO/IEC TS 18661-3, or limit ourselves to those in C99/C11.
1572 fpermitted-flt-eval-methods=
1573 Common Joined RejectNegative Enum(permitted_flt_eval_methods) Var(flag_permitted_flt_eval_methods) Init(PERMITTED_FLT_EVAL_METHODS_DEFAULT)
1574 -fpermitted-flt-eval-methods=[c11|ts-18661] Specify which values of FLT_EVAL_METHOD are permitted.
1577 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)
1580 Enum(permitted_flt_eval_methods) String(c11) Value(PERMITTED_FLT_EVAL_METHODS_C11)
1583 Enum(permitted_flt_eval_methods) String(ts-18661-3) Value(PERMITTED_FLT_EVAL_METHODS_TS_18661)
1589 Common Var(flag_fat_lto_objects)
1590 Output lto objects containing both the intermediate language and binary output.
1593 Common Var(flag_finite_math_only) Optimization SetByCombined
1594 Assume no NaNs or infinities are generated.
1597 Common Var(flag_finite_loops) Optimization Init(0)
1598 Assume that loops with an exit will terminate and not loop indefinitely.
1601 Common Joined RejectNegative Var(common_deferred_options) Defer
1602 -ffixed-<register> Mark <register> as being unavailable to the compiler.
1605 Common Var(flag_float_store) Optimization
1606 Don't allocate floats and doubles in extended-precision registers.
1610 Does nothing. Preserved for backward compatibility.
1613 Common Var(flag_forward_propagate) Optimization
1614 Perform a forward propagation pass on RTL.
1617 Common Joined RejectNegative Enum(fp_contract_mode) Var(flag_fp_contract_mode) Init(FP_CONTRACT_FAST) Optimization
1618 -ffp-contract=[off|on|fast] Perform floating-point expression contraction.
1621 Name(fp_contract_mode) Type(enum fp_contract_mode) UnknownError(unknown floating point contraction style %qs)
1624 Enum(fp_contract_mode) String(off) Value(FP_CONTRACT_OFF)
1626 ; Not implemented, fall back to conservative FP_CONTRACT_OFF.
1628 Enum(fp_contract_mode) String(on) Value(FP_CONTRACT_OFF)
1631 Enum(fp_contract_mode) String(fast) Value(FP_CONTRACT_FAST)
1633 ffp-int-builtin-inexact
1634 Common Var(flag_fp_int_builtin_inexact) Init(1) Optimization
1635 Allow built-in functions ceil, floor, round, trunc to raise \"inexact\" exceptions.
1637 ; Nonzero means don't put addresses of constant functions in registers.
1638 ; Used for compiling the Unix kernel, where strange substitutions are
1639 ; done on the assembly output.
1641 Common Var(flag_no_function_cse,0) Optimization
1642 Allow function addresses to be held in registers.
1645 Common Var(flag_function_sections)
1646 Place each function into its own section.
1649 Common Var(flag_gcse) Optimization
1650 Perform global common subexpression elimination.
1653 Common Var(flag_gcse_lm) Init(1) Optimization
1654 Perform enhanced load motion during global common subexpression elimination.
1657 Common Var(flag_gcse_sm) Init(0) Optimization
1658 Perform store motion after global common subexpression elimination.
1661 Common Var(flag_gcse_las) Init(0) Optimization
1662 Perform redundant load after store elimination in global common subexpression
1666 Common Var(flag_gcse_after_reload) Optimization
1667 Perform global common subexpression elimination after register allocation has
1671 Name(dwarf_gnat_encodings) Type(int)
1674 Enum(dwarf_gnat_encodings) String(all) Value(DWARF_GNAT_ENCODINGS_ALL)
1677 Enum(dwarf_gnat_encodings) String(gdb) Value(DWARF_GNAT_ENCODINGS_GDB)
1680 Enum(dwarf_gnat_encodings) String(minimal) Value(DWARF_GNAT_ENCODINGS_MINIMAL)
1683 Common Enum(dwarf_gnat_encodings) Joined RejectNegative Undocumented Var(gnat_encodings)
1684 -fgnat-encodings=[all|gdb|minimal] Select the balance between GNAT encodings and standard DWARF emitted in the debug information.
1686 ; This option is not documented yet as its semantics will change.
1688 Common Var(flag_graphite) Optimization
1689 Enable in and out of Graphite representation.
1692 Common Var(flag_graphite_identity) Optimization
1693 Enable Graphite Identity transformation.
1695 fhoist-adjacent-loads
1696 Common Var(flag_hoist_adjacent_loads) Optimization
1697 Enable hoisting adjacent loads to encourage generating conditional move
1701 Common Undocumented Var(flag_keep_gc_roots_live) Optimization
1702 ; Always keep a pointer to a live memory block
1705 Common Var(flag_large_source_files) Init(0)
1706 Improve GCC's ability to track column numbers in large source files,
1707 at the expense of slower compilation.
1709 floop-parallelize-all
1710 Common Var(flag_loop_parallelize_all) Optimization
1711 Mark all loops as parallel.
1714 Common Alias(floop-nest-optimize)
1715 Enable loop nest transforms. Same as -floop-nest-optimize.
1718 Common Var(flag_loop_interchange) Optimization
1719 Enable loop interchange on trees.
1722 Common Alias(floop-nest-optimize)
1723 Enable loop nest transforms. Same as -floop-nest-optimize.
1725 floop-unroll-and-jam
1726 Common Var(flag_unroll_jam) Optimization
1727 Perform unroll-and-jam on loops.
1731 Enable support for GNU transactional memory.
1734 Common Var(flag_gnu_unique) Init(1)
1735 Use STB_GNU_UNIQUE if supported by the assembler.
1739 Does nothing. Preserved for backward compatibility.
1742 Common Var(flag_loop_nest_optimize) Optimization
1743 Enable the loop nest optimizer.
1745 fstrict-volatile-bitfields
1746 Common Var(flag_strict_volatile_bitfields) Init(-1) Optimization
1747 Force bitfield accesses to match their type width.
1750 Common Var(flag_store_merging) Optimization
1751 Merge adjacent stores.
1753 fguess-branch-probability
1754 Common Var(flag_guess_branch_prob) Optimization
1755 Enable guessing of branch probabilities.
1758 Common Var(flag_harden_compares) Optimization
1759 Harden conditionals not used in branches, checking reversed conditions.
1761 fharden-conditional-branches
1762 Common Var(flag_harden_conditional_branches) Optimization
1763 Harden conditional branches by checking reversed conditions.
1765 ; Nonzero means ignore `#ident' directives. 0 means handle them.
1766 ; Generate position-independent code for executables if possible
1767 ; On SVR4 targets, it also controls whether or not to emit a
1768 ; string identifying the compiler.
1770 Common Var(flag_no_ident,0)
1771 Process #ident directives.
1774 Common Var(flag_if_conversion) Optimization
1775 Perform conversion of conditional jumps to branchless equivalents.
1778 Common Var(flag_if_conversion2) Optimization
1779 Perform conversion of conditional jumps to conditional execution.
1782 Common Joined RejectNegative Enum(stack_reuse_level) Var(flag_stack_reuse) Init(SR_ALL) Optimization
1783 -fstack-reuse=[all|named_vars|none] Set stack reuse level for local variables.
1786 Name(stack_reuse_level) Type(enum stack_reuse_level) UnknownError(unknown Stack Reuse Level %qs)
1789 Enum(stack_reuse_level) String(all) Value(SR_ALL)
1792 Enum(stack_reuse_level) String(named_vars) Value(SR_NAMED_VARS)
1795 Enum(stack_reuse_level) String(none) Value(SR_NONE)
1797 ftree-loop-if-convert
1798 Common Var(flag_tree_loop_if_convert) Init(-1) Optimization
1799 Convert conditional jumps in innermost loops to branchless equivalents.
1801 ftree-loop-if-convert-stores
1803 Does nothing. Preserved for backward compatibility.
1805 ; -finhibit-size-directive inhibits output of .size for ELF.
1806 ; This is used only for compiling crtstuff.c,
1807 ; and it may be extended to other effects
1808 ; needed for crtstuff.c on other systems.
1809 finhibit-size-directive
1810 Common Var(flag_inhibit_size_directive)
1811 Do not generate .size directives.
1814 Common Var(flag_indirect_inlining) Optimization
1815 Perform indirect inlining.
1817 ; General flag to enable inlining. Specifying -fno-inline will disable
1818 ; all inlining apart from always-inline functions.
1820 Common Var(flag_no_inline,0) Init(0) Optimization
1821 Enable inlining of function declared \"inline\", disabling disables all inlining.
1823 finline-small-functions
1824 Common Var(flag_inline_small_functions) Optimization
1825 Integrate functions into their callers when code size is known not to grow.
1828 Common Var(flag_inline_functions) Optimization
1829 Integrate functions not declared \"inline\" into their callers when profitable.
1831 finline-functions-called-once
1832 Common Var(flag_inline_functions_called_once) Optimization
1833 Integrate functions only required by their single caller.
1836 Common RejectNegative Joined Alias(finline-limit=)
1839 Common RejectNegative Joined UInteger
1840 -finline-limit=<number> Limit the size of inlined functions to <number>.
1843 Common Var(flag_inline_atomics) Init(1) Optimization
1844 Inline __atomic operations when a lock free instruction sequence is available.
1847 Common RejectNegative Alias(fcf-protection=,full)
1850 Common Joined RejectNegative Enum(cf_protection_level) Var(flag_cf_protection) Init(CF_NONE)
1851 -fcf-protection=[full|branch|return|none|check] Instrument functions with checks to verify jump/call/return control-flow transfer
1852 instructions have valid targets.
1855 Name(cf_protection_level) Type(enum cf_protection_level) UnknownError(unknown Control-Flow Protection Level %qs)
1858 Enum(cf_protection_level) String(full) Value(CF_FULL)
1861 Enum(cf_protection_level) String(branch) Value(CF_BRANCH)
1864 Enum(cf_protection_level) String(return) Value(CF_RETURN)
1867 Enum(cf_protection_level) String(check) Value(CF_CHECK)
1870 Enum(cf_protection_level) String(none) Value(CF_NONE)
1872 finstrument-functions
1873 Common Var(flag_instrument_function_entry_exit)
1874 Instrument function entry and exit with profiling calls.
1876 finstrument-functions-exclude-function-list=
1877 Common RejectNegative Joined
1878 -finstrument-functions-exclude-function-list=name,... Do not instrument listed functions.
1880 finstrument-functions-exclude-file-list=
1881 Common RejectNegative Joined
1882 -finstrument-functions-exclude-file-list=filename,... Do not instrument functions listed in files.
1885 Common Var(flag_ipa_cp) Optimization
1886 Perform interprocedural constant propagation.
1889 Common Var(flag_ipa_cp_clone) Optimization
1890 Perform cloning to make Interprocedural constant propagation stronger.
1894 Does nothing. Preserved for backward compatibility.
1897 Common Var(flag_ipa_bit_cp) Optimization
1898 Perform interprocedural bitwise constant propagation.
1901 Common Var(flag_ipa_modref) Optimization
1902 Perform interprocedural modref analysis.
1905 Common Var(flag_ipa_profile) Init(0) Optimization
1906 Perform interprocedural profile propagation.
1909 Common Var(flag_ipa_pta) Init(0) Optimization
1910 Perform interprocedural points-to analysis.
1913 Common Var(flag_ipa_pure_const) Init(0) Optimization
1914 Discover pure and const functions.
1917 Common Var(flag_ipa_icf) Optimization
1918 Perform Identical Code Folding for functions and read-only variables.
1921 Common Var(flag_ipa_icf_functions) Optimization
1922 Perform Identical Code Folding for functions.
1925 Common Var(flag_ipa_icf_variables) Optimization
1926 Perform Identical Code Folding for variables.
1929 Common Var(flag_ipa_reference) Init(0) Optimization
1930 Discover read-only and non addressable static variables.
1932 fipa-reference-addressable
1933 Common Var(flag_ipa_reference_addressable) Init(0) Optimization
1934 Discover read-only, write-only and non-addressable static variables.
1936 fipa-stack-alignment
1937 Common Var(flag_ipa_stack_alignment) Init(1) Optimization
1938 Reduce stack alignment on call sites if possible.
1942 Does nothing. Preserved for backward compatibility.
1946 Does nothing. Preserved for backward compatibility.
1949 Common Var(flag_ipa_vrp) Optimization
1950 Perform IPA Value Range Propagation.
1953 Common Joined RejectNegative Enum(ira_algorithm) Var(flag_ira_algorithm) Init(IRA_ALGORITHM_CB) Optimization
1954 -fira-algorithm=[CB|priority] Set the used IRA algorithm.
1956 fipa-strict-aliasing
1957 Common Var(flag_ipa_strict_aliasing) Init(1) Optimization
1958 Assume strict aliasing rules apply across (uninlined) function boundaries.
1961 Name(ira_algorithm) Type(enum ira_algorithm) UnknownError(unknown IRA algorithm %qs)
1964 Enum(ira_algorithm) String(CB) Value(IRA_ALGORITHM_CB)
1967 Enum(ira_algorithm) String(priority) Value(IRA_ALGORITHM_PRIORITY)
1970 Common Joined RejectNegative Enum(ira_region) Var(flag_ira_region) Init(IRA_REGION_ONE) Optimization
1971 -fira-region=[one|all|mixed] Set regions for IRA.
1974 Name(ira_region) Type(enum ira_region) UnknownError(unknown IRA region %qs)
1977 Enum(ira_region) String(one) Value(IRA_REGION_ONE)
1980 Enum(ira_region) String(all) Value(IRA_REGION_ALL)
1983 Enum(ira_region) String(mixed) Value(IRA_REGION_MIXED)
1986 Common Var(flag_ira_hoist_pressure) Init(1) Optimization
1987 Use IRA based register pressure calculation
1988 in RTL hoist optimizations.
1991 Common Var(flag_ira_loop_pressure) Optimization
1992 Use IRA based register pressure calculation
1993 in RTL loop optimizations.
1995 fira-share-save-slots
1996 Common Var(flag_ira_share_save_slots) Init(1) Optimization
1997 Share slots for saving different hard registers.
1999 fira-share-spill-slots
2000 Common Var(flag_ira_share_spill_slots) Init(1) Optimization
2001 Share stack slots for spilled pseudo-registers.
2004 Common RejectNegative Joined UInteger Var(flag_ira_verbose) Init(5)
2005 -fira-verbose=<number> Control IRA's level of diagnostic messages.
2008 Common Var(flag_ivopts) Init(1) Optimization
2009 Optimize induction variables on trees.
2012 Common Var(flag_jump_tables) Init(1) Optimization
2013 Use jump tables for sufficiently large switch statements.
2016 Common Var(flag_bit_tests) Init(1) Optimization
2017 Use bit tests for sufficiently large switch statements.
2019 fkeep-inline-functions
2020 Common Var(flag_keep_inline_functions)
2021 Generate code for functions even if they are fully inlined.
2023 fkeep-static-functions
2024 Common Var(flag_keep_static_functions)
2025 Generate code for static functions even if they are never called.
2028 Common Var(flag_keep_static_consts) Init(1)
2029 Emit static const variables even if they are not used.
2032 Common Var(flag_leading_underscore) Init(-1)
2033 Give external symbols a leading underscore.
2037 Does nothing. Preserved for backward compatibility.
2040 Common Var(flag_lra_remat) Optimization
2041 Do CFG-sensitive rematerialization in LRA.
2045 Enable link-time optimization.
2048 Common RejectNegative Joined Var(flag_lto)
2049 Link-time optimization with number of parallel jobs or jobserver.
2052 Name(lto_partition_model) Type(enum lto_partition_model) UnknownError(unknown LTO partitioning model %qs)
2055 Enum(lto_partition_model) String(none) Value(LTO_PARTITION_NONE)
2058 Enum(lto_partition_model) String(one) Value(LTO_PARTITION_ONE)
2061 Enum(lto_partition_model) String(balanced) Value(LTO_PARTITION_BALANCED)
2064 Enum(lto_partition_model) String(1to1) Value(LTO_PARTITION_1TO1)
2067 Enum(lto_partition_model) String(max) Value(LTO_PARTITION_MAX)
2070 Common Joined RejectNegative Enum(lto_partition_model) Var(flag_lto_partition) Init(LTO_PARTITION_BALANCED)
2071 Specify the algorithm to partition symbols and vars at linktime.
2073 ; The initial value of -1 comes from Z_DEFAULT_COMPRESSION in zlib.h.
2074 flto-compression-level=
2075 Common Joined RejectNegative UInteger Var(flag_lto_compression_level) Init(-1) IntegerRange(0, 19)
2076 -flto-compression-level=<number> Use zlib/zstd compression level <number> for IL.
2078 flto-odr-type-merging
2080 Does nothing. Preserved for backward compatibility.
2083 Common Var(flag_lto_report) Init(0)
2084 Report various link-time optimization statistics.
2087 Common Var(flag_lto_report_wpa) Init(0)
2088 Report various link-time optimization statistics for WPA only.
2091 Common Var(flag_errno_math) Init(1) Optimization SetByCombined
2092 Set errno after built-in math functions.
2095 Common Joined RejectNegative UInteger Var(flag_max_errors)
2096 -fmax-errors=<number> Maximum number of errors to report.
2099 Common Var(mem_report)
2100 Report on permanent memory allocation.
2103 Common Var(mem_report_wpa)
2104 Report on permanent memory allocation in WPA only.
2106 ; This will attempt to merge constant section constants, if 1 only
2107 ; string constants and constants from constant pool, if 2 also constant
2109 fmerge-all-constants
2110 Common Var(flag_merge_constants,2) Init(1)
2111 Attempt to merge identical constants and constant variables.
2114 Common Var(flag_merge_constants,1)
2115 Attempt to merge identical constants across compilation units.
2117 fmerge-debug-strings
2118 Common Var(flag_merge_debug_strings) Init(1)
2119 Attempt to merge identical debug strings across compilation units.
2122 Common RejectNegative Joined UInteger
2123 -fmessage-length=<number> Limit diagnostics to <number> characters per line. 0 suppresses line-wrapping.
2126 Common Var(flag_modulo_sched) Optimization
2127 Perform SMS based modulo scheduling before the first scheduling pass.
2129 fmodulo-sched-allow-regmoves
2130 Common Var(flag_modulo_sched_allow_regmoves) Optimization
2131 Perform SMS based modulo scheduling with register moves allowed.
2133 fmove-loop-invariants
2134 Common Var(flag_move_loop_invariants) Optimization
2135 Move loop invariant computations out of loops.
2138 Common Var(flag_move_loop_stores) Optimization
2139 Move stores out of loops.
2142 Common Var(flag_dce) Init(1) Optimization
2143 Use the RTL dead code elimination pass.
2146 Common Var(flag_dse) Init(0) Optimization
2147 Use the RTL dead store elimination pass.
2149 freschedule-modulo-scheduled-loops
2150 Common Var(flag_resched_modulo_sched) Optimization
2151 Enable/Disable the traditional scheduling in loops that already passed modulo scheduling.
2153 fnon-call-exceptions
2154 Common Var(flag_non_call_exceptions) Optimization
2155 Support synchronous non-call exceptions.
2158 Driver Joined MissingArgError(targets missing after %qs)
2161 Common Driver Joined MissingArgError(options or targets=options missing after %qs)
2162 -foffload-options=<targets>=<options> Specify options for the offloading targets.
2165 Common Joined RejectNegative Enum(offload_abi)
2166 -foffload-abi=[lp64|ilp32] Set the ABI to use in an offload compiler.
2169 Name(offload_abi) Type(enum offload_abi) UnknownError(unknown offload ABI %qs)
2172 Enum(offload_abi) String(ilp32) Value(OFFLOAD_ABI_ILP32)
2175 Enum(offload_abi) String(lp64) Value(OFFLOAD_ABI_LP64)
2178 Common Var(flag_omit_frame_pointer) Optimization
2179 When possible do not generate stack frames.
2182 Common Var(flag_opt_info) Optimization
2183 Enable all optimization info dumps on stderr.
2186 Common Joined RejectNegative Var(common_deferred_options) Defer
2187 -fopt-info[-<type>=filename] Dump compiler optimization details.
2189 fsave-optimization-record
2190 Common Var(flag_save_optimization_record) Optimization
2191 Write a SRCFILE.opt-record.json file detailing what optimizations were performed.
2193 foptimize-register-move
2195 Does nothing. Preserved for backward compatibility.
2197 foptimize-sibling-calls
2198 Common Var(flag_optimize_sibling_calls) Optimization
2199 Optimize sibling and tail recursive calls.
2202 Common Var(flag_partial_inlining) Optimization
2203 Perform partial inlining.
2206 Common Var(pre_ipa_mem_report)
2207 Report on memory allocation before interprocedural optimization.
2209 fpost-ipa-mem-report
2210 Common Var(post_ipa_mem_report)
2211 Report on memory allocation before interprocedural optimization.
2214 Common Var(flag_pack_struct) Optimization
2215 Pack structure members together without holes.
2218 Common RejectNegative Joined UInteger Optimization
2219 -fpack-struct=<number> Set initial maximum structure member alignment.
2222 Common Var(flag_pcc_struct_return,1) Init(DEFAULT_PCC_STRUCT_RETURN)
2223 Return small aggregates in memory, not registers.
2226 Common Var(flag_peel_loops) Optimization
2227 Perform loop peeling.
2230 Common Var(flag_no_peephole,0) Optimization
2231 Enable machine specific peephole optimizations.
2234 Common Var(flag_peephole2) Optimization
2235 Enable an RTL peephole pass before sched2.
2238 Common Var(flag_pic,2) Negative(fPIE) Init(-1)
2239 Generate position-independent code if possible (large mode).
2242 Common Var(flag_pie,2) Negative(fpic) Init(-1)
2243 Generate position-independent code for executables if possible (large mode).
2246 Common Var(flag_pic,1) Negative(fpie) Init(-1)
2247 Generate position-independent code if possible (small mode).
2250 Common Var(flag_pie,1) Negative(fPIC) Init(-1)
2251 Generate position-independent code for executables if possible (small mode).
2254 Common Var(flag_plt) Init(1) Optimization
2255 Use PLT for PIC calls (-fno-plt: load the address from GOT at call site).
2258 Common Joined RejectNegative Var(common_deferred_options) Defer
2259 Specify a plugin to load.
2262 Common Joined RejectNegative Var(common_deferred_options) Defer
2263 -fplugin-arg-<name>-<key>[=<value>] Specify argument <key>=<value> for plugin <name>.
2265 fpredictive-commoning
2266 Common Var(flag_predictive_commoning) Optimization
2267 Run predictive commoning optimization.
2269 fprefetch-loop-arrays
2270 Common Var(flag_prefetch_loop_arrays) Init(-1) Optimization
2271 Generate prefetch instructions, if available, for arrays in loops.
2274 Common Var(profile_flag)
2275 Enable basic program profiling code.
2278 Common Var(profile_abs_path_flag)
2279 Generate absolute source path names for gcov.
2282 Common Var(profile_arc_flag)
2283 Insert arc-based program profiling code.
2286 Common Joined RejectNegative Var(profile_data_prefix)
2287 Set the top-level directory for storing the profile data.
2288 The default is 'pwd'.
2291 Common Joined RejectNegative Var(profile_note_location)
2292 Select the name for storing the profile note file.
2295 Common Var(flag_profile_correction)
2296 Enable correction of flow inconsistent profile data input.
2299 Common Joined RejectNegative Enum(profile_update) Var(flag_profile_update) Init(PROFILE_UPDATE_SINGLE)
2300 -fprofile-update=[single|atomic|prefer-atomic] Set the profile update method.
2302 fprofile-filter-files=
2303 Common Joined RejectNegative Var(flag_profile_filter_files)
2304 Instrument only functions from files whose name matches any of the regular expressions (separated by semi-colons).
2306 fprofile-exclude-files=
2307 Common Joined RejectNegative Var(flag_profile_exclude_files)
2308 Instrument only functions from files whose name does not match any of the regular expressions (separated by semi-colons).
2311 Name(profile_reproducibility) Type(enum profile_reproducibility) UnknownError(unknown profile reproducibility method %qs)
2314 Enum(profile_reproducibility) String(serial) Value(PROFILE_REPRODUCIBILITY_SERIAL)
2317 Enum(profile_reproducibility) String(parallel-runs) Value(PROFILE_REPRODUCIBILITY_PARALLEL_RUNS)
2320 Enum(profile_reproducibility) String(multithreaded) Value(PROFILE_REPRODUCIBILITY_MULTITHREADED)
2322 fprofile-reproducible=
2323 Common Joined RejectNegative Var(flag_profile_reproducible) Enum(profile_reproducibility) Init(PROFILE_REPRODUCIBILITY_SERIAL)
2324 -fprofile-reproducible=[serial|parallel-runs|multithreaded] Control level of reproducibility of profile gathered by -fprofile-generate.
2327 Name(profile_update) Type(enum profile_update) UnknownError(unknown profile update method %qs)
2330 Enum(profile_update) String(single) Value(PROFILE_UPDATE_SINGLE)
2333 Enum(profile_update) String(atomic) Value(PROFILE_UPDATE_ATOMIC)
2336 Enum(profile_update) String(prefer-atomic) Value(PROFILE_UPDATE_PREFER_ATOMIC)
2338 fprofile-prefix-path=
2339 Common Joined RejectNegative Var(profile_prefix_path)
2340 Remove prefix from absolute path before mangling name for -fprofile-generate= and -fprofile-use=.
2342 fprofile-prefix-map=
2343 Common Joined RejectNegative Var(common_deferred_options) Defer
2344 -fprofile-prefix-map=<old>=<new> Map one directory name to another in GCOV coverage result.
2348 Enable common options for generating profile info for profile feedback directed optimizations.
2351 Common Joined RejectNegative
2352 Enable common options for generating profile info for profile feedback directed optimizations, and set -fprofile-dir=.
2354 fprofile-info-section
2355 Common RejectNegative
2356 Register the profile information in the .gcov_info section instead of using a constructor/destructor.
2358 fprofile-info-section=
2359 Common Joined RejectNegative Var(profile_info_section)
2360 Register the profile information in the specified section instead of using a constructor/destructor.
2362 fprofile-partial-training
2363 Common Var(flag_profile_partial_training) Optimization
2364 Do not assume that functions never executed during the train run are cold.
2367 Common Var(flag_profile_use)
2368 Enable common options for performing profile feedback directed optimizations.
2371 Common Joined RejectNegative
2372 Enable common options for performing profile feedback directed optimizations, and set -fprofile-dir=.
2375 Common Var(flag_profile_values)
2376 Insert code to profile values of expressions.
2379 Common Var(profile_report)
2380 Report on consistency of profile.
2382 fprofile-reorder-functions
2383 Common Var(flag_profile_reorder_functions) Optimization
2384 Enable function reordering that improves code placement.
2386 fpatchable-function-entry=
2387 Common Var(flag_patchable_function_entry) Joined Optimization
2388 Insert NOP instructions at each function entry.
2391 Common Var(common_deferred_options) Defer
2394 Common Joined RejectNegative Var(common_deferred_options) Defer
2395 -frandom-seed=<string> Make compile reproducible using <string>.
2397 ; This switch causes the command line that was used to create an
2398 ; object file to be recorded into the object file. The exact format
2399 ; of this recording is target and binary file format dependent.
2400 ; It is related to the -fverbose-asm switch, but that switch only
2401 ; records information in the assembler output file as comments, so
2402 ; they never reach the object file.
2403 frecord-gcc-switches
2404 Common Var(flag_record_gcc_switches)
2405 Record gcc command line switches in the object file.
2408 Common Var(flag_pcc_struct_return,0) Optimization
2409 Return small aggregates in registers.
2413 Does nothing. Preserved for backward compatibility.
2416 Common Var(flag_lifetime_dse,2) Init(2) Optimization
2417 Tell DSE that the storage for a C++ object is dead when the constructor
2418 starts and when the destructor finishes.
2421 Common Joined RejectNegative UInteger Var(flag_lifetime_dse) Optimization IntegerRange(0, 2)
2424 Common RejectNegative Alias(flive-patching=,inline-clone) Optimization
2427 Common Joined RejectNegative Enum(live_patching_level) Var(flag_live_patching) Init(LIVE_PATCHING_NONE) Optimization
2428 -flive-patching=[inline-only-static|inline-clone] Control IPA
2429 optimizations to provide a safe compilation for live-patching. At the same
2430 time, provides multiple-level control on the enabled IPA optimizations.
2433 Name(live_patching_level) Type(enum live_patching_level) UnknownError(unknown Live-Patching Level %qs)
2436 Enum(live_patching_level) String(inline-only-static) Value(LIVE_PATCHING_INLINE_ONLY_STATIC)
2439 Enum(live_patching_level) String(inline-clone) Value(LIVE_PATCHING_INLINE_CLONE)
2442 Common Var(flag_allocation_dce) Init(1) Optimization
2443 Tell DCE to remove unused C++ allocations.
2445 flive-range-shrinkage
2446 Common Var(flag_live_range_shrinkage) Init(0) Optimization
2447 Relief of register pressure through live range shrinkage.
2450 Common Var(flag_rename_registers) Optimization EnabledBy(funroll-loops)
2451 Perform a register renaming optimization pass.
2454 Common Var(flag_schedule_fusion) Init(2) Optimization
2455 Perform a target dependent instruction fusion optimization pass.
2458 Common Var(flag_reorder_blocks) Optimization
2459 Reorder basic blocks to improve code placement.
2461 freorder-blocks-algorithm=
2462 Common Joined RejectNegative Enum(reorder_blocks_algorithm) Var(flag_reorder_blocks_algorithm) Init(REORDER_BLOCKS_ALGORITHM_SIMPLE) Optimization
2463 -freorder-blocks-algorithm=[simple|stc] Set the used basic block reordering algorithm.
2466 Name(reorder_blocks_algorithm) Type(enum reorder_blocks_algorithm) UnknownError(unknown basic block reordering algorithm %qs)
2469 Enum(reorder_blocks_algorithm) String(simple) Value(REORDER_BLOCKS_ALGORITHM_SIMPLE)
2472 Enum(reorder_blocks_algorithm) String(stc) Value(REORDER_BLOCKS_ALGORITHM_STC)
2474 freorder-blocks-and-partition
2475 Common Var(flag_reorder_blocks_and_partition) Optimization
2476 Reorder basic blocks and partition into hot and cold sections.
2479 Common Var(flag_reorder_functions) Optimization
2480 Reorder functions to improve code placement.
2482 frerun-cse-after-loop
2483 Common Var(flag_rerun_cse_after_loop) Optimization
2484 Add a common subexpression elimination pass after loop optimizations.
2488 Does nothing. Preserved for backward compatibility.
2491 Common Var(flag_rounding_math) Optimization SetByCombined
2492 Disable optimizations that assume default FP rounding behavior.
2495 Common Var(flag_schedule_interblock) Init(1) Optimization
2496 Enable scheduling across basic blocks.
2499 Common Var(flag_sched_pressure) Init(0) Optimization
2500 Enable register pressure sensitive insn scheduling.
2503 Common Var(flag_schedule_speculative) Init(1) Optimization
2504 Allow speculative motion of non-loads.
2507 Common Var(flag_schedule_speculative_load) Optimization
2508 Allow speculative motion of some loads.
2510 fsched-spec-load-dangerous
2511 Common Var(flag_schedule_speculative_load_dangerous) Optimization
2512 Allow speculative motion of more loads.
2515 Common RejectNegative Joined UInteger Var(sched_verbose_param) Init(1)
2516 -fsched-verbose=<number> Set the verbosity level of the scheduler.
2518 fsched2-use-superblocks
2519 Common Var(flag_sched2_use_superblocks) Optimization
2520 If scheduling post reload, do superblock scheduling.
2524 Does nothing. Preserved for backward compatibility.
2527 Common Var(flag_schedule_insns) Optimization
2528 Reschedule instructions before register allocation.
2531 Common Var(flag_schedule_insns_after_reload) Optimization
2532 Reschedule instructions after register allocation.
2534 ; This flag should be on when a target implements non-trivial
2535 ; scheduling hooks, maybe saving some information for its own sake.
2536 ; On IA64, for example, this is used for correct bundling.
2537 fselective-scheduling
2538 Common Var(flag_selective_scheduling) Optimization
2539 Schedule instructions using selective scheduling algorithm.
2541 fselective-scheduling2
2542 Common Var(flag_selective_scheduling2) Optimization
2543 Run selective scheduling after reload.
2546 Common Undocumented Joined Var(flag_self_test)
2547 Run self-tests, using the given path to locate test files.
2549 fsel-sched-pipelining
2550 Common Var(flag_sel_sched_pipelining) Init(0) Optimization
2551 Perform software pipelining of inner loops during selective scheduling.
2553 fsel-sched-pipelining-outer-loops
2554 Common Var(flag_sel_sched_pipelining_outer_loops) Init(0) Optimization
2555 Perform software pipelining of outer loops during selective scheduling.
2557 fsel-sched-reschedule-pipelined
2558 Common Var(flag_sel_sched_reschedule_pipelined) Init(0) Optimization
2559 Reschedule pipelined regions without pipelining.
2561 fsemantic-interposition
2562 Common Var(flag_semantic_interposition) Init(1) Optimization
2563 Allow interposing function (or variables) by ones with different semantics (or initializer) respectively by dynamic linker.
2565 ; sched_stalled_insns means that insns can be moved prematurely from the queue
2566 ; of stalled insns into the ready list.
2567 fsched-stalled-insns
2568 Common Var(flag_sched_stalled_insns) Optimization UInteger
2569 Allow premature scheduling of queued insns.
2571 fsched-stalled-insns=
2572 Common RejectNegative Joined UInteger Optimization
2573 -fsched-stalled-insns=<number> Set number of queued insns that can be prematurely scheduled.
2575 ; sched_stalled_insns_dep controls how many recently scheduled cycles will
2576 ; be examined for a dependency on a stalled insn that is candidate for
2577 ; premature removal from the queue of stalled insns into the ready list (has
2578 ; an effect only if the flag 'sched_stalled_insns' is set).
2579 fsched-stalled-insns-dep
2580 Common Var(flag_sched_stalled_insns_dep,1) Init(1) Optimization UInteger
2581 Set dependence distance checking in premature scheduling of queued insns.
2583 fsched-stalled-insns-dep=
2584 Common RejectNegative Joined UInteger Optimization
2585 -fsched-stalled-insns-dep=<number> Set dependence distance checking in premature scheduling of queued insns.
2587 fsched-group-heuristic
2588 Common Var(flag_sched_group_heuristic) Init(1) Optimization
2589 Enable the group heuristic in the scheduler.
2591 fsched-critical-path-heuristic
2592 Common Var(flag_sched_critical_path_heuristic) Init(1) Optimization
2593 Enable the critical path heuristic in the scheduler.
2595 fsched-spec-insn-heuristic
2596 Common Var(flag_sched_spec_insn_heuristic) Init(1) Optimization
2597 Enable the speculative instruction heuristic in the scheduler.
2599 fsched-rank-heuristic
2600 Common Var(flag_sched_rank_heuristic) Init(1) Optimization
2601 Enable the rank heuristic in the scheduler.
2603 fsched-last-insn-heuristic
2604 Common Var(flag_sched_last_insn_heuristic) Init(1) Optimization
2605 Enable the last instruction heuristic in the scheduler.
2607 fsched-dep-count-heuristic
2608 Common Var(flag_sched_dep_count_heuristic) Init(1) Optimization
2609 Enable the dependent count heuristic in the scheduler.
2612 Common Var(flag_section_anchors) Optimization
2613 Access data in the same section from shared anchor points.
2617 Does nothing. Preserved for backward compatibility.
2621 Does nothing. Preserved for backward compatibility.
2624 Common Var(flag_ree) Init(0) Optimization
2625 Turn on Redundant Extensions Elimination pass.
2628 Common Var(flag_show_column) Init(1)
2629 Show column numbers in diagnostics, when available. Default on.
2632 Common Var(flag_shrink_wrap) Optimization
2633 Emit function prologues only before parts of the function that need it,
2634 rather than at the top of the function.
2636 fshrink-wrap-separate
2637 Common Var(flag_shrink_wrap_separate) Init(1) Optimization
2638 Shrink-wrap parts of the prologue and epilogue separately.
2641 Common Var(flag_signaling_nans) Optimization SetByCombined
2642 Disable optimizations observable by IEEE signaling NaNs.
2645 Common Var(flag_signed_zeros) Init(1) Optimization SetByCombined
2646 Disable floating point optimizations that ignore the IEEE signedness of zero.
2648 fsingle-precision-constant
2649 Common Var(flag_single_precision_constant) Optimization
2650 Convert floating point constants to single precision constants.
2652 fsplit-ivs-in-unroller
2653 Common Var(flag_split_ivs_in_unroller) Init(1) Optimization
2654 Split lifetimes of induction variables when loops are unrolled.
2657 Common Var(flag_split_stack) Init(-1)
2658 Generate discontiguous stack frames.
2661 Common Var(flag_split_wide_types) Optimization
2662 Split wide types into independent registers.
2664 fsplit-wide-types-early
2665 Common Var(flag_split_wide_types_early) Optimization
2666 Split wide types into independent registers earlier.
2669 Common Var(flag_ssa_backprop) Init(1) Optimization
2670 Enable backward propagation of use properties at the SSA level.
2673 Common Var(flag_ssa_phiopt) Optimization
2674 Optimize conditional patterns using SSA PHI nodes.
2677 Common Var(flag_stdarg_opt) Init(1) Optimization
2678 Optimize amount of stdarg registers saved to stack at start of function.
2680 fvariable-expansion-in-unroller
2681 Common Var(flag_variable_expansion_in_unroller) Optimization
2682 Apply variable expansion when loops are unrolled.
2685 Common RejectNegative Joined Optimization
2686 -fstack-check=[no|generic|specific] Insert stack checking code into the program.
2689 Common Alias(fstack-check=, specific, no)
2690 Insert stack checking code into the program. Same as -fstack-check=specific.
2692 fstack-clash-protection
2693 Common Var(flag_stack_clash_protection) Optimization
2694 Insert code to probe each page of stack space as it is allocated to protect
2695 from stack-clash style attacks.
2698 Common Var(common_deferred_options) Defer
2700 fstack-limit-register=
2701 Common RejectNegative Joined Var(common_deferred_options) Defer
2702 -fstack-limit-register=<register> Trap if the stack goes past <register>.
2704 fstack-limit-symbol=
2705 Common RejectNegative Joined Var(common_deferred_options) Defer
2706 -fstack-limit-symbol=<name> Trap if the stack goes past symbol <name>.
2709 Common Var(flag_stack_protect, 1) Init(-1) Optimization
2710 Use propolice as a stack protection method.
2712 fstack-protector-all
2713 Common RejectNegative Var(flag_stack_protect, 2) Init(-1) Optimization
2714 Use a stack protection method for every function.
2716 fstack-protector-strong
2717 Common RejectNegative Var(flag_stack_protect, 3) Init(-1) Optimization
2718 Use a smart stack protection method for certain functions.
2720 fstack-protector-explicit
2721 Common RejectNegative Var(flag_stack_protect, 4) Optimization
2722 Use stack protection method only for functions with the stack_protect attribute.
2725 Common RejectNegative Var(flag_stack_usage)
2726 Output stack usage information on a per-function basis.
2730 Does nothing. Preserved for backward compatibility.
2732 ; Nonzero if we should do (language-dependent) alias analysis.
2733 ; Typically, this analysis will assume that expressions of certain
2734 ; types do not alias expressions of certain other types. Only used
2735 ; if alias analysis (in general) is enabled.
2737 Common Var(flag_strict_aliasing) Optimization
2738 Assume strict aliasing rules apply.
2742 Treat signed overflow as undefined. Negated as -fwrapv -fwrapv-pointer.
2745 Common Var(flag_sync_libcalls) Init(1)
2746 Implement __atomic operations via libcalls to legacy __sync functions.
2749 Common Var(flag_syntax_only)
2750 Check for syntax errors, then stop.
2753 Common Var(flag_test_coverage)
2754 Create data files needed by \"gcov\".
2757 Common Var(flag_thread_jumps) Optimization
2758 Perform jump threading optimizations.
2761 Common Var(time_report)
2762 Report the time taken by each compiler pass.
2764 ftime-report-details
2765 Common Var(time_report_details)
2766 Record times taken by sub-phases separately.
2769 Common Joined RejectNegative Enum(tls_model) Var(flag_tls_default) Init(TLS_MODEL_GLOBAL_DYNAMIC)
2770 -ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec] Set the default thread-local storage code generation model.
2773 Name(tls_model) Type(enum tls_model) UnknownError(unknown TLS model %qs)
2776 Enum(tls_model) String(global-dynamic) Value(TLS_MODEL_GLOBAL_DYNAMIC)
2779 Enum(tls_model) String(local-dynamic) Value(TLS_MODEL_LOCAL_DYNAMIC)
2782 Enum(tls_model) String(initial-exec) Value(TLS_MODEL_INITIAL_EXEC)
2785 Enum(tls_model) String(local-exec) Value(TLS_MODEL_LOCAL_EXEC)
2788 Common Var(flag_toplevel_reorder) Init(2) Optimization
2789 Reorder top level functions, variables, and asms.
2792 Common Var(flag_tracer) Optimization
2793 Perform superblock formation via tail duplication.
2796 Common Var(flag_trampolines) Init(0)
2797 For targets that normally need trampolines for nested functions, always
2798 generate them instead of using descriptors.
2800 ; Zero means that floating-point math operations cannot generate a
2801 ; (user-visible) trap. This is the case, for example, in nonstop
2802 ; IEEE 754 arithmetic.
2804 Common Var(flag_trapping_math) Init(1) Optimization SetByCombined
2805 Assume floating-point operations can trap.
2808 Common Var(flag_trapv) Optimization
2809 Trap for signed overflow in addition, subtraction and multiplication.
2812 Common Var(flag_tree_ccp) Optimization
2813 Enable SSA-CCP optimization on trees.
2816 Common Var(flag_tree_bit_ccp) Optimization
2817 Enable SSA-BIT-CCP optimization on trees.
2821 Does nothing. Preserved for backward compatibility.
2824 Common Var(flag_tree_ch) Optimization
2825 Enable loop header copying on trees.
2827 ftree-coalesce-inlined-vars
2828 Common Ignore RejectNegative
2829 Does nothing. Preserved for backward compatibility.
2832 Common Var(flag_tree_coalesce_vars) Optimization
2833 Enable SSA coalescing of user variables.
2837 Does nothing. Preserved for backward compatibility.
2840 Common Var(flag_tree_copy_prop) Optimization
2841 Enable copy propagation on trees.
2843 ftree-store-copy-prop
2845 Does nothing. Preserved for backward compatibility.
2848 Common Var(flag_tree_cselim) Optimization
2849 Transform condition stores into unconditional ones.
2851 ftree-switch-conversion
2852 Common Var(flag_tree_switch_conversion) Optimization
2853 Perform conversions of switch initializations.
2856 Common Var(flag_tree_dce) Optimization
2857 Enable SSA dead code elimination optimization on trees.
2859 ftree-dominator-opts
2860 Common Var(flag_tree_dom) Optimization
2861 Enable dominator optimizations.
2864 Common Var(flag_tree_tail_merge) Optimization
2865 Enable tail merging on trees.
2868 Common Var(flag_tree_dse) Optimization
2869 Enable dead store elimination.
2872 Common Var(flag_tree_forwprop) Init(1) Optimization
2873 Enable forward propagation on trees.
2876 Common Var(flag_tree_fre) Optimization
2877 Enable Full Redundancy Elimination (FRE) on trees.
2880 Common Var(flag_optimize_strlen) Optimization
2881 Enable string length optimizations on trees.
2883 fisolate-erroneous-paths-dereference
2884 Common Var(flag_isolate_erroneous_paths_dereference) Optimization
2885 Detect paths that trigger erroneous or undefined behavior due to
2886 dereferencing a null pointer. Isolate those paths from the main control
2887 flow and turn the statement with erroneous or undefined behavior into a trap.
2889 fisolate-erroneous-paths-attribute
2890 Common Var(flag_isolate_erroneous_paths_attribute) Optimization
2891 Detect paths that trigger erroneous or undefined behavior due to a null value
2892 being used in a way forbidden by a returns_nonnull or nonnull
2893 attribute. Isolate those paths from the main control flow and turn the
2894 statement with erroneous or undefined behavior into a trap.
2896 ftree-loop-distribution
2897 Common Var(flag_tree_loop_distribution) Optimization
2898 Enable loop distribution on trees.
2900 ftree-loop-distribute-patterns
2901 Common Var(flag_tree_loop_distribute_patterns) Optimization
2902 Enable loop distribution for patterns transformed into a library call.
2905 Common Var(flag_tree_loop_im) Init(1) Optimization
2906 Enable loop invariant motion on trees.
2909 Common Alias(floop-nest-optimize)
2910 Enable loop nest transforms. Same as -floop-nest-optimize.
2913 Common Var(flag_tree_loop_ivcanon) Init(1) Optimization
2914 Create canonical induction variables in loops.
2917 Common Var(flag_tree_loop_optimize) Init(1) Optimization
2918 Enable loop optimizations on tree level.
2920 ftree-parallelize-loops=
2921 Common Joined RejectNegative UInteger Var(flag_tree_parallelize_loops) Init(1) Optimization
2922 -ftree-parallelize-loops=<number> Enable automatic parallelization of loops.
2925 Common Var(flag_tree_phiprop) Init(1) Optimization
2926 Enable hoisting loads from conditional pointers.
2929 Common Var(flag_tree_pre) Optimization
2930 Enable SSA-PRE optimization on trees.
2933 Common Var(flag_tree_partial_pre) Optimization
2934 In SSA-PRE optimization on trees, enable partial-partial redundancy elimination.
2937 Common Var(flag_tree_pta) Optimization
2938 Perform function-local points-to analysis on trees.
2941 Common Var(flag_tree_reassoc) Init(1) Optimization
2942 Enable reassociation on tree level.
2946 Does nothing. Preserved for backward compatibility.
2949 Common Var(flag_tree_sink) Optimization
2950 Enable SSA code sinking on trees.
2953 Common Var(flag_tree_slsr) Optimization
2954 Perform straight-line strength reduction.
2957 Common Var(flag_tree_sra) Optimization
2958 Perform scalar replacement of aggregates.
2961 Common Var(flag_tree_ter) Optimization
2962 Replace temporary expressions in the SSA->normal pass.
2965 Common Var(flag_tree_live_range_split) Optimization
2966 Perform live range splitting during the SSA->normal pass.
2969 Common Var(flag_tree_vrp) Init(0) Optimization
2970 Perform Value Range Propagation on trees.
2973 Common Var(flag_split_paths) Init(0) Optimization
2974 Split paths leading to loop backedges.
2976 funconstrained-commons
2977 Common Var(flag_unconstrained_commons) Optimization
2978 Assume common declarations may be overridden with ones with a larger
2982 Common Var(flag_unit_at_a_time) Init(1)
2983 Compile whole compilation unit at a time.
2986 Common Var(flag_unroll_loops) Optimization EnabledBy(funroll-all-loops)
2987 Perform loop unrolling when iteration count is known.
2990 Common Var(flag_unroll_all_loops) Optimization
2991 Perform loop unrolling for all loops.
2993 funroll-completely-grow-size
2994 Undocumented Var(flag_cunroll_grow_size) Optimization
2995 ; Internal undocumented flag, allow size growth during complete unrolling
2997 ; Nonzero means that loop optimizer may assume that the induction variables
2998 ; that control loops do not overflow and that the loops with nontrivial
2999 ; exit condition are not infinite
3000 funsafe-loop-optimizations
3002 Does nothing. Preserved for backward compatibility.
3005 Common Var(flag_associative_math) SetByCombined Optimization
3006 Allow optimization for floating-point arithmetic which may change the
3007 result of the operation due to rounding.
3010 Common Var(flag_reciprocal_math) SetByCombined Optimization
3011 Same as -fassociative-math for expressions which include division.
3013 ; Nonzero means that unsafe floating-point math optimizations are allowed
3014 ; for the sake of speed. IEEE compliance is not guaranteed, and operations
3015 ; are allowed to assume that their arguments and results are "normal"
3016 ; (e.g., nonnegative for SQRT).
3017 funsafe-math-optimizations
3018 Common Var(flag_unsafe_math_optimizations) Optimization SetByCombined
3019 Allow math optimizations that may violate IEEE or ISO standards.
3022 Common Var(flag_unswitch_loops) Optimization
3023 Perform loop unswitching.
3026 Common Var(flag_split_loops) Optimization
3027 Perform loop splitting.
3029 fversion-loops-for-strides
3030 Common Var(flag_version_loops_for_strides) Optimization
3031 Version loops based on whether indices have a stride of one.
3034 Common Var(flag_unwind_tables) Optimization
3035 Just generate unwind tables for exception handling.
3038 Common Driver Negative(fuse-ld=gold)
3039 Use the bfd linker instead of the default linker.
3042 Common Driver Negative(fuse-ld=bfd)
3043 Use the gold linker instead of the default linker.
3046 Common Driver Negative(fuse-ld=lld)
3047 Use the lld LLVM linker instead of the default linker.
3050 Common Driver Negative(fuse-ld=mold)
3051 Use the Modern linker (MOLD) linker instead of the default linker.
3054 Common Undocumented Var(flag_use_linker_plugin)
3056 ; Positive if we should track variables, negative if we should run
3057 ; the var-tracking pass only to discard debug annotations, zero if
3058 ; we're not to run it.
3060 Common Var(flag_var_tracking) PerFunction EnabledBy(fvar-tracking-uninit)
3061 Perform variable tracking.
3063 ; Positive if we should track variables at assignments, negative if
3064 ; we should run the var-tracking pass only to discard debug
3066 fvar-tracking-assignments
3067 Common Var(flag_var_tracking_assignments) PerFunction
3068 Perform variable tracking by annotating assignments.
3070 ; Nonzero if we should toggle flag_var_tracking_assignments after
3071 ; processing options and computing its default. */
3072 fvar-tracking-assignments-toggle
3073 Common Var(flag_var_tracking_assignments_toggle) PerFunction
3074 Toggle -fvar-tracking-assignments.
3076 ; Positive if we should track uninitialized variables, negative if
3077 ; we should run the var-tracking pass only to discard debug
3079 fvar-tracking-uninit
3080 Common Var(flag_var_tracking_uninit) PerFunction
3081 Perform variable tracking and also tag variables that are uninitialized.
3083 ; Alias to enable both -ftree-loop-vectorize and -ftree-slp-vectorize.
3085 Common Var(flag_tree_vectorize) Optimization
3086 Enable vectorization on trees.
3088 ftree-vectorizer-verbose=
3089 Common Joined RejectNegative Ignore
3090 Does nothing. Preserved for backward compatibility.
3092 ftree-loop-vectorize
3093 Common Var(flag_tree_loop_vectorize) Optimization EnabledBy(ftree-vectorize)
3094 Enable loop vectorization on trees.
3097 Common Var(flag_tree_slp_vectorize) Optimization EnabledBy(ftree-vectorize)
3098 Enable basic block vectorization (SLP) on trees.
3101 Common Joined RejectNegative Enum(vect_cost_model) Var(flag_vect_cost_model) Init(VECT_COST_MODEL_DEFAULT) Optimization
3102 -fvect-cost-model=[unlimited|dynamic|cheap|very-cheap] Specifies the cost model for vectorization.
3105 Common Joined RejectNegative Enum(vect_cost_model) Var(flag_simd_cost_model) Init(VECT_COST_MODEL_UNLIMITED) Optimization
3106 -fsimd-cost-model=[unlimited|dynamic|cheap|very-cheap] Specifies the vectorization cost model for code marked with a simd directive.
3109 Name(vect_cost_model) Type(enum vect_cost_model) UnknownError(unknown vectorizer cost model %qs)
3112 Enum(vect_cost_model) String(unlimited) Value(VECT_COST_MODEL_UNLIMITED)
3115 Enum(vect_cost_model) String(dynamic) Value(VECT_COST_MODEL_DYNAMIC)
3118 Enum(vect_cost_model) String(cheap) Value(VECT_COST_MODEL_CHEAP)
3121 Enum(vect_cost_model) String(very-cheap) Value(VECT_COST_MODEL_VERY_CHEAP)
3124 Common Alias(fvect-cost-model=,dynamic,unlimited)
3125 Enables the dynamic vectorizer cost model. Preserved for backward compatibility.
3127 ftree-vect-loop-version
3129 Does nothing. Preserved for backward compatibility.
3132 Common Var(flag_tree_scev_cprop) Init(1) Optimization
3133 Enable copy propagation of scalar-evolution information.
3135 ftrivial-auto-var-init=
3136 Common Joined RejectNegative Enum(auto_init_type) Var(flag_auto_var_init) Init(AUTO_INIT_UNINITIALIZED) Optimization
3137 -ftrivial-auto-var-init=[uninitialized|pattern|zero] Add initializations to automatic variables.
3140 Name(auto_init_type) Type(enum auto_init_type) UnknownError(unrecognized automatic variable initialization type %qs)
3143 Enum(auto_init_type) String(uninitialized) Value(AUTO_INIT_UNINITIALIZED)
3146 Enum(auto_init_type) String(pattern) Value(AUTO_INIT_PATTERN)
3149 Enum(auto_init_type) String(zero) Value(AUTO_INIT_ZERO)
3151 ; -fverbose-asm causes extra commentary information to be produced in
3152 ; the generated assembly code (to make it more readable). This option
3153 ; is generally only of use to those who actually need to read the
3154 ; generated assembly code (perhaps while debugging the compiler itself).
3155 ; -fno-verbose-asm, the default, causes the extra information
3156 ; to not be added and is useful when comparing two assembler files.
3158 Common Var(flag_verbose_asm)
3159 Add extra commentary to assembler output.
3162 Common Joined RejectNegative Enum(symbol_visibility) Var(default_visibility) Init(VISIBILITY_DEFAULT)
3163 -fvisibility=[default|internal|hidden|protected] Set the default symbol visibility.
3166 Name(symbol_visibility) Type(enum symbol_visibility) UnknownError(unrecognized visibility value %qs)
3169 Enum(symbol_visibility) String(default) Value(VISIBILITY_DEFAULT)
3172 Enum(symbol_visibility) String(internal) Value(VISIBILITY_INTERNAL)
3175 Enum(symbol_visibility) String(hidden) Value(VISIBILITY_HIDDEN)
3178 Enum(symbol_visibility) String(protected) Value(VISIBILITY_PROTECTED)
3181 Common Joined RejectNegative Enum(vtv_priority) Var(flag_vtable_verify) Init(VTV_NO_PRIORITY)
3182 Validate vtable pointers before using them.
3185 Name(vtv_priority) Type(enum vtv_priority) UnknownError(unknown vtable verify initialization priority %qs)
3188 Enum(vtv_priority) String(none) Value(VTV_NO_PRIORITY)
3191 Enum(vtv_priority) String(std) Value(VTV_STANDARD_PRIORITY)
3194 Enum(vtv_priority) String(preinit) Value(VTV_PREINIT_PRIORITY)
3197 Common Var(flag_vtv_counts)
3198 Output vtable verification counters.
3201 Common Var(flag_vtv_debug)
3202 Output vtable verification pointer sets information.
3205 Common Var(flag_value_profile_transformations) Optimization
3206 Use expression value profiles in optimizations.
3209 Common Var(flag_web) Optimization EnabledBy(funroll-loops)
3210 Construct webs and split unrelated uses of single variable.
3212 ftree-builtin-call-dce
3213 Common Var(flag_tree_builtin_call_dce) Init(0) Optimization
3214 Enable conditional dead code elimination for builtin calls.
3217 Common Var(flag_whole_program) Init(0)
3218 Perform whole program optimizations.
3221 Common Var(flag_wrapv_pointer) Optimization
3222 Assume pointer overflow wraps around.
3225 Common Var(flag_wrapv) Optimization
3226 Assume signed arithmetic overflow wraps around.
3228 fzero-initialized-in-bss
3229 Common Var(flag_zero_initialized_in_bss) Init(1)
3230 Put zero initialized data in the bss section.
3232 fzero-call-used-regs=
3233 Common RejectNegative Joined
3234 Clear call-used registers upon function return.
3237 Common Driver RejectNegative JoinedOrMissing
3238 Generate debug information in default format.
3241 Common Driver Var(dwarf2out_as_loc_support)
3242 Assume assembler support for (DWARF2+) .loc directives.
3245 Common Driver Var(dwarf2out_as_locview_support)
3246 Assume assembler support for view in (DWARF2+) .loc directives.
3249 Common Driver WarnRemoved
3250 Does nothing. Preserved for backward compatibility.
3253 Common Driver WarnRemoved
3254 Does nothing. Preserved for backward compatibility.
3257 Common Driver WarnRemoved
3258 Does nothing. Preserved for backward compatibility.
3261 Common Driver WarnRemoved
3262 Does nothing. Preserved for backward compatibility.
3265 Common Driver Var(debug_column_info,1) Init(1)
3266 Record DW_AT_decl_column and DW_AT_call_column in DWARF.
3268 ; The CTF generation process feeds off DWARF dies. This option implicitly
3269 ; updates the debug_info_level to DINFO_LEVEL_NORMAL.
3271 Common Driver RejectNegative JoinedOrMissing
3272 Generate CTF debug information at default level.
3275 Common Driver RejectNegative JoinedOrMissing
3276 Generate BTF debug information at default level.
3279 Common Driver JoinedOrMissing Negative(gdwarf-)
3280 Generate debug information in default version of DWARF format.
3283 Common Driver Joined UInteger Var(dwarf_version) Init(5) Negative(gstabs)
3284 Generate debug information in DWARF v2 (or later) format.
3287 Common Driver Var(dwarf_offset_size,4) Init(4) RejectNegative
3288 Use 32-bit DWARF format when emitting DWARF debug information.
3291 Common Driver Var(dwarf_offset_size,8) RejectNegative
3292 Use 64-bit DWARF format when emitting DWARF debug information.
3295 Common Driver JoinedOrMissing
3296 Generate debug information in default extended format.
3299 Common Driver Var(debug_inline_points)
3300 Generate extended entry point information for inlined functions.
3302 ginternal-reset-location-views
3303 Common Driver Var(debug_internal_reset_location_views) Init(2)
3304 Compute locview reset points based on insn length estimates.
3307 RejectNegative Joined Undocumented
3308 ; Catch the gno- prefix, so it doesn't backtrack to g<level>.
3311 Common Driver Negative(gpubnames) Var(debug_generate_pub_sections, 0) Init(-1)
3312 Don't generate DWARF pubnames and pubtypes sections.
3315 Common Driver Negative(ggnu-pubnames) Var(debug_generate_pub_sections, 1)
3316 Generate DWARF pubnames and pubtypes sections.
3319 Common Driver Negative(gno-pubnames) Var(debug_generate_pub_sections, 2)
3320 Generate DWARF pubnames and pubtypes sections with GNU extensions.
3322 grecord-gcc-switches
3323 Common Driver Var(dwarf_record_gcc_switches) Init(1)
3324 Record gcc command line switches in DWARF DW_AT_producer.
3327 Common Driver Var(dwarf_split_debug_info) Init(0)
3328 Generate debug information in separate .dwo files.
3331 Common Driver JoinedOrMissing Negative(gstabs+)
3332 Generate debug information in STABS format.
3335 Common Driver JoinedOrMissing Negative(gvms)
3336 Generate debug information in extended STABS format.
3338 gstatement-frontiers
3339 Common Driver Var(debug_nonbind_markers_p) PerFunction
3340 Emit progressive recommended breakpoint locations.
3343 Common Driver Var(dwarf_strict) Init(0)
3344 Don't emit DWARF additions beyond selected version.
3347 Common Driver Var(flag_describe_dies) Init(0)
3348 Add description attributes to some DWARF DIEs that have no name attribute.
3351 Common Driver Var(flag_gtoggle)
3352 Toggle debug information generation.
3354 gvariable-location-views
3355 Common Driver Var(debug_variable_location_views, 1)
3356 Augment variable location lists with progressive views.
3358 gvariable-location-views=incompat5
3359 Common Driver RejectNegative Var(debug_variable_location_views, -1) Init(2)
3362 Common Driver JoinedOrMissing Negative(gxcoff)
3363 Generate debug information in VMS format.
3366 Common Driver JoinedOrMissing Negative(gxcoff+)
3367 Generate debug information in XCOFF format.
3370 Common Driver JoinedOrMissing Negative(gdwarf)
3371 Generate debug information in extended XCOFF format.
3374 Name(compressed_debug_sections) Type(int)
3376 ; Since -gz= is completely handled in specs, the values aren't used and we
3377 ; assign arbitrary constants.
3379 Enum(compressed_debug_sections) String(none) Value(0)
3382 Enum(compressed_debug_sections) String(zlib) Value(1)
3385 Enum(compressed_debug_sections) String(zlib-gnu) Value(2)
3389 Generate compressed debug sections.
3392 Common Driver RejectNegative Joined Enum(compressed_debug_sections)
3393 -gz=<format> Generate compressed debug sections in format <format>.
3396 Driver Joined Separate
3399 Common Joined Var(plugindir_string) Init(0)
3400 -iplugindir=<dir> Set <dir> to be the default plugin directory.
3403 Common Joined Separate RejectDriver Var(imultiarch) Init(0)
3404 -imultiarch <dir> Set <dir> to be the multiarch include subdirectory.
3407 Driver Joined Separate
3412 no-canonical-prefixes
3428 Common Driver Joined Separate Var(asm_file_name) MissingArgError(missing filename after %qs)
3429 -o <file> Place output into <file>.
3432 Common Var(profile_flag)
3433 Enable function profiling.
3436 Driver Var(pass_exit_codes)
3439 Common Alias(Wpedantic)
3442 Common Var(flag_pedantic_errors)
3443 Like -pedantic but issue them as errors.
3449 Driver Var(use_pipes)
3452 Driver JoinedOrMissing Var(print_file_name)
3454 print-libgcc-file-name
3457 print-multi-directory
3458 Driver Var(print_multi_directory)
3461 Driver Var(print_multi_lib)
3463 print-multi-os-directory
3464 Driver Var(print_multi_os_directory)
3467 Driver Var(print_multiarch)
3470 Driver JoinedOrMissing Var(print_prog_name)
3473 Driver Var(print_search_dirs)
3476 Driver Var(print_sysroot)
3478 print-sysroot-headers-suffix
3479 Driver Var(print_sysroot_headers_suffix)
3482 Common Var(quiet_flag) RejectDriver
3483 Do not display functions compiled or elapsed time.
3501 Driver Var(report_times)
3504 Driver JoinedOrMissing
3507 Driver Joined Separate
3511 ; C option, but driver must not handle as "-u ndef".
3514 Common Driver Var(verbose_flag)
3515 Enable verbose output.
3518 Common Var(version_flag) RejectDriver
3519 Display the compiler's version.
3522 Common Var(inhibit_warnings)
3526 Driver Separate Var(wrapper_string)
3529 Driver Joined Separate
3532 Driver RejectNegative Negative(static-pie)
3533 Create a shared library.
3539 Driver Separate Alias(specs=)
3552 ; Documented for Fortran, but always accepted by driver.
3556 ; Documented for D, but always accepted by driver.
3563 ; Documented for Go, but always accepted by driver.
3584 Driver RejectNegative Negative(shared)
3585 Don't create a dynamically linked position independent executable.
3588 Driver RejectNegative Negative(no-pie)
3589 Create a dynamically linked position independent executable.
3592 Driver RejectNegative Negative(pie)
3593 Create a static position independent executable.
3596 Driver Joined Separate
3599 Common Var(flag_ipa_ra) Optimization
3600 Use caller save register across calls if possible.
3602 ; This comment is to ensure we retain the blank line above.