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 two are really VEC(char_p,heap) *.
89 void *flag_instrument_functions_exclude_functions
92 void *flag_instrument_functions_exclude_files
94 ; Generic structs (e.g. templates not explicitly specialized)
95 ; may not have a compilation unit associated with them, and so
96 ; may need to be treated differently from ordinary structs.
98 ; Structs only handled by reference (indirectly), will also usually
99 ; not need as much debugging information.
102 enum debug_struct_file debug_struct_ordinary[DINFO_USAGE_NUM_ENUMS] = { DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY }
105 enum debug_struct_file debug_struct_generic[DINFO_USAGE_NUM_ENUMS] = { DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY }
107 ; True if we should exit after parsing options.
109 bool exit_after_options
111 ; Type(s) of debugging information we are producing (if any). See
112 ; flag-types.h for the definitions of the different possible types of
113 ; debugging information.
115 uint32_t write_symbols = NO_DEBUG
117 ; Level of debugging information we are producing. See flag-types.h
118 ; for the definitions of the different possible levels.
120 enum debug_info_levels debug_info_level = DINFO_LEVEL_NONE
122 ; Nonzero means use GNU-only extensions in the generated symbolic
123 ; debugging information. Currently, this only has an effect when
124 ; write_symbols is set to DBX_DEBUG or XCOFF_DEBUG.
126 bool use_gnu_debug_info_extensions
128 ; Level of CTF debugging information we are producing. See flag-types.h
129 ; for the definitions of the different possible levels.
131 enum ctf_debug_info_levels ctf_debug_info_level = CTFINFO_LEVEL_NONE
133 ; Original value of maximum field alignment in bytes, specified via
134 ; -fpack-struct=<value>.
136 unsigned int initial_max_fld_align = TARGET_DEFAULT_PACK_STRUCT
138 ; Type of stack check.
140 enum stack_check_type flag_stack_check = NO_STACK_CHECK
142 ; True if stack usage information needs to be computed.
144 bool flag_stack_usage_info = false
146 ; -dA causes debug commentary information to be produced in
147 ; the generated assembly code (to make it more readable). This option
148 ; is generally only of use to those who actually need to read the
149 ; generated assembly code (perhaps while debugging the compiler itself).
150 ; Currently, this switch is only used by dwarf2out.c; however, it is intended
151 ; to be a catchall for printing debug information in the assembler file.
155 ; Balance between GNAT encodings and standard DWARF to emit.
157 enum dwarf_gnat_encodings gnat_encodings = DWARF_GNAT_ENCODINGS_DEFAULT
159 ; -dP causes the rtl to be emitted as a comment in assembly.
161 int flag_dump_rtl_in_asm
163 ; Whether -da was passed (used only in handle_common_deferred_options).
165 bool flag_dump_all_passed
167 ; Other flags saying which kinds of debugging dump have been requested.
170 int rtl_dump_and_exit
173 int flag_print_asm_name
175 ; Name of top-level original source file (what was input to cpp).
176 ; This comes from the #-command at the beginning of the actual input.
177 ; If there isn't any there, then this is the cc1 input file name.
179 const char *main_input_filename
181 ; Pointer to base name in main_input_filename, with directories and a
182 ; single final extension removed, and the length of this base
186 const char *main_input_basename
189 int main_input_baselength
191 ; The base name used for auxiliary output files.
192 ; dump_base_name minus dump_base_ext.
195 const char *aux_base_name
197 ; Which options have been printed by --help.
201 ; Which enums have been printed by --help. 0 = not printed, no
202 ; relevant options seen, 1 = relevant option seen, not yet printed, 2
205 char *help_enum_printed
207 ; The number of columns for --help output.
209 unsigned int help_columns
211 ; Whether this options structure has been through finish_options
213 bool flag_opts_finished
215 ; What the sanitizer should instrument
217 unsigned int flag_sanitize
219 ; What sanitizers should recover from errors
221 unsigned int flag_sanitize_recover = (SANITIZE_UNDEFINED | SANITIZE_UNDEFINED_NONDEFAULT | SANITIZE_KERNEL_ADDRESS | SANITIZE_KERNEL_HWADDRESS) & ~(SANITIZE_UNREACHABLE | SANITIZE_RETURN)
223 ; What the coverage sanitizers should instrument
225 unsigned int flag_sanitize_coverage
227 ; Flag whether a prefix has been added to dump_base_name
229 bool dump_base_name_prefixed = false
231 ; What subset of registers should be zeroed on function return
233 unsigned int flag_zero_call_used_regs
245 Common Driver Joined Undocumented
246 Provide bash completion for options starting with provided string.
249 Driver Alias(coverage)
255 Common Separate Alias(d)
258 Common Joined Alias(d)
261 Driver Common Separate Alias(dumpbase)
264 Driver Common Separate Alias(dumpbase-ext)
267 Driver Common Separate Alias(dumpdir)
270 Driver Separate Alias(e)
273 Driver Joined Alias(e)
276 Common Warning Alias(Wextra)
279 Driver Separate Alias(Xassembler)
282 Driver JoinedOrMissing Alias(Xassembler)
285 Driver Separate Alias(Xlinker)
288 Driver JoinedOrMissing Alias(Xlinker)
291 Driver Separate Alias(u)
294 Driver Joined Alias(u)
297 Common Driver Var(help_flag)
298 Display this information.
302 --help=<class> Display descriptions of a specific class of options. <class> is one or more of optimizers, target, warnings, undocumented, params.
305 Driver Separate Alias(x)
308 Driver Joined Alias(x)
311 Driver Separate Alias(L)
314 Driver Joined Alias(L)
316 -no-canonical-prefixes
317 Driver Alias(no-canonical-prefixes)
319 -no-standard-libraries
320 Driver Alias(nostdlib)
323 Driver Var(no_sysroot_suffix)
332 Common Driver Separate Alias(o) MissingArgError(missing filename after %qs)
335 Common Driver Joined Alias(o) MissingArgError(missing filename after %qs)
338 Driver Alias(pass-exit-codes)
341 Common Alias(Wpedantic)
344 Common Alias(pedantic-errors)
350 Driver Alias(static-pie)
356 Driver Separate Alias(B)
359 Driver JoinedOrMissing Alias(B)
365 Driver Separate Alias(print-file-name=)
368 Driver JoinedOrMissing Alias(print-file-name=)
370 -print-libgcc-file-name
371 Driver Alias(print-libgcc-file-name)
373 -print-multi-directory
374 Driver Alias(print-multi-directory)
377 Driver Alias(print-multi-lib)
379 -print-multi-os-directory
380 Driver Alias(print-multi-os-directory)
383 Driver Alias(print-multiarch)
386 Driver Separate Alias(print-prog-name=)
389 Driver JoinedOrMissing Alias(print-prog-name=)
392 Driver Alias(print-search-dirs)
395 Driver Alias(print-sysroot)
397 -print-sysroot-headers-suffix
398 Driver Alias(print-sysroot-headers-suffix)
404 Driver Alias(save-temps)
410 Driver Separate Alias(specs=)
413 Driver Joined Alias(specs=)
419 Driver Alias(symbolic)
423 Alias for --help=target.
431 ;; The driver used to convert options such as --help into forms such
432 ;; as -fhelp; the following four entries are for compatibility with
433 ;; any direct uses of those (undocumented) -f forms
435 Common Driver Alias(-help)
438 Common Driver Joined Alias(-help=)
441 Common Driver Alias(-target-help)
444 Common Driver Alias(-version)
447 Driver Separate Alias(-sysroot=)
450 Driver JoinedOrMissing
456 Driver Joined Separate
462 Driver Joined Separate
468 Common JoinedOrMissing Optimization
469 -O<number> Set optimization level to <number>.
473 Optimize for space rather than speed.
477 Optimize for speed disregarding exact standards compliance.
481 Optimize for debugging experience rather than speed or size.
493 Driver Joined Separate
499 Driver Joined Separate
520 Common RejectNegative Warning Alias(Wextra)
521 This switch is deprecated; use -Wextra instead.
524 Driver JoinedOrMissing RejectNegative
527 Driver JoinedOrMissing RejectNegative
530 Driver JoinedOrMissing RejectNegative
533 Common Var(warn_aggregate_return) Warning
534 Warn about returning structures, unions or arrays.
536 Waggressive-loop-optimizations
537 Common Var(warn_aggressive_loop_optimizations) Init(1) Warning
538 Warn if a loop with constant number of iterations triggers undefined behavior.
541 Common Var(warn_array_bounds) Warning
542 Warn if an array is accessed out of bounds.
545 Common Joined RejectNegative UInteger Var(warn_array_bounds) Warning IntegerRange(0, 2)
546 Warn if an array is accessed out of bounds.
549 Common Var(warn_attributes) Init(1) Warning
550 Warn about inappropriate attribute usage.
553 Common Alias(Wattribute_alias=, 1, 0) Warning
554 Warn about type safety and similar errors and mismatches in declarations with alias attributes.
557 Common Joined RejectNegative UInteger Var(warn_attribute_alias) Init(1) Warning IntegerRange(0, 2)
558 Warn about type safety and similar errors and mismatches in declarations with alias attributes.
561 Common Var(warn_cannot_profile) Init(1) Warning
562 Warn when profiling instrumentation was requested, but could not be applied to
566 Common Var(warn_cast_align) Warning
567 Warn about pointer casts which increase alignment.
570 Common Var(warn_cast_align,2) Warning
571 Warn about pointer casts which increase alignment.
574 Common Var(warn_cpp) Init(1) Warning
575 Warn when a #warning directive is encountered.
578 Common Var(warn_attribute_warning) Init(1) Warning
579 Warn about uses of __attribute__((warning)) declarations.
582 Common Var(warn_deprecated) Init(1) Warning
583 Warn if a deprecated compiler feature, class, method, or field is used.
585 Wdeprecated-declarations
586 Common Var(warn_deprecated_decl) Init(1) Warning
587 Warn about uses of __attribute__((deprecated)) declarations.
589 Wdisabled-optimization
590 Common Var(warn_disabled_optimization) Warning
591 Warn when an optimization pass is disabled.
594 Common Var(warnings_are_errors)
595 Treat all warnings as errors.
599 Treat specified warning as error.
602 Common Var(extra_warnings) Warning
603 Print extra (possibly unwanted) warnings.
606 Common Var(flag_fatal_errors)
607 Exit on the first error occurred.
610 Common RejectNegative Joined Host_Wide_Int ByteSize Warning Var(warn_frame_larger_than_size) Init(HOST_WIDE_INT_MAX)
611 -Wframe-larger-than=<byte-size> Warn if a function's stack frame requires in excess of <byte-size>.
613 Wno-frame-larger-than
614 Common Alias(Wframe-larger-than=,18446744073709551615EiB,none) Warning
615 Disable -Wframe-larger-than= warning. Equivalent to -Wframe-larger-than=<SIZE_MAX> or larger.
618 Common Var(warn_free_nonheap_object) Init(1) Warning
619 Warn when attempting to free a non-heap object.
622 Common Ignore Warning
623 Does nothing. Preserved for backward compatibility.
625 Wimplicit-fallthrough
626 Common Alias(Wimplicit-fallthrough=,3,0) Warning
628 Wimplicit-fallthrough=
629 Common Var(warn_implicit_fallthrough) RejectNegative Joined UInteger Warning IntegerRange(0, 5)
630 Warn when a switch case falls through.
633 Common Var(warn_inline) Warning Optimization
634 Warn when an inlined function cannot be inlined.
636 Winvalid-memory-model
637 Common Var(warn_invalid_memory_model) Init(1) Warning
638 Warn when an atomic memory model parameter is known to be outside the valid range.
641 Common RejectNegative Joined Warning Undocumented Alias(Wlarger-than=)
644 Common RejectNegative Joined Host_Wide_Int ByteSize Warning Var(warn_larger_than_size) Init(HOST_WIDE_INT_MAX)
645 -Wlarger-than=<byte-size> Warn if an object's size exceeds <byte-size>.
648 Common Alias(Wlarger-than=,18446744073709551615EiB,none) Warning
649 Disable -Wlarger-than= warning. Equivalent to -Wlarger-than=<SIZE_MAX> or larger.
652 Var(warn_nonnull_compare) Warning
653 Warn if comparing pointer parameter with nonnull attribute with NULL.
656 Common Var(warn_null_dereference) Warning
657 Warn if dereferencing a NULL pointer may lead to erroneous or undefined behavior.
659 Wunsafe-loop-optimizations
660 Common Ignore Warning
661 Does nothing. Preserved for backward compatibility.
664 Common Warning Alias(Wsuggest-attribute=noreturn)
667 Common Var(warn_odr_violations) Init(1) Warning
668 Warn about some C++ One Definition Rule violations during link time optimization.
671 Common Var(warn_overflow) Init(1) Warning
672 Warn about overflow in arithmetic expressions.
675 Common Var(warn_lto_type_mismatch) Init(1) Warning
676 During link time optimization warn about mismatched types of global declarations.
679 Common Var(warn_packed) Warning
680 Warn when the packed attribute has no effect on struct layout.
683 Common Var(warn_padded) Warning
684 Warn when padding is required to align structure members.
687 Common Var(pedantic) Init(0) Warning
688 Issue warnings needed for strict compliance to the standard.
691 Common Var(warn_return_local_addr) Init(1) Warning
692 Warn about returning a pointer/reference to a local or temporary variable.
695 Common Var(warn_shadow) Warning
696 Warn when one variable shadows another. Same as -Wshadow=global.
699 Common Warning Alias(Wshadow)
700 Warn when one variable shadows another (globally).
703 Common Var(warn_shadow_local) Warning EnabledBy(Wshadow)
704 Warn when one local variable shadows another local variable or parameter.
707 Common Warning Undocumented Alias(Wshadow=local)
709 Wshadow=compatible-local
710 Common Var(warn_shadow_compatible_local) Warning EnabledBy(Wshadow=local)
711 Warn when one local variable shadows another local variable or parameter of compatible type.
713 Wshadow-compatible-local
714 Common Warning Undocumented Alias(Wshadow=compatible-local)
717 Common Var(warn_stack_protect) Warning
718 Warn when not issuing stack smashing protection for some reason.
721 Common Joined RejectNegative Host_Wide_Int ByteSize Var(warn_stack_usage) Warning Init(HOST_WIDE_INT_MAX)
722 -Wstack-usage=<byte-size> Warn if stack usage might exceed <byte-size>.
725 Common Alias(Wstack-usage=,18446744073709551615EiB,none) Warning
726 Disable Wstack-usage= warning. Equivalent to Wstack-usage=<SIZE_MAX> or larger.
730 Warn about code which might break strict aliasing rules.
733 Common Joined RejectNegative UInteger Var(warn_strict_aliasing) Warning
734 Warn about code which might break strict aliasing rules.
738 Warn about optimizations that assume that signed overflow is undefined.
741 Common Joined RejectNegative UInteger Var(warn_strict_overflow) Warning
742 Warn about optimizations that assume that signed overflow is undefined.
744 Wsuggest-attribute=cold
745 Common Var(warn_suggest_attribute_cold) Warning
746 Warn about functions which might be candidates for __attribute__((cold)).
748 Wsuggest-attribute=const
749 Common Var(warn_suggest_attribute_const) Warning
750 Warn about functions which might be candidates for __attribute__((const)).
752 Wsuggest-attribute=pure
753 Common Var(warn_suggest_attribute_pure) Warning
754 Warn about functions which might be candidates for __attribute__((pure)).
756 Wsuggest-attribute=noreturn
757 Common Var(warn_suggest_attribute_noreturn) Warning
758 Warn about functions which might be candidates for __attribute__((noreturn)).
760 Wsuggest-attribute=malloc
761 Common Var(warn_suggest_attribute_malloc) Warning
762 Warn about functions which might be candidates for __attribute__((malloc)).
765 Common Var(warn_suggest_final_types) Warning
766 Warn about C++ polymorphic types where adding final keyword would improve code quality.
768 Wsuggest-final-methods
769 Common Var(warn_suggest_final_methods) Warning
770 Warn about C++ virtual methods where adding final keyword would improve code quality.
773 Common Var(warn_switch_unreachable) Warning Init(1)
774 Warn about statements between switch's controlling expression and the first
778 Common Var(warn_system_headers) Warning
779 Do not suppress warnings from system headers.
782 Common Var(warn_trampolines) Warning
783 Warn whenever a trampoline is generated.
786 Common Var(warn_type_limits) Warning EnabledBy(Wextra)
787 Warn if a comparison is always true or always false due to the limited range of the data type.
790 Common Var(warn_uninitialized) Warning EnabledBy(Wextra)
791 Warn about uninitialized automatic variables.
794 Common Var(warn_maybe_uninitialized) Warning EnabledBy(Wuninitialized)
795 Warn about maybe uninitialized automatic variables.
798 Common Ignore Warning
799 Does nothing. Preserved for backward compatibility.
802 Common Var(warn_unused) Init(0) Warning
803 Enable all -Wunused- warnings.
805 Wunused-but-set-parameter
806 Common Var(warn_unused_but_set_parameter) Warning EnabledBy(Wunused && Wextra)
807 Warn when a function parameter is only set, otherwise unused.
809 Wunused-but-set-variable
810 Common Var(warn_unused_but_set_variable) Warning EnabledBy(Wunused)
811 Warn when a variable is only set, otherwise unused.
814 Common Var(warn_unused_function) Warning EnabledBy(Wunused)
815 Warn when a function is unused.
818 Common Var(warn_unused_label) Warning EnabledBy(Wunused)
819 Warn when a label is unused.
822 Common Var(warn_unused_parameter) Warning EnabledBy(Wunused && Wextra)
823 Warn when a function parameter is unused.
826 Common Var(warn_unused_value) Warning EnabledBy(Wunused)
827 Warn when an expression value is unused.
830 Common Var(warn_unused_variable) Warning EnabledBy(Wunused)
831 Warn when a variable is unused.
834 Common Var(warn_coverage_mismatch) Init(1) Warning
835 Warn in case profiles in -fprofile-use do not match.
837 Wcoverage-invalid-line-number
838 Common Var(warn_coverage_invalid_linenum) Init(1) Warning
839 Warn in case a function ends earlier than it begins due to an invalid linenum macros.
842 Common Var(warn_missing_profile) Init(1) Warning
843 Warn in case profiles in -fprofile-use do not exist.
845 Wvector-operation-performance
846 Common Var(warn_vector_operation_performance) Warning
847 Warn when a vector operation is compiled outside the SIMD.
850 Common Var(warn_tsan) Init(1) Warning
851 Warn about unsupported features in ThreadSanitizer.
866 Common Separate Var(aux_info_file_name)
867 -aux-info <file> Emit declaration information into <file>.
870 Common Joined Alias(aux-info)
880 -d<letters> Enable dumps from specific passes of the compiler.
883 Driver Common Separate Var(dump_base_name)
884 -dumpbase <file> Set the file basename to be used for dumps.
887 Driver Common Separate Var(dump_base_ext)
888 -dumpbase-ext .<ext> Drop a trailing .<ext> from the dump basename to name auxiliary output files.
891 Driver Common Separate Var(dump_dir_name)
892 -dumpdir <dir> Set the directory name to be used for dumps.
907 Driver Joined Separate
909 ; This option has historically been passed down to the linker by an
910 ; accident of a %{e*} spec, so ensure it continues to be passed down
911 ; as a single option. The supported option for this purpose is
912 ; -rdynamic. See PR 47390.
916 ; The version of the C++ ABI in use. The following values are allowed:
918 ; 0: The version of the ABI believed most conformant with the C++ ABI
919 ; specification. This ABI may change as bugs are discovered and fixed.
920 ; Therefore, 0 will not necessarily indicate the same ABI in different
923 ; 1: The version of the ABI first used in G++ 3.2. No longer selectable.
925 ; 2: The version of the ABI first used in G++ 3.4, and the default
928 ; 3: The version of the ABI that fixes the missing underscore
929 ; in template non-type arguments of pointer type.
931 ; 4: The version of the ABI that introduces unambiguous mangling of
932 ; vector types. First selectable in G++ 4.5.
934 ; 5: The version of the ABI that ignores attribute const/noreturn
935 ; in function pointer mangling, and corrects mangling of decltype and
936 ; function parameters used in other parameters and the return type.
937 ; First selectable in G++ 4.6.
939 ; 6: The version of the ABI that doesn't promote scoped enums to int and
940 ; changes the mangling of template argument packs, const/static_cast,
941 ; prefix ++ and --, and a class scope function used as a template
943 ; First selectable in G++ 4.7.
945 ; 7: The version of the ABI that treats nullptr_t as a builtin type and
946 ; corrects the mangling of lambdas in default argument scope.
947 ; First selectable in G++ 4.8.
949 ; 8: The version of the ABI that corrects the substitution behavior of
950 ; function types with function-cv-qualifiers.
951 ; First selectable in G++ 4.9 and default in G++ 5.
953 ; 9: The version of the ABI that corrects the alignment of nullptr_t.
954 ; First selectable and default in G++ 5.2.
956 ; 10: The version of the ABI that mangles attributes that affect type
957 ; identity, such as ia32 calling convention attributes (stdcall, etc.)
958 ; Default in G++ 6 (set in c_common_post_options).
960 ; 11: The version of the ABI that corrects mangling of sizeof... expressions
961 ; and introduces new inheriting constructor handling.
964 ; 12: Corrects the calling convention for classes with only deleted copy/move
965 ; constructors and changes passing/returning of empty records.
966 ; Default in G++ 8.1.
968 ; 13: Fixes the accidental change in 12 to the calling convention for classes
969 ; with deleted copy constructor and trivial move constructor.
970 ; Default in G++ 8.2.
972 ; 14: Corrects the mangling of nullptr expression.
975 ; 15: Corrects G++ 10 ABI tag regression [PR98481].
976 ; Available, but not default, in G++ 10.3.
978 ; 16: Changes the mangling of __alignof__ to be distinct from that of alignof.
979 ; Adds missing 'on' in mangling of operator names in some cases.
982 ; Additional positive integers will be assigned as new versions of
983 ; the ABI become the default version of the ABI.
985 Common Joined RejectNegative UInteger Var(flag_abi_version) Init(0)
986 The version of the C++ ABI in use.
988 faggressive-loop-optimizations
989 Common Var(flag_aggressive_loop_optimizations) Optimization Init(1)
990 Aggressively optimize loops using language constraints.
993 Common Var(flag_align_functions) Optimization
994 Align the start of functions.
997 Common RejectNegative Joined Var(str_align_functions) Optimization
999 flimit-function-alignment
1000 Common Var(flag_limit_function_alignment) Optimization Init(0)
1003 Common Var(flag_align_jumps) Optimization
1004 Align labels which are only reached by jumping.
1007 Common RejectNegative Joined Var(str_align_jumps) Optimization
1010 Common Var(flag_align_labels) Optimization
1014 Common RejectNegative Joined Var(str_align_labels) Optimization
1017 Common Var(flag_align_loops) Optimization
1018 Align the start of loops.
1021 Common RejectNegative Joined Var(str_align_loops) Optimization
1023 fallow-store-data-races
1024 Common Var(flag_store_data_races) Optimization
1025 Allow the compiler to introduce new data races on stores.
1028 Common Var(flag_analyzer)
1029 Enable static analysis pass.
1033 Does nothing. Preserved for backward compatibility.
1037 Does nothing. Preserved for backward compatibility.
1039 fargument-noalias-global
1041 Does nothing. Preserved for backward compatibility.
1043 fargument-noalias-anything
1045 Does nothing. Preserved for backward compatibility.
1048 Common Driver Joined
1049 Select what to sanitize.
1052 Common Joined RejectNegative Enum(sanitize_coverage)
1053 Select type of coverage sanitization.
1056 Name(sanitize_coverage) Type(int)
1059 Enum(sanitize_coverage) String(trace-pc) Value(SANITIZE_COV_TRACE_PC)
1062 Enum(sanitize_coverage) String(trace-cmp) Value(SANITIZE_COV_TRACE_CMP)
1064 fasan-shadow-offset=
1065 Common Joined RejectNegative Var(common_deferred_options) Defer
1066 -fasan-shadow-offset=<number> Use custom shadow memory offset.
1069 Common Joined RejectNegative Var(common_deferred_options) Defer
1070 -fsanitize-sections=<sec1,sec2,...> Sanitize global variables
1071 in user-defined sections.
1075 After diagnosing undefined behavior attempt to continue execution.
1079 This switch is deprecated; use -fsanitize-recover= instead.
1081 fsanitize-address-use-after-scope
1082 Common Driver Var(flag_sanitize_address_use_after_scope) Init(0)
1084 fsanitize-undefined-trap-on-error
1085 Common Driver Var(flag_sanitize_undefined_trap_on_error) Init(0)
1086 Use trap instead of a library function for undefined behavior sanitization.
1088 fasynchronous-unwind-tables
1089 Common Var(flag_asynchronous_unwind_tables) Optimization
1090 Generate unwind tables that are exact at each instruction boundary.
1093 Common Var(flag_auto_inc_dec) Init(1) Optimization
1094 Generate auto-inc/dec instructions.
1097 Common Var(flag_auto_profile)
1098 Use sample profile information for call graph node weights. The default
1099 profile file is fbdata.afdo in 'pwd'.
1102 Common Joined RejectNegative Var(auto_profile_file)
1103 Use sample profile information for call graph node weights. The profile
1104 file is specified in the argument.
1106 ; -fcheck-bounds causes gcc to generate array bounds checks.
1107 ; For C, C++ and ObjC: defaults off.
1108 ; For Java: defaults to on.
1109 ; For Fortran: defaults to off.
1111 Common Var(flag_bounds_check)
1112 Generate code to check bounds before indexing arrays.
1115 Common Var(flag_branch_on_count_reg) Optimization
1116 Replace add, compare, branch with branch on count register.
1118 fbranch-probabilities
1119 Common Var(flag_branch_probabilities) Optimization
1120 Use profiling information for branch probabilities.
1122 fbranch-target-load-optimize
1124 Does nothing. Preserved for backward compatibility.
1126 fbranch-target-load-optimize2
1128 Does nothing. Preserved for backward compatibility.
1132 Does nothing. Preserved for backward compatibility.
1135 Common RejectNegative Var(flag_callgraph_info) Init(NO_CALLGRAPH_INFO);
1136 Output callgraph information on a per-file basis.
1139 Common RejectNegative Joined
1140 Output callgraph information on a per-file basis with decorations.
1143 Common Joined RejectNegative Var(common_deferred_options) Defer
1144 -fcall-saved-<register> Mark <register> as being preserved across functions.
1147 Common Joined RejectNegative Var(common_deferred_options) Defer
1148 -fcall-used-<register> Mark <register> as being corrupted by function calls.
1150 ; Nonzero for -fcaller-saves: allocate values in regs that need to
1151 ; be saved across function calls, if that produces overall better code.
1152 ; Optional now, so people can test it.
1154 Common Var(flag_caller_saves) Optimization
1155 Save registers around function calls.
1159 This switch is deprecated; do not use.
1162 Common Var(flag_check_new)
1163 Check the return value of new in C++.
1166 Common Var(flag_checking) Init(CHECKING_P ? ENABLE_EXTRA_CHECKING ? 2 : 1 : 0)
1167 Perform internal consistency checkings.
1170 Common Joined RejectNegative UInteger Var(flag_checking)
1171 Perform internal consistency checkings.
1174 Common Var(flag_code_hoisting) Optimization
1175 Enable code hoisting.
1177 fcombine-stack-adjustments
1178 Common Var(flag_combine_stack_adjustments) Optimization
1179 Looks for opportunities to reduce stack adjustments and stack references.
1182 Common Var(flag_no_common,0) Init(1)
1183 Put uninitialized globals in the common section.
1187 ; Converted by the driver to -fcompare-debug= options.
1190 Common Driver JoinedOrMissing RejectNegative Var(flag_compare_debug_opt)
1191 -fcompare-debug[=<opts>] Compile with and without e.g. -gtoggle, and compare the final-insns dump.
1193 fcompare-debug-second
1194 Common Driver RejectNegative Var(flag_compare_debug)
1195 Run only the second compilation of -fcompare-debug.
1198 Common Var(flag_compare_elim_after_reload) Optimization
1199 Perform comparison elimination after register allocation has finished.
1202 Common Var(flag_conserve_stack) Optimization
1203 Do not perform optimizations increasing noticeably stack usage.
1206 Common Var(flag_cprop_registers) Optimization
1207 Perform a register copy-propagation optimization pass.
1210 Common Var(flag_crossjumping) Optimization
1211 Perform cross-jumping optimization.
1214 Common Var(flag_cse_follow_jumps) Optimization
1215 When running CSE, follow jumps to their targets.
1219 Does nothing. Preserved for backward compatibility.
1222 Common Var(flag_cx_limited_range) Optimization SetByCombined
1223 Omit range reduction step when performing complex division.
1226 Common Var(flag_cx_fortran_rules) Optimization
1227 Complex multiplication and division follow Fortran rules.
1230 Common Var(flag_data_sections)
1231 Place data items into their own section.
1234 Common Var(flag_dbg_cnt_list)
1235 List all available debugging counters with their limits and counts.
1238 Common RejectNegative Joined Var(common_deferred_options) Defer
1239 -fdbg-cnt=<counter>[:<lower_limit1>-]<upper_limit1>[:<lower_limit2>-<upper_limit2>:...][,<counter>:...] Set the debug counter limit.
1242 Common Joined RejectNegative Var(common_deferred_options) Defer
1243 -fdebug-prefix-map=<old>=<new> Map one directory name to another in debug information.
1246 Common Joined RejectNegative Var(common_deferred_options) Defer
1247 -ffile-prefix-map=<old>=<new> Map one directory name to another in compilation result.
1249 fdebug-types-section
1250 Common Var(flag_debug_types_section) Init(0)
1251 Output .debug_types section when using DWARF v4 debuginfo.
1253 ; Nonzero for -fdefer-pop: don't pop args after each function call
1254 ; instead save them up to pop many calls' args with one insns.
1256 Common Var(flag_defer_pop) Optimization
1257 Defer popping functions args from stack until later.
1260 Common Var(flag_delayed_branch) Optimization
1261 Attempt to fill delay slots of branch instructions.
1263 fdelete-dead-exceptions
1264 Common Var(flag_delete_dead_exceptions) Init(0) Optimization
1265 Delete dead instructions that may throw exceptions.
1267 fdelete-null-pointer-checks
1268 Common Var(flag_delete_null_pointer_checks) Init(-1) Optimization
1269 Delete useless null pointer checks.
1271 fdevirtualize-at-ltrans
1272 Common Var(flag_ltrans_devirtualize)
1273 Stream extra data to support more aggressive devirtualization in LTO local transformation mode.
1275 fdevirtualize-speculatively
1276 Common Var(flag_devirtualize_speculatively) Optimization
1277 Perform speculative devirtualization.
1280 Common Var(flag_devirtualize) Optimization
1281 Try to convert virtual calls to direct ones.
1283 fdiagnostics-show-location=
1284 Common Joined RejectNegative Enum(diagnostic_prefixing_rule)
1285 -fdiagnostics-show-location=[once|every-line] How often to emit source location at the beginning of line-wrapped diagnostics.
1287 ; Required for these enum values.
1292 Name(diagnostic_prefixing_rule) Type(int)
1295 Enum(diagnostic_prefixing_rule) String(once) Value(DIAGNOSTICS_SHOW_PREFIX_ONCE)
1298 Enum(diagnostic_prefixing_rule) String(every-line) Value(DIAGNOSTICS_SHOW_PREFIX_EVERY_LINE)
1300 fdiagnostics-show-caret
1301 Common Var(flag_diagnostics_show_caret) Init(1)
1302 Show the source line with a caret indicating the column.
1304 fdiagnostics-show-labels
1305 Common Var(flag_diagnostics_show_labels) Init(1)
1306 Show labels annotating ranges of source code when showing source.
1308 fdiagnostics-show-line-numbers
1309 Common Var(flag_diagnostics_show_line_numbers) Init(1)
1310 Show line numbers in the left margin when showing source.
1313 Common Alias(fdiagnostics-color=,always,never)
1317 Driver Common Joined RejectNegative Var(flag_diagnostics_show_color) Enum(diagnostic_color_rule) Init(DIAGNOSTICS_COLOR_NO)
1318 -fdiagnostics-color=[never|always|auto] Colorize diagnostics.
1320 ; Required for these enum values.
1325 Name(diagnostic_color_rule) Type(int)
1328 Enum(diagnostic_color_rule) String(never) Value(DIAGNOSTICS_COLOR_NO)
1331 Enum(diagnostic_color_rule) String(always) Value(DIAGNOSTICS_COLOR_YES)
1334 Enum(diagnostic_color_rule) String(auto) Value(DIAGNOSTICS_COLOR_AUTO)
1337 Driver Common Joined RejectNegative Var(flag_diagnostics_show_urls) Enum(diagnostic_url_rule) Init(DIAGNOSTICS_URL_AUTO)
1338 -fdiagnostics-urls=[never|always|auto] Embed URLs in diagnostics.
1340 ; Required for these enum values.
1345 Name(diagnostic_url_rule) Type(int)
1348 Enum(diagnostic_url_rule) String(never) Value(DIAGNOSTICS_URL_NO)
1351 Enum(diagnostic_url_rule) String(always) Value(DIAGNOSTICS_URL_YES)
1354 Enum(diagnostic_url_rule) String(auto) Value(DIAGNOSTICS_URL_AUTO)
1356 fdiagnostics-column-unit=
1357 Common Joined RejectNegative Enum(diagnostics_column_unit)
1358 -fdiagnostics-column-unit=[display|byte] Select whether column numbers are output as display columns (default) or raw bytes.
1360 fdiagnostics-column-origin=
1361 Common Joined RejectNegative UInteger
1362 -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.
1364 fdiagnostics-format=
1365 Common Joined RejectNegative Enum(diagnostics_output_format)
1366 -fdiagnostics-format=[text|json] Select output format.
1368 ; Required for these enum values.
1373 Name(diagnostics_column_unit) Type(int)
1376 Enum(diagnostics_column_unit) String(display) Value(DIAGNOSTICS_COLUMN_UNIT_DISPLAY)
1379 Enum(diagnostics_column_unit) String(byte) Value(DIAGNOSTICS_COLUMN_UNIT_BYTE)
1382 Name(diagnostics_output_format) Type(int)
1385 Enum(diagnostics_output_format) String(text) Value(DIAGNOSTICS_OUTPUT_FORMAT_TEXT)
1388 Enum(diagnostics_output_format) String(json) Value(DIAGNOSTICS_OUTPUT_FORMAT_JSON)
1390 fdiagnostics-parseable-fixits
1391 Common Var(flag_diagnostics_parseable_fixits)
1392 Print fix-it hints in machine-readable form.
1394 fdiagnostics-generate-patch
1395 Common Var(flag_diagnostics_generate_patch)
1396 Print fix-it hints to stderr in unified diff format.
1398 fdiagnostics-show-option
1399 Common Var(flag_diagnostics_show_option) Init(1)
1400 Amend appropriate diagnostic messages with the command line option that controls them.
1402 fdiagnostics-show-cwe
1403 Common Var(flag_diagnostics_show_cwe) Init(1)
1404 Print CWE identifiers for diagnostic messages, where available.
1406 fdiagnostics-path-format=
1407 Common Joined RejectNegative Var(flag_diagnostics_path_format) Enum(diagnostic_path_format) Init(DPF_INLINE_EVENTS)
1408 Specify how to print any control-flow path associated with a diagnostic.
1410 fdiagnostics-plain-output
1411 Driver Common RejectNegative
1412 Turn off any diagnostics features that complicate the output, such as line numbers, color, and warning URLs.
1415 Common Joined RejectNegative UInteger
1416 -ftabstop=<number> Distance between tab stops for column reporting.
1419 Name(diagnostic_path_format) Type(int)
1422 Enum(diagnostic_path_format) String(none) Value(DPF_NONE)
1425 Enum(diagnostic_path_format) String(separate-events) Value(DPF_SEPARATE_EVENTS)
1428 Enum(diagnostic_path_format) String(inline-events) Value(DPF_INLINE_EVENTS)
1430 fdiagnostics-show-path-depths
1431 Common Var(flag_diagnostics_show_path_depths) Init(0)
1432 Show stack depths of events in paths.
1434 fdiagnostics-minimum-margin-width=
1435 Common Joined UInteger Var(diagnostics_minimum_margin_width) Init(6)
1436 Set minimum width of left margin of source code when showing source.
1439 Common Joined RejectNegative Var(common_deferred_options) Defer
1440 -fdisable-[tree|rtl|ipa]-<pass>=range1+range2 Disable an optimization pass.
1443 Common Joined RejectNegative Var(common_deferred_options) Defer
1444 -fenable-[tree|rtl|ipa]-<pass>=range1+range2 Enable an optimization pass.
1447 Common Joined RejectNegative Var(common_deferred_options) Defer
1448 -fdump-<type> Dump various compiler internals to a file.
1451 Driver RejectNegative
1454 Common RejectNegative Joined Var(flag_dump_final_insns)
1455 -fdump-final-insns=filename Dump to filename the insns at the end of translation.
1458 Common RejectNegative Joined Var(flag_dump_go_spec)
1459 -fdump-go-spec=filename Write all declarations to file as Go code.
1462 Common Var(flag_dump_noaddr)
1463 Suppress output of addresses in debugging dumps.
1466 Common Driver Var(flag_report_bug)
1467 Collect and dump debug information into temporary file if ICE in C/C++
1470 fdump-internal-locations
1471 Common Var(flag_dump_locations) Init(0)
1472 Dump detailed information on GCC's internal representation of source code locations.
1475 Common Var(flag_dump_passes) Init(0)
1476 Dump optimization passes.
1479 Common Var(flag_dump_unnumbered)
1480 Suppress output of instruction numbers, line number notes and addresses in debugging dumps.
1482 fdump-unnumbered-links
1483 Common Var(flag_dump_unnumbered_links)
1484 Suppress output of previous and next insn numbers in debugging dumps.
1487 Common Var(flag_dwarf2_cfi_asm) Init(HAVE_GAS_CFI_DIRECTIVE)
1488 Enable CFI tables via GAS assembler directives.
1491 Common Var(flag_early_inlining) Init(1) Optimization
1492 Perform early inlining.
1494 feliminate-dwarf2-dups
1496 Does nothing. Preserved for backward compatibility.
1499 Common Var(flag_ipa_sra) Init(0) Optimization
1500 Perform interprocedural reduction of aggregates.
1502 feliminate-unused-debug-symbols
1503 Common Var(flag_debug_only_used_symbols) Init(1)
1504 Perform unused symbol elimination in debug info.
1506 feliminate-unused-debug-types
1507 Common Var(flag_eliminate_unused_debug_types) Init(1)
1508 Perform unused type elimination in debug info.
1510 femit-class-debug-always
1511 Common Var(flag_emit_class_debug_always) Init(0)
1512 Do not suppress C++ class debug information.
1515 Common Var(flag_exceptions) Optimization EnabledBy(fnon-call-exceptions)
1516 Enable exception handling.
1518 fexpensive-optimizations
1519 Common Var(flag_expensive_optimizations) Optimization
1520 Perform a number of minor, expensive optimizations.
1523 Common Joined RejectNegative Enum(excess_precision) Var(flag_excess_precision) Init(EXCESS_PRECISION_DEFAULT) Optimization SetByCombined
1524 -fexcess-precision=[fast|standard|16] Specify handling of excess floating-point precision.
1527 Name(excess_precision) Type(enum excess_precision) UnknownError(unknown excess precision style %qs)
1530 Enum(excess_precision) String(fast) Value(EXCESS_PRECISION_FAST)
1533 Enum(excess_precision) String(standard) Value(EXCESS_PRECISION_STANDARD)
1536 Enum(excess_precision) String(16) Value(EXCESS_PRECISION_FLOAT16)
1538 ; Whether we permit the extended set of values for FLT_EVAL_METHOD
1539 ; introduced in ISO/IEC TS 18661-3, or limit ourselves to those in C99/C11.
1540 fpermitted-flt-eval-methods=
1541 Common Joined RejectNegative Enum(permitted_flt_eval_methods) Var(flag_permitted_flt_eval_methods) Init(PERMITTED_FLT_EVAL_METHODS_DEFAULT)
1542 -fpermitted-flt-eval-methods=[c11|ts-18661] Specify which values of FLT_EVAL_METHOD are permitted.
1545 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)
1548 Enum(permitted_flt_eval_methods) String(c11) Value(PERMITTED_FLT_EVAL_METHODS_C11)
1551 Enum(permitted_flt_eval_methods) String(ts-18661-3) Value(PERMITTED_FLT_EVAL_METHODS_TS_18661)
1557 Common Var(flag_fat_lto_objects)
1558 Output lto objects containing both the intermediate language and binary output.
1561 Common Var(flag_finite_math_only) Optimization SetByCombined
1562 Assume no NaNs or infinities are generated.
1565 Common Var(flag_finite_loops) Optimization Init(0)
1566 Assume that loops with an exit will terminate and not loop indefinitely.
1569 Common Joined RejectNegative Var(common_deferred_options) Defer
1570 -ffixed-<register> Mark <register> as being unavailable to the compiler.
1573 Common Var(flag_float_store) Optimization
1574 Don't allocate floats and doubles in extended-precision registers.
1578 Does nothing. Preserved for backward compatibility.
1581 Common Var(flag_forward_propagate) Optimization
1582 Perform a forward propagation pass on RTL.
1585 Common Joined RejectNegative Enum(fp_contract_mode) Var(flag_fp_contract_mode) Init(FP_CONTRACT_FAST) Optimization
1586 -ffp-contract=[off|on|fast] Perform floating-point expression contraction.
1589 Name(fp_contract_mode) Type(enum fp_contract_mode) UnknownError(unknown floating point contraction style %qs)
1592 Enum(fp_contract_mode) String(off) Value(FP_CONTRACT_OFF)
1594 ; Not implemented, fall back to conservative FP_CONTRACT_OFF.
1596 Enum(fp_contract_mode) String(on) Value(FP_CONTRACT_OFF)
1599 Enum(fp_contract_mode) String(fast) Value(FP_CONTRACT_FAST)
1601 ffp-int-builtin-inexact
1602 Common Var(flag_fp_int_builtin_inexact) Init(1) Optimization
1603 Allow built-in functions ceil, floor, round, trunc to raise \"inexact\" exceptions.
1605 ; Nonzero means don't put addresses of constant functions in registers.
1606 ; Used for compiling the Unix kernel, where strange substitutions are
1607 ; done on the assembly output.
1609 Common Var(flag_no_function_cse,0) Optimization
1610 Allow function addresses to be held in registers.
1613 Common Var(flag_function_sections)
1614 Place each function into its own section.
1617 Common Var(flag_gcse) Optimization
1618 Perform global common subexpression elimination.
1621 Common Var(flag_gcse_lm) Init(1) Optimization
1622 Perform enhanced load motion during global common subexpression elimination.
1625 Common Var(flag_gcse_sm) Init(0) Optimization
1626 Perform store motion after global common subexpression elimination.
1629 Common Var(flag_gcse_las) Init(0) Optimization
1630 Perform redundant load after store elimination in global common subexpression
1634 Common Var(flag_gcse_after_reload) Optimization
1635 Perform global common subexpression elimination after register allocation has
1639 Name(dwarf_gnat_encodings) Type(int)
1642 Enum(dwarf_gnat_encodings) String(all) Value(DWARF_GNAT_ENCODINGS_ALL)
1645 Enum(dwarf_gnat_encodings) String(gdb) Value(DWARF_GNAT_ENCODINGS_GDB)
1648 Enum(dwarf_gnat_encodings) String(minimal) Value(DWARF_GNAT_ENCODINGS_MINIMAL)
1651 Common Enum(dwarf_gnat_encodings) Joined RejectNegative Undocumented Var(gnat_encodings)
1652 -fgnat-encodings=[all|gdb|minimal] Select the balance between GNAT encodings and standard DWARF emitted in the debug information.
1654 ; This option is not documented yet as its semantics will change.
1656 Common Var(flag_graphite) Optimization
1657 Enable in and out of Graphite representation.
1660 Common Var(flag_graphite_identity) Optimization
1661 Enable Graphite Identity transformation.
1663 fhoist-adjacent-loads
1664 Common Var(flag_hoist_adjacent_loads) Optimization
1665 Enable hoisting adjacent loads to encourage generating conditional move
1669 Common Undocumented Var(flag_keep_gc_roots_live) Optimization
1670 ; Always keep a pointer to a live memory block
1673 Common Var(flag_large_source_files) Init(0)
1674 Improve GCC's ability to track column numbers in large source files,
1675 at the expense of slower compilation.
1677 floop-parallelize-all
1678 Common Var(flag_loop_parallelize_all) Optimization
1679 Mark all loops as parallel.
1682 Common Alias(floop-nest-optimize)
1683 Enable loop nest transforms. Same as -floop-nest-optimize.
1686 Common Var(flag_loop_interchange) Optimization
1687 Enable loop interchange on trees.
1690 Common Alias(floop-nest-optimize)
1691 Enable loop nest transforms. Same as -floop-nest-optimize.
1693 floop-unroll-and-jam
1694 Common Var(flag_unroll_jam) Optimization
1695 Perform unroll-and-jam on loops.
1699 Enable support for GNU transactional memory.
1702 Common Var(flag_gnu_unique) Init(1)
1703 Use STB_GNU_UNIQUE if supported by the assembler.
1707 Does nothing. Preserved for backward compatibility.
1710 Common Var(flag_loop_nest_optimize) Optimization
1711 Enable the loop nest optimizer.
1713 fstrict-volatile-bitfields
1714 Common Var(flag_strict_volatile_bitfields) Init(-1) Optimization
1715 Force bitfield accesses to match their type width.
1718 Common Var(flag_store_merging) Optimization
1719 Merge adjacent stores.
1721 fguess-branch-probability
1722 Common Var(flag_guess_branch_prob) Optimization
1723 Enable guessing of branch probabilities.
1726 Common Var(flag_harden_compares) Optimization
1727 Harden conditionals not used in branches, checking reversed conditions.
1729 fharden-conditional-branches
1730 Common Var(flag_harden_conditional_branches) Optimization
1731 Harden conditional branches by checking reversed conditions.
1733 ; Nonzero means ignore `#ident' directives. 0 means handle them.
1734 ; Generate position-independent code for executables if possible
1735 ; On SVR4 targets, it also controls whether or not to emit a
1736 ; string identifying the compiler.
1738 Common Var(flag_no_ident,0)
1739 Process #ident directives.
1742 Common Var(flag_if_conversion) Optimization
1743 Perform conversion of conditional jumps to branchless equivalents.
1746 Common Var(flag_if_conversion2) Optimization
1747 Perform conversion of conditional jumps to conditional execution.
1750 Common Joined RejectNegative Enum(stack_reuse_level) Var(flag_stack_reuse) Init(SR_ALL) Optimization
1751 -fstack-reuse=[all|named_vars|none] Set stack reuse level for local variables.
1754 Name(stack_reuse_level) Type(enum stack_reuse_level) UnknownError(unknown Stack Reuse Level %qs)
1757 Enum(stack_reuse_level) String(all) Value(SR_ALL)
1760 Enum(stack_reuse_level) String(named_vars) Value(SR_NAMED_VARS)
1763 Enum(stack_reuse_level) String(none) Value(SR_NONE)
1765 ftree-loop-if-convert
1766 Common Var(flag_tree_loop_if_convert) Init(-1) Optimization
1767 Convert conditional jumps in innermost loops to branchless equivalents.
1769 ftree-loop-if-convert-stores
1771 Does nothing. Preserved for backward compatibility.
1773 ; -finhibit-size-directive inhibits output of .size for ELF.
1774 ; This is used only for compiling crtstuff.c,
1775 ; and it may be extended to other effects
1776 ; needed for crtstuff.c on other systems.
1777 finhibit-size-directive
1778 Common Var(flag_inhibit_size_directive)
1779 Do not generate .size directives.
1782 Common Var(flag_indirect_inlining) Optimization
1783 Perform indirect inlining.
1785 ; General flag to enable inlining. Specifying -fno-inline will disable
1786 ; all inlining apart from always-inline functions.
1788 Common Var(flag_no_inline,0) Init(0) Optimization
1789 Enable inlining of function declared \"inline\", disabling disables all inlining.
1791 finline-small-functions
1792 Common Var(flag_inline_small_functions) Optimization
1793 Integrate functions into their callers when code size is known not to grow.
1796 Common Var(flag_inline_functions) Optimization
1797 Integrate functions not declared \"inline\" into their callers when profitable.
1799 finline-functions-called-once
1800 Common Var(flag_inline_functions_called_once) Optimization
1801 Integrate functions only required by their single caller.
1804 Common RejectNegative Joined Alias(finline-limit=)
1807 Common RejectNegative Joined UInteger
1808 -finline-limit=<number> Limit the size of inlined functions to <number>.
1811 Common Var(flag_inline_atomics) Init(1) Optimization
1812 Inline __atomic operations when a lock free instruction sequence is available.
1815 Common RejectNegative Alias(fcf-protection=,full)
1818 Common Joined RejectNegative Enum(cf_protection_level) Var(flag_cf_protection) Init(CF_NONE)
1819 -fcf-protection=[full|branch|return|none|check] Instrument functions with checks to verify jump/call/return control-flow transfer
1820 instructions have valid targets.
1823 Name(cf_protection_level) Type(enum cf_protection_level) UnknownError(unknown Control-Flow Protection Level %qs)
1826 Enum(cf_protection_level) String(full) Value(CF_FULL)
1829 Enum(cf_protection_level) String(branch) Value(CF_BRANCH)
1832 Enum(cf_protection_level) String(return) Value(CF_RETURN)
1835 Enum(cf_protection_level) String(check) Value(CF_CHECK)
1838 Enum(cf_protection_level) String(none) Value(CF_NONE)
1840 finstrument-functions
1841 Common Var(flag_instrument_function_entry_exit)
1842 Instrument function entry and exit with profiling calls.
1844 finstrument-functions-exclude-function-list=
1845 Common RejectNegative Joined
1846 -finstrument-functions-exclude-function-list=name,... Do not instrument listed functions.
1848 finstrument-functions-exclude-file-list=
1849 Common RejectNegative Joined
1850 -finstrument-functions-exclude-file-list=filename,... Do not instrument functions listed in files.
1853 Common Var(flag_ipa_cp) Optimization
1854 Perform interprocedural constant propagation.
1857 Common Var(flag_ipa_cp_clone) Optimization
1858 Perform cloning to make Interprocedural constant propagation stronger.
1862 Does nothing. Preserved for backward compatibility.
1865 Common Var(flag_ipa_bit_cp) Optimization
1866 Perform interprocedural bitwise constant propagation.
1869 Common Var(flag_ipa_modref) Optimization
1870 Perform interprocedural modref analysis.
1873 Common Var(flag_ipa_profile) Init(0) Optimization
1874 Perform interprocedural profile propagation.
1877 Common Var(flag_ipa_pta) Init(0) Optimization
1878 Perform interprocedural points-to analysis.
1881 Common Var(flag_ipa_pure_const) Init(0) Optimization
1882 Discover pure and const functions.
1885 Common Var(flag_ipa_icf) Optimization
1886 Perform Identical Code Folding for functions and read-only variables.
1889 Common Var(flag_ipa_icf_functions) Optimization
1890 Perform Identical Code Folding for functions.
1893 Common Var(flag_ipa_icf_variables) Optimization
1894 Perform Identical Code Folding for variables.
1897 Common Var(flag_ipa_reference) Init(0) Optimization
1898 Discover read-only and non addressable static variables.
1900 fipa-reference-addressable
1901 Common Var(flag_ipa_reference_addressable) Init(0) Optimization
1902 Discover read-only, write-only and non-addressable static variables.
1904 fipa-stack-alignment
1905 Common Var(flag_ipa_stack_alignment) Init(1) Optimization
1906 Reduce stack alignment on call sites if possible.
1910 Does nothing. Preserved for backward compatibility.
1914 Does nothing. Preserved for backward compatibility.
1917 Common Var(flag_ipa_vrp) Optimization
1918 Perform IPA Value Range Propagation.
1921 Common Joined RejectNegative Enum(ira_algorithm) Var(flag_ira_algorithm) Init(IRA_ALGORITHM_CB) Optimization
1922 -fira-algorithm=[CB|priority] Set the used IRA algorithm.
1925 Name(ira_algorithm) Type(enum ira_algorithm) UnknownError(unknown IRA algorithm %qs)
1928 Enum(ira_algorithm) String(CB) Value(IRA_ALGORITHM_CB)
1931 Enum(ira_algorithm) String(priority) Value(IRA_ALGORITHM_PRIORITY)
1934 Common Joined RejectNegative Enum(ira_region) Var(flag_ira_region) Init(IRA_REGION_ONE) Optimization
1935 -fira-region=[one|all|mixed] Set regions for IRA.
1938 Name(ira_region) Type(enum ira_region) UnknownError(unknown IRA region %qs)
1941 Enum(ira_region) String(one) Value(IRA_REGION_ONE)
1944 Enum(ira_region) String(all) Value(IRA_REGION_ALL)
1947 Enum(ira_region) String(mixed) Value(IRA_REGION_MIXED)
1950 Common Var(flag_ira_hoist_pressure) Init(1) Optimization
1951 Use IRA based register pressure calculation
1952 in RTL hoist optimizations.
1955 Common Var(flag_ira_loop_pressure) Optimization
1956 Use IRA based register pressure calculation
1957 in RTL loop optimizations.
1959 fira-share-save-slots
1960 Common Var(flag_ira_share_save_slots) Init(1) Optimization
1961 Share slots for saving different hard registers.
1963 fira-share-spill-slots
1964 Common Var(flag_ira_share_spill_slots) Init(1) Optimization
1965 Share stack slots for spilled pseudo-registers.
1968 Common RejectNegative Joined UInteger Var(flag_ira_verbose) Init(5)
1969 -fira-verbose=<number> Control IRA's level of diagnostic messages.
1972 Common Var(flag_ivopts) Init(1) Optimization
1973 Optimize induction variables on trees.
1976 Common Var(flag_jump_tables) Init(1) Optimization
1977 Use jump tables for sufficiently large switch statements.
1980 Common Var(flag_bit_tests) Init(1) Optimization
1981 Use bit tests for sufficiently large switch statements.
1983 fkeep-inline-functions
1984 Common Var(flag_keep_inline_functions)
1985 Generate code for functions even if they are fully inlined.
1987 fkeep-static-functions
1988 Common Var(flag_keep_static_functions)
1989 Generate code for static functions even if they are never called.
1992 Common Var(flag_keep_static_consts) Init(1)
1993 Emit static const variables even if they are not used.
1996 Common Var(flag_leading_underscore) Init(-1)
1997 Give external symbols a leading underscore.
2001 Does nothing. Preserved for backward compatibility.
2004 Common Var(flag_lra_remat) Optimization
2005 Do CFG-sensitive rematerialization in LRA.
2009 Enable link-time optimization.
2012 Common RejectNegative Joined Var(flag_lto)
2013 Link-time optimization with number of parallel jobs or jobserver.
2016 Name(lto_partition_model) Type(enum lto_partition_model) UnknownError(unknown LTO partitioning model %qs)
2019 Enum(lto_partition_model) String(none) Value(LTO_PARTITION_NONE)
2022 Enum(lto_partition_model) String(one) Value(LTO_PARTITION_ONE)
2025 Enum(lto_partition_model) String(balanced) Value(LTO_PARTITION_BALANCED)
2028 Enum(lto_partition_model) String(1to1) Value(LTO_PARTITION_1TO1)
2031 Enum(lto_partition_model) String(max) Value(LTO_PARTITION_MAX)
2034 Common Joined RejectNegative Enum(lto_partition_model) Var(flag_lto_partition) Init(LTO_PARTITION_BALANCED)
2035 Specify the algorithm to partition symbols and vars at linktime.
2037 ; The initial value of -1 comes from Z_DEFAULT_COMPRESSION in zlib.h.
2038 flto-compression-level=
2039 Common Joined RejectNegative UInteger Var(flag_lto_compression_level) Init(-1) IntegerRange(0, 19)
2040 -flto-compression-level=<number> Use zlib/zstd compression level <number> for IL.
2042 flto-odr-type-merging
2044 Does nothing. Preserved for backward compatibility.
2047 Common Var(flag_lto_report) Init(0)
2048 Report various link-time optimization statistics.
2051 Common Var(flag_lto_report_wpa) Init(0)
2052 Report various link-time optimization statistics for WPA only.
2055 Common Var(flag_errno_math) Init(1) Optimization SetByCombined
2056 Set errno after built-in math functions.
2059 Common Joined RejectNegative UInteger Var(flag_max_errors)
2060 -fmax-errors=<number> Maximum number of errors to report.
2063 Common Var(mem_report)
2064 Report on permanent memory allocation.
2067 Common Var(mem_report_wpa)
2068 Report on permanent memory allocation in WPA only.
2070 ; This will attempt to merge constant section constants, if 1 only
2071 ; string constants and constants from constant pool, if 2 also constant
2073 fmerge-all-constants
2074 Common Var(flag_merge_constants,2) Init(1)
2075 Attempt to merge identical constants and constant variables.
2078 Common Var(flag_merge_constants,1)
2079 Attempt to merge identical constants across compilation units.
2081 fmerge-debug-strings
2082 Common Var(flag_merge_debug_strings) Init(1)
2083 Attempt to merge identical debug strings across compilation units.
2086 Common RejectNegative Joined UInteger
2087 -fmessage-length=<number> Limit diagnostics to <number> characters per line. 0 suppresses line-wrapping.
2090 Common Var(flag_modulo_sched) Optimization
2091 Perform SMS based modulo scheduling before the first scheduling pass.
2093 fmodulo-sched-allow-regmoves
2094 Common Var(flag_modulo_sched_allow_regmoves) Optimization
2095 Perform SMS based modulo scheduling with register moves allowed.
2097 fmove-loop-invariants
2098 Common Var(flag_move_loop_invariants) Optimization
2099 Move loop invariant computations out of loops.
2102 Common Var(flag_move_loop_stores) Optimization
2103 Move stores out of loops.
2106 Common Var(flag_dce) Init(1) Optimization
2107 Use the RTL dead code elimination pass.
2110 Common Var(flag_dse) Init(0) Optimization
2111 Use the RTL dead store elimination pass.
2113 freschedule-modulo-scheduled-loops
2114 Common Var(flag_resched_modulo_sched) Optimization
2115 Enable/Disable the traditional scheduling in loops that already passed modulo scheduling.
2117 fnon-call-exceptions
2118 Common Var(flag_non_call_exceptions) Optimization
2119 Support synchronous non-call exceptions.
2122 Driver Joined MissingArgError(targets missing after %qs)
2125 Common Driver Joined MissingArgError(options or targets=options missing after %qs)
2126 -foffload-options=<targets>=<options> Specify options for the offloading targets.
2129 Common Joined RejectNegative Enum(offload_abi)
2130 -foffload-abi=[lp64|ilp32] Set the ABI to use in an offload compiler.
2133 Name(offload_abi) Type(enum offload_abi) UnknownError(unknown offload ABI %qs)
2136 Enum(offload_abi) String(ilp32) Value(OFFLOAD_ABI_ILP32)
2139 Enum(offload_abi) String(lp64) Value(OFFLOAD_ABI_LP64)
2142 Common Var(flag_omit_frame_pointer) Optimization
2143 When possible do not generate stack frames.
2146 Common Var(flag_opt_info) Optimization
2147 Enable all optimization info dumps on stderr.
2150 Common Joined RejectNegative Var(common_deferred_options) Defer
2151 -fopt-info[-<type>=filename] Dump compiler optimization details.
2153 fsave-optimization-record
2154 Common Var(flag_save_optimization_record) Optimization
2155 Write a SRCFILE.opt-record.json file detailing what optimizations were performed.
2157 foptimize-register-move
2159 Does nothing. Preserved for backward compatibility.
2161 foptimize-sibling-calls
2162 Common Var(flag_optimize_sibling_calls) Optimization
2163 Optimize sibling and tail recursive calls.
2166 Common Var(flag_partial_inlining) Optimization
2167 Perform partial inlining.
2170 Common Var(pre_ipa_mem_report)
2171 Report on memory allocation before interprocedural optimization.
2173 fpost-ipa-mem-report
2174 Common Var(post_ipa_mem_report)
2175 Report on memory allocation before interprocedural optimization.
2178 Common Var(flag_pack_struct) Optimization
2179 Pack structure members together without holes.
2182 Common RejectNegative Joined UInteger Optimization
2183 -fpack-struct=<number> Set initial maximum structure member alignment.
2186 Common Var(flag_pcc_struct_return,1) Init(DEFAULT_PCC_STRUCT_RETURN)
2187 Return small aggregates in memory, not registers.
2190 Common Var(flag_peel_loops) Optimization
2191 Perform loop peeling.
2194 Common Var(flag_no_peephole,0) Optimization
2195 Enable machine specific peephole optimizations.
2198 Common Var(flag_peephole2) Optimization
2199 Enable an RTL peephole pass before sched2.
2202 Common Var(flag_pic,2) Negative(fPIE) Init(-1)
2203 Generate position-independent code if possible (large mode).
2206 Common Var(flag_pie,2) Negative(fpic) Init(-1)
2207 Generate position-independent code for executables if possible (large mode).
2210 Common Var(flag_pic,1) Negative(fpie) Init(-1)
2211 Generate position-independent code if possible (small mode).
2214 Common Var(flag_pie,1) Negative(fPIC) Init(-1)
2215 Generate position-independent code for executables if possible (small mode).
2218 Common Var(flag_plt) Init(1) Optimization
2219 Use PLT for PIC calls (-fno-plt: load the address from GOT at call site).
2222 Common Joined RejectNegative Var(common_deferred_options) Defer
2223 Specify a plugin to load.
2226 Common Joined RejectNegative Var(common_deferred_options) Defer
2227 -fplugin-arg-<name>-<key>[=<value>] Specify argument <key>=<value> for plugin <name>.
2229 fpredictive-commoning
2230 Common Var(flag_predictive_commoning) Optimization
2231 Run predictive commoning optimization.
2233 fprefetch-loop-arrays
2234 Common Var(flag_prefetch_loop_arrays) Init(-1) Optimization
2235 Generate prefetch instructions, if available, for arrays in loops.
2238 Common Var(profile_flag)
2239 Enable basic program profiling code.
2242 Common Var(profile_abs_path_flag)
2243 Generate absolute source path names for gcov.
2246 Common Var(profile_arc_flag)
2247 Insert arc-based program profiling code.
2250 Common Joined RejectNegative Var(profile_data_prefix)
2251 Set the top-level directory for storing the profile data.
2252 The default is 'pwd'.
2255 Common Joined RejectNegative Var(profile_note_location)
2256 Select the name for storing the profile note file.
2259 Common Var(flag_profile_correction)
2260 Enable correction of flow inconsistent profile data input.
2263 Common Joined RejectNegative Enum(profile_update) Var(flag_profile_update) Init(PROFILE_UPDATE_SINGLE)
2264 -fprofile-update=[single|atomic|prefer-atomic] Set the profile update method.
2266 fprofile-filter-files=
2267 Common Joined RejectNegative Var(flag_profile_filter_files)
2268 Instrument only functions from files whose name matches any of the regular expressions (separated by semi-colons).
2270 fprofile-exclude-files=
2271 Common Joined RejectNegative Var(flag_profile_exclude_files)
2272 Instrument only functions from files whose name does not match any of the regular expressions (separated by semi-colons).
2275 Name(profile_reproducibility) Type(enum profile_reproducibility) UnknownError(unknown profile reproducibility method %qs)
2278 Enum(profile_reproducibility) String(serial) Value(PROFILE_REPRODUCIBILITY_SERIAL)
2281 Enum(profile_reproducibility) String(parallel-runs) Value(PROFILE_REPRODUCIBILITY_PARALLEL_RUNS)
2284 Enum(profile_reproducibility) String(multithreaded) Value(PROFILE_REPRODUCIBILITY_MULTITHREADED)
2286 fprofile-reproducible=
2287 Common Joined RejectNegative Var(flag_profile_reproducible) Enum(profile_reproducibility) Init(PROFILE_REPRODUCIBILITY_SERIAL)
2288 -fprofile-reproducible=[serial|parallel-runs|multithreaded] Control level of reproducibility of profile gathered by -fprofile-generate.
2291 Name(profile_update) Type(enum profile_update) UnknownError(unknown profile update method %qs)
2294 Enum(profile_update) String(single) Value(PROFILE_UPDATE_SINGLE)
2297 Enum(profile_update) String(atomic) Value(PROFILE_UPDATE_ATOMIC)
2300 Enum(profile_update) String(prefer-atomic) Value(PROFILE_UPDATE_PREFER_ATOMIC)
2302 fprofile-prefix-path=
2303 Common Joined RejectNegative Var(profile_prefix_path)
2304 Remove prefix from absolute path before mangling name for -fprofile-generate= and -fprofile-use=.
2308 Enable common options for generating profile info for profile feedback directed optimizations.
2311 Common Joined RejectNegative
2312 Enable common options for generating profile info for profile feedback directed optimizations, and set -fprofile-dir=.
2314 fprofile-info-section
2315 Common RejectNegative
2316 Register the profile information in the .gcov_info section instead of using a constructor/destructor.
2318 fprofile-info-section=
2319 Common Joined RejectNegative Var(profile_info_section)
2320 Register the profile information in the specified section instead of using a constructor/destructor.
2322 fprofile-partial-training
2323 Common Var(flag_profile_partial_training) Optimization
2324 Do not assume that functions never executed during the train run are cold.
2327 Common Var(flag_profile_use)
2328 Enable common options for performing profile feedback directed optimizations.
2331 Common Joined RejectNegative
2332 Enable common options for performing profile feedback directed optimizations, and set -fprofile-dir=.
2335 Common Var(flag_profile_values)
2336 Insert code to profile values of expressions.
2339 Common Var(profile_report)
2340 Report on consistency of profile.
2342 fprofile-reorder-functions
2343 Common Var(flag_profile_reorder_functions) Optimization
2344 Enable function reordering that improves code placement.
2346 fpatchable-function-entry=
2347 Common Var(flag_patchable_function_entry) Joined Optimization
2348 Insert NOP instructions at each function entry.
2351 Common Var(common_deferred_options) Defer
2354 Common Joined RejectNegative Var(common_deferred_options) Defer
2355 -frandom-seed=<string> Make compile reproducible using <string>.
2357 ; This switch causes the command line that was used to create an
2358 ; object file to be recorded into the object file. The exact format
2359 ; of this recording is target and binary file format dependent.
2360 ; It is related to the -fverbose-asm switch, but that switch only
2361 ; records information in the assembler output file as comments, so
2362 ; they never reach the object file.
2363 frecord-gcc-switches
2364 Common Var(flag_record_gcc_switches)
2365 Record gcc command line switches in the object file.
2368 Common Var(flag_pcc_struct_return,0) Optimization
2369 Return small aggregates in registers.
2373 Does nothing. Preserved for backward compatibility.
2376 Common Var(flag_lifetime_dse,2) Init(2) Optimization
2377 Tell DSE that the storage for a C++ object is dead when the constructor
2378 starts and when the destructor finishes.
2381 Common Joined RejectNegative UInteger Var(flag_lifetime_dse) Optimization IntegerRange(0, 2)
2384 Common RejectNegative Alias(flive-patching=,inline-clone) Optimization
2387 Common Joined RejectNegative Enum(live_patching_level) Var(flag_live_patching) Init(LIVE_PATCHING_NONE) Optimization
2388 -flive-patching=[inline-only-static|inline-clone] Control IPA
2389 optimizations to provide a safe compilation for live-patching. At the same
2390 time, provides multiple-level control on the enabled IPA optimizations.
2393 Name(live_patching_level) Type(enum live_patching_level) UnknownError(unknown Live-Patching Level %qs)
2396 Enum(live_patching_level) String(inline-only-static) Value(LIVE_PATCHING_INLINE_ONLY_STATIC)
2399 Enum(live_patching_level) String(inline-clone) Value(LIVE_PATCHING_INLINE_CLONE)
2402 Common Var(flag_allocation_dce) Init(1) Optimization
2403 Tell DCE to remove unused C++ allocations.
2405 flive-range-shrinkage
2406 Common Var(flag_live_range_shrinkage) Init(0) Optimization
2407 Relief of register pressure through live range shrinkage.
2410 Common Var(flag_rename_registers) Optimization EnabledBy(funroll-loops)
2411 Perform a register renaming optimization pass.
2414 Common Var(flag_schedule_fusion) Init(2) Optimization
2415 Perform a target dependent instruction fusion optimization pass.
2418 Common Var(flag_reorder_blocks) Optimization
2419 Reorder basic blocks to improve code placement.
2421 freorder-blocks-algorithm=
2422 Common Joined RejectNegative Enum(reorder_blocks_algorithm) Var(flag_reorder_blocks_algorithm) Init(REORDER_BLOCKS_ALGORITHM_SIMPLE) Optimization
2423 -freorder-blocks-algorithm=[simple|stc] Set the used basic block reordering algorithm.
2426 Name(reorder_blocks_algorithm) Type(enum reorder_blocks_algorithm) UnknownError(unknown basic block reordering algorithm %qs)
2429 Enum(reorder_blocks_algorithm) String(simple) Value(REORDER_BLOCKS_ALGORITHM_SIMPLE)
2432 Enum(reorder_blocks_algorithm) String(stc) Value(REORDER_BLOCKS_ALGORITHM_STC)
2434 freorder-blocks-and-partition
2435 Common Var(flag_reorder_blocks_and_partition) Optimization
2436 Reorder basic blocks and partition into hot and cold sections.
2439 Common Var(flag_reorder_functions) Optimization
2440 Reorder functions to improve code placement.
2442 frerun-cse-after-loop
2443 Common Var(flag_rerun_cse_after_loop) Optimization
2444 Add a common subexpression elimination pass after loop optimizations.
2448 Does nothing. Preserved for backward compatibility.
2451 Common Var(flag_rounding_math) Optimization SetByCombined
2452 Disable optimizations that assume default FP rounding behavior.
2455 Common Var(flag_schedule_interblock) Init(1) Optimization
2456 Enable scheduling across basic blocks.
2459 Common Var(flag_sched_pressure) Init(0) Optimization
2460 Enable register pressure sensitive insn scheduling.
2463 Common Var(flag_schedule_speculative) Init(1) Optimization
2464 Allow speculative motion of non-loads.
2467 Common Var(flag_schedule_speculative_load) Optimization
2468 Allow speculative motion of some loads.
2470 fsched-spec-load-dangerous
2471 Common Var(flag_schedule_speculative_load_dangerous) Optimization
2472 Allow speculative motion of more loads.
2475 Common RejectNegative Joined UInteger Var(sched_verbose_param) Init(1)
2476 -fsched-verbose=<number> Set the verbosity level of the scheduler.
2478 fsched2-use-superblocks
2479 Common Var(flag_sched2_use_superblocks) Optimization
2480 If scheduling post reload, do superblock scheduling.
2484 Does nothing. Preserved for backward compatibility.
2487 Common Var(flag_schedule_insns) Optimization
2488 Reschedule instructions before register allocation.
2491 Common Var(flag_schedule_insns_after_reload) Optimization
2492 Reschedule instructions after register allocation.
2494 ; This flag should be on when a target implements non-trivial
2495 ; scheduling hooks, maybe saving some information for its own sake.
2496 ; On IA64, for example, this is used for correct bundling.
2497 fselective-scheduling
2498 Common Var(flag_selective_scheduling) Optimization
2499 Schedule instructions using selective scheduling algorithm.
2501 fselective-scheduling2
2502 Common Var(flag_selective_scheduling2) Optimization
2503 Run selective scheduling after reload.
2506 Common Undocumented Joined Var(flag_self_test)
2507 Run self-tests, using the given path to locate test files.
2509 fsel-sched-pipelining
2510 Common Var(flag_sel_sched_pipelining) Init(0) Optimization
2511 Perform software pipelining of inner loops during selective scheduling.
2513 fsel-sched-pipelining-outer-loops
2514 Common Var(flag_sel_sched_pipelining_outer_loops) Init(0) Optimization
2515 Perform software pipelining of outer loops during selective scheduling.
2517 fsel-sched-reschedule-pipelined
2518 Common Var(flag_sel_sched_reschedule_pipelined) Init(0) Optimization
2519 Reschedule pipelined regions without pipelining.
2521 fsemantic-interposition
2522 Common Var(flag_semantic_interposition) Init(1)
2523 Allow interposing function (or variables) by ones with different semantics (or initializer) respectively by dynamic linker.
2525 ; sched_stalled_insns means that insns can be moved prematurely from the queue
2526 ; of stalled insns into the ready list.
2527 fsched-stalled-insns
2528 Common Var(flag_sched_stalled_insns) Optimization UInteger
2529 Allow premature scheduling of queued insns.
2531 fsched-stalled-insns=
2532 Common RejectNegative Joined UInteger Optimization
2533 -fsched-stalled-insns=<number> Set number of queued insns that can be prematurely scheduled.
2535 ; sched_stalled_insns_dep controls how many recently scheduled cycles will
2536 ; be examined for a dependency on a stalled insn that is candidate for
2537 ; premature removal from the queue of stalled insns into the ready list (has
2538 ; an effect only if the flag 'sched_stalled_insns' is set).
2539 fsched-stalled-insns-dep
2540 Common Var(flag_sched_stalled_insns_dep,1) Init(1) Optimization UInteger
2541 Set dependence distance checking in premature scheduling of queued insns.
2543 fsched-stalled-insns-dep=
2544 Common RejectNegative Joined UInteger Optimization
2545 -fsched-stalled-insns-dep=<number> Set dependence distance checking in premature scheduling of queued insns.
2547 fsched-group-heuristic
2548 Common Var(flag_sched_group_heuristic) Init(1) Optimization
2549 Enable the group heuristic in the scheduler.
2551 fsched-critical-path-heuristic
2552 Common Var(flag_sched_critical_path_heuristic) Init(1) Optimization
2553 Enable the critical path heuristic in the scheduler.
2555 fsched-spec-insn-heuristic
2556 Common Var(flag_sched_spec_insn_heuristic) Init(1) Optimization
2557 Enable the speculative instruction heuristic in the scheduler.
2559 fsched-rank-heuristic
2560 Common Var(flag_sched_rank_heuristic) Init(1) Optimization
2561 Enable the rank heuristic in the scheduler.
2563 fsched-last-insn-heuristic
2564 Common Var(flag_sched_last_insn_heuristic) Init(1) Optimization
2565 Enable the last instruction heuristic in the scheduler.
2567 fsched-dep-count-heuristic
2568 Common Var(flag_sched_dep_count_heuristic) Init(1) Optimization
2569 Enable the dependent count heuristic in the scheduler.
2572 Common Var(flag_section_anchors) Optimization
2573 Access data in the same section from shared anchor points.
2577 Does nothing. Preserved for backward compatibility.
2581 Does nothing. Preserved for backward compatibility.
2584 Common Var(flag_ree) Init(0) Optimization
2585 Turn on Redundant Extensions Elimination pass.
2588 Common Var(flag_show_column) Init(1)
2589 Show column numbers in diagnostics, when available. Default on.
2592 Common Var(flag_shrink_wrap) Optimization
2593 Emit function prologues only before parts of the function that need it,
2594 rather than at the top of the function.
2596 fshrink-wrap-separate
2597 Common Var(flag_shrink_wrap_separate) Init(1) Optimization
2598 Shrink-wrap parts of the prologue and epilogue separately.
2601 Common Var(flag_signaling_nans) Optimization SetByCombined
2602 Disable optimizations observable by IEEE signaling NaNs.
2605 Common Var(flag_signed_zeros) Init(1) Optimization SetByCombined
2606 Disable floating point optimizations that ignore the IEEE signedness of zero.
2608 fsingle-precision-constant
2609 Common Var(flag_single_precision_constant) Optimization
2610 Convert floating point constants to single precision constants.
2612 fsplit-ivs-in-unroller
2613 Common Var(flag_split_ivs_in_unroller) Init(1) Optimization
2614 Split lifetimes of induction variables when loops are unrolled.
2617 Common Var(flag_split_stack) Init(-1)
2618 Generate discontiguous stack frames.
2621 Common Var(flag_split_wide_types) Optimization
2622 Split wide types into independent registers.
2624 fsplit-wide-types-early
2625 Common Var(flag_split_wide_types_early) Optimization
2626 Split wide types into independent registers earlier.
2629 Common Var(flag_ssa_backprop) Init(1) Optimization
2630 Enable backward propagation of use properties at the SSA level.
2633 Common Var(flag_ssa_phiopt) Optimization
2634 Optimize conditional patterns using SSA PHI nodes.
2637 Common Var(flag_stdarg_opt) Init(1) Optimization
2638 Optimize amount of stdarg registers saved to stack at start of function.
2640 fvariable-expansion-in-unroller
2641 Common Var(flag_variable_expansion_in_unroller) Optimization
2642 Apply variable expansion when loops are unrolled.
2645 Common RejectNegative Joined Optimization
2646 -fstack-check=[no|generic|specific] Insert stack checking code into the program.
2649 Common Alias(fstack-check=, specific, no)
2650 Insert stack checking code into the program. Same as -fstack-check=specific.
2652 fstack-clash-protection
2653 Common Var(flag_stack_clash_protection) Optimization
2654 Insert code to probe each page of stack space as it is allocated to protect
2655 from stack-clash style attacks.
2658 Common Var(common_deferred_options) Defer
2660 fstack-limit-register=
2661 Common RejectNegative Joined Var(common_deferred_options) Defer
2662 -fstack-limit-register=<register> Trap if the stack goes past <register>.
2664 fstack-limit-symbol=
2665 Common RejectNegative Joined Var(common_deferred_options) Defer
2666 -fstack-limit-symbol=<name> Trap if the stack goes past symbol <name>.
2669 Common Var(flag_stack_protect, 1) Init(-1) Optimization
2670 Use propolice as a stack protection method.
2672 fstack-protector-all
2673 Common RejectNegative Var(flag_stack_protect, 2) Init(-1) Optimization
2674 Use a stack protection method for every function.
2676 fstack-protector-strong
2677 Common RejectNegative Var(flag_stack_protect, 3) Init(-1) Optimization
2678 Use a smart stack protection method for certain functions.
2680 fstack-protector-explicit
2681 Common RejectNegative Var(flag_stack_protect, 4) Optimization
2682 Use stack protection method only for functions with the stack_protect attribute.
2685 Common RejectNegative Var(flag_stack_usage)
2686 Output stack usage information on a per-function basis.
2690 Does nothing. Preserved for backward compatibility.
2692 ; Nonzero if we should do (language-dependent) alias analysis.
2693 ; Typically, this analysis will assume that expressions of certain
2694 ; types do not alias expressions of certain other types. Only used
2695 ; if alias analysis (in general) is enabled.
2697 Common Var(flag_strict_aliasing) Optimization
2698 Assume strict aliasing rules apply.
2702 Treat signed overflow as undefined. Negated as -fwrapv -fwrapv-pointer.
2705 Common Var(flag_sync_libcalls) Init(1)
2706 Implement __atomic operations via libcalls to legacy __sync functions.
2709 Common Var(flag_syntax_only)
2710 Check for syntax errors, then stop.
2713 Common Var(flag_test_coverage)
2714 Create data files needed by \"gcov\".
2717 Common Var(flag_thread_jumps) Optimization
2718 Perform jump threading optimizations.
2721 Common Var(time_report)
2722 Report the time taken by each compiler pass.
2724 ftime-report-details
2725 Common Var(time_report_details)
2726 Record times taken by sub-phases separately.
2729 Common Joined RejectNegative Enum(tls_model) Var(flag_tls_default) Init(TLS_MODEL_GLOBAL_DYNAMIC)
2730 -ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec] Set the default thread-local storage code generation model.
2733 Name(tls_model) Type(enum tls_model) UnknownError(unknown TLS model %qs)
2736 Enum(tls_model) String(global-dynamic) Value(TLS_MODEL_GLOBAL_DYNAMIC)
2739 Enum(tls_model) String(local-dynamic) Value(TLS_MODEL_LOCAL_DYNAMIC)
2742 Enum(tls_model) String(initial-exec) Value(TLS_MODEL_INITIAL_EXEC)
2745 Enum(tls_model) String(local-exec) Value(TLS_MODEL_LOCAL_EXEC)
2748 Common Var(flag_toplevel_reorder) Init(2) Optimization
2749 Reorder top level functions, variables, and asms.
2752 Common Var(flag_tracer) Optimization
2753 Perform superblock formation via tail duplication.
2756 Common Var(flag_trampolines) Init(0)
2757 For targets that normally need trampolines for nested functions, always
2758 generate them instead of using descriptors.
2760 ; Zero means that floating-point math operations cannot generate a
2761 ; (user-visible) trap. This is the case, for example, in nonstop
2762 ; IEEE 754 arithmetic.
2764 Common Var(flag_trapping_math) Init(1) Optimization SetByCombined
2765 Assume floating-point operations can trap.
2768 Common Var(flag_trapv) Optimization
2769 Trap for signed overflow in addition, subtraction and multiplication.
2772 Common Var(flag_tree_ccp) Optimization
2773 Enable SSA-CCP optimization on trees.
2776 Common Var(flag_tree_bit_ccp) Optimization
2777 Enable SSA-BIT-CCP optimization on trees.
2781 Does nothing. Preserved for backward compatibility.
2784 Common Var(flag_tree_ch) Optimization
2785 Enable loop header copying on trees.
2787 ftree-coalesce-inlined-vars
2788 Common Ignore RejectNegative
2789 Does nothing. Preserved for backward compatibility.
2792 Common Var(flag_tree_coalesce_vars) Optimization
2793 Enable SSA coalescing of user variables.
2797 Does nothing. Preserved for backward compatibility.
2800 Common Var(flag_tree_copy_prop) Optimization
2801 Enable copy propagation on trees.
2803 ftree-store-copy-prop
2805 Does nothing. Preserved for backward compatibility.
2808 Common Var(flag_tree_cselim) Optimization
2809 Transform condition stores into unconditional ones.
2811 ftree-switch-conversion
2812 Common Var(flag_tree_switch_conversion) Optimization
2813 Perform conversions of switch initializations.
2816 Common Var(flag_tree_dce) Optimization
2817 Enable SSA dead code elimination optimization on trees.
2819 ftree-dominator-opts
2820 Common Var(flag_tree_dom) Optimization
2821 Enable dominator optimizations.
2824 Common Var(flag_tree_tail_merge) Optimization
2825 Enable tail merging on trees.
2828 Common Var(flag_tree_dse) Optimization
2829 Enable dead store elimination.
2832 Common Var(flag_tree_forwprop) Init(1) Optimization
2833 Enable forward propagation on trees.
2836 Common Var(flag_tree_fre) Optimization
2837 Enable Full Redundancy Elimination (FRE) on trees.
2840 Common Var(flag_optimize_strlen) Optimization
2841 Enable string length optimizations on trees.
2843 fisolate-erroneous-paths-dereference
2844 Common Var(flag_isolate_erroneous_paths_dereference) Optimization
2845 Detect paths that trigger erroneous or undefined behavior due to
2846 dereferencing a null pointer. Isolate those paths from the main control
2847 flow and turn the statement with erroneous or undefined behavior into a trap.
2849 fisolate-erroneous-paths-attribute
2850 Common Var(flag_isolate_erroneous_paths_attribute) Optimization
2851 Detect paths that trigger erroneous or undefined behavior due to a null value
2852 being used in a way forbidden by a returns_nonnull or nonnull
2853 attribute. Isolate those paths from the main control flow and turn the
2854 statement with erroneous or undefined behavior into a trap.
2856 ftree-loop-distribution
2857 Common Var(flag_tree_loop_distribution) Optimization
2858 Enable loop distribution on trees.
2860 ftree-loop-distribute-patterns
2861 Common Var(flag_tree_loop_distribute_patterns) Optimization
2862 Enable loop distribution for patterns transformed into a library call.
2865 Common Var(flag_tree_loop_im) Init(1) Optimization
2866 Enable loop invariant motion on trees.
2869 Common Alias(floop-nest-optimize)
2870 Enable loop nest transforms. Same as -floop-nest-optimize.
2873 Common Var(flag_tree_loop_ivcanon) Init(1) Optimization
2874 Create canonical induction variables in loops.
2877 Common Var(flag_tree_loop_optimize) Init(1) Optimization
2878 Enable loop optimizations on tree level.
2880 ftree-parallelize-loops=
2881 Common Joined RejectNegative UInteger Var(flag_tree_parallelize_loops) Init(1) Optimization
2882 -ftree-parallelize-loops=<number> Enable automatic parallelization of loops.
2885 Common Var(flag_tree_phiprop) Init(1) Optimization
2886 Enable hoisting loads from conditional pointers.
2889 Common Var(flag_tree_pre) Optimization
2890 Enable SSA-PRE optimization on trees.
2893 Common Var(flag_tree_partial_pre) Optimization
2894 In SSA-PRE optimization on trees, enable partial-partial redundancy elimination.
2897 Common Var(flag_tree_pta) Optimization
2898 Perform function-local points-to analysis on trees.
2901 Common Var(flag_tree_reassoc) Init(1) Optimization
2902 Enable reassociation on tree level.
2906 Does nothing. Preserved for backward compatibility.
2909 Common Var(flag_tree_sink) Optimization
2910 Enable SSA code sinking on trees.
2913 Common Var(flag_tree_slsr) Optimization
2914 Perform straight-line strength reduction.
2917 Common Var(flag_tree_sra) Optimization
2918 Perform scalar replacement of aggregates.
2921 Common Var(flag_tree_ter) Optimization
2922 Replace temporary expressions in the SSA->normal pass.
2925 Common Var(flag_tree_live_range_split) Optimization
2926 Perform live range splitting during the SSA->normal pass.
2929 Common Var(flag_tree_vrp) Init(0) Optimization
2930 Perform Value Range Propagation on trees.
2933 Common Var(flag_split_paths) Init(0) Optimization
2934 Split paths leading to loop backedges.
2936 funconstrained-commons
2937 Common Var(flag_unconstrained_commons) Optimization
2938 Assume common declarations may be overridden with ones with a larger
2942 Common Var(flag_unit_at_a_time) Init(1)
2943 Compile whole compilation unit at a time.
2946 Common Var(flag_unroll_loops) Optimization EnabledBy(funroll-all-loops)
2947 Perform loop unrolling when iteration count is known.
2950 Common Var(flag_unroll_all_loops) Optimization
2951 Perform loop unrolling for all loops.
2953 funroll-completely-grow-size
2954 Undocumented Var(flag_cunroll_grow_size) Optimization
2955 ; Internal undocumented flag, allow size growth during complete unrolling
2957 ; Nonzero means that loop optimizer may assume that the induction variables
2958 ; that control loops do not overflow and that the loops with nontrivial
2959 ; exit condition are not infinite
2960 funsafe-loop-optimizations
2962 Does nothing. Preserved for backward compatibility.
2965 Common Var(flag_associative_math) SetByCombined Optimization
2966 Allow optimization for floating-point arithmetic which may change the
2967 result of the operation due to rounding.
2970 Common Var(flag_reciprocal_math) SetByCombined Optimization
2971 Same as -fassociative-math for expressions which include division.
2973 ; Nonzero means that unsafe floating-point math optimizations are allowed
2974 ; for the sake of speed. IEEE compliance is not guaranteed, and operations
2975 ; are allowed to assume that their arguments and results are "normal"
2976 ; (e.g., nonnegative for SQRT).
2977 funsafe-math-optimizations
2978 Common Var(flag_unsafe_math_optimizations) Optimization SetByCombined
2979 Allow math optimizations that may violate IEEE or ISO standards.
2982 Common Var(flag_unswitch_loops) Optimization
2983 Perform loop unswitching.
2986 Common Var(flag_split_loops) Optimization
2987 Perform loop splitting.
2989 fversion-loops-for-strides
2990 Common Var(flag_version_loops_for_strides) Optimization
2991 Version loops based on whether indices have a stride of one.
2994 Common Var(flag_unwind_tables) Optimization
2995 Just generate unwind tables for exception handling.
2998 Common Driver Negative(fuse-ld=gold)
2999 Use the bfd linker instead of the default linker.
3002 Common Driver Negative(fuse-ld=bfd)
3003 Use the gold linker instead of the default linker.
3006 Common Driver Negative(fuse-ld=lld)
3007 Use the lld LLVM linker instead of the default linker.
3010 Common Undocumented Var(flag_use_linker_plugin)
3012 ; Positive if we should track variables, negative if we should run
3013 ; the var-tracking pass only to discard debug annotations, zero if
3014 ; we're not to run it.
3016 Common Var(flag_var_tracking) PerFunction EnabledBy(fvar-tracking-uninit)
3017 Perform variable tracking.
3019 ; Positive if we should track variables at assignments, negative if
3020 ; we should run the var-tracking pass only to discard debug
3022 fvar-tracking-assignments
3023 Common Var(flag_var_tracking_assignments) PerFunction
3024 Perform variable tracking by annotating assignments.
3026 ; Nonzero if we should toggle flag_var_tracking_assignments after
3027 ; processing options and computing its default. */
3028 fvar-tracking-assignments-toggle
3029 Common Var(flag_var_tracking_assignments_toggle) PerFunction
3030 Toggle -fvar-tracking-assignments.
3032 ; Positive if we should track uninitialized variables, negative if
3033 ; we should run the var-tracking pass only to discard debug
3035 fvar-tracking-uninit
3036 Common Var(flag_var_tracking_uninit) PerFunction
3037 Perform variable tracking and also tag variables that are uninitialized.
3039 ; Alias to enable both -ftree-loop-vectorize and -ftree-slp-vectorize.
3041 Common Var(flag_tree_vectorize) Optimization
3042 Enable vectorization on trees.
3044 ftree-vectorizer-verbose=
3045 Common Joined RejectNegative Ignore
3046 Does nothing. Preserved for backward compatibility.
3048 ftree-loop-vectorize
3049 Common Var(flag_tree_loop_vectorize) Optimization EnabledBy(ftree-vectorize)
3050 Enable loop vectorization on trees.
3053 Common Var(flag_tree_slp_vectorize) Optimization EnabledBy(ftree-vectorize)
3054 Enable basic block vectorization (SLP) on trees.
3057 Common Joined RejectNegative Enum(vect_cost_model) Var(flag_vect_cost_model) Init(VECT_COST_MODEL_DEFAULT) Optimization
3058 -fvect-cost-model=[unlimited|dynamic|cheap|very-cheap] Specifies the cost model for vectorization.
3061 Common Joined RejectNegative Enum(vect_cost_model) Var(flag_simd_cost_model) Init(VECT_COST_MODEL_UNLIMITED) Optimization
3062 -fsimd-cost-model=[unlimited|dynamic|cheap|very-cheap] Specifies the vectorization cost model for code marked with a simd directive.
3065 Name(vect_cost_model) Type(enum vect_cost_model) UnknownError(unknown vectorizer cost model %qs)
3068 Enum(vect_cost_model) String(unlimited) Value(VECT_COST_MODEL_UNLIMITED)
3071 Enum(vect_cost_model) String(dynamic) Value(VECT_COST_MODEL_DYNAMIC)
3074 Enum(vect_cost_model) String(cheap) Value(VECT_COST_MODEL_CHEAP)
3077 Enum(vect_cost_model) String(very-cheap) Value(VECT_COST_MODEL_VERY_CHEAP)
3080 Common Alias(fvect-cost-model=,dynamic,unlimited)
3081 Enables the dynamic vectorizer cost model. Preserved for backward compatibility.
3083 ftree-vect-loop-version
3085 Does nothing. Preserved for backward compatibility.
3088 Common Var(flag_tree_scev_cprop) Init(1) Optimization
3089 Enable copy propagation of scalar-evolution information.
3091 ftrivial-auto-var-init=
3092 Common Joined RejectNegative Enum(auto_init_type) Var(flag_auto_var_init) Init(AUTO_INIT_UNINITIALIZED) Optimization
3093 -ftrivial-auto-var-init=[uninitialized|pattern|zero] Add initializations to automatic variables.
3096 Name(auto_init_type) Type(enum auto_init_type) UnknownError(unrecognized automatic variable initialization type %qs)
3099 Enum(auto_init_type) String(uninitialized) Value(AUTO_INIT_UNINITIALIZED)
3102 Enum(auto_init_type) String(pattern) Value(AUTO_INIT_PATTERN)
3105 Enum(auto_init_type) String(zero) Value(AUTO_INIT_ZERO)
3107 ; -fverbose-asm causes extra commentary information to be produced in
3108 ; the generated assembly code (to make it more readable). This option
3109 ; is generally only of use to those who actually need to read the
3110 ; generated assembly code (perhaps while debugging the compiler itself).
3111 ; -fno-verbose-asm, the default, causes the extra information
3112 ; to not be added and is useful when comparing two assembler files.
3114 Common Var(flag_verbose_asm)
3115 Add extra commentary to assembler output.
3118 Common Joined RejectNegative Enum(symbol_visibility) Var(default_visibility) Init(VISIBILITY_DEFAULT)
3119 -fvisibility=[default|internal|hidden|protected] Set the default symbol visibility.
3122 Name(symbol_visibility) Type(enum symbol_visibility) UnknownError(unrecognized visibility value %qs)
3125 Enum(symbol_visibility) String(default) Value(VISIBILITY_DEFAULT)
3128 Enum(symbol_visibility) String(internal) Value(VISIBILITY_INTERNAL)
3131 Enum(symbol_visibility) String(hidden) Value(VISIBILITY_HIDDEN)
3134 Enum(symbol_visibility) String(protected) Value(VISIBILITY_PROTECTED)
3137 Common Joined RejectNegative Enum(vtv_priority) Var(flag_vtable_verify) Init(VTV_NO_PRIORITY)
3138 Validate vtable pointers before using them.
3141 Name(vtv_priority) Type(enum vtv_priority) UnknownError(unknown vtable verify initialization priority %qs)
3144 Enum(vtv_priority) String(none) Value(VTV_NO_PRIORITY)
3147 Enum(vtv_priority) String(std) Value(VTV_STANDARD_PRIORITY)
3150 Enum(vtv_priority) String(preinit) Value(VTV_PREINIT_PRIORITY)
3153 Common Var(flag_vtv_counts)
3154 Output vtable verification counters.
3157 Common Var(flag_vtv_debug)
3158 Output vtable verification pointer sets information.
3161 Common Var(flag_value_profile_transformations) Optimization
3162 Use expression value profiles in optimizations.
3165 Common Var(flag_web) Optimization EnabledBy(funroll-loops)
3166 Construct webs and split unrelated uses of single variable.
3168 ftree-builtin-call-dce
3169 Common Var(flag_tree_builtin_call_dce) Init(0) Optimization
3170 Enable conditional dead code elimination for builtin calls.
3173 Common Var(flag_whole_program) Init(0)
3174 Perform whole program optimizations.
3177 Common Var(flag_wrapv_pointer) Optimization
3178 Assume pointer overflow wraps around.
3181 Common Var(flag_wrapv) Optimization
3182 Assume signed arithmetic overflow wraps around.
3184 fzero-initialized-in-bss
3185 Common Var(flag_zero_initialized_in_bss) Init(1)
3186 Put zero initialized data in the bss section.
3188 fzero-call-used-regs=
3189 Common RejectNegative Joined
3190 Clear call-used registers upon function return.
3193 Common Driver RejectNegative JoinedOrMissing
3194 Generate debug information in default format.
3197 Common Driver Var(dwarf2out_as_loc_support)
3198 Assume assembler support for (DWARF2+) .loc directives.
3201 Common Driver Var(dwarf2out_as_locview_support)
3202 Assume assembler support for view in (DWARF2+) .loc directives.
3205 Common Driver WarnRemoved
3206 Does nothing. Preserved for backward compatibility.
3209 Common Driver WarnRemoved
3210 Does nothing. Preserved for backward compatibility.
3213 Common Driver WarnRemoved
3214 Does nothing. Preserved for backward compatibility.
3217 Common Driver WarnRemoved
3218 Does nothing. Preserved for backward compatibility.
3221 Common Driver Var(debug_column_info,1) Init(1)
3222 Record DW_AT_decl_column and DW_AT_call_column in DWARF.
3224 ; The CTF generation process feeds off DWARF dies. This option implicitly
3225 ; updates the debug_info_level to DINFO_LEVEL_NORMAL.
3227 Common Driver RejectNegative JoinedOrMissing
3228 Generate CTF debug information at default level.
3231 Common Driver RejectNegative JoinedOrMissing
3232 Generate BTF debug information at default level.
3235 Common Driver JoinedOrMissing Negative(gdwarf-)
3236 Generate debug information in default version of DWARF format.
3239 Common Driver Joined UInteger Var(dwarf_version) Init(5) Negative(gstabs)
3240 Generate debug information in DWARF v2 (or later) format.
3243 Common Driver Var(dwarf_offset_size,4) Init(4) RejectNegative
3244 Use 32-bit DWARF format when emitting DWARF debug information.
3247 Common Driver Var(dwarf_offset_size,8) RejectNegative
3248 Use 64-bit DWARF format when emitting DWARF debug information.
3251 Common Driver JoinedOrMissing
3252 Generate debug information in default extended format.
3255 Common Driver Var(debug_inline_points)
3256 Generate extended entry point information for inlined functions.
3258 ginternal-reset-location-views
3259 Common Driver Var(debug_internal_reset_location_views) Init(2)
3260 Compute locview reset points based on insn length estimates.
3263 RejectNegative Joined Undocumented
3264 ; Catch the gno- prefix, so it doesn't backtrack to g<level>.
3267 Common Driver Negative(gpubnames) Var(debug_generate_pub_sections, 0) Init(-1)
3268 Don't generate DWARF pubnames and pubtypes sections.
3271 Common Driver Negative(ggnu-pubnames) Var(debug_generate_pub_sections, 1)
3272 Generate DWARF pubnames and pubtypes sections.
3275 Common Driver Negative(gno-pubnames) Var(debug_generate_pub_sections, 2)
3276 Generate DWARF pubnames and pubtypes sections with GNU extensions.
3278 grecord-gcc-switches
3279 Common Driver Var(dwarf_record_gcc_switches) Init(1)
3280 Record gcc command line switches in DWARF DW_AT_producer.
3283 Common Driver Var(dwarf_split_debug_info) Init(0)
3284 Generate debug information in separate .dwo files.
3287 Common Driver JoinedOrMissing Negative(gstabs+)
3288 Generate debug information in STABS format.
3291 Common Driver JoinedOrMissing Negative(gvms)
3292 Generate debug information in extended STABS format.
3294 gstatement-frontiers
3295 Common Driver Var(debug_nonbind_markers_p) PerFunction
3296 Emit progressive recommended breakpoint locations.
3299 Common Driver Var(dwarf_strict) Init(0)
3300 Don't emit DWARF additions beyond selected version.
3303 Common Driver Var(flag_describe_dies) Init(0)
3304 Add description attributes to some DWARF DIEs that have no name attribute.
3307 Common Driver Var(flag_gtoggle)
3308 Toggle debug information generation.
3310 gvariable-location-views
3311 Common Driver Var(debug_variable_location_views, 1)
3312 Augment variable location lists with progressive views.
3314 gvariable-location-views=incompat5
3315 Common Driver RejectNegative Var(debug_variable_location_views, -1) Init(2)
3318 Common Driver JoinedOrMissing Negative(gxcoff)
3319 Generate debug information in VMS format.
3322 Common Driver JoinedOrMissing Negative(gxcoff+)
3323 Generate debug information in XCOFF format.
3326 Common Driver JoinedOrMissing Negative(gdwarf)
3327 Generate debug information in extended XCOFF format.
3330 Name(compressed_debug_sections) Type(int)
3332 ; Since -gz= is completely handled in specs, the values aren't used and we
3333 ; assign arbitrary constants.
3335 Enum(compressed_debug_sections) String(none) Value(0)
3338 Enum(compressed_debug_sections) String(zlib) Value(1)
3341 Enum(compressed_debug_sections) String(zlib-gnu) Value(2)
3345 Generate compressed debug sections.
3348 Common Driver RejectNegative Joined Enum(compressed_debug_sections)
3349 -gz=<format> Generate compressed debug sections in format <format>.
3352 Driver Joined Separate
3355 Common Joined Var(plugindir_string) Init(0)
3356 -iplugindir=<dir> Set <dir> to be the default plugin directory.
3359 Common Joined Separate RejectDriver Var(imultiarch) Init(0)
3360 -imultiarch <dir> Set <dir> to be the multiarch include subdirectory.
3363 Driver Joined Separate
3368 no-canonical-prefixes
3384 Common Driver Joined Separate Var(asm_file_name) MissingArgError(missing filename after %qs)
3385 -o <file> Place output into <file>.
3388 Common Var(profile_flag)
3389 Enable function profiling.
3392 Driver Var(pass_exit_codes)
3395 Common Alias(Wpedantic)
3398 Common Var(flag_pedantic_errors)
3399 Like -pedantic but issue them as errors.
3405 Driver Var(use_pipes)
3408 Driver JoinedOrMissing Var(print_file_name)
3410 print-libgcc-file-name
3413 print-multi-directory
3414 Driver Var(print_multi_directory)
3417 Driver Var(print_multi_lib)
3419 print-multi-os-directory
3420 Driver Var(print_multi_os_directory)
3423 Driver Var(print_multiarch)
3426 Driver JoinedOrMissing Var(print_prog_name)
3429 Driver Var(print_search_dirs)
3432 Driver Var(print_sysroot)
3434 print-sysroot-headers-suffix
3435 Driver Var(print_sysroot_headers_suffix)
3438 Common Var(quiet_flag) RejectDriver
3439 Do not display functions compiled or elapsed time.
3457 Driver Var(report_times)
3460 Driver JoinedOrMissing
3463 Driver Joined Separate
3467 ; C option, but driver must not handle as "-u ndef".
3470 Common Driver Var(verbose_flag)
3471 Enable verbose output.
3474 Common Var(version_flag) RejectDriver
3475 Display the compiler's version.
3478 Common Var(inhibit_warnings)
3482 Driver Separate Var(wrapper_string)
3485 Driver Joined Separate
3488 Driver RejectNegative Negative(static-pie)
3489 Create a shared library.
3495 Driver Separate Alias(specs=)
3508 ; Documented for Fortran, but always accepted by driver.
3515 ; Documented for Go, but always accepted by driver.
3536 Driver RejectNegative Negative(shared)
3537 Don't create a dynamically linked position independent executable.
3540 Driver RejectNegative Negative(no-pie)
3541 Create a dynamically linked position independent executable.
3544 Driver RejectNegative Negative(pie)
3545 Create a static position independent executable.
3548 Driver Joined Separate
3551 Common Var(flag_ipa_ra) Optimization
3552 Use caller save register across calls if possible.
3554 ; This comment is to ensure we retain the blank line above.