1 ; Options for the language- and target-independent parts of the compiler.
3 ; Copyright (C) 2003-2016 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 incrmeental linking (thus weak symbols
51 ; can still be bound).
53 int flag_incremental_link = 0
55 ; 0 means straightforward implementation of complex divide acceptable.
56 ; 1 means wide ranges of inputs must work for complex divide.
57 ; 2 means C99-like requirements for complex multiply and divide.
59 int flag_complex_method = 1
61 ; Nonzero if subexpressions must be evaluated from left-to-right.
63 int flag_evaluation_order = 0
65 ; Language specific warning pass for unused results.
67 bool flag_warn_unused_result = false
72 ; Nonzero if we should write GIMPLE bytecode for link-time optimization.
76 ; Nonzero if we should write GIMPLE bytecode for offload compilation.
78 int flag_generate_offload = 0
80 ; True to warn about any objects definitions whose size is larger
81 ; than N bytes. Also want about function definitions whose returned
82 ; values are larger than N bytes, where N is 'larger_than_size'.
87 HOST_WIDE_INT larger_than_size
89 ; True to warn about any function whose frame size is larger
92 bool warn_frame_larger_than
95 HOST_WIDE_INT frame_larger_than_size
97 ; Nonzero means we should be saving declaration info into a .X file.
99 int flag_gen_aux_info = 0
101 ; Nonzero if we are compiling code for a shared library, zero for
106 ; These two are really VEC(char_p,heap) *.
109 void *flag_instrument_functions_exclude_functions
112 void *flag_instrument_functions_exclude_files
114 ; Generic structs (e.g. templates not explicitly specialized)
115 ; may not have a compilation unit associated with them, and so
116 ; may need to be treated differently from ordinary structs.
118 ; Structs only handled by reference (indirectly), will also usually
119 ; not need as much debugging information.
122 enum debug_struct_file debug_struct_ordinary[DINFO_USAGE_NUM_ENUMS] = { DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY }
125 enum debug_struct_file debug_struct_generic[DINFO_USAGE_NUM_ENUMS] = { DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY }
127 ; True if we should exit after parsing options.
129 bool exit_after_options
131 ; Type(s) of debugging information we are producing (if any). See
132 ; flag-types.h for the definitions of the different possible types of
133 ; debugging information.
135 enum debug_info_type write_symbols = NO_DEBUG
137 ; Level of debugging information we are producing. See flag-types.h
138 ; for the definitions of the different possible levels.
140 enum debug_info_levels debug_info_level = DINFO_LEVEL_NONE
142 ; Nonzero means use GNU-only extensions in the generated symbolic
143 ; debugging information. Currently, this only has an effect when
144 ; write_symbols is set to DBX_DEBUG, XCOFF_DEBUG, or DWARF_DEBUG.
146 bool use_gnu_debug_info_extensions
148 ; Original value of maximum field alignment in bytes, specified via
149 ; -fpack-struct=<value>.
151 unsigned int initial_max_fld_align = TARGET_DEFAULT_PACK_STRUCT
153 ; Type of stack check.
155 enum stack_check_type flag_stack_check = NO_STACK_CHECK
157 ; True if stack usage information needs to be computed.
159 bool flag_stack_usage_info = false
161 ; -dA causes debug commentary information to be produced in
162 ; the generated assembly code (to make it more readable). This option
163 ; is generally only of use to those who actually need to read the
164 ; generated assembly code (perhaps while debugging the compiler itself).
165 ; Currently, this switch is only used by dwarf2out.c; however, it is intended
166 ; to be a catchall for printing debug information in the assembler file.
171 ; Balance between GNAT encodings and standard DWARF to emit.
173 enum dwarf_gnat_encodings gnat_encodings = DWARF_GNAT_ENCODINGS_DEFAULT
175 ; -dP causes the rtl to be emitted as a comment in assembly.
177 int flag_dump_rtl_in_asm
179 ; Whether -da was passed (used only in handle_common_deferred_options).
181 bool flag_dump_all_passed
183 ; Other flags saying which kinds of debugging dump have been requested.
186 int rtl_dump_and_exit
189 int flag_print_asm_name
191 ; Name of top-level original source file (what was input to cpp).
192 ; This comes from the #-command at the beginning of the actual input.
193 ; If there isn't any there, then this is the cc1 input file name.
195 const char *main_input_filename
197 ; Pointer to base name in main_input_filename, with directories and a
198 ; single final extension removed, and the length of this base
202 const char *main_input_basename
205 int main_input_baselength
207 ; Which options have been printed by --help.
211 ; Which enums have been printed by --help. 0 = not printed, no
212 ; relevant options seen, 1 = relevant option seen, not yet printed, 2
215 char *help_enum_printed
217 ; The number of columns for --help output.
219 unsigned int help_columns
221 ; Whether this options structure has been through finish_options
223 bool flag_opts_finished
225 ; What the sanitizer should instrument
227 unsigned int flag_sanitize
229 ; What sanitizers should recover from errors
231 unsigned int flag_sanitize_recover = SANITIZE_UNDEFINED | SANITIZE_NONDEFAULT | SANITIZE_KERNEL_ADDRESS
233 fsanitize-coverage=trace-pc
234 Common Report Var(flag_sanitize_coverage)
235 Enable coverage-guided fuzzing code instrumentation.
236 Inserts call to __sanitizer_cov_trace_pc into every basic block.
238 ; Flag whether a prefix has been added to dump_base_name
240 bool dump_base_name_prefixed = false
242 ; Flag whether HSA generation has been explicitely disabled
244 bool flag_disable_hsa = false
256 Driver Alias(coverage)
262 Common Separate Alias(d)
265 Common Joined Alias(d)
268 Common Separate Alias(dumpbase)
271 Common Separate Alias(dumpdir)
274 Driver Separate Alias(e)
277 Driver Joined Alias(e)
280 Common Warning Alias(Wextra)
283 Driver Separate Alias(Xassembler)
286 Driver JoinedOrMissing Alias(Xassembler)
289 Driver Separate Alias(Xlinker)
292 Driver JoinedOrMissing Alias(Xlinker)
295 Driver Separate Alias(u)
298 Driver Joined Alias(u)
301 Common Driver Var(help_flag)
302 Display this information.
305 Common Driver Report Joined
306 --help=<class> Display descriptions of a specific class of options. <class> is one or more of optimizers, target, warnings, undocumented, params.
309 Driver Separate Alias(x)
312 Driver Joined Alias(x)
315 Driver Separate Alias(L)
318 Driver Joined Alias(L)
320 -no-canonical-prefixes
321 Driver Alias(no-canonical-prefixes)
323 -no-standard-libraries
324 Driver Alias(nostdlib)
327 Driver Var(no_sysroot_suffix)
336 Common Driver Separate Alias(o) MissingArgError(missing filename after %qs)
339 Common Driver Joined Alias(o) MissingArgError(missing filename after %qs)
342 Driver Alias(pass-exit-codes)
345 Common Alias(Wpedantic)
348 Common Alias(pedantic-errors)
357 Driver Separate Alias(B)
360 Driver JoinedOrMissing Alias(B)
366 Driver Separate Alias(print-file-name=)
369 Driver JoinedOrMissing Alias(print-file-name=)
371 -print-libgcc-file-name
372 Driver Alias(print-libgcc-file-name)
374 -print-multi-directory
375 Driver Alias(print-multi-directory)
378 Driver Alias(print-multi-lib)
380 -print-multi-os-directory
381 Driver Alias(print-multi-os-directory)
384 Driver Alias(print-multiarch)
387 Driver Separate Alias(print-prog-name=)
390 Driver JoinedOrMissing Alias(print-prog-name=)
393 Driver Alias(print-search-dirs)
396 Driver Alias(print-sysroot)
398 -print-sysroot-headers-suffix
399 Driver Alias(print-sysroot-headers-suffix)
405 Driver Alias(save-temps)
411 Driver Separate Alias(specs=)
414 Driver Joined Alias(specs=)
420 Driver Alias(symbolic)
424 Alias for --help=target.
432 ;; The driver used to convert options such as --help into forms such
433 ;; as -fhelp; the following four entries are for compatibility with
434 ;; any direct uses of those (undocumented) -f forms
436 Common Driver Alias(-help)
439 Common Driver Joined Alias(-help=)
442 Common Driver Alias(-target-help)
445 Common Driver Alias(-version)
449 --param <param>=<value> Set parameter <param> to value. See below for a complete list of parameters.
452 Common Joined Alias(-param)
455 Driver Separate Alias(-sysroot=)
458 Driver JoinedOrMissing
464 Driver Joined Separate
470 Driver Joined Separate
476 Common JoinedOrMissing Optimization
477 -O<number> Set optimization level to <number>.
481 Optimize for space rather than speed.
485 Optimize for speed disregarding exact standards compliance.
489 Optimize for debugging experience rather than speed or size.
501 Driver Joined Separate
507 Driver Joined Separate
528 Common RejectNegative Warning Alias(Wextra)
529 This switch is deprecated; use -Wextra instead.
532 Driver JoinedOrMissing
535 Driver JoinedOrMissing
538 Driver JoinedOrMissing
541 Common Var(warn_aggregate_return) Warning
542 Warn about returning structures, unions or arrays.
544 Waggressive-loop-optimizations
545 Common Var(warn_aggressive_loop_optimizations) Init(1) Warning
546 Warn if a loop with constant number of iterations triggers undefined behavior.
549 Common Var(warn_array_bounds) Warning
550 Warn if an array is accessed out of bounds.
553 Common Joined RejectNegative UInteger Var(warn_array_bounds) Warning
554 Warn if an array is accessed out of bounds.
557 Common Var(warn_attributes) Init(1) Warning
558 Warn about inappropriate attribute usage.
561 Common Var(warn_cast_align) Warning
562 Warn about pointer casts which increase alignment.
565 Common Var(warn_cpp) Init(1) Warning
566 Warn when a #warning directive is encountered.
568 Wdeprecated-declarations
569 Common Var(warn_deprecated_decl) Init(1) Warning
570 Warn about uses of __attribute__((deprecated)) declarations.
572 Wdisabled-optimization
573 Common Var(warn_disabled_optimization) Warning
574 Warn when an optimization pass is disabled.
577 Common Var(warnings_are_errors)
578 Treat all warnings as errors.
582 Treat specified warning as error.
585 Common Var(extra_warnings) Warning
586 Print extra (possibly unwanted) warnings.
589 Common Var(flag_fatal_errors)
590 Exit on the first error occurred.
593 Common RejectNegative Joined UInteger Warning
594 -Wframe-larger-than=<number> Warn if a function's stack frame requires more than <number> bytes.
597 Common Var(warn_free_nonheap_object) Init(1) Warning
598 Warn when attempting to free a non-heap object.
601 Common Var(warn_hsa) Init(1) Warning
602 Warn when a function cannot be expanded to HSAIL.
604 Wimplicit-fallthrough-disabled
605 Common Var(warn_implicit_fallthrough) Warning
606 Warn when a switch case falls through.
609 Common Var(warn_inline) Warning
610 Warn when an inlined function cannot be inlined.
612 Winvalid-memory-model
613 Common Var(warn_invalid_memory_model) Init(1) Warning
614 Warn when an atomic memory model parameter is known to be outside the valid range.
617 Common RejectNegative Joined Warning Undocumented Alias(Wlarger-than=)
620 Common RejectNegative Joined UInteger Warning
621 -Wlarger-than=<number> Warn if an object is larger than <number> bytes.
624 Var(warn_nonnull_compare) Warning
625 Warn if comparing pointer parameter with nonnull attribute with NULL.
628 Common Var(warn_null_dereference) Warning
629 Warn if dereferencing a NULL pointer may lead to erroneous or undefined behavior.
631 Wunsafe-loop-optimizations
632 Common Var(warn_unsafe_loop_optimizations) Warning
633 Warn if the loop cannot be optimized due to nontrivial assumptions.
636 Common Warning Alias(Wsuggest-attribute=noreturn)
639 Common Var(warn_odr_violations) Init(1) Warning
640 Warn about some C++ One Definition Rule violations during link time optimization.
643 Common Var(warn_overflow) Init(1) Warning
644 Warn about overflow in arithmetic expressions.
647 Common Var(warn_lto_type_mismatch) Init(1) Warning
648 During link time optimization warn about mismatched types of global declarations.
651 Common Var(warn_packed) Warning
652 Warn when the packed attribute has no effect on struct layout.
655 Common Var(warn_padded) Warning
656 Warn when padding is required to align structure members.
659 Common Var(pedantic) Init(0) Warning
660 Issue warnings needed for strict compliance to the standard.
663 Common Var(flag_source_abs_path) Init(0)
664 Print a absolute path to the source file.
667 Common Var(warn_return_local_addr) Init(1) Warning
668 Warn about returning a pointer/reference to a local or temporary variable.
671 Common Var(warn_shadow) Warning
672 Warn when one local variable shadows another.
675 Common Var(warn_stack_protect) Warning
676 Warn when not issuing stack smashing protection for some reason.
679 Common Joined RejectNegative UInteger Var(warn_stack_usage) Init(-1) Warning
680 Warn if stack usage might be larger than specified amount.
684 Warn about code which might break strict aliasing rules.
687 Common Joined RejectNegative UInteger Var(warn_strict_aliasing) Warning
688 Warn about code which might break strict aliasing rules.
692 Warn about optimizations that assume that signed overflow is undefined.
695 Common Joined RejectNegative UInteger Var(warn_strict_overflow) Warning
696 Warn about optimizations that assume that signed overflow is undefined.
698 Wsuggest-attribute=const
699 Common Var(warn_suggest_attribute_const) Warning
700 Warn about functions which might be candidates for __attribute__((const)).
702 Wsuggest-attribute=pure
703 Common Var(warn_suggest_attribute_pure) Warning
704 Warn about functions which might be candidates for __attribute__((pure)).
706 Wsuggest-attribute=noreturn
707 Common Var(warn_suggest_attribute_noreturn) Warning
708 Warn about functions which might be candidates for __attribute__((noreturn)).
711 Common Var(warn_suggest_final_types) Warning
712 Warn about C++ polymorphic types where adding final keyword would improve code quality.
714 Wsuggest-final-methods
715 Common Var(warn_suggest_final_methods) Warning
716 Warn about C++ virtual methods where adding final keyword would improve code quality.
719 Common Var(warn_switch_unreachable) Warning EnabledBy(Wextra)
720 Warn about statements between switch's controlling expression and the first
724 Common Var(warn_system_headers) Warning
725 Do not suppress warnings from system headers.
728 Common Var(warn_trampolines) Warning
729 Warn whenever a trampoline is generated.
732 Common Var(warn_type_limits) Warning EnabledBy(Wextra)
733 Warn if a comparison is always true or always false due to the limited range of the data type.
736 Common Var(warn_uninitialized) Warning EnabledBy(Wextra)
737 Warn about uninitialized automatic variables.
740 Common Var(warn_maybe_uninitialized) Warning EnabledBy(Wuninitialized)
741 Warn about maybe uninitialized automatic variables.
744 Common Ignore Warning
745 Does nothing. Preserved for backward compatibility.
748 Common Var(warn_unused) Init(0) Warning
749 Enable all -Wunused- warnings.
751 Wunused-but-set-parameter
752 Common Var(warn_unused_but_set_parameter) Warning EnabledBy(Wunused && Wextra)
753 Warn when a function parameter is only set, otherwise unused.
755 Wunused-but-set-variable
756 Common Var(warn_unused_but_set_variable) Warning EnabledBy(Wunused)
757 Warn when a variable is only set, otherwise unused.
760 Common Var(warn_unused_function) Warning EnabledBy(Wunused)
761 Warn when a function is unused.
764 Common Var(warn_unused_label) Warning EnabledBy(Wunused)
765 Warn when a label is unused.
768 Common Var(warn_unused_parameter) Warning EnabledBy(Wunused && Wextra)
769 Warn when a function parameter is unused.
772 Common Var(warn_unused_value) Warning EnabledBy(Wunused)
773 Warn when an expression value is unused.
776 Common Var(warn_unused_variable) Warning EnabledBy(Wunused)
777 Warn when a variable is unused.
780 Common Var(warn_coverage_mismatch) Init(1) Warning
781 Warn in case profiles in -fprofile-use do not match.
783 Wvector-operation-performance
784 Common Var(warn_vector_operation_performance) Warning
785 Warn when a vector operation is compiled outside the SIMD.
800 Common Separate Var(aux_info_file_name)
801 -aux-info <file> Emit declaration information into <file>.
804 Common Joined Alias(aux-info)
807 Common Separate RejectDriver Var(aux_base_name)
810 Common Separate RejectDriver
820 -d<letters> Enable dumps from specific passes of the compiler.
823 Common Separate Var(dump_base_name)
824 -dumpbase <file> Set the file basename to be used for dumps.
827 Common Separate Var(dump_dir_name)
828 -dumpdir <dir> Set the directory name to be used for dumps.
840 Driver Joined Separate
842 ; This option has historically been passed down to the linker by an
843 ; accident of a %{e*} spec, so ensure it continues to be passed down
844 ; as a single option. The supported option for this purpose is
845 ; -rdynamic. See PR 47390.
849 ; The version of the C++ ABI in use. The following values are allowed:
851 ; 0: The version of the ABI believed most conformant with the C++ ABI
852 ; specification. This ABI may change as bugs are discovered and fixed.
853 ; Therefore, 0 will not necessarily indicate the same ABI in different
856 ; 1: The version of the ABI first used in G++ 3.2. No longer selectable.
858 ; 2: The version of the ABI first used in G++ 3.4, and the default
861 ; 3: The version of the ABI that fixes the missing underscore
862 ; in template non-type arguments of pointer type.
864 ; 4: The version of the ABI that introduces unambiguous mangling of
865 ; vector types. First selectable in G++ 4.5.
867 ; 5: The version of the ABI that ignores attribute const/noreturn
868 ; in function pointer mangling, and corrects mangling of decltype and
869 ; function parameters used in other parameters and the return type.
870 ; First selectable in G++ 4.6.
872 ; 6: The version of the ABI that doesn't promote scoped enums to int and
873 ; changes the mangling of template argument packs, const/static_cast,
874 ; prefix ++ and --, and a class scope function used as a template
876 ; First selectable in G++ 4.7.
878 ; 7: The version of the ABI that treats nullptr_t as a builtin type and
879 ; corrects the mangling of lambdas in default argument scope.
880 ; First selectable in G++ 4.8.
882 ; 8: The version of the ABI that corrects the substitution behavior of
883 ; function types with function-cv-qualifiers.
884 ; First selectable in G++ 4.9 and default in G++ 5.
886 ; 9: The version of the ABI that corrects the alignment of nullptr_t.
887 ; First selectable and default in G++ 5.2.
889 ; 10: The version of the ABI that mangles attributes that affect type
890 ; identity, such as ia32 calling convention attributes (stdcall, etc.)
891 ; Default in G++ 6 (set in c_common_post_options).
893 ; Additional positive integers will be assigned as new versions of
894 ; the ABI become the default version of the ABI.
896 Common Joined RejectNegative UInteger Var(flag_abi_version) Init(0)
897 The version of the C++ ABI in use.
899 faggressive-loop-optimizations
900 Common Report Var(flag_aggressive_loop_optimizations) Optimization Init(1)
901 Aggressively optimize loops using language constraints.
904 Common Report Var(align_functions,0) Optimization UInteger
905 Align the start of functions.
908 Common RejectNegative Joined UInteger Var(align_functions)
911 Common Report Var(align_jumps,0) Optimization UInteger
912 Align labels which are only reached by jumping.
915 Common RejectNegative Joined UInteger Var(align_jumps)
918 Common Report Var(align_labels,0) Optimization UInteger
922 Common RejectNegative Joined UInteger Var(align_labels)
925 Common Report Var(align_loops,0) Optimization UInteger
926 Align the start of loops.
929 Common RejectNegative Joined UInteger Var(align_loops)
933 Does nothing. Preserved for backward compatibility.
937 Does nothing. Preserved for backward compatibility.
939 fargument-noalias-global
941 Does nothing. Preserved for backward compatibility.
943 fargument-noalias-anything
945 Does nothing. Preserved for backward compatibility.
948 Common Driver Report Joined
949 Select what to sanitize.
952 Common Joined RejectNegative Var(common_deferred_options) Defer
953 -fasan-shadow-offset=<number> Use custom shadow memory offset.
956 Common Joined RejectNegative Var(common_deferred_options) Defer
957 -fsanitize-sections=<sec1,sec2,...> Sanitize global variables
958 in user-defined sections.
962 After diagnosing undefined behavior attempt to continue execution.
966 This switch is deprecated; use -fsanitize-recover= instead.
968 fsanitize-address-use-after-scope
969 Common Driver Report Var(flag_sanitize_address_use_after_scope) Init(0)
971 fsanitize-undefined-trap-on-error
972 Common Driver Report Var(flag_sanitize_undefined_trap_on_error) Init(0)
973 Use trap instead of a library function for undefined behavior sanitization.
975 fasynchronous-unwind-tables
976 Common Report Var(flag_asynchronous_unwind_tables) Optimization
977 Generate unwind tables that are exact at each instruction boundary.
980 Common Report Var(flag_auto_inc_dec) Init(1) Optimization
981 Generate auto-inc/dec instructions.
984 Common Report Var(flag_auto_profile)
985 Use sample profile information for call graph node weights. The default
986 profile file is fbdata.afdo in 'pwd'.
989 Common Joined RejectNegative Var(auto_profile_file)
990 Use sample profile information for call graph node weights. The profile
991 file is specified in the argument.
993 ; -fcheck-bounds causes gcc to generate array bounds checks.
994 ; For C, C++ and ObjC: defaults off.
995 ; For Java: defaults to on.
996 ; For Fortran: defaults to off.
998 Common Report Var(flag_bounds_check)
999 Generate code to check bounds before indexing arrays.
1002 Common Report Var(flag_branch_on_count_reg) Optimization
1003 Replace add, compare, branch with branch on count register.
1005 fbranch-probabilities
1006 Common Report Var(flag_branch_probabilities) Optimization
1007 Use profiling information for branch probabilities.
1009 fbranch-target-load-optimize
1010 Common Report Var(flag_branch_target_load_optimize) Optimization
1011 Perform branch target load optimization before prologue / epilogue threading.
1013 fbranch-target-load-optimize2
1014 Common Report Var(flag_branch_target_load_optimize2) Optimization
1015 Perform branch target load optimization after prologue / epilogue threading.
1018 Common Report Var(flag_btr_bb_exclusive) Optimization
1019 Restrict target load migration not to re-use registers in any basic block.
1022 Common Joined RejectNegative Var(common_deferred_options) Defer
1023 -fcall-saved-<register> Mark <register> as being preserved across functions.
1026 Common Joined RejectNegative Var(common_deferred_options) Defer
1027 -fcall-used-<register> Mark <register> as being corrupted by function calls.
1029 ; Nonzero for -fcaller-saves: allocate values in regs that need to
1030 ; be saved across function calls, if that produces overall better code.
1031 ; Optional now, so people can test it.
1033 Common Report Var(flag_caller_saves) Optimization
1034 Save registers around function calls.
1037 Common Report Var(flag_check_data_deps)
1038 This switch is deprecated; do not use.
1041 Common Var(flag_check_new)
1042 Check the return value of new in C++.
1045 Common Var(flag_checking) Init(CHECKING_P)
1046 Perform internal consistency checkings.
1048 fcombine-stack-adjustments
1049 Common Report Var(flag_combine_stack_adjustments) Optimization
1050 Looks for opportunities to reduce stack adjustments and stack references.
1053 Common Report Var(flag_no_common,0)
1054 Do not put uninitialized globals in the common section.
1058 ; Converted by the driver to -fcompare-debug= options.
1061 Common Driver JoinedOrMissing RejectNegative Var(flag_compare_debug_opt)
1062 -fcompare-debug[=<opts>] Compile with and without e.g. -gtoggle, and compare the final-insns dump.
1064 fcompare-debug-second
1065 Common Driver RejectNegative Var(flag_compare_debug)
1066 Run only the second compilation of -fcompare-debug.
1069 Common Report Var(flag_compare_elim_after_reload) Optimization
1070 Perform comparison elimination after register allocation has finished.
1073 Common Var(flag_conserve_stack) Optimization
1074 Do not perform optimizations increasing noticeably stack usage.
1077 Common Report Var(flag_cprop_registers) Optimization
1078 Perform a register copy-propagation optimization pass.
1081 Common Report Var(flag_crossjumping) Optimization
1082 Perform cross-jumping optimization.
1085 Common Report Var(flag_cse_follow_jumps) Optimization
1086 When running CSE, follow jumps to their targets.
1090 Does nothing. Preserved for backward compatibility.
1093 Common Report Var(flag_cx_limited_range) Optimization SetByCombined
1094 Omit range reduction step when performing complex division.
1097 Common Report Var(flag_cx_fortran_rules) Optimization
1098 Complex multiplication and division follow Fortran rules.
1101 Common Report Var(flag_data_sections)
1102 Place data items into their own section.
1105 Common Report Var(common_deferred_options) Defer
1106 List all available debugging counters with their limits and counts.
1109 Common RejectNegative Joined Var(common_deferred_options) Defer
1110 -fdbg-cnt=<counter>:<limit>[,<counter>:<limit>,...] Set the debug counter limit.
1113 Common Joined RejectNegative Var(common_deferred_options) Defer
1114 Map one directory name to another in debug information.
1116 fdebug-types-section
1117 Common Report Var(flag_debug_types_section) Init(0)
1118 Output .debug_types section when using DWARF v4 debuginfo.
1120 ; Nonzero for -fdefer-pop: don't pop args after each function call
1121 ; instead save them up to pop many calls' args with one insns.
1123 Common Report Var(flag_defer_pop) Optimization
1124 Defer popping functions args from stack until later.
1127 Common Report Var(flag_delayed_branch) Optimization
1128 Attempt to fill delay slots of branch instructions.
1130 fdelete-dead-exceptions
1131 Common Report Var(flag_delete_dead_exceptions) Init(0) Optimization
1132 Delete dead instructions that may throw exceptions.
1134 fdelete-null-pointer-checks
1135 Common Report Var(flag_delete_null_pointer_checks) Init(-1) Optimization
1136 Delete useless null pointer checks.
1138 fdevirtualize-at-ltrans
1139 Common Report Var(flag_ltrans_devirtualize)
1140 Stream extra data to support more aggressive devirtualization in LTO local transformation mode.
1142 fdevirtualize-speculatively
1143 Common Report Var(flag_devirtualize_speculatively) Optimization
1144 Perform speculative devirtualization.
1147 Common Report Var(flag_devirtualize) Optimization
1148 Try to convert virtual calls to direct ones.
1150 fdiagnostics-show-location=
1151 Common Joined RejectNegative Enum(diagnostic_prefixing_rule)
1152 -fdiagnostics-show-location=[once|every-line] How often to emit source location at the beginning of line-wrapped diagnostics.
1154 ; Required for these enum values.
1159 Name(diagnostic_prefixing_rule) Type(int)
1162 Enum(diagnostic_prefixing_rule) String(once) Value(DIAGNOSTICS_SHOW_PREFIX_ONCE)
1165 Enum(diagnostic_prefixing_rule) String(every-line) Value(DIAGNOSTICS_SHOW_PREFIX_EVERY_LINE)
1167 fdiagnostics-show-caret
1168 Common Var(flag_diagnostics_show_caret) Init(1)
1169 Show the source line with a caret indicating the column.
1172 Common Alias(fdiagnostics-color=,always,never)
1176 Driver Common Joined RejectNegative Var(flag_diagnostics_show_color) Enum(diagnostic_color_rule) Init(DIAGNOSTICS_COLOR_NO)
1177 -fdiagnostics-color=[never|always|auto] Colorize diagnostics.
1179 ; Required for these enum values.
1184 Name(diagnostic_color_rule) Type(int)
1187 Enum(diagnostic_color_rule) String(never) Value(DIAGNOSTICS_COLOR_NO)
1190 Enum(diagnostic_color_rule) String(always) Value(DIAGNOSTICS_COLOR_YES)
1193 Enum(diagnostic_color_rule) String(auto) Value(DIAGNOSTICS_COLOR_AUTO)
1195 fdiagnostics-show-option
1196 Common Var(flag_diagnostics_show_option) Init(1)
1197 Amend appropriate diagnostic messages with the command line option that controls them.
1200 Common Joined RejectNegative Var(common_deferred_options) Defer
1201 -fdisable-[tree|rtl|ipa]-<pass>=range1+range2 disables an optimization pass.
1204 Common Joined RejectNegative Var(common_deferred_options) Defer
1205 -fenable-[tree|rtl|ipa]-<pass>=range1+range2 enables an optimization pass.
1208 Common Joined RejectNegative Var(common_deferred_options) Defer
1209 -fdump-<type> Dump various compiler internals to a file.
1212 Driver RejectNegative
1215 Common RejectNegative Joined Var(flag_dump_final_insns)
1216 -fdump-final-insns=filename Dump to filename the insns at the end of translation.
1219 Common RejectNegative Joined Var(flag_dump_go_spec)
1220 -fdump-go-spec=filename Write all declarations to file as Go code.
1223 Common Report Var(flag_dump_noaddr)
1224 Suppress output of addresses in debugging dumps.
1227 Common Driver Var(flag_report_bug)
1228 Collect and dump debug information into temporary file if ICE in C/C++
1231 fdump-internal-locations
1232 Common Var(flag_dump_locations) Init(0)
1233 Dump detailed information on GCC's internal representation of source code locations.
1236 Common Var(flag_dump_passes) Init(0)
1237 Dump optimization passes.
1240 Common Report Var(flag_dump_unnumbered)
1241 Suppress output of instruction numbers, line number notes and addresses in debugging dumps.
1243 fdump-unnumbered-links
1244 Common Report Var(flag_dump_unnumbered_links)
1245 Suppress output of previous and next insn numbers in debugging dumps.
1248 Common Report Var(flag_dwarf2_cfi_asm) Init(HAVE_GAS_CFI_DIRECTIVE)
1249 Enable CFI tables via GAS assembler directives.
1252 Common Report Var(flag_early_inlining) Init(1) Optimization
1253 Perform early inlining.
1255 feliminate-dwarf2-dups
1256 Common Report Var(flag_eliminate_dwarf2_dups)
1257 Perform DWARF duplicate elimination.
1260 Common Report Var(flag_ipa_sra) Init(0) Optimization
1261 Perform interprocedural reduction of aggregates.
1263 feliminate-unused-debug-symbols
1264 Common Report Var(flag_debug_only_used_symbols)
1265 Perform unused symbol elimination in debug info.
1267 feliminate-unused-debug-types
1268 Common Report Var(flag_eliminate_unused_debug_types) Init(1)
1269 Perform unused type elimination in debug info.
1271 femit-class-debug-always
1272 Common Report Var(flag_emit_class_debug_always) Init(0)
1273 Do not suppress C++ class debug information.
1276 Common Report Var(flag_exceptions) Optimization
1277 Enable exception handling.
1279 fexpensive-optimizations
1280 Common Report Var(flag_expensive_optimizations) Optimization
1281 Perform a number of minor, expensive optimizations.
1284 Common Joined RejectNegative Enum(excess_precision) Var(flag_excess_precision_cmdline) Init(EXCESS_PRECISION_DEFAULT)
1285 -fexcess-precision=[fast|standard] Specify handling of excess floating-point precision.
1288 Name(excess_precision) Type(enum excess_precision) UnknownError(unknown excess precision style %qs)
1291 Enum(excess_precision) String(fast) Value(EXCESS_PRECISION_FAST)
1294 Enum(excess_precision) String(standard) Value(EXCESS_PRECISION_STANDARD)
1300 Common Var(flag_fat_lto_objects)
1301 Output lto objects containing both the intermediate language and binary output.
1304 Common Report Var(flag_finite_math_only) Optimization SetByCombined
1305 Assume no NaNs or infinities are generated.
1308 Common Joined RejectNegative Var(common_deferred_options) Defer
1309 -ffixed-<register> Mark <register> as being unavailable to the compiler.
1312 Common Report Var(flag_float_store) Optimization
1313 Don't allocate floats and doubles in extended-precision registers.
1317 Does nothing. Preserved for backward compatibility.
1320 Common Report Var(flag_forward_propagate) Optimization
1321 Perform a forward propagation pass on RTL.
1324 Common Joined RejectNegative Enum(fp_contract_mode) Var(flag_fp_contract_mode) Init(FP_CONTRACT_FAST) Optimization
1325 -ffp-contract=[off|on|fast] Perform floating-point expression contraction.
1328 Name(fp_contract_mode) Type(enum fp_contract_mode) UnknownError(unknown floating point contraction style %qs)
1331 Enum(fp_contract_mode) String(off) Value(FP_CONTRACT_OFF)
1333 ; Not implemented, fall back to conservative FP_CONTRACT_OFF.
1335 Enum(fp_contract_mode) String(on) Value(FP_CONTRACT_OFF)
1338 Enum(fp_contract_mode) String(fast) Value(FP_CONTRACT_FAST)
1340 ; Nonzero means don't put addresses of constant functions in registers.
1341 ; Used for compiling the Unix kernel, where strange substitutions are
1342 ; done on the assembly output.
1344 Common Report Var(flag_no_function_cse,0) Optimization
1345 Allow function addresses to be held in registers.
1348 Common Report Var(flag_function_sections)
1349 Place each function into its own section.
1352 Common Report Var(flag_gcse) Optimization
1353 Perform global common subexpression elimination.
1356 Common Report Var(flag_gcse_lm) Init(1) Optimization
1357 Perform enhanced load motion during global common subexpression elimination.
1360 Common Report Var(flag_gcse_sm) Init(0) Optimization
1361 Perform store motion after global common subexpression elimination.
1364 Common Report Var(flag_gcse_las) Init(0) Optimization
1365 Perform redundant load after store elimination in global common subexpression
1369 Common Report Var(flag_gcse_after_reload) Optimization
1370 Perform global common subexpression elimination after register allocation has
1374 Name(dwarf_gnat_encodings) Type(int)
1377 Enum(dwarf_gnat_encodings) String(all) Value(DWARF_GNAT_ENCODINGS_ALL)
1380 Enum(dwarf_gnat_encodings) String(gdb) Value(DWARF_GNAT_ENCODINGS_GDB)
1383 Enum(dwarf_gnat_encodings) String(minimal) Value(DWARF_GNAT_ENCODINGS_MINIMAL)
1386 Common Enum(dwarf_gnat_encodings) Joined RejectNegative Report Undocumented Var(gnat_encodings)
1387 -fgnat-encodings=[all|gdb|minimal] Select the balance between GNAT encodings and standard DWARF emitted in the debug information
1389 ; This option is not documented yet as its semantics will change.
1391 Common Report Var(flag_graphite) Optimization
1392 Enable in and out of Graphite representation.
1395 Common Report Var(flag_graphite_identity) Optimization
1396 Enable Graphite Identity transformation.
1398 fhoist-adjacent-loads
1399 Common Report Var(flag_hoist_adjacent_loads) Optimization
1400 Enable hoisting adjacent loads to encourage generating conditional move
1404 Common Undocumented Report Var(flag_keep_gc_roots_live) Optimization
1405 ; Always keep a pointer to a live memory block
1407 floop-parallelize-all
1408 Common Report Var(flag_loop_parallelize_all) Optimization
1409 Mark all loops as parallel.
1412 Common Alias(floop-nest-optimize)
1413 Enable loop nest transforms. Same as -floop-nest-optimize.
1416 Common Alias(floop-nest-optimize)
1417 Enable loop nest transforms. Same as -floop-nest-optimize.
1420 Common Alias(floop-nest-optimize)
1421 Enable loop nest transforms. Same as -floop-nest-optimize.
1423 floop-unroll-and-jam
1424 Common Alias(floop-nest-optimize)
1425 Enable loop nest transforms. Same as -floop-nest-optimize.
1428 Common Report Var(flag_tm)
1429 Enable support for GNU transactional memory.
1432 Common Report Var(flag_gnu_unique) Init(1)
1433 Use STB_GNU_UNIQUE if supported by the assembler.
1437 Does nothing. Preserved for backward compatibility.
1440 Common Report Var(flag_loop_nest_optimize) Optimization
1441 Enable the loop nest optimizer.
1443 fstrict-volatile-bitfields
1444 Common Report Var(flag_strict_volatile_bitfields) Init(-1) Optimization
1445 Force bitfield accesses to match their type width.
1447 fguess-branch-probability
1448 Common Report Var(flag_guess_branch_prob) Optimization
1449 Enable guessing of branch probabilities.
1451 ; Nonzero means ignore `#ident' directives. 0 means handle them.
1452 ; Generate position-independent code for executables if possible
1453 ; On SVR4 targets, it also controls whether or not to emit a
1454 ; string identifying the compiler.
1456 Common Report Var(flag_no_ident,0)
1457 Process #ident directives.
1460 Common Report Var(flag_if_conversion) Optimization
1461 Perform conversion of conditional jumps to branchless equivalents.
1464 Common Report Var(flag_if_conversion2) Optimization
1465 Perform conversion of conditional jumps to conditional execution.
1468 Common Joined RejectNegative Enum(stack_reuse_level) Var(flag_stack_reuse) Init(SR_ALL) Optimization
1469 -fstack-reuse=[all|named_vars|none] Set stack reuse level for local variables.
1472 Name(stack_reuse_level) Type(enum stack_reuse_level) UnknownError(unknown Stack Reuse Level %qs)
1475 Enum(stack_reuse_level) String(all) Value(SR_ALL)
1478 Enum(stack_reuse_level) String(named_vars) Value(SR_NAMED_VARS)
1481 Enum(stack_reuse_level) String(none) Value(SR_NONE)
1483 ftree-loop-if-convert
1484 Common Report Var(flag_tree_loop_if_convert) Init(-1) Optimization
1485 Convert conditional jumps in innermost loops to branchless equivalents.
1487 ftree-loop-if-convert-stores
1488 Common Report Var(flag_tree_loop_if_convert_stores) Optimization
1489 Also if-convert conditional jumps containing memory writes.
1491 ; -finhibit-size-directive inhibits output of .size for ELF.
1492 ; This is used only for compiling crtstuff.c,
1493 ; and it may be extended to other effects
1494 ; needed for crtstuff.c on other systems.
1495 finhibit-size-directive
1496 Common Report Var(flag_inhibit_size_directive)
1497 Do not generate .size directives.
1500 Common Report Var(flag_indirect_inlining) Optimization
1501 Perform indirect inlining.
1503 ; General flag to enable inlining. Specifying -fno-inline will disable
1504 ; all inlining apart from always-inline functions.
1506 Common Report Var(flag_no_inline,0) Init(0) Optimization
1507 Enable inlining of function declared \"inline\", disabling disables all inlining.
1509 finline-small-functions
1510 Common Report Var(flag_inline_small_functions) Optimization
1511 Integrate functions into their callers when code size is known not to grow.
1514 Common Report Var(flag_inline_functions) Optimization
1515 Integrate functions not declared \"inline\" into their callers when profitable.
1517 finline-functions-called-once
1518 Common Report Var(flag_inline_functions_called_once) Optimization
1519 Integrate functions only required by their single caller.
1522 Common RejectNegative Joined Alias(finline-limit=)
1525 Common RejectNegative Joined UInteger
1526 -finline-limit=<number> Limit the size of inlined functions to <number>.
1529 Common Report Var(flag_inline_atomics) Init(1) Optimization
1530 Inline __atomic operations when a lock free instruction sequence is available.
1532 finstrument-functions
1533 Common Report Var(flag_instrument_function_entry_exit)
1534 Instrument function entry and exit with profiling calls.
1536 finstrument-functions-exclude-function-list=
1537 Common RejectNegative Joined
1538 -finstrument-functions-exclude-function-list=name,... Do not instrument listed functions.
1540 finstrument-functions-exclude-file-list=
1541 Common RejectNegative Joined
1542 -finstrument-functions-exclude-file-list=filename,... Do not instrument functions listed in files.
1545 Common Report Var(flag_ipa_cp) Optimization
1546 Perform interprocedural constant propagation.
1549 Common Report Var(flag_ipa_cp_clone) Optimization
1550 Perform cloning to make Interprocedural constant propagation stronger.
1553 Common Report Var(flag_ipa_cp_alignment) Optimization
1554 Perform alignment discovery and propagation to make Interprocedural constant propagation stronger.
1557 Common Report Var(flag_ipa_profile) Init(0) Optimization
1558 Perform interprocedural profile propagation.
1561 Common Report Var(flag_ipa_pta) Init(0) Optimization
1562 Perform interprocedural points-to analysis.
1565 Common Report Var(flag_ipa_pure_const) Init(0) Optimization
1566 Discover pure and const functions.
1569 Common Report Var(flag_ipa_icf) Optimization
1570 Perform Identical Code Folding for functions and read-only variables.
1573 Common Report Var(flag_ipa_icf_functions) Optimization
1574 Perform Identical Code Folding for functions.
1577 Common Report Var(flag_ipa_icf_variables)
1578 Perform Identical Code Folding for variables.
1581 Common Report Var(flag_ipa_reference) Init(0) Optimization
1582 Discover readonly and non addressable static variables.
1586 Does nothing. Preserved for backward compatibility.
1590 Does nothing. Preserved for backward compatibility.
1593 Common Joined RejectNegative Enum(ira_algorithm) Var(flag_ira_algorithm) Init(IRA_ALGORITHM_CB) Optimization
1594 -fira-algorithm=[CB|priority] Set the used IRA algorithm.
1597 Name(ira_algorithm) Type(enum ira_algorithm) UnknownError(unknown IRA algorithm %qs)
1600 Enum(ira_algorithm) String(CB) Value(IRA_ALGORITHM_CB)
1603 Enum(ira_algorithm) String(priority) Value(IRA_ALGORITHM_PRIORITY)
1606 Common Joined RejectNegative Enum(ira_region) Var(flag_ira_region) Init(IRA_REGION_AUTODETECT) Optimization
1607 -fira-region=[one|all|mixed] Set regions for IRA.
1610 Name(ira_region) Type(enum ira_region) UnknownError(unknown IRA region %qs)
1613 Enum(ira_region) String(one) Value(IRA_REGION_ONE)
1616 Enum(ira_region) String(all) Value(IRA_REGION_ALL)
1619 Enum(ira_region) String(mixed) Value(IRA_REGION_MIXED)
1622 Common Report Var(flag_ira_hoist_pressure) Init(1) Optimization
1623 Use IRA based register pressure calculation
1624 in RTL hoist optimizations.
1627 Common Report Var(flag_ira_loop_pressure) Optimization
1628 Use IRA based register pressure calculation
1629 in RTL loop optimizations.
1631 fira-share-save-slots
1632 Common Report Var(flag_ira_share_save_slots) Init(1) Optimization
1633 Share slots for saving different hard registers.
1635 fira-share-spill-slots
1636 Common Report Var(flag_ira_share_spill_slots) Init(1) Optimization
1637 Share stack slots for spilled pseudo-registers.
1640 Common RejectNegative Joined UInteger Var(flag_ira_verbose) Init(5)
1641 -fira-verbose=<number> Control IRA's level of diagnostic messages.
1644 Common Report Var(flag_ivopts) Init(1) Optimization
1645 Optimize induction variables on trees.
1648 Common Var(flag_jump_tables) Init(1) Optimization
1649 Use jump tables for sufficiently large switch statements.
1651 fkeep-inline-functions
1652 Common Report Var(flag_keep_inline_functions)
1653 Generate code for functions even if they are fully inlined.
1655 fkeep-static-functions
1656 Common Report Var(flag_keep_static_functions)
1657 Generate code for static functions even if they are never called.
1660 Common Report Var(flag_keep_static_consts) Init(1)
1661 Emit static const variables even if they are not used.
1664 Common Report Var(flag_leading_underscore) Init(-1)
1665 Give external symbols a leading underscore.
1669 Does nothing. Preserved for backward compatibility.
1672 Common Report Var(flag_lra_remat) Optimization
1673 Do CFG-sensitive rematerialization in LRA.
1677 Enable link-time optimization.
1680 Common RejectNegative Joined Var(flag_lto)
1681 Link-time optimization with number of parallel jobs or jobserver.
1684 Name(lto_partition_model) Type(enum lto_partition_model) UnknownError(unknown LTO partitioning model %qs)
1687 Enum(lto_partition_model) String(none) Value(LTO_PARTITION_NONE)
1690 Enum(lto_partition_model) String(one) Value(LTO_PARTITION_ONE)
1693 Enum(lto_partition_model) String(balanced) Value(LTO_PARTITION_BALANCED)
1696 Enum(lto_partition_model) String(1to1) Value(LTO_PARTITION_1TO1)
1699 Enum(lto_partition_model) String(max) Value(LTO_PARTITION_MAX)
1702 Common Joined RejectNegative Enum(lto_partition_model) Var(flag_lto_partition) Init(LTO_PARTITION_BALANCED)
1703 Specify the algorithm to partition symbols and vars at linktime.
1705 ; The initial value of -1 comes from Z_DEFAULT_COMPRESSION in zlib.h.
1706 flto-compression-level=
1707 Common Joined RejectNegative UInteger Var(flag_lto_compression_level) Init(-1)
1708 -flto-compression-level=<number> Use zlib compression level <number> for IL.
1710 flto-odr-type-merging
1711 Common Report Var(flag_lto_odr_type_mering) Init(1)
1712 Merge C++ types using One Definition Rule.
1715 Common Report Var(flag_lto_report) Init(0)
1716 Report various link-time optimization statistics.
1719 Common Report Var(flag_lto_report_wpa) Init(0)
1720 Report various link-time optimization statistics for WPA only.
1723 Common Report Var(flag_errno_math) Init(1) Optimization SetByCombined
1724 Set errno after built-in math functions.
1727 Common Joined RejectNegative UInteger Var(flag_max_errors)
1728 -fmax-errors=<number> Maximum number of errors to report.
1731 Common Report Var(mem_report)
1732 Report on permanent memory allocation.
1735 Common Report Var(mem_report_wpa)
1736 Report on permanent memory allocation in WPA only.
1738 ; This will attempt to merge constant section constants, if 1 only
1739 ; string constants and constants from constant pool, if 2 also constant
1741 fmerge-all-constants
1742 Common Report Var(flag_merge_constants,2) Init(1)
1743 Attempt to merge identical constants and constant variables.
1746 Common Report Var(flag_merge_constants,1)
1747 Attempt to merge identical constants across compilation units.
1749 fmerge-debug-strings
1750 Common Report Var(flag_merge_debug_strings) Init(1)
1751 Attempt to merge identical debug strings across compilation units.
1754 Common RejectNegative Joined UInteger
1755 -fmessage-length=<number> Limit diagnostics to <number> characters per line. 0 suppresses line-wrapping.
1758 Common Report Var(flag_modulo_sched) Optimization
1759 Perform SMS based modulo scheduling before the first scheduling pass.
1761 fmodulo-sched-allow-regmoves
1762 Common Report Var(flag_modulo_sched_allow_regmoves) Optimization
1763 Perform SMS based modulo scheduling with register moves allowed.
1765 fmove-loop-invariants
1766 Common Report Var(flag_move_loop_invariants) Optimization
1767 Move loop invariant computations out of loops.
1770 Common Var(flag_dce) Init(1) Optimization
1771 Use the RTL dead code elimination pass.
1774 Common Var(flag_dse) Init(1) Optimization
1775 Use the RTL dead store elimination pass.
1777 freschedule-modulo-scheduled-loops
1778 Common Report Var(flag_resched_modulo_sched) Optimization
1779 Enable/Disable the traditional scheduling in loops that already passed modulo scheduling.
1781 fnon-call-exceptions
1782 Common Report Var(flag_non_call_exceptions) Optimization
1783 Support synchronous non-call exceptions.
1786 Common Driver Joined MissingArgError(options or targets missing after %qs)
1787 -foffload=<targets>=<options> Specify offloading targets and options for them.
1790 Common Joined RejectNegative Enum(offload_abi) Var(flag_offload_abi) Init(OFFLOAD_ABI_UNSET)
1791 -foffload-abi=[lp64|ilp32] Set the ABI to use in an offload compiler.
1794 Name(offload_abi) Type(enum offload_abi) UnknownError(unknown offload ABI %qs)
1797 Enum(offload_abi) String(ilp32) Value(OFFLOAD_ABI_ILP32)
1800 Enum(offload_abi) String(lp64) Value(OFFLOAD_ABI_LP64)
1803 Common Report Var(flag_omit_frame_pointer) Optimization
1804 When possible do not generate stack frames.
1807 Common Report Var(flag_opt_info) Optimization
1808 Enable all optimization info dumps on stderr.
1811 Common Joined RejectNegative Var(common_deferred_options) Defer
1812 -fopt-info[-<type>=filename] Dump compiler optimization details.
1814 foptimize-register-move
1816 Does nothing. Preserved for backward compatibility.
1818 foptimize-sibling-calls
1819 Common Report Var(flag_optimize_sibling_calls) Optimization
1820 Optimize sibling and tail recursive calls.
1823 Common Report Var(flag_partial_inlining) Optimization
1824 Perform partial inlining.
1827 Common Report Var(pre_ipa_mem_report)
1828 Report on memory allocation before interprocedural optimization.
1830 fpost-ipa-mem-report
1831 Common Report Var(post_ipa_mem_report)
1832 Report on memory allocation before interprocedural optimization.
1835 Common Report Var(flag_pack_struct) Optimization
1836 Pack structure members together without holes.
1839 Common RejectNegative Joined UInteger Optimization
1840 -fpack-struct=<number> Set initial maximum structure member alignment.
1843 Common Report Var(flag_pcc_struct_return,1) Init(DEFAULT_PCC_STRUCT_RETURN)
1844 Return small aggregates in memory, not registers.
1847 Common Report Var(flag_peel_loops) Optimization
1848 Perform loop peeling.
1851 Common Report Var(flag_no_peephole,0) Optimization
1852 Enable machine specific peephole optimizations.
1855 Common Report Var(flag_peephole2) Optimization
1856 Enable an RTL peephole pass before sched2.
1859 Common Report Var(flag_pic,2) Negative(fPIE) Init(-1)
1860 Generate position-independent code if possible (large mode).
1863 Common Report Var(flag_pie,2) Negative(fpic) Init(-1)
1864 Generate position-independent code for executables if possible (large mode).
1867 Common Report Var(flag_pic,1) Negative(fpie) Init(-1)
1868 Generate position-independent code if possible (small mode).
1871 Common Report Var(flag_pie,1) Negative(fPIC) Init(-1)
1872 Generate position-independent code for executables if possible (small mode).
1875 Common Report Var(flag_plt) Init(1) Optimization
1876 Use PLT for PIC calls (-fno-plt: load the address from GOT at call site).
1879 Common Joined RejectNegative Var(common_deferred_options) Defer
1880 Specify a plugin to load.
1883 Common Joined RejectNegative Var(common_deferred_options) Defer
1884 -fplugin-arg-<name>-<key>[=<value>] Specify argument <key>=<value> for plugin <name>.
1886 fpredictive-commoning
1887 Common Report Var(flag_predictive_commoning) Optimization
1888 Run predictive commoning optimization.
1890 fprefetch-loop-arrays
1891 Common Report Var(flag_prefetch_loop_arrays) Init(-1) Optimization
1892 Generate prefetch instructions, if available, for arrays in loops.
1895 Common Report Var(profile_flag)
1896 Enable basic program profiling code.
1899 Common Report Var(profile_arc_flag)
1900 Insert arc-based program profiling code.
1903 Common Joined RejectNegative Var(profile_data_prefix)
1904 Set the top-level directory for storing the profile data.
1905 The default is 'pwd'.
1908 Common Report Var(flag_profile_correction)
1909 Enable correction of flow inconsistent profile data input.
1913 Enable common options for generating profile info for profile feedback directed optimizations.
1916 Common Joined RejectNegative
1917 Enable common options for generating profile info for profile feedback directed optimizations, and set -fprofile-dir=.
1920 Common Var(flag_profile_use)
1921 Enable common options for performing profile feedback directed optimizations.
1924 Common Joined RejectNegative
1925 Enable common options for performing profile feedback directed optimizations, and set -fprofile-dir=.
1928 Common Report Var(flag_profile_values)
1929 Insert code to profile values of expressions.
1932 Common Report Var(profile_report)
1933 Report on consistency of profile.
1935 fprofile-reorder-functions
1936 Common Report Var(flag_profile_reorder_functions)
1937 Enable function reordering that improves code placement.
1940 Common Var(common_deferred_options) Defer
1943 Common Joined RejectNegative Var(common_deferred_options) Defer
1944 -frandom-seed=<string> Make compile reproducible using <string>.
1946 ; This switch causes the command line that was used to create an
1947 ; object file to be recorded into the object file. The exact format
1948 ; of this recording is target and binary file format dependent.
1949 ; It is related to the -fverbose-asm switch, but that switch only
1950 ; records information in the assembler output file as comments, so
1951 ; they never reach the object file.
1952 frecord-gcc-switches
1953 Common Report Var(flag_record_gcc_switches)
1954 Record gcc command line switches in the object file.
1957 Common Report Var(flag_pcc_struct_return,0) Optimization
1958 Return small aggregates in registers.
1962 Does nothing. Preserved for backward compatibility.
1965 Common Report Var(flag_lifetime_dse,2) Init(2) Optimization
1966 Tell DSE that the storage for a C++ object is dead when the constructor
1967 starts and when the destructor finishes.
1970 Common Joined RejectNegative UInteger Var(flag_lifetime_dse) Optimization
1972 flive-range-shrinkage
1973 Common Report Var(flag_live_range_shrinkage) Init(0) Optimization
1974 Relief of register pressure through live range shrinkage.
1977 Common Report Var(flag_rename_registers) Init(2) Optimization
1978 Perform a register renaming optimization pass.
1981 Common Report Var(flag_schedule_fusion) Init(2) Optimization
1982 Perform a target dependent instruction fusion optimization pass.
1985 Common Report Var(flag_reorder_blocks) Optimization
1986 Reorder basic blocks to improve code placement.
1988 freorder-blocks-algorithm=
1989 Common Joined RejectNegative Enum(reorder_blocks_algorithm) Var(flag_reorder_blocks_algorithm) Init(REORDER_BLOCKS_ALGORITHM_SIMPLE) Optimization
1990 -freorder-blocks-algorithm=[simple|stc] Set the used basic block reordering algorithm.
1993 Name(reorder_blocks_algorithm) Type(enum reorder_blocks_algorithm) UnknownError(unknown basic block reordering algorithm %qs)
1996 Enum(reorder_blocks_algorithm) String(simple) Value(REORDER_BLOCKS_ALGORITHM_SIMPLE)
1999 Enum(reorder_blocks_algorithm) String(stc) Value(REORDER_BLOCKS_ALGORITHM_STC)
2001 freorder-blocks-and-partition
2002 Common Report Var(flag_reorder_blocks_and_partition) Optimization
2003 Reorder basic blocks and partition into hot and cold sections.
2006 Common Report Var(flag_reorder_functions) Optimization
2007 Reorder functions to improve code placement.
2009 frerun-cse-after-loop
2010 Common Report Var(flag_rerun_cse_after_loop) Optimization
2011 Add a common subexpression elimination pass after loop optimizations.
2015 Does nothing. Preserved for backward compatibility.
2018 Common Report Var(flag_rounding_math) Optimization SetByCombined
2019 Disable optimizations that assume default FP rounding behavior.
2022 Common Report Var(flag_schedule_interblock) Init(1) Optimization
2023 Enable scheduling across basic blocks.
2026 Common Report Var(flag_sched_pressure) Init(0) Optimization
2027 Enable register pressure sensitive insn scheduling.
2030 Common Report Var(flag_schedule_speculative) Init(1) Optimization
2031 Allow speculative motion of non-loads.
2034 Common Report Var(flag_schedule_speculative_load) Optimization
2035 Allow speculative motion of some loads.
2037 fsched-spec-load-dangerous
2038 Common Report Var(flag_schedule_speculative_load_dangerous) Optimization
2039 Allow speculative motion of more loads.
2042 Common RejectNegative Joined UInteger Var(sched_verbose_param) Init(1)
2043 -fsched-verbose=<number> Set the verbosity level of the scheduler.
2045 fsched2-use-superblocks
2046 Common Report Var(flag_sched2_use_superblocks) Optimization
2047 If scheduling post reload, do superblock scheduling.
2051 Does nothing. Preserved for backward compatibility.
2054 Common Report Var(flag_schedule_insns) Optimization
2055 Reschedule instructions before register allocation.
2058 Common Report Var(flag_schedule_insns_after_reload) Optimization
2059 Reschedule instructions after register allocation.
2061 ; This flag should be on when a target implements non-trivial
2062 ; scheduling hooks, maybe saving some information for its own sake.
2063 ; On IA64, for example, this is used for correct bundling.
2064 fselective-scheduling
2065 Common Report Var(flag_selective_scheduling) Optimization
2066 Schedule instructions using selective scheduling algorithm.
2068 fselective-scheduling2
2069 Common Report Var(flag_selective_scheduling2) Optimization
2070 Run selective scheduling after reload.
2072 fsel-sched-pipelining
2073 Common Report Var(flag_sel_sched_pipelining) Init(0) Optimization
2074 Perform software pipelining of inner loops during selective scheduling.
2076 fsel-sched-pipelining-outer-loops
2077 Common Report Var(flag_sel_sched_pipelining_outer_loops) Init(0) Optimization
2078 Perform software pipelining of outer loops during selective scheduling.
2080 fsel-sched-reschedule-pipelined
2081 Common Report Var(flag_sel_sched_reschedule_pipelined) Init(0) Optimization
2082 Reschedule pipelined regions without pipelining.
2084 fsemantic-interposition
2085 Common Report Var(flag_semantic_interposition) Init(1)
2086 Allow interposing function (or variables) by ones with different semantics (or initializer) respectively by dynamic linker.
2088 ; sched_stalled_insns means that insns can be moved prematurely from the queue
2089 ; of stalled insns into the ready list.
2090 fsched-stalled-insns
2091 Common Report Var(flag_sched_stalled_insns) Optimization UInteger
2092 Allow premature scheduling of queued insns.
2094 fsched-stalled-insns=
2095 Common RejectNegative Joined UInteger Optimization
2096 -fsched-stalled-insns=<number> Set number of queued insns that can be prematurely scheduled.
2098 ; sched_stalled_insns_dep controls how many recently scheduled cycles will
2099 ; be examined for a dependency on a stalled insn that is candidate for
2100 ; premature removal from the queue of stalled insns into the ready list (has
2101 ; an effect only if the flag 'sched_stalled_insns' is set).
2102 fsched-stalled-insns-dep
2103 Common Report Var(flag_sched_stalled_insns_dep,1) Init(1) Optimization UInteger
2104 Set dependence distance checking in premature scheduling of queued insns.
2106 fsched-stalled-insns-dep=
2107 Common RejectNegative Joined UInteger Optimization
2108 -fsched-stalled-insns-dep=<number> Set dependence distance checking in premature scheduling of queued insns.
2110 fsched-group-heuristic
2111 Common Report Var(flag_sched_group_heuristic) Init(1) Optimization
2112 Enable the group heuristic in the scheduler.
2114 fsched-critical-path-heuristic
2115 Common Report Var(flag_sched_critical_path_heuristic) Init(1) Optimization
2116 Enable the critical path heuristic in the scheduler.
2118 fsched-spec-insn-heuristic
2119 Common Report Var(flag_sched_spec_insn_heuristic) Init(1) Optimization
2120 Enable the speculative instruction heuristic in the scheduler.
2122 fsched-rank-heuristic
2123 Common Report Var(flag_sched_rank_heuristic) Init(1) Optimization
2124 Enable the rank heuristic in the scheduler.
2126 fsched-last-insn-heuristic
2127 Common Report Var(flag_sched_last_insn_heuristic) Init(1) Optimization
2128 Enable the last instruction heuristic in the scheduler.
2130 fsched-dep-count-heuristic
2131 Common Report Var(flag_sched_dep_count_heuristic) Init(1) Optimization
2132 Enable the dependent count heuristic in the scheduler.
2135 Common Report Var(flag_section_anchors) Optimization
2136 Access data in the same section from shared anchor points.
2140 Does nothing. Preserved for backward compatibility.
2144 Does nothing. Preserved for backward compatibility.
2147 Common Report Var(flag_ree) Init(0)
2148 Turn on Redundant Extensions Elimination pass.
2151 Common Report Var(flag_show_column) Init(1)
2152 Show column numbers in diagnostics, when available. Default on.
2155 Common Report Var(flag_shrink_wrap) Optimization
2156 Emit function prologues only before parts of the function that need it,
2157 rather than at the top of the function.
2160 Common Report Var(flag_signaling_nans) Optimization SetByCombined
2161 Disable optimizations observable by IEEE signaling NaNs.
2164 Common Report Var(flag_signed_zeros) Init(1) Optimization SetByCombined
2165 Disable floating point optimizations that ignore the IEEE signedness of zero.
2167 fsingle-precision-constant
2168 Common Report Var(flag_single_precision_constant) Optimization
2169 Convert floating point constants to single precision constants.
2171 fsplit-ivs-in-unroller
2172 Common Report Var(flag_split_ivs_in_unroller) Init(1) Optimization
2173 Split lifetimes of induction variables when loops are unrolled.
2176 Common Report Var(flag_split_stack) Init(-1)
2177 Generate discontiguous stack frames.
2180 Common Report Var(flag_split_wide_types) Optimization
2181 Split wide types into independent registers.
2184 Common Report Var(flag_ssa_backprop) Init(1) Optimization
2185 Enable backward propagation of use properties at the SSA level.
2188 Common Report Var(flag_ssa_phiopt) Optimization
2189 Optimize conditional patterns using SSA PHI nodes.
2192 Common Report Var(flag_stdarg_opt) Init(1) Optimization
2193 Optimize amount of stdarg registers saved to stack at start of function.
2195 fvariable-expansion-in-unroller
2196 Common Report Var(flag_variable_expansion_in_unroller) Optimization
2197 Apply variable expansion when loops are unrolled.
2200 Common Report RejectNegative Joined
2201 -fstack-check=[no|generic|specific] Insert stack checking code into the program.
2204 Common Alias(fstack-check=, specific, no)
2205 Insert stack checking code into the program. Same as -fstack-check=specific.
2208 Common Var(common_deferred_options) Defer
2210 fstack-limit-register=
2211 Common RejectNegative Joined Var(common_deferred_options) Defer
2212 -fstack-limit-register=<register> Trap if the stack goes past <register>.
2214 fstack-limit-symbol=
2215 Common RejectNegative Joined Var(common_deferred_options) Defer
2216 -fstack-limit-symbol=<name> Trap if the stack goes past symbol <name>.
2219 Common Report Var(flag_stack_protect, 1) Init(-1)
2220 Use propolice as a stack protection method.
2222 fstack-protector-all
2223 Common Report RejectNegative Var(flag_stack_protect, 2) Init(-1)
2224 Use a stack protection method for every function.
2226 fstack-protector-strong
2227 Common Report RejectNegative Var(flag_stack_protect, 3) Init(-1)
2228 Use a smart stack protection method for certain functions.
2230 fstack-protector-explicit
2231 Common Report RejectNegative Var(flag_stack_protect, 4)
2232 Use stack protection method only for functions with the stack_protect attribute.
2235 Common RejectNegative Var(flag_stack_usage)
2236 Output stack usage information on a per-function basis.
2240 Does nothing. Preserved for backward compatibility.
2242 ; Nonzero if we should do (language-dependent) alias analysis.
2243 ; Typically, this analysis will assume that expressions of certain
2244 ; types do not alias expressions of certain other types. Only used
2245 ; if alias analysis (in general) is enabled.
2247 Common Report Var(flag_strict_aliasing) Optimization
2248 Assume strict aliasing rules apply.
2251 Common Report Var(flag_strict_overflow) Optimization
2252 Treat signed overflow as undefined.
2255 Common Report Var(flag_sync_libcalls) Init(1)
2256 Implement __atomic operations via libcalls to legacy __sync functions.
2259 Common Report Var(flag_syntax_only)
2260 Check for syntax errors, then stop.
2263 Common Report Var(flag_test_coverage)
2264 Create data files needed by \"gcov\".
2267 Common Report Var(flag_thread_jumps) Optimization
2268 Perform jump threading optimizations.
2271 Common Report Var(time_report)
2272 Report the time taken by each compiler pass.
2275 Common Joined RejectNegative Enum(tls_model) Var(flag_tls_default) Init(TLS_MODEL_GLOBAL_DYNAMIC)
2276 -ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec] Set the default thread-local storage code generation model.
2279 Name(tls_model) Type(enum tls_model) UnknownError(unknown TLS model %qs)
2282 Enum(tls_model) String(global-dynamic) Value(TLS_MODEL_GLOBAL_DYNAMIC)
2285 Enum(tls_model) String(local-dynamic) Value(TLS_MODEL_LOCAL_DYNAMIC)
2288 Enum(tls_model) String(initial-exec) Value(TLS_MODEL_INITIAL_EXEC)
2291 Enum(tls_model) String(local-exec) Value(TLS_MODEL_LOCAL_EXEC)
2294 Common Report Var(flag_toplevel_reorder) Init(2)
2295 Reorder top level functions, variables, and asms.
2298 Common Report Var(flag_tracer) Optimization
2299 Perform superblock formation via tail duplication.
2301 ; Zero means that floating-point math operations cannot generate a
2302 ; (user-visible) trap. This is the case, for example, in nonstop
2303 ; IEEE 754 arithmetic.
2305 Common Report Var(flag_trapping_math) Init(1) Optimization SetByCombined
2306 Assume floating-point operations can trap.
2309 Common Report Var(flag_trapv) Optimization
2310 Trap for signed overflow in addition, subtraction and multiplication.
2313 Common Report Var(flag_tree_ccp) Optimization
2314 Enable SSA-CCP optimization on trees.
2317 Common Report Var(flag_tree_bit_ccp) Optimization
2318 Enable SSA-BIT-CCP optimization on trees.
2322 Does nothing. Preserved for backward compatibility.
2325 Common Report Var(flag_tree_ch) Optimization
2326 Enable loop header copying on trees.
2328 ftree-coalesce-inlined-vars
2329 Common Ignore RejectNegative
2330 Does nothing. Preserved for backward compatibility.
2333 Common Report Var(flag_tree_coalesce_vars) Optimization
2334 Enable SSA coalescing of user variables.
2338 Does nothing. Preserved for backward compatibility.
2341 Common Report Var(flag_tree_copy_prop) Optimization
2342 Enable copy propagation on trees.
2344 ftree-store-copy-prop
2346 Does nothing. Preserved for backward compatibility.
2349 Common Report Var(flag_tree_cselim) Init(2) Optimization
2350 Transform condition stores into unconditional ones.
2352 ftree-switch-conversion
2353 Common Report Var(flag_tree_switch_conversion) Optimization
2354 Perform conversions of switch initializations.
2357 Common Report Var(flag_tree_dce) Optimization
2358 Enable SSA dead code elimination optimization on trees.
2360 ftree-dominator-opts
2361 Common Report Var(flag_tree_dom) Optimization
2362 Enable dominator optimizations.
2365 Common Report Var(flag_tree_tail_merge) Optimization
2366 Enable tail merging on trees.
2369 Common Report Var(flag_tree_dse) Optimization
2370 Enable dead store elimination.
2373 Common Report Var(flag_tree_forwprop) Init(1) Optimization
2374 Enable forward propagation on trees.
2377 Common Report Var(flag_tree_fre) Optimization
2378 Enable Full Redundancy Elimination (FRE) on trees.
2381 Common Report Var(flag_optimize_strlen) Optimization
2382 Enable string length optimizations on trees.
2384 fisolate-erroneous-paths-dereference
2385 Common Report Var(flag_isolate_erroneous_paths_dereference) Optimization
2386 Detect paths that trigger erroneous or undefined behavior due to
2387 dereferencing a null pointer. Isolate those paths from the main control
2388 flow and turn the statement with erroneous or undefined behavior into a trap.
2390 fisolate-erroneous-paths-attribute
2391 Common Report Var(flag_isolate_erroneous_paths_attribute) Optimization
2392 Detect paths that trigger erroneous or undefined behavior due a null value
2393 being used in a way forbidden by a returns_nonnull or nonnull
2394 attribute. Isolate those paths from the main control flow and turn the
2395 statement with erroneous or undefined behavior into a trap.
2397 ftree-loop-distribution
2398 Common Report Var(flag_tree_loop_distribution) Optimization
2399 Enable loop distribution on trees.
2401 ftree-loop-distribute-patterns
2402 Common Report Var(flag_tree_loop_distribute_patterns) Optimization
2403 Enable loop distribution for patterns transformed into a library call.
2406 Common Report Var(flag_tree_loop_im) Init(1) Optimization
2407 Enable loop invariant motion on trees.
2410 Common Alias(floop-nest-optimize)
2411 Enable loop nest transforms. Same as -floop-nest-optimize.
2414 Common Report Var(flag_tree_loop_ivcanon) Init(1) Optimization
2415 Create canonical induction variables in loops.
2418 Common Report Var(flag_tree_loop_optimize) Init(1) Optimization
2419 Enable loop optimizations on tree level.
2421 ftree-parallelize-loops=
2422 Common Report Joined RejectNegative UInteger Var(flag_tree_parallelize_loops) Init(1) Optimization
2423 Enable automatic parallelization of loops.
2426 Common Report Var(flag_tree_phiprop) Init(1) Optimization
2427 Enable hoisting loads from conditional pointers.
2430 Common Report Var(flag_tree_pre) Optimization
2431 Enable SSA-PRE optimization on trees.
2434 Common Report Var(flag_tree_partial_pre) Optimization
2435 In SSA-PRE optimization on trees, enable partial-partial redundancy elimination.
2438 Common Report Var(flag_tree_pta) Optimization
2439 Perform function-local points-to analysis on trees.
2442 Common Report Var(flag_tree_reassoc) Init(1) Optimization
2443 Enable reassociation on tree level.
2447 Does nothing. Preserved for backward compatibility.
2450 Common Report Var(flag_tree_sink) Optimization
2451 Enable SSA code sinking on trees.
2454 Common Report Var(flag_tree_slsr) Optimization
2455 Perform straight-line strength reduction.
2458 Common Report Var(flag_tree_sra) Optimization
2459 Perform scalar replacement of aggregates.
2462 Common Report Var(flag_tree_ter) Optimization
2463 Replace temporary expressions in the SSA->normal pass.
2466 Common Report Var(flag_tree_live_range_split) Optimization
2467 Perform live range splitting during the SSA->normal pass.
2470 Common Report Var(flag_tree_vrp) Init(0) Optimization
2471 Perform Value Range Propagation on trees.
2474 Common Report Var(flag_split_paths) Init(0) Optimization
2475 Split paths leading to loop backedges.
2477 funconstrained-commons
2478 Common Var(flag_unconstrained_commons) Optimization
2479 Assume common declarations may be overridden with ones with a larger
2483 Common Report Var(flag_unit_at_a_time) Init(1)
2484 Compile whole compilation unit at a time.
2487 Common Report Var(flag_unroll_loops) Optimization
2488 Perform loop unrolling when iteration count is known.
2491 Common Report Var(flag_unroll_all_loops) Optimization
2492 Perform loop unrolling for all loops.
2494 ; Nonzero means that loop optimizer may assume that the induction variables
2495 ; that control loops do not overflow and that the loops with nontrivial
2496 ; exit condition are not infinite
2497 funsafe-loop-optimizations
2498 Common Report Var(flag_unsafe_loop_optimizations) Optimization
2499 Allow loop optimizations to assume that the loops behave in normal way.
2502 Common Report Var(flag_associative_math) SetByCombined Optimization
2503 Allow optimization for floating-point arithmetic which may change the
2504 result of the operation due to rounding.
2507 Common Report Var(flag_reciprocal_math) SetByCombined Optimization
2508 Same as -fassociative-math for expressions which include division.
2510 ; Nonzero means that unsafe floating-point math optimizations are allowed
2511 ; for the sake of speed. IEEE compliance is not guaranteed, and operations
2512 ; are allowed to assume that their arguments and results are "normal"
2513 ; (e.g., nonnegative for SQRT).
2514 funsafe-math-optimizations
2515 Common Report Var(flag_unsafe_math_optimizations) Optimization SetByCombined
2516 Allow math optimizations that may violate IEEE or ISO standards.
2519 Common Report Var(flag_unswitch_loops) Optimization
2520 Perform loop unswitching.
2523 Common Report Var(flag_unwind_tables) Optimization
2524 Just generate unwind tables for exception handling.
2527 Common Driver Negative(fuse-ld=gold)
2528 Use the bfd linker instead of the default linker.
2531 Common Driver Negative(fuse-ld=bfd)
2532 Use the gold linker instead of the default linker.
2535 Common Undocumented Var(flag_use_linker_plugin)
2537 ; Positive if we should track variables, negative if we should run
2538 ; the var-tracking pass only to discard debug annotations, zero if
2539 ; we're not to run it. When flag_var_tracking == 2 (AUTODETECT_VALUE) it
2540 ; will be set according to optimize, debug_info_level and debug_hooks
2541 ; in process_options ().
2543 Common Report Var(flag_var_tracking) Init(2) Optimization
2544 Perform variable tracking.
2546 ; Positive if we should track variables at assignments, negative if
2547 ; we should run the var-tracking pass only to discard debug
2548 ; annotations. When flag_var_tracking_assignments ==
2549 ; AUTODETECT_VALUE it will be set according to flag_var_tracking.
2550 fvar-tracking-assignments
2551 Common Report Var(flag_var_tracking_assignments) Init(2) Optimization
2552 Perform variable tracking by annotating assignments.
2554 ; Nonzero if we should toggle flag_var_tracking_assignments after
2555 ; processing options and computing its default. */
2556 fvar-tracking-assignments-toggle
2557 Common Report Var(flag_var_tracking_assignments_toggle) Optimization
2558 Toggle -fvar-tracking-assignments.
2560 ; Positive if we should track uninitialized variables, negative if
2561 ; we should run the var-tracking pass only to discard debug
2562 ; annotations. When flag_var_tracking_uninit == AUTODETECT_VALUE it
2563 ; will be set according to flag_var_tracking.
2564 fvar-tracking-uninit
2565 Common Report Var(flag_var_tracking_uninit) Optimization
2566 Perform variable tracking and also tag variables that are uninitialized.
2569 Common Report Var(flag_tree_vectorize) Optimization
2570 Enable vectorization on trees.
2572 ftree-vectorizer-verbose=
2573 Common Joined RejectNegative Ignore
2574 Does nothing. Preserved for backward compatibility.
2576 ftree-loop-vectorize
2577 Common Report Var(flag_tree_loop_vectorize) Optimization
2578 Enable loop vectorization on trees.
2581 Common Report Var(flag_tree_slp_vectorize) Optimization
2582 Enable basic block vectorization (SLP) on trees.
2585 Common Joined RejectNegative Enum(vect_cost_model) Var(flag_vect_cost_model) Init(VECT_COST_MODEL_DEFAULT) Optimization
2586 Specifies the cost model for vectorization.
2589 Common Joined RejectNegative Enum(vect_cost_model) Var(flag_simd_cost_model) Init(VECT_COST_MODEL_UNLIMITED) Optimization
2590 Specifies the vectorization cost model for code marked with a simd directive.
2593 Name(vect_cost_model) Type(enum vect_cost_model) UnknownError(unknown vectorizer cost model %qs)
2596 Enum(vect_cost_model) String(unlimited) Value(VECT_COST_MODEL_UNLIMITED)
2599 Enum(vect_cost_model) String(dynamic) Value(VECT_COST_MODEL_DYNAMIC)
2602 Enum(vect_cost_model) String(cheap) Value(VECT_COST_MODEL_CHEAP)
2605 Common RejectNegative Alias(fvect-cost-model=,dynamic)
2606 Enables the dynamic vectorizer cost model. Preserved for backward compatibility.
2609 Common RejectNegative Alias(fvect-cost-model=,unlimited)
2610 Enables the unlimited vectorizer cost model. Preserved for backward compatibility.
2612 ftree-vect-loop-version
2614 Does nothing. Preserved for backward compatibility.
2617 Common Report Var(flag_tree_scev_cprop) Init(1) Optimization
2618 Enable copy propagation of scalar-evolution information.
2620 ; -fverbose-asm causes extra commentary information to be produced in
2621 ; the generated assembly code (to make it more readable). This option
2622 ; is generally only of use to those who actually need to read the
2623 ; generated assembly code (perhaps while debugging the compiler itself).
2624 ; -fno-verbose-asm, the default, causes the extra information
2625 ; to not be added and is useful when comparing two assembler files.
2627 Common Report Var(flag_verbose_asm)
2628 Add extra commentary to assembler output.
2631 Common Joined RejectNegative Enum(symbol_visibility) Var(default_visibility) Init(VISIBILITY_DEFAULT)
2632 -fvisibility=[default|internal|hidden|protected] Set the default symbol visibility.
2635 Name(symbol_visibility) Type(enum symbol_visibility) UnknownError(unrecognized visibility value %qs)
2638 Enum(symbol_visibility) String(default) Value(VISIBILITY_DEFAULT)
2641 Enum(symbol_visibility) String(internal) Value(VISIBILITY_INTERNAL)
2644 Enum(symbol_visibility) String(hidden) Value(VISIBILITY_HIDDEN)
2647 Enum(symbol_visibility) String(protected) Value(VISIBILITY_PROTECTED)
2650 Common Joined RejectNegative Enum(vtv_priority) Var(flag_vtable_verify) Init(VTV_NO_PRIORITY)
2651 Validate vtable pointers before using them.
2654 Name(vtv_priority) Type(enum vtv_priority) UnknownError(unknown vtable verify initialization priority %qs)
2657 Enum(vtv_priority) String(none) Value(VTV_NO_PRIORITY)
2660 Enum(vtv_priority) String(std) Value(VTV_STANDARD_PRIORITY)
2663 Enum(vtv_priority) String(preinit) Value(VTV_PREINIT_PRIORITY)
2666 Common Var(flag_vtv_counts)
2667 Output vtable verification counters.
2670 Common Var(flag_vtv_debug)
2671 Output vtable verification pointer sets information.
2674 Common Report Var(flag_value_profile_transformations) Optimization
2675 Use expression value profiles in optimizations.
2678 Common Report Var(flag_web) Init(2) Optimization
2679 Construct webs and split unrelated uses of single variable.
2681 ftree-builtin-call-dce
2682 Common Report Var(flag_tree_builtin_call_dce) Init(0) Optimization
2683 Enable conditional dead code elimination for builtin calls.
2686 Common Report Var(flag_whole_program) Init(0)
2687 Perform whole program optimizations.
2690 Common Report Var(flag_wrapv) Optimization
2691 Assume signed arithmetic overflow wraps around.
2693 fzero-initialized-in-bss
2694 Common Report Var(flag_zero_initialized_in_bss) Init(1)
2695 Put zero initialized data in the bss section.
2698 Common JoinedOrMissing
2699 Generate debug information in default format.
2702 Common JoinedOrMissing Negative(gdwarf)
2703 Generate debug information in COFF format.
2706 Common JoinedOrMissing Negative(gdwarf-)
2707 Generate debug information in default version of DWARF format.
2710 Common Joined UInteger Var(dwarf_version) Init(4) Negative(gstabs)
2711 Generate debug information in DWARF v2 (or later) format.
2714 Common JoinedOrMissing
2715 Generate debug information in default extended format.
2718 Common Negative(gpubnames) Var(debug_generate_pub_sections, 0) Init(-1)
2719 Don't generate DWARF pubnames and pubtypes sections.
2722 Common Negative(ggnu-pubnames) Var(debug_generate_pub_sections, 1)
2723 Generate DWARF pubnames and pubtypes sections.
2726 Common Negative(gno-pubnames) Var(debug_generate_pub_sections, 2)
2727 Generate DWARF pubnames and pubtypes sections with GNU extensions.
2729 gno-record-gcc-switches
2730 Common RejectNegative Var(dwarf_record_gcc_switches,0) Init(1)
2731 Don't record gcc command line switches in DWARF DW_AT_producer.
2733 grecord-gcc-switches
2734 Common RejectNegative Var(dwarf_record_gcc_switches,1)
2735 Record gcc command line switches in DWARF DW_AT_producer.
2738 Common Driver RejectNegative Var(dwarf_split_debug_info,0) Init(0)
2739 Don't generate debug information in separate .dwo files.
2742 Common Driver RejectNegative Var(dwarf_split_debug_info,1)
2743 Generate debug information in separate .dwo files.
2746 Common JoinedOrMissing Negative(gstabs+)
2747 Generate debug information in STABS format.
2750 Common JoinedOrMissing Negative(gvms)
2751 Generate debug information in extended STABS format.
2754 Common RejectNegative Var(dwarf_strict,0) Init(0)
2755 Emit DWARF additions beyond selected version.
2758 Common Report RejectNegative Var(dwarf_strict,1)
2759 Don't emit DWARF additions beyond selected version.
2762 Common Report Var(flag_gtoggle)
2763 Toggle debug information generation.
2766 Common JoinedOrMissing Negative(gxcoff)
2767 Generate debug information in VMS format.
2770 Common JoinedOrMissing Negative(gxcoff+)
2771 Generate debug information in XCOFF format.
2774 Common JoinedOrMissing Negative(gcoff)
2775 Generate debug information in extended XCOFF format.
2778 Name(compressed_debug_sections) Type(int)
2780 ; Since -gz= is completely handled in specs, the values aren't used and we
2781 ; assign arbitrary constants.
2783 Enum(compressed_debug_sections) String(none) Value(0)
2786 Enum(compressed_debug_sections) String(zlib) Value(1)
2789 Enum(compressed_debug_sections) String(zlib-gnu) Value(2)
2793 Generate compressed debug sections.
2796 Common Driver Joined Enum(compressed_debug_sections)
2797 -gz=<format> Generate compressed debug sections in format <format>.
2800 Driver Joined Separate
2803 Common Joined Var(plugindir_string) Init(0)
2804 -iplugindir=<dir> Set <dir> to be the default plugin directory.
2807 Common Joined Separate RejectDriver Var(imultiarch) Init(0)
2808 -imultiarch <dir> Set <dir> to be the multiarch include subdirectory.
2811 Driver Joined Separate
2816 no-canonical-prefixes
2829 Common Driver Joined Separate Var(asm_file_name) MissingArgError(missing filename after %qs)
2830 -o <file> Place output into <file>.
2833 Common Var(profile_flag)
2834 Enable function profiling.
2837 Driver Var(pass_exit_codes)
2840 Common Alias(Wpedantic)
2843 Common Var(flag_pedantic_errors)
2844 Like -pedantic but issue them as errors.
2850 Driver Var(use_pipes)
2853 Driver JoinedOrMissing Var(print_file_name)
2855 print-libgcc-file-name
2858 print-multi-directory
2859 Driver Var(print_multi_directory)
2862 Driver Var(print_multi_lib)
2864 print-multi-os-directory
2865 Driver Var(print_multi_os_directory)
2868 Driver Var(print_multiarch)
2871 Driver JoinedOrMissing Var(print_prog_name)
2874 Driver Var(print_search_dirs)
2877 Driver Var(print_sysroot)
2879 print-sysroot-headers-suffix
2880 Driver Var(print_sysroot_headers_suffix)
2883 Common Var(quiet_flag) RejectDriver
2884 Do not display functions compiled or elapsed time.
2902 Driver Var(report_times)
2905 Driver JoinedOrMissing
2908 Driver Joined Separate
2912 ; C option, but driver must not handle as "-u ndef".
2915 Common Driver Var(verbose_flag)
2916 Enable verbose output.
2919 Common Var(version_flag) RejectDriver
2920 Display the compiler's version.
2923 Common Var(inhibit_warnings)
2927 Driver Separate Var(wrapper_string)
2930 Driver Joined Separate
2933 Driver RejectNegative Negative(pie)
2934 Create a shared library.
2940 Driver Separate Alias(specs=)
2953 ; Documented for Fortran, but always accepted by driver.
2960 ; Documented for Go, but always accepted by driver.
2978 Driver RejectNegative Negative(shared)
2979 Don't create a position independent executable.
2982 Driver RejectNegative Negative(no-pie)
2983 Create a position independent executable.
2986 Driver Joined Separate
2989 Common Report Var(flag_ipa_ra) Optimization
2990 Use caller save register across calls if possible.
2992 ; This comment is to ensure we retain the blank line above.