1 ; Options for the language- and target-independent parts of the compiler.
3 ; Copyright (C) 2003-2015 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.
170 ; -dP causes the rtl to be emitted as a comment in assembly.
172 int flag_dump_rtl_in_asm
174 ; Whether -da was passed (used only in handle_common_deferred_options).
176 bool flag_dump_all_passed
178 ; Other flags saying which kinds of debugging dump have been requested.
181 int rtl_dump_and_exit
184 int flag_print_asm_name
186 ; Name of top-level original source file (what was input to cpp).
187 ; This comes from the #-command at the beginning of the actual input.
188 ; If there isn't any there, then this is the cc1 input file name.
190 const char *main_input_filename
192 ; Pointer to base name in main_input_filename, with directories and a
193 ; single final extension removed, and the length of this base
197 const char *main_input_basename
200 int main_input_baselength
202 ; Which options have been printed by --help.
206 ; Which enums have been printed by --help. 0 = not printed, no
207 ; relevant options seen, 1 = relevant option seen, not yet printed, 2
210 char *help_enum_printed
212 ; The number of columns for --help output.
214 unsigned int help_columns
216 ; Whether this options structure has been through finish_options
218 bool flag_opts_finished
220 ; What the sanitizer should instrument
222 unsigned int flag_sanitize
224 ; What sanitizers should recover from errors
226 unsigned int flag_sanitize_recover = SANITIZE_UNDEFINED | SANITIZE_NONDEFAULT | SANITIZE_KERNEL_ADDRESS
228 fsanitize-coverage=trace-pc
229 Common Report Var(flag_sanitize_coverage)
230 Enable coverage-guided fuzzing code instrumentation.
231 Inserts call to __sanitizer_cov_trace_pc into every basic block.
233 ; Flag whether a prefix has been added to dump_base_name
235 bool dump_base_name_prefixed = false
247 Driver Alias(coverage)
253 Common Separate Alias(d)
256 Common Joined Alias(d)
259 Common Separate Alias(dumpbase)
262 Common Separate Alias(dumpdir)
265 Driver Separate Alias(e)
268 Driver Joined Alias(e)
271 Common Warning Alias(Wextra)
274 Driver Separate Alias(Xassembler)
277 Driver JoinedOrMissing Alias(Xassembler)
280 Driver Separate Alias(Xlinker)
283 Driver JoinedOrMissing Alias(Xlinker)
286 Driver Separate Alias(u)
289 Driver Joined Alias(u)
292 Common Driver Var(help_flag)
293 Display this information.
296 Common Driver Report Joined
297 --help=<class> Display descriptions of a specific class of options. <class> is one or more of optimizers, target, warnings, undocumented, params.
300 Driver Separate Alias(x)
303 Driver Joined Alias(x)
306 Driver Separate Alias(L)
309 Driver Joined Alias(L)
311 -no-canonical-prefixes
312 Driver Alias(no-canonical-prefixes)
314 -no-standard-libraries
315 Driver Alias(nostdlib)
318 Driver Var(no_sysroot_suffix)
327 Common Driver Separate Alias(o) MissingArgError(missing filename after %qs)
330 Common Driver Joined Alias(o) MissingArgError(missing filename after %qs)
333 Driver Alias(pass-exit-codes)
336 Common Alias(Wpedantic)
339 Common Alias(pedantic-errors)
348 Driver Separate Alias(B)
351 Driver JoinedOrMissing Alias(B)
357 Driver Separate Alias(print-file-name=)
360 Driver JoinedOrMissing Alias(print-file-name=)
362 -print-libgcc-file-name
363 Driver Alias(print-libgcc-file-name)
365 -print-multi-directory
366 Driver Alias(print-multi-directory)
369 Driver Alias(print-multi-lib)
371 -print-multi-os-directory
372 Driver Alias(print-multi-os-directory)
375 Driver Alias(print-multiarch)
378 Driver Separate Alias(print-prog-name=)
381 Driver JoinedOrMissing Alias(print-prog-name=)
384 Driver Alias(print-search-dirs)
387 Driver Alias(print-sysroot)
389 -print-sysroot-headers-suffix
390 Driver Alias(print-sysroot-headers-suffix)
396 Driver Alias(save-temps)
402 Driver Separate Alias(specs=)
405 Driver Joined Alias(specs=)
411 Driver Alias(symbolic)
415 Alias for --help=target.
423 ;; The driver used to convert options such as --help into forms such
424 ;; as -fhelp; the following four entries are for compatibility with
425 ;; any direct uses of those (undocumented) -f forms
427 Common Driver Alias(-help)
430 Common Driver Joined Alias(-help=)
433 Common Driver Alias(-target-help)
436 Common Driver Alias(-version)
440 --param <param>=<value> Set parameter <param> to value. See below for a complete list of parameters.
443 Common Joined Alias(-param)
446 Driver Separate Alias(-sysroot=)
449 Driver JoinedOrMissing
455 Driver Joined Separate
461 Driver Joined Separate
467 Common JoinedOrMissing Optimization
468 -O<number> Set optimization level to <number>.
472 Optimize for space rather than speed.
476 Optimize for speed disregarding exact standards compliance.
480 Optimize for debugging experience rather than speed or size.
492 Driver Joined Separate
498 Driver Joined Separate
519 Common RejectNegative Warning Alias(Wextra)
520 This switch is deprecated; use -Wextra instead.
523 Driver JoinedOrMissing
526 Driver JoinedOrMissing
529 Driver JoinedOrMissing
532 Common Var(warn_aggregate_return) Warning
533 Warn about returning structures, unions or arrays.
535 Waggressive-loop-optimizations
536 Common Var(warn_aggressive_loop_optimizations) Init(1) Warning
537 Warn if a loop with constant number of iterations triggers undefined behavior.
540 Common Var(warn_array_bounds) Warning
541 Warn if an array is accessed out of bounds.
544 Common Joined RejectNegative UInteger Var(warn_array_bounds) Warning
545 Warn if an array is accessed out of bounds.
548 Common Var(warn_attributes) Init(1) Warning
549 Warn about inappropriate attribute usage.
552 Common Var(warn_cast_align) Warning
553 Warn about pointer casts which increase alignment.
556 Common Var(warn_cpp) Init(1) Warning
557 Warn when a #warning directive is encountered.
559 Wdeprecated-declarations
560 Common Var(warn_deprecated_decl) Init(1) Warning
561 Warn about uses of __attribute__((deprecated)) declarations.
563 Wdisabled-optimization
564 Common Var(warn_disabled_optimization) Warning
565 Warn when an optimization pass is disabled.
568 Common Var(warnings_are_errors)
569 Treat all warnings as errors.
573 Treat specified warning as error.
576 Common Var(extra_warnings) Warning
577 Print extra (possibly unwanted) warnings.
580 Common Var(flag_fatal_errors)
581 Exit on the first error occurred.
584 Common RejectNegative Joined UInteger
585 -Wframe-larger-than=<number> Warn if a function's stack frame requires more than <number> bytes.
588 Common Var(warn_free_nonheap_object) Init(1) Warning
589 Warn when attempting to free a non-heap object.
592 Common Var(warn_inline) Warning
593 Warn when an inlined function cannot be inlined.
595 Winvalid-memory-model
596 Common Var(warn_invalid_memory_model) Init(1) Warning
597 Warn when an atomic memory model parameter is known to be outside the valid range.
600 Common RejectNegative Joined Warning Undocumented Alias(Wlarger-than=)
603 Common RejectNegative Joined UInteger Warning
604 -Wlarger-than=<number> Warn if an object is larger than <number> bytes.
607 Common Var(warn_null_dereference) Warning
608 Warn if dereferencing a NULL pointer may lead to erroneous or undefined behavior.
610 Wunsafe-loop-optimizations
611 Common Var(warn_unsafe_loop_optimizations) Warning
612 Warn if the loop cannot be optimized due to nontrivial assumptions.
615 Common Alias(Wsuggest-attribute=noreturn)
618 Common Var(warn_odr_violations) Init(1) Warning
619 Warn about some C++ One Definition Rule violations during link time optimization.
622 Common Var(warn_overflow) Init(1) Warning
623 Warn about overflow in arithmetic expressions.
626 Common Var(warn_lto_type_mismatch) Init(1) Warning
627 During link time optimization warn about mismatched types of global declarations.
630 Common Var(warn_packed) Warning
631 Warn when the packed attribute has no effect on struct layout.
634 Common Var(warn_padded) Warning
635 Warn when padding is required to align structure members.
638 Common Var(pedantic) Init(0) Warning
639 Issue warnings needed for strict compliance to the standard.
642 Common Var(warn_return_local_addr) Init(1) Warning
643 Warn about returning a pointer/reference to a local or temporary variable.
646 Common Var(warn_shadow) Warning
647 Warn when one local variable shadows another.
650 Common Var(warn_stack_protect) Warning
651 Warn when not issuing stack smashing protection for some reason.
654 Common Joined RejectNegative UInteger Var(warn_stack_usage) Init(-1) Warning
655 Warn if stack usage might be larger than specified amount.
659 Warn about code which might break strict aliasing rules.
662 Common Joined RejectNegative UInteger Var(warn_strict_aliasing) Warning
663 Warn about code which might break strict aliasing rules.
667 Warn about optimizations that assume that signed overflow is undefined.
670 Common Joined RejectNegative UInteger Var(warn_strict_overflow) Warning
671 Warn about optimizations that assume that signed overflow is undefined.
673 Wsuggest-attribute=const
674 Common Var(warn_suggest_attribute_const) Warning
675 Warn about functions which might be candidates for __attribute__((const)).
677 Wsuggest-attribute=pure
678 Common Var(warn_suggest_attribute_pure) Warning
679 Warn about functions which might be candidates for __attribute__((pure)).
681 Wsuggest-attribute=noreturn
682 Common Var(warn_suggest_attribute_noreturn) Warning
683 Warn about functions which might be candidates for __attribute__((noreturn)).
686 Common Var(warn_suggest_final_types) Warning
687 Warn about C++ polymorphic types where adding final keyword would improve code quality.
689 Wsuggest-final-methods
690 Common Var(warn_suggest_final_methods) Warning
691 Warn about C++ virtual methods where adding final keyword would improve code quality.
694 Common Var(warn_system_headers) Warning
695 Do not suppress warnings from system headers.
698 Common Var(warn_trampolines) Warning
699 Warn whenever a trampoline is generated.
702 Common Var(warn_type_limits) Warning EnabledBy(Wextra)
703 Warn if a comparison is always true or always false due to the limited range of the data type.
706 Common Var(warn_uninitialized) Warning EnabledBy(Wextra)
707 Warn about uninitialized automatic variables.
710 Common Var(warn_maybe_uninitialized) Warning EnabledBy(Wuninitialized)
711 Warn about maybe uninitialized automatic variables.
715 Does nothing. Preserved for backward compatibility.
718 Common Var(warn_unused) Init(0) Warning
719 Enable all -Wunused- warnings.
721 Wunused-but-set-parameter
722 Common Var(warn_unused_but_set_parameter) Warning EnabledBy(Wunused && Wextra)
723 Warn when a function parameter is only set, otherwise unused.
725 Wunused-but-set-variable
726 Common Var(warn_unused_but_set_variable) Warning EnabledBy(Wunused)
727 Warn when a variable is only set, otherwise unused.
730 Common Var(warn_unused_function) Warning EnabledBy(Wunused)
731 Warn when a function is unused.
734 Common Var(warn_unused_label) Warning EnabledBy(Wunused)
735 Warn when a label is unused.
738 Common Var(warn_unused_parameter) Warning EnabledBy(Wunused && Wextra)
739 Warn when a function parameter is unused.
742 Common Var(warn_unused_value) Warning EnabledBy(Wunused)
743 Warn when an expression value is unused.
746 Common Var(warn_unused_variable) Warning EnabledBy(Wunused)
747 Warn when a variable is unused.
750 Common Var(warn_coverage_mismatch) Init(1) Warning
751 Warn in case profiles in -fprofile-use do not match.
753 Wvector-operation-performance
754 Common Var(warn_vector_operation_performance) Warning
755 Warn when a vector operation is compiled outside the SIMD.
770 Common Separate Var(aux_info_file_name)
771 -aux-info <file> Emit declaration information into <file>.
774 Common Joined Alias(aux-info)
777 Common Separate RejectDriver Var(aux_base_name)
780 Common Separate RejectDriver
790 -d<letters> Enable dumps from specific passes of the compiler.
793 Common Separate Var(dump_base_name)
794 -dumpbase <file> Set the file basename to be used for dumps.
797 Common Separate Var(dump_dir_name)
798 -dumpdir <dir> Set the directory name to be used for dumps.
810 Driver Joined Separate
812 ; This option has historically been passed down to the linker by an
813 ; accident of a %{e*} spec, so ensure it continues to be passed down
814 ; as a single option. The supported option for this purpose is
815 ; -rdynamic. See PR 47390.
819 ; The version of the C++ ABI in use. The following values are allowed:
821 ; 0: The version of the ABI believed most conformant with the C++ ABI
822 ; specification. This ABI may change as bugs are discovered and fixed.
823 ; Therefore, 0 will not necessarily indicate the same ABI in different
826 ; 1: The version of the ABI first used in G++ 3.2. No longer selectable.
828 ; 2: The version of the ABI first used in G++ 3.4, and the default
831 ; 3: The version of the ABI that fixes the missing underscore
832 ; in template non-type arguments of pointer type.
834 ; 4: The version of the ABI that introduces unambiguous mangling of
835 ; vector types. First selectable in G++ 4.5.
837 ; 5: The version of the ABI that ignores attribute const/noreturn
838 ; in function pointer mangling, and corrects mangling of decltype and
839 ; function parameters used in other parameters and the return type.
840 ; First selectable in G++ 4.6.
842 ; 6: The version of the ABI that doesn't promote scoped enums to int and
843 ; changes the mangling of template argument packs, const/static_cast,
844 ; prefix ++ and --, and a class scope function used as a template
846 ; First selectable in G++ 4.7.
848 ; 7: The version of the ABI that treats nullptr_t as a builtin type and
849 ; corrects the mangling of lambdas in default argument scope.
850 ; First selectable in G++ 4.8.
852 ; 8: The version of the ABI that corrects the substitution behavior of
853 ; function types with function-cv-qualifiers.
854 ; First selectable in G++ 4.9 and default in G++ 5.
856 ; 9: The version of the ABI that corrects the alignment of nullptr_t.
857 ; First selectable and default in G++ 5.2.
859 ; 10: The version of the ABI that mangles attributes that affect type
860 ; identity, such as ia32 calling convention attributes (stdcall, etc.)
861 ; Default in G++ 6 (set in c_common_post_options).
863 ; Additional positive integers will be assigned as new versions of
864 ; the ABI become the default version of the ABI.
866 Common Joined RejectNegative UInteger Var(flag_abi_version) Init(0)
867 The version of the C++ ABI in use.
869 faggressive-loop-optimizations
870 Common Report Var(flag_aggressive_loop_optimizations) Optimization Init(1)
871 Aggressively optimize loops using language constraints.
874 Common Report Var(align_functions,0) Optimization UInteger
875 Align the start of functions.
878 Common RejectNegative Joined UInteger Var(align_functions)
881 Common Report Var(align_jumps,0) Optimization UInteger
882 Align labels which are only reached by jumping.
885 Common RejectNegative Joined UInteger Var(align_jumps)
888 Common Report Var(align_labels,0) Optimization UInteger
892 Common RejectNegative Joined UInteger Var(align_labels)
895 Common Report Var(align_loops,0) Optimization UInteger
896 Align the start of loops.
899 Common RejectNegative Joined UInteger Var(align_loops)
903 Does nothing. Preserved for backward compatibility.
907 Does nothing. Preserved for backward compatibility.
909 fargument-noalias-global
911 Does nothing. Preserved for backward compatibility.
913 fargument-noalias-anything
915 Does nothing. Preserved for backward compatibility.
918 Common Driver Report Joined
919 Select what to sanitize.
922 Common Joined RejectNegative Var(common_deferred_options) Defer
923 -fasan-shadow-offset=<number> Use custom shadow memory offset.
926 Common Joined RejectNegative Var(common_deferred_options) Defer
927 -fsanitize-sections=<sec1,sec2,...> Sanitize global variables
928 in user-defined sections.
932 After diagnosing undefined behavior attempt to continue execution.
936 This switch is deprecated; use -fsanitize-recover= instead.
938 fsanitize-undefined-trap-on-error
939 Common Driver Report Var(flag_sanitize_undefined_trap_on_error) Init(0)
940 Use trap instead of a library function for undefined behavior sanitization.
942 fasynchronous-unwind-tables
943 Common Report Var(flag_asynchronous_unwind_tables) Optimization
944 Generate unwind tables that are exact at each instruction boundary.
947 Common Report Var(flag_auto_inc_dec) Init(1) Optimization
948 Generate auto-inc/dec instructions.
951 Common Report Var(flag_auto_profile)
952 Use sample profile information for call graph node weights. The default
953 profile file is fbdata.afdo in 'pwd'.
956 Common Joined RejectNegative Var(auto_profile_file)
957 Use sample profile information for call graph node weights. The profile
958 file is specified in the argument.
960 ; -fcheck-bounds causes gcc to generate array bounds checks.
961 ; For C, C++ and ObjC: defaults off.
962 ; For Java: defaults to on.
963 ; For Fortran: defaults to off.
965 Common Report Var(flag_bounds_check)
966 Generate code to check bounds before indexing arrays.
969 Common Report Var(flag_branch_on_count_reg) Optimization
970 Replace add, compare, branch with branch on count register.
972 fbranch-probabilities
973 Common Report Var(flag_branch_probabilities) Optimization
974 Use profiling information for branch probabilities.
976 fbranch-target-load-optimize
977 Common Report Var(flag_branch_target_load_optimize) Optimization
978 Perform branch target load optimization before prologue / epilogue threading.
980 fbranch-target-load-optimize2
981 Common Report Var(flag_branch_target_load_optimize2) Optimization
982 Perform branch target load optimization after prologue / epilogue threading.
985 Common Report Var(flag_btr_bb_exclusive) Optimization
986 Restrict target load migration not to re-use registers in any basic block.
989 Common Joined RejectNegative Var(common_deferred_options) Defer
990 -fcall-saved-<register> Mark <register> as being preserved across functions.
993 Common Joined RejectNegative Var(common_deferred_options) Defer
994 -fcall-used-<register> Mark <register> as being corrupted by function calls.
996 ; Nonzero for -fcaller-saves: allocate values in regs that need to
997 ; be saved across function calls, if that produces overall better code.
998 ; Optional now, so people can test it.
1000 Common Report Var(flag_caller_saves) Optimization
1001 Save registers around function calls.
1004 Common Report Var(flag_check_data_deps)
1005 This switch is deprecated; do not use.
1008 Common Var(flag_check_new)
1009 Check the return value of new in C++.
1012 Common Var(flag_checking) Init(CHECKING_P)
1013 Perform internal consistency checkings.
1015 fcombine-stack-adjustments
1016 Common Report Var(flag_combine_stack_adjustments) Optimization
1017 Looks for opportunities to reduce stack adjustments and stack references.
1020 Common Report Var(flag_no_common,0)
1021 Do not put uninitialized globals in the common section.
1025 ; Converted by the driver to -fcompare-debug= options.
1028 Common Driver JoinedOrMissing RejectNegative Var(flag_compare_debug_opt)
1029 -fcompare-debug[=<opts>] Compile with and without e.g. -gtoggle, and compare the final-insns dump.
1031 fcompare-debug-second
1032 Common Driver RejectNegative Var(flag_compare_debug)
1033 Run only the second compilation of -fcompare-debug.
1036 Common Report Var(flag_compare_elim_after_reload) Optimization
1037 Perform comparison elimination after register allocation has finished.
1040 Common Var(flag_conserve_stack) Optimization
1041 Do not perform optimizations increasing noticeably stack usage.
1044 Common Report Var(flag_cprop_registers) Optimization
1045 Perform a register copy-propagation optimization pass.
1048 Common Report Var(flag_crossjumping) Optimization
1049 Perform cross-jumping optimization.
1052 Common Report Var(flag_cse_follow_jumps) Optimization
1053 When running CSE, follow jumps to their targets.
1057 Does nothing. Preserved for backward compatibility.
1060 Common Report Var(flag_cx_limited_range) Optimization SetByCombined
1061 Omit range reduction step when performing complex division.
1064 Common Report Var(flag_cx_fortran_rules) Optimization
1065 Complex multiplication and division follow Fortran rules.
1068 Common Report Var(flag_data_sections)
1069 Place data items into their own section.
1072 Common Report Var(common_deferred_options) Defer
1073 List all available debugging counters with their limits and counts.
1076 Common RejectNegative Joined Var(common_deferred_options) Defer
1077 -fdbg-cnt=<counter>:<limit>[,<counter>:<limit>,...] Set the debug counter limit.
1080 Common Joined RejectNegative Var(common_deferred_options) Defer
1081 Map one directory name to another in debug information.
1083 fdebug-types-section
1084 Common Report Var(flag_debug_types_section) Init(0)
1085 Output .debug_types section when using DWARF v4 debuginfo.
1087 ; Nonzero for -fdefer-pop: don't pop args after each function call
1088 ; instead save them up to pop many calls' args with one insns.
1090 Common Report Var(flag_defer_pop) Optimization
1091 Defer popping functions args from stack until later.
1094 Common Report Var(flag_delayed_branch) Optimization
1095 Attempt to fill delay slots of branch instructions.
1097 fdelete-dead-exceptions
1098 Common Report Var(flag_delete_dead_exceptions) Init(0) Optimization
1099 Delete dead instructions that may throw exceptions.
1101 fdelete-null-pointer-checks
1102 Common Report Var(flag_delete_null_pointer_checks) Init(-1) Optimization
1103 Delete useless null pointer checks.
1105 fdevirtualize-at-ltrans
1106 Common Report Var(flag_ltrans_devirtualize)
1107 Stream extra data to support more aggressive devirtualization in LTO local transformation mode.
1109 fdevirtualize-speculatively
1110 Common Report Var(flag_devirtualize_speculatively) Optimization
1111 Perform speculative devirtualization.
1114 Common Report Var(flag_devirtualize) Optimization
1115 Try to convert virtual calls to direct ones.
1117 fdiagnostics-show-location=
1118 Common Joined RejectNegative Enum(diagnostic_prefixing_rule)
1119 -fdiagnostics-show-location=[once|every-line] How often to emit source location at the beginning of line-wrapped diagnostics.
1121 ; Required for these enum values.
1126 Name(diagnostic_prefixing_rule) Type(int)
1129 Enum(diagnostic_prefixing_rule) String(once) Value(DIAGNOSTICS_SHOW_PREFIX_ONCE)
1132 Enum(diagnostic_prefixing_rule) String(every-line) Value(DIAGNOSTICS_SHOW_PREFIX_EVERY_LINE)
1134 fdiagnostics-show-caret
1135 Common Var(flag_diagnostics_show_caret) Init(1)
1136 Show the source line with a caret indicating the column.
1139 Common Alias(fdiagnostics-color=,always,never)
1143 Driver Common Joined RejectNegative Var(flag_diagnostics_show_color) Enum(diagnostic_color_rule) Init(DIAGNOSTICS_COLOR_NO)
1144 -fdiagnostics-color=[never|always|auto] Colorize diagnostics.
1146 ; Required for these enum values.
1151 Name(diagnostic_color_rule) Type(int)
1154 Enum(diagnostic_color_rule) String(never) Value(DIAGNOSTICS_COLOR_NO)
1157 Enum(diagnostic_color_rule) String(always) Value(DIAGNOSTICS_COLOR_YES)
1160 Enum(diagnostic_color_rule) String(auto) Value(DIAGNOSTICS_COLOR_AUTO)
1162 fdiagnostics-show-option
1163 Common Var(flag_diagnostics_show_option) Init(1)
1164 Amend appropriate diagnostic messages with the command line option that controls them.
1167 Common Joined RejectNegative Var(common_deferred_options) Defer
1168 -fdisable-[tree|rtl|ipa]-<pass>=range1+range2 disables an optimization pass.
1171 Common Joined RejectNegative Var(common_deferred_options) Defer
1172 -fenable-[tree|rtl|ipa]-<pass>=range1+range2 enables an optimization pass.
1175 Common Joined RejectNegative Var(common_deferred_options) Defer
1176 -fdump-<type> Dump various compiler internals to a file.
1179 Driver RejectNegative
1182 Common RejectNegative Joined Var(flag_dump_final_insns)
1183 -fdump-final-insns=filename Dump to filename the insns at the end of translation.
1186 Common RejectNegative Joined Var(flag_dump_go_spec)
1187 -fdump-go-spec=filename Write all declarations to file as Go code.
1190 Common Report Var(flag_dump_noaddr)
1191 Suppress output of addresses in debugging dumps.
1194 Common Driver Var(flag_report_bug)
1195 Collect and dump debug information into temporary file if ICE in C/C++
1198 fdump-internal-locations
1199 Common Var(flag_dump_locations) Init(0)
1200 Dump detailed information on GCC's internal representation of source code locations.
1203 Common Var(flag_dump_passes) Init(0)
1204 Dump optimization passes.
1207 Common Report Var(flag_dump_unnumbered)
1208 Suppress output of instruction numbers, line number notes and addresses in debugging dumps.
1210 fdump-unnumbered-links
1211 Common Report Var(flag_dump_unnumbered_links)
1212 Suppress output of previous and next insn numbers in debugging dumps.
1215 Common Report Var(flag_dwarf2_cfi_asm) Init(HAVE_GAS_CFI_DIRECTIVE)
1216 Enable CFI tables via GAS assembler directives.
1219 Common Report Var(flag_early_inlining) Init(1) Optimization
1220 Perform early inlining.
1222 feliminate-dwarf2-dups
1223 Common Report Var(flag_eliminate_dwarf2_dups)
1224 Perform DWARF2 duplicate elimination.
1227 Common Report Var(flag_ipa_sra) Init(0) Optimization
1228 Perform interprocedural reduction of aggregates.
1230 feliminate-unused-debug-symbols
1231 Common Report Var(flag_debug_only_used_symbols)
1232 Perform unused symbol elimination in debug info.
1234 feliminate-unused-debug-types
1235 Common Report Var(flag_eliminate_unused_debug_types) Init(1)
1236 Perform unused type elimination in debug info.
1238 femit-class-debug-always
1239 Common Report Var(flag_emit_class_debug_always) Init(0)
1240 Do not suppress C++ class debug information.
1243 Common Report Var(flag_exceptions) Optimization
1244 Enable exception handling.
1246 fexpensive-optimizations
1247 Common Report Var(flag_expensive_optimizations) Optimization
1248 Perform a number of minor, expensive optimizations.
1251 Common Joined RejectNegative Enum(excess_precision) Var(flag_excess_precision_cmdline) Init(EXCESS_PRECISION_DEFAULT)
1252 -fexcess-precision=[fast|standard] Specify handling of excess floating-point precision.
1255 Name(excess_precision) Type(enum excess_precision) UnknownError(unknown excess precision style %qs)
1258 Enum(excess_precision) String(fast) Value(EXCESS_PRECISION_FAST)
1261 Enum(excess_precision) String(standard) Value(EXCESS_PRECISION_STANDARD)
1267 Common Var(flag_fat_lto_objects)
1268 Output lto objects containing both the intermediate language and binary output.
1271 Common Report Var(flag_finite_math_only) Optimization SetByCombined
1272 Assume no NaNs or infinities are generated.
1275 Common Joined RejectNegative Var(common_deferred_options) Defer
1276 -ffixed-<register> Mark <register> as being unavailable to the compiler.
1279 Common Report Var(flag_float_store) Optimization
1280 Don't allocate floats and doubles in extended-precision registers.
1284 Does nothing. Preserved for backward compatibility.
1287 Common Report Var(flag_forward_propagate) Optimization
1288 Perform a forward propagation pass on RTL.
1291 Common Joined RejectNegative Enum(fp_contract_mode) Var(flag_fp_contract_mode) Init(FP_CONTRACT_FAST) Optimization
1292 -ffp-contract=[off|on|fast] Perform floating-point expression contraction.
1295 Name(fp_contract_mode) Type(enum fp_contract_mode) UnknownError(unknown floating point contraction style %qs)
1298 Enum(fp_contract_mode) String(off) Value(FP_CONTRACT_OFF)
1300 ; Not implemented, fall back to conservative FP_CONTRACT_OFF.
1302 Enum(fp_contract_mode) String(on) Value(FP_CONTRACT_OFF)
1305 Enum(fp_contract_mode) String(fast) Value(FP_CONTRACT_FAST)
1307 ; Nonzero means don't put addresses of constant functions in registers.
1308 ; Used for compiling the Unix kernel, where strange substitutions are
1309 ; done on the assembly output.
1311 Common Report Var(flag_no_function_cse,0) Optimization
1312 Allow function addresses to be held in registers.
1315 Common Report Var(flag_function_sections)
1316 Place each function into its own section.
1319 Common Report Var(flag_gcse) Optimization
1320 Perform global common subexpression elimination.
1323 Common Report Var(flag_gcse_lm) Init(1) Optimization
1324 Perform enhanced load motion during global common subexpression elimination.
1327 Common Report Var(flag_gcse_sm) Init(0) Optimization
1328 Perform store motion after global common subexpression elimination.
1331 Common Report Var(flag_gcse_las) Init(0) Optimization
1332 Perform redundant load after store elimination in global common subexpression
1336 Common Report Var(flag_gcse_after_reload) Optimization
1337 Perform global common subexpression elimination after register allocation has
1340 ; This option is not documented yet as its semantics will change.
1342 Common Report Var(flag_graphite) Optimization
1343 Enable in and out of Graphite representation.
1346 Common Report Var(flag_graphite_identity) Optimization
1347 Enable Graphite Identity transformation.
1349 fhoist-adjacent-loads
1350 Common Report Var(flag_hoist_adjacent_loads) Optimization
1351 Enable hoisting adjacent loads to encourage generating conditional move
1354 floop-parallelize-all
1355 Common Report Var(flag_loop_parallelize_all) Optimization
1356 Mark all loops as parallel.
1359 Common Alias(floop-nest-optimize)
1360 Enable loop nest transforms. Same as -floop-nest-optimize.
1363 Common Alias(floop-nest-optimize)
1364 Enable loop nest transforms. Same as -floop-nest-optimize.
1367 Common Alias(floop-nest-optimize)
1368 Enable loop nest transforms. Same as -floop-nest-optimize.
1370 floop-unroll-and-jam
1371 Common Alias(floop-nest-optimize)
1372 Enable loop nest transforms. Same as -floop-nest-optimize.
1375 Common Report Var(flag_tm)
1376 Enable support for GNU transactional memory.
1379 Common Report Var(flag_gnu_unique) Init(1)
1380 Use STB_GNU_UNIQUE if supported by the assembler.
1384 Does nothing. Preserved for backward compatibility.
1387 Common Report Var(flag_loop_nest_optimize) Optimization
1388 Enable the ISL based loop nest optimizer.
1390 fstrict-volatile-bitfields
1391 Common Report Var(flag_strict_volatile_bitfields) Init(-1) Optimization
1392 Force bitfield accesses to match their type width.
1394 fguess-branch-probability
1395 Common Report Var(flag_guess_branch_prob) Optimization
1396 Enable guessing of branch probabilities.
1398 ; Nonzero means ignore `#ident' directives. 0 means handle them.
1399 ; Generate position-independent code for executables if possible
1400 ; On SVR4 targets, it also controls whether or not to emit a
1401 ; string identifying the compiler.
1403 Common Report Var(flag_no_ident,0)
1404 Process #ident directives.
1407 Common Report Var(flag_if_conversion) Optimization
1408 Perform conversion of conditional jumps to branchless equivalents.
1411 Common Report Var(flag_if_conversion2) Optimization
1412 Perform conversion of conditional jumps to conditional execution.
1415 Common Joined RejectNegative Enum(stack_reuse_level) Var(flag_stack_reuse) Init(SR_ALL) Optimization
1416 -fstack-reuse=[all|named_vars|none] Set stack reuse level for local variables.
1419 Name(stack_reuse_level) Type(enum stack_reuse_level) UnknownError(unknown Stack Reuse Level %qs)
1422 Enum(stack_reuse_level) String(all) Value(SR_ALL)
1425 Enum(stack_reuse_level) String(named_vars) Value(SR_NAMED_VARS)
1428 Enum(stack_reuse_level) String(none) Value(SR_NONE)
1430 ftree-loop-if-convert
1431 Common Report Var(flag_tree_loop_if_convert) Init(-1) Optimization
1432 Convert conditional jumps in innermost loops to branchless equivalents.
1434 ftree-loop-if-convert-stores
1435 Common Report Var(flag_tree_loop_if_convert_stores) Optimization
1436 Also if-convert conditional jumps containing memory writes.
1438 ; -finhibit-size-directive inhibits output of .size for ELF.
1439 ; This is used only for compiling crtstuff.c,
1440 ; and it may be extended to other effects
1441 ; needed for crtstuff.c on other systems.
1442 finhibit-size-directive
1443 Common Report Var(flag_inhibit_size_directive)
1444 Do not generate .size directives.
1447 Common Report Var(flag_indirect_inlining) Optimization
1448 Perform indirect inlining.
1450 ; General flag to enable inlining. Specifying -fno-inline will disable
1451 ; all inlining apart from always-inline functions.
1453 Common Report Var(flag_no_inline,0) Init(0) Optimization
1454 Enable inlining of function declared \"inline\", disabling disables all inlining.
1456 finline-small-functions
1457 Common Report Var(flag_inline_small_functions) Optimization
1458 Integrate functions into their callers when code size is known not to grow.
1461 Common Report Var(flag_inline_functions) Optimization
1462 Integrate functions not declared \"inline\" into their callers when profitable.
1464 finline-functions-called-once
1465 Common Report Var(flag_inline_functions_called_once) Optimization
1466 Integrate functions only required by their single caller.
1469 Common RejectNegative Joined Alias(finline-limit=)
1472 Common RejectNegative Joined UInteger
1473 -finline-limit=<number> Limit the size of inlined functions to <number>.
1476 Common Report Var(flag_inline_atomics) Init(1) Optimization
1477 Inline __atomic operations when a lock free instruction sequence is available.
1479 finstrument-functions
1480 Common Report Var(flag_instrument_function_entry_exit)
1481 Instrument function entry and exit with profiling calls.
1483 finstrument-functions-exclude-function-list=
1484 Common RejectNegative Joined
1485 -finstrument-functions-exclude-function-list=name,... Do not instrument listed functions.
1487 finstrument-functions-exclude-file-list=
1488 Common RejectNegative Joined
1489 -finstrument-functions-exclude-file-list=filename,... Do not instrument functions listed in files.
1492 Common Report Var(flag_ipa_cp) Optimization
1493 Perform interprocedural constant propagation.
1496 Common Report Var(flag_ipa_cp_clone) Optimization
1497 Perform cloning to make Interprocedural constant propagation stronger.
1500 Common Report Var(flag_ipa_cp_alignment) Optimization
1501 Perform alignment discovery and propagation to make Interprocedural constant propagation stronger.
1504 Common Report Var(flag_ipa_profile) Init(0) Optimization
1505 Perform interprocedural profile propagation.
1508 Common Report Var(flag_ipa_pta) Init(0) Optimization
1509 Perform interprocedural points-to analysis.
1512 Common Report Var(flag_ipa_pure_const) Init(0) Optimization
1513 Discover pure and const functions.
1516 Common Report Var(flag_ipa_icf) Optimization
1517 Perform Identical Code Folding for functions and read-only variables.
1520 Common Report Var(flag_ipa_icf_functions) Optimization
1521 Perform Identical Code Folding for functions.
1524 Common Report Var(flag_ipa_icf_variables)
1525 Perform Identical Code Folding for variables.
1528 Common Report Var(flag_ipa_reference) Init(0) Optimization
1529 Discover readonly and non addressable static variables.
1533 Does nothing. Preserved for backward compatibility.
1537 Does nothing. Preserved for backward compatibility.
1540 Common Joined RejectNegative Enum(ira_algorithm) Var(flag_ira_algorithm) Init(IRA_ALGORITHM_CB) Optimization
1541 -fira-algorithm=[CB|priority] Set the used IRA algorithm.
1544 Name(ira_algorithm) Type(enum ira_algorithm) UnknownError(unknown IRA algorithm %qs)
1547 Enum(ira_algorithm) String(CB) Value(IRA_ALGORITHM_CB)
1550 Enum(ira_algorithm) String(priority) Value(IRA_ALGORITHM_PRIORITY)
1553 Common Joined RejectNegative Enum(ira_region) Var(flag_ira_region) Init(IRA_REGION_AUTODETECT) Optimization
1554 -fira-region=[one|all|mixed] Set regions for IRA.
1557 Name(ira_region) Type(enum ira_region) UnknownError(unknown IRA region %qs)
1560 Enum(ira_region) String(one) Value(IRA_REGION_ONE)
1563 Enum(ira_region) String(all) Value(IRA_REGION_ALL)
1566 Enum(ira_region) String(mixed) Value(IRA_REGION_MIXED)
1569 Common Report Var(flag_ira_hoist_pressure) Init(1) Optimization
1570 Use IRA based register pressure calculation
1571 in RTL hoist optimizations.
1574 Common Report Var(flag_ira_loop_pressure) Optimization
1575 Use IRA based register pressure calculation
1576 in RTL loop optimizations.
1578 fira-share-save-slots
1579 Common Report Var(flag_ira_share_save_slots) Init(1) Optimization
1580 Share slots for saving different hard registers.
1582 fira-share-spill-slots
1583 Common Report Var(flag_ira_share_spill_slots) Init(1) Optimization
1584 Share stack slots for spilled pseudo-registers.
1587 Common RejectNegative Joined UInteger Var(flag_ira_verbose) Init(5)
1588 -fira-verbose=<number> Control IRA's level of diagnostic messages.
1591 Common Report Var(flag_ivopts) Init(1) Optimization
1592 Optimize induction variables on trees.
1595 Common Var(flag_jump_tables) Init(1) Optimization
1596 Use jump tables for sufficiently large switch statements.
1598 fkeep-inline-functions
1599 Common Report Var(flag_keep_inline_functions)
1600 Generate code for functions even if they are fully inlined.
1602 fkeep-static-functions
1603 Common Report Var(flag_keep_static_functions)
1604 Generate code for static functions even if they are never called.
1607 Common Report Var(flag_keep_static_consts) Init(1)
1608 Emit static const variables even if they are not used.
1611 Common Report Var(flag_leading_underscore) Init(-1)
1612 Give external symbols a leading underscore.
1616 Does nothing. Preserved for backward compatibility.
1619 Common Report Var(flag_lra_remat) Optimization
1620 Do CFG-sensitive rematerialization in LRA.
1624 Enable link-time optimization.
1627 Common RejectNegative Joined Var(flag_lto)
1628 Link-time optimization with number of parallel jobs or jobserver.
1631 Name(lto_partition_model) Type(enum lto_partition_model) UnknownError(unknown LTO partitioning model %qs)
1634 Enum(lto_partition_model) String(none) Value(LTO_PARTITION_NONE)
1637 Enum(lto_partition_model) String(one) Value(LTO_PARTITION_ONE)
1640 Enum(lto_partition_model) String(balanced) Value(LTO_PARTITION_BALANCED)
1643 Enum(lto_partition_model) String(1to1) Value(LTO_PARTITION_1TO1)
1646 Enum(lto_partition_model) String(max) Value(LTO_PARTITION_MAX)
1649 Common Joined RejectNegative Enum(lto_partition_model) Var(flag_lto_partition) Init(LTO_PARTITION_BALANCED)
1650 Specify the algorithm to partition symbols and vars at linktime.
1652 ; The initial value of -1 comes from Z_DEFAULT_COMPRESSION in zlib.h.
1653 flto-compression-level=
1654 Common Joined RejectNegative UInteger Var(flag_lto_compression_level) Init(-1)
1655 -flto-compression-level=<number> Use zlib compression level <number> for IL.
1657 flto-odr-type-merging
1658 Common Report Var(flag_lto_odr_type_mering) Init(1)
1659 Merge C++ types using One Definition Rule.
1662 Common Report Var(flag_lto_report) Init(0)
1663 Report various link-time optimization statistics.
1666 Common Report Var(flag_lto_report_wpa) Init(0)
1667 Report various link-time optimization statistics for WPA only.
1670 Common Report Var(flag_errno_math) Init(1) Optimization SetByCombined
1671 Set errno after built-in math functions.
1674 Common Joined RejectNegative UInteger Var(flag_max_errors)
1675 -fmax-errors=<number> Maximum number of errors to report.
1678 Common Report Var(mem_report)
1679 Report on permanent memory allocation.
1682 Common Report Var(mem_report_wpa)
1683 Report on permanent memory allocation in WPA only.
1685 ; This will attempt to merge constant section constants, if 1 only
1686 ; string constants and constants from constant pool, if 2 also constant
1688 fmerge-all-constants
1689 Common Report Var(flag_merge_constants,2) Init(1)
1690 Attempt to merge identical constants and constant variables.
1693 Common Report Var(flag_merge_constants,1)
1694 Attempt to merge identical constants across compilation units.
1696 fmerge-debug-strings
1697 Common Report Var(flag_merge_debug_strings) Init(1)
1698 Attempt to merge identical debug strings across compilation units.
1701 Common RejectNegative Joined UInteger
1702 -fmessage-length=<number> Limit diagnostics to <number> characters per line. 0 suppresses line-wrapping.
1705 Common Report Var(flag_modulo_sched) Optimization
1706 Perform SMS based modulo scheduling before the first scheduling pass.
1708 fmodulo-sched-allow-regmoves
1709 Common Report Var(flag_modulo_sched_allow_regmoves) Optimization
1710 Perform SMS based modulo scheduling with register moves allowed.
1712 fmove-loop-invariants
1713 Common Report Var(flag_move_loop_invariants) Optimization
1714 Move loop invariant computations out of loops.
1717 Common Var(flag_dce) Init(1) Optimization
1718 Use the RTL dead code elimination pass.
1721 Common Var(flag_dse) Init(1) Optimization
1722 Use the RTL dead store elimination pass.
1724 freschedule-modulo-scheduled-loops
1725 Common Report Var(flag_resched_modulo_sched) Optimization
1726 Enable/Disable the traditional scheduling in loops that already passed modulo scheduling.
1728 fnon-call-exceptions
1729 Common Report Var(flag_non_call_exceptions) Optimization
1730 Support synchronous non-call exceptions.
1733 Common Driver Joined MissingArgError(options or targets missing after %qs)
1734 -foffload=<targets>=<options> Specify offloading targets and options for them.
1737 Common Joined RejectNegative Enum(offload_abi) Var(flag_offload_abi) Init(OFFLOAD_ABI_UNSET)
1738 -foffload-abi=[lp64|ilp32] Set the ABI to use in an offload compiler.
1741 Name(offload_abi) Type(enum offload_abi) UnknownError(unknown offload ABI %qs)
1744 Enum(offload_abi) String(ilp32) Value(OFFLOAD_ABI_ILP32)
1747 Enum(offload_abi) String(lp64) Value(OFFLOAD_ABI_LP64)
1750 Common Report Var(flag_omit_frame_pointer) Optimization
1751 When possible do not generate stack frames.
1754 Common Report Var(flag_opt_info) Optimization
1755 Enable all optimization info dumps on stderr.
1758 Common Joined RejectNegative Var(common_deferred_options) Defer
1759 -fopt-info[-<type>=filename] Dump compiler optimization details.
1761 foptimize-register-move
1763 Does nothing. Preserved for backward compatibility.
1765 foptimize-sibling-calls
1766 Common Report Var(flag_optimize_sibling_calls) Optimization
1767 Optimize sibling and tail recursive calls.
1770 Common Report Var(flag_partial_inlining) Optimization
1771 Perform partial inlining.
1774 Common Report Var(pre_ipa_mem_report)
1775 Report on memory allocation before interprocedural optimization.
1777 fpost-ipa-mem-report
1778 Common Report Var(post_ipa_mem_report)
1779 Report on memory allocation before interprocedural optimization.
1782 Common Report Var(flag_pack_struct) Optimization
1783 Pack structure members together without holes.
1786 Common RejectNegative Joined UInteger Optimization
1787 -fpack-struct=<number> Set initial maximum structure member alignment.
1790 Common Report Var(flag_pcc_struct_return,1) Init(DEFAULT_PCC_STRUCT_RETURN)
1791 Return small aggregates in memory, not registers.
1794 Common Report Var(flag_peel_loops) Optimization
1795 Perform loop peeling.
1798 Common Report Var(flag_no_peephole,0) Optimization
1799 Enable machine specific peephole optimizations.
1802 Common Report Var(flag_peephole2) Optimization
1803 Enable an RTL peephole pass before sched2.
1806 Common Report Var(flag_pic,2) Negative(fPIE)
1807 Generate position-independent code if possible (large mode).
1810 Common Report Var(flag_pie,2) Negative(fpic) Init(-1)
1811 Generate position-independent code for executables if possible (large mode).
1814 Common Report Var(flag_pic,1) Negative(fpie)
1815 Generate position-independent code if possible (small mode).
1818 Common Report Var(flag_pie,1) Negative(fPIC) Init(-1)
1819 Generate position-independent code for executables if possible (small mode).
1822 Common Report Var(flag_plt) Init(1) Optimization
1823 Use PLT for PIC calls (-fno-plt: load the address from GOT at call site).
1826 Common Joined RejectNegative Var(common_deferred_options) Defer
1827 Specify a plugin to load.
1830 Common Joined RejectNegative Var(common_deferred_options) Defer
1831 -fplugin-arg-<name>-<key>[=<value>] Specify argument <key>=<value> for plugin <name>.
1833 fpredictive-commoning
1834 Common Report Var(flag_predictive_commoning) Optimization
1835 Run predictive commoning optimization.
1837 fprefetch-loop-arrays
1838 Common Report Var(flag_prefetch_loop_arrays) Init(-1) Optimization
1839 Generate prefetch instructions, if available, for arrays in loops.
1842 Common Report Var(profile_flag)
1843 Enable basic program profiling code.
1846 Common Report Var(profile_arc_flag)
1847 Insert arc-based program profiling code.
1850 Common Joined RejectNegative Var(profile_data_prefix)
1851 Set the top-level directory for storing the profile data.
1852 The default is 'pwd'.
1855 Common Report Var(flag_profile_correction)
1856 Enable correction of flow inconsistent profile data input.
1860 Enable common options for generating profile info for profile feedback directed optimizations.
1863 Common Joined RejectNegative
1864 Enable common options for generating profile info for profile feedback directed optimizations, and set -fprofile-dir=.
1867 Common Var(flag_profile_use)
1868 Enable common options for performing profile feedback directed optimizations.
1871 Common Joined RejectNegative
1872 Enable common options for performing profile feedback directed optimizations, and set -fprofile-dir=.
1875 Common Report Var(flag_profile_values)
1876 Insert code to profile values of expressions.
1879 Common Report Var(profile_report)
1880 Report on consistency of profile.
1882 fprofile-reorder-functions
1883 Common Report Var(flag_profile_reorder_functions)
1884 Enable function reordering that improves code placement.
1887 Common Var(common_deferred_options) Defer
1890 Common Joined RejectNegative Var(common_deferred_options) Defer
1891 -frandom-seed=<number> Make compile reproducible using <number>.
1893 ; This switch causes the command line that was used to create an
1894 ; object file to be recorded into the object file. The exact format
1895 ; of this recording is target and binary file format dependent.
1896 ; It is related to the -fverbose-asm switch, but that switch only
1897 ; records information in the assembler output file as comments, so
1898 ; they never reach the object file.
1899 frecord-gcc-switches
1900 Common Report Var(flag_record_gcc_switches)
1901 Record gcc command line switches in the object file.
1904 Common Report Var(flag_pcc_struct_return,0) Optimization
1905 Return small aggregates in registers.
1909 Does nothing. Preserved for backward compatibility.
1912 Common Report Var(flag_lifetime_dse) Init(1) Optimization
1913 Tell DSE that the storage for a C++ object is dead when the constructor
1914 starts and when the destructor finishes.
1916 flive-range-shrinkage
1917 Common Report Var(flag_live_range_shrinkage) Init(0) Optimization
1918 Relief of register pressure through live range shrinkage.
1921 Common Report Var(flag_rename_registers) Init(2) Optimization
1922 Perform a register renaming optimization pass.
1925 Common Report Var(flag_schedule_fusion) Init(2) Optimization
1926 Perform a target dependent instruction fusion optimization pass.
1929 Common Report Var(flag_reorder_blocks) Optimization
1930 Reorder basic blocks to improve code placement.
1932 freorder-blocks-algorithm=
1933 Common Joined RejectNegative Enum(reorder_blocks_algorithm) Var(flag_reorder_blocks_algorithm) Init(REORDER_BLOCKS_ALGORITHM_SIMPLE) Optimization
1934 -freorder-blocks-algorithm=[simple|stc] Set the used basic block reordering algorithm.
1937 Name(reorder_blocks_algorithm) Type(enum reorder_blocks_algorithm) UnknownError(unknown basic block reordering algorithm %qs)
1940 Enum(reorder_blocks_algorithm) String(simple) Value(REORDER_BLOCKS_ALGORITHM_SIMPLE)
1943 Enum(reorder_blocks_algorithm) String(stc) Value(REORDER_BLOCKS_ALGORITHM_STC)
1945 freorder-blocks-and-partition
1946 Common Report Var(flag_reorder_blocks_and_partition) Optimization
1947 Reorder basic blocks and partition into hot and cold sections.
1950 Common Report Var(flag_reorder_functions) Optimization
1951 Reorder functions to improve code placement.
1953 frerun-cse-after-loop
1954 Common Report Var(flag_rerun_cse_after_loop) Optimization
1955 Add a common subexpression elimination pass after loop optimizations.
1959 Does nothing. Preserved for backward compatibility.
1962 Common Report Var(flag_rounding_math) Optimization SetByCombined
1963 Disable optimizations that assume default FP rounding behavior.
1966 Common Report Var(flag_schedule_interblock) Init(1) Optimization
1967 Enable scheduling across basic blocks.
1970 Common Report Var(flag_sched_pressure) Init(0) Optimization
1971 Enable register pressure sensitive insn scheduling.
1974 Common Report Var(flag_schedule_speculative) Init(1) Optimization
1975 Allow speculative motion of non-loads.
1978 Common Report Var(flag_schedule_speculative_load) Optimization
1979 Allow speculative motion of some loads.
1981 fsched-spec-load-dangerous
1982 Common Report Var(flag_schedule_speculative_load_dangerous) Optimization
1983 Allow speculative motion of more loads.
1986 Common RejectNegative Joined UInteger Var(sched_verbose_param) Init(1)
1987 -fsched-verbose=<number> Set the verbosity level of the scheduler.
1989 fsched2-use-superblocks
1990 Common Report Var(flag_sched2_use_superblocks) Optimization
1991 If scheduling post reload, do superblock scheduling.
1995 Does nothing. Preserved for backward compatibility.
1998 Common Report Var(flag_schedule_insns) Optimization
1999 Reschedule instructions before register allocation.
2002 Common Report Var(flag_schedule_insns_after_reload) Optimization
2003 Reschedule instructions after register allocation.
2005 ; This flag should be on when a target implements non-trivial
2006 ; scheduling hooks, maybe saving some information for its own sake.
2007 ; On IA64, for example, this is used for correct bundling.
2008 fselective-scheduling
2009 Common Report Var(flag_selective_scheduling) Optimization
2010 Schedule instructions using selective scheduling algorithm.
2012 fselective-scheduling2
2013 Common Report Var(flag_selective_scheduling2) Optimization
2014 Run selective scheduling after reload.
2016 fsel-sched-pipelining
2017 Common Report Var(flag_sel_sched_pipelining) Init(0) Optimization
2018 Perform software pipelining of inner loops during selective scheduling.
2020 fsel-sched-pipelining-outer-loops
2021 Common Report Var(flag_sel_sched_pipelining_outer_loops) Init(0) Optimization
2022 Perform software pipelining of outer loops during selective scheduling.
2024 fsel-sched-reschedule-pipelined
2025 Common Report Var(flag_sel_sched_reschedule_pipelined) Init(0) Optimization
2026 Reschedule pipelined regions without pipelining.
2028 fsemantic-interposition
2029 Common Report Var(flag_semantic_interposition) Init(1)
2030 Allow interposing function (or variables) by ones with different semantics (or initializer) respectively by dynamic linker.
2032 ; sched_stalled_insns means that insns can be moved prematurely from the queue
2033 ; of stalled insns into the ready list.
2034 fsched-stalled-insns
2035 Common Report Var(flag_sched_stalled_insns) Optimization UInteger
2036 Allow premature scheduling of queued insns.
2038 fsched-stalled-insns=
2039 Common RejectNegative Joined UInteger Optimization
2040 -fsched-stalled-insns=<number> Set number of queued insns that can be prematurely scheduled.
2042 ; sched_stalled_insns_dep controls how many recently scheduled cycles will
2043 ; be examined for a dependency on a stalled insn that is candidate for
2044 ; premature removal from the queue of stalled insns into the ready list (has
2045 ; an effect only if the flag 'sched_stalled_insns' is set).
2046 fsched-stalled-insns-dep
2047 Common Report Var(flag_sched_stalled_insns_dep,1) Init(1) Optimization UInteger
2048 Set dependence distance checking in premature scheduling of queued insns.
2050 fsched-stalled-insns-dep=
2051 Common RejectNegative Joined UInteger Optimization
2052 -fsched-stalled-insns-dep=<number> Set dependence distance checking in premature scheduling of queued insns.
2054 fsched-group-heuristic
2055 Common Report Var(flag_sched_group_heuristic) Init(1) Optimization
2056 Enable the group heuristic in the scheduler.
2058 fsched-critical-path-heuristic
2059 Common Report Var(flag_sched_critical_path_heuristic) Init(1) Optimization
2060 Enable the critical path heuristic in the scheduler.
2062 fsched-spec-insn-heuristic
2063 Common Report Var(flag_sched_spec_insn_heuristic) Init(1) Optimization
2064 Enable the speculative instruction heuristic in the scheduler.
2066 fsched-rank-heuristic
2067 Common Report Var(flag_sched_rank_heuristic) Init(1) Optimization
2068 Enable the rank heuristic in the scheduler.
2070 fsched-last-insn-heuristic
2071 Common Report Var(flag_sched_last_insn_heuristic) Init(1) Optimization
2072 Enable the last instruction heuristic in the scheduler.
2074 fsched-dep-count-heuristic
2075 Common Report Var(flag_sched_dep_count_heuristic) Init(1) Optimization
2076 Enable the dependent count heuristic in the scheduler.
2079 Common Report Var(flag_section_anchors) Optimization
2080 Access data in the same section from shared anchor points.
2084 Does nothing. Preserved for backward compatibility.
2088 Does nothing. Preserved for backward compatibility.
2091 Common Report Var(flag_ree) Init(0)
2092 Turn on Redundant Extensions Elimination pass.
2095 Common Report Var(flag_show_column) Init(1)
2096 Show column numbers in diagnostics, when available. Default on.
2099 Common Report Var(flag_shrink_wrap) Optimization
2100 Emit function prologues only before parts of the function that need it,
2101 rather than at the top of the function.
2104 Common Report Var(flag_signaling_nans) Optimization SetByCombined
2105 Disable optimizations observable by IEEE signaling NaNs.
2108 Common Report Var(flag_signed_zeros) Init(1) Optimization SetByCombined
2109 Disable floating point optimizations that ignore the IEEE signedness of zero.
2111 fsingle-precision-constant
2112 Common Report Var(flag_single_precision_constant) Optimization
2113 Convert floating point constants to single precision constants.
2115 fsplit-ivs-in-unroller
2116 Common Report Var(flag_split_ivs_in_unroller) Init(1) Optimization
2117 Split lifetimes of induction variables when loops are unrolled.
2120 Common Report Var(flag_split_stack) Init(-1)
2121 Generate discontiguous stack frames.
2124 Common Report Var(flag_split_wide_types) Optimization
2125 Split wide types into independent registers.
2128 Common Report Var(flag_ssa_backprop) Init(1) Optimization
2129 Enable backward propagation of use properties at the SSA level.
2132 Common Report Var(flag_ssa_phiopt) Optimization
2133 Optimize conditional patterns using SSA PHI nodes.
2136 Common Report Var(flag_stdarg_opt) Init(1) Optimization
2137 Optimize amount of stdarg registers saved to stack at start of function.
2139 fvariable-expansion-in-unroller
2140 Common Report Var(flag_variable_expansion_in_unroller) Optimization
2141 Apply variable expansion when loops are unrolled.
2144 Common Report RejectNegative Joined
2145 -fstack-check=[no|generic|specific] Insert stack checking code into the program.
2148 Common Alias(fstack-check=, specific, no)
2149 Insert stack checking code into the program. Same as -fstack-check=specific.
2152 Common Var(common_deferred_options) Defer
2154 fstack-limit-register=
2155 Common RejectNegative Joined Var(common_deferred_options) Defer
2156 -fstack-limit-register=<register> Trap if the stack goes past <register>.
2158 fstack-limit-symbol=
2159 Common RejectNegative Joined Var(common_deferred_options) Defer
2160 -fstack-limit-symbol=<name> Trap if the stack goes past symbol <name>.
2163 Common Report Var(flag_stack_protect, 1) Init(-1)
2164 Use propolice as a stack protection method.
2166 fstack-protector-all
2167 Common Report RejectNegative Var(flag_stack_protect, 2) Init(-1)
2168 Use a stack protection method for every function.
2170 fstack-protector-strong
2171 Common Report RejectNegative Var(flag_stack_protect, 3) Init(-1)
2172 Use a smart stack protection method for certain functions.
2174 fstack-protector-explicit
2175 Common Report RejectNegative Var(flag_stack_protect, 4)
2176 Use stack protection method only for functions with the stack_protect attribute.
2179 Common RejectNegative Var(flag_stack_usage)
2180 Output stack usage information on a per-function basis.
2184 Does nothing. Preserved for backward compatibility.
2186 ; Nonzero if we should do (language-dependent) alias analysis.
2187 ; Typically, this analysis will assume that expressions of certain
2188 ; types do not alias expressions of certain other types. Only used
2189 ; if alias analysis (in general) is enabled.
2191 Common Report Var(flag_strict_aliasing) Optimization
2192 Assume strict aliasing rules apply.
2195 Common Report Var(flag_strict_overflow) Optimization
2196 Treat signed overflow as undefined.
2199 Common Report Var(flag_sync_libcalls) Init(1)
2200 Implement __atomic operations via libcalls to legacy __sync functions.
2203 Common Report Var(flag_syntax_only)
2204 Check for syntax errors, then stop.
2207 Common Report Var(flag_test_coverage)
2208 Create data files needed by \"gcov\".
2211 Common Report Var(flag_thread_jumps) Optimization
2212 Perform jump threading optimizations.
2215 Common Report Var(time_report)
2216 Report the time taken by each compiler pass.
2219 Common Joined RejectNegative Enum(tls_model) Var(flag_tls_default) Init(TLS_MODEL_GLOBAL_DYNAMIC)
2220 -ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec] Set the default thread-local storage code generation model.
2223 Name(tls_model) Type(enum tls_model) UnknownError(unknown TLS model %qs)
2226 Enum(tls_model) String(global-dynamic) Value(TLS_MODEL_GLOBAL_DYNAMIC)
2229 Enum(tls_model) String(local-dynamic) Value(TLS_MODEL_LOCAL_DYNAMIC)
2232 Enum(tls_model) String(initial-exec) Value(TLS_MODEL_INITIAL_EXEC)
2235 Enum(tls_model) String(local-exec) Value(TLS_MODEL_LOCAL_EXEC)
2238 Common Report Var(flag_toplevel_reorder) Init(2)
2239 Reorder top level functions, variables, and asms.
2242 Common Report Var(flag_tracer) Optimization
2243 Perform superblock formation via tail duplication.
2245 ; Zero means that floating-point math operations cannot generate a
2246 ; (user-visible) trap. This is the case, for example, in nonstop
2247 ; IEEE 754 arithmetic.
2249 Common Report Var(flag_trapping_math) Init(1) Optimization SetByCombined
2250 Assume floating-point operations can trap.
2253 Common Report Var(flag_trapv) Optimization
2254 Trap for signed overflow in addition, subtraction and multiplication.
2257 Common Report Var(flag_tree_ccp) Optimization
2258 Enable SSA-CCP optimization on trees.
2261 Common Report Var(flag_tree_bit_ccp) Optimization
2262 Enable SSA-BIT-CCP optimization on trees.
2266 Does nothing. Preserved for backward compatibility.
2269 Common Report Var(flag_tree_ch) Optimization
2270 Enable loop header copying on trees.
2272 ftree-coalesce-inlined-vars
2273 Common Ignore RejectNegative
2274 Does nothing. Preserved for backward compatibility.
2277 Common Report Var(flag_tree_coalesce_vars) Optimization
2278 Enable SSA coalescing of user variables.
2282 Does nothing. Preserved for backward compatibility.
2285 Common Report Var(flag_tree_copy_prop) Optimization
2286 Enable copy propagation on trees.
2288 ftree-store-copy-prop
2290 Does nothing. Preserved for backward compatibility.
2293 Common Report Var(flag_tree_cselim) Init(2) Optimization
2294 Transform condition stores into unconditional ones.
2296 ftree-switch-conversion
2297 Common Report Var(flag_tree_switch_conversion) Optimization
2298 Perform conversions of switch initializations.
2301 Common Report Var(flag_tree_dce) Optimization
2302 Enable SSA dead code elimination optimization on trees.
2304 ftree-dominator-opts
2305 Common Report Var(flag_tree_dom) Optimization
2306 Enable dominator optimizations.
2309 Common Report Var(flag_tree_tail_merge) Optimization
2310 Enable tail merging on trees.
2313 Common Report Var(flag_tree_dse) Optimization
2314 Enable dead store elimination.
2317 Common Report Var(flag_tree_forwprop) Init(1) Optimization
2318 Enable forward propagation on trees.
2321 Common Report Var(flag_tree_fre) Optimization
2322 Enable Full Redundancy Elimination (FRE) on trees.
2325 Common Report Var(flag_optimize_strlen) Optimization
2326 Enable string length optimizations on trees.
2328 fisolate-erroneous-paths-dereference
2329 Common Report Var(flag_isolate_erroneous_paths_dereference) Optimization
2330 Detect paths that trigger erroneous or undefined behavior due to
2331 dereferencing a null pointer. Isolate those paths from the main control
2332 flow and turn the statement with erroneous or undefined behavior into a trap.
2334 fisolate-erroneous-paths-attribute
2335 Common Report Var(flag_isolate_erroneous_paths_attribute) Optimization
2336 Detect paths that trigger erroneous or undefined behavior due a null value
2337 being used in a way forbidden by a returns_nonnull or nonnull
2338 attribute. Isolate those paths from the main control flow and turn the
2339 statement with erroneous or undefined behavior into a trap.
2341 ftree-loop-distribution
2342 Common Report Var(flag_tree_loop_distribution) Optimization
2343 Enable loop distribution on trees.
2345 ftree-loop-distribute-patterns
2346 Common Report Var(flag_tree_loop_distribute_patterns) Optimization
2347 Enable loop distribution for patterns transformed into a library call.
2350 Common Report Var(flag_tree_loop_im) Init(1) Optimization
2351 Enable loop invariant motion on trees.
2354 Common Alias(floop-nest-optimize)
2355 Enable loop nest transforms. Same as -floop-nest-optimize.
2358 Common Report Var(flag_tree_loop_ivcanon) Init(1) Optimization
2359 Create canonical induction variables in loops.
2362 Common Report Var(flag_tree_loop_optimize) Init(1) Optimization
2363 Enable loop optimizations on tree level.
2365 ftree-parallelize-loops=
2366 Common Report Joined RejectNegative UInteger Var(flag_tree_parallelize_loops) Init(1) Optimization
2367 Enable automatic parallelization of loops.
2370 Common Report Var(flag_tree_phiprop) Init(1) Optimization
2371 Enable hoisting loads from conditional pointers.
2374 Common Report Var(flag_tree_pre) Optimization
2375 Enable SSA-PRE optimization on trees.
2378 Common Report Var(flag_tree_partial_pre) Optimization
2379 In SSA-PRE optimization on trees, enable partial-partial redundancy elimination.
2382 Common Report Var(flag_tree_pta) Optimization
2383 Perform function-local points-to analysis on trees.
2386 Common Report Var(flag_tree_reassoc) Init(1) Optimization
2387 Enable reassociation on tree level.
2391 Does nothing. Preserved for backward compatibility.
2394 Common Report Var(flag_tree_sink) Optimization
2395 Enable SSA code sinking on trees.
2398 Common Report Var(flag_tree_slsr) Optimization
2399 Perform straight-line strength reduction.
2402 Common Report Var(flag_tree_sra) Optimization
2403 Perform scalar replacement of aggregates.
2406 Common Report Var(flag_tree_ter) Optimization
2407 Replace temporary expressions in the SSA->normal pass.
2410 Common Report Var(flag_tree_live_range_split) Optimization
2411 Perform live range splitting during the SSA->normal pass.
2414 Common Report Var(flag_tree_vrp) Init(0) Optimization
2415 Perform Value Range Propagation on trees.
2418 Common Report Var(flag_split_paths) Init(0) Optimization
2419 Split paths leading to loop backedges.
2422 Common Report Var(flag_unit_at_a_time) Init(1)
2423 Compile whole compilation unit at a time.
2426 Common Report Var(flag_unroll_loops) Optimization
2427 Perform loop unrolling when iteration count is known.
2430 Common Report Var(flag_unroll_all_loops) Optimization
2431 Perform loop unrolling for all loops.
2433 ; Nonzero means that loop optimizer may assume that the induction variables
2434 ; that control loops do not overflow and that the loops with nontrivial
2435 ; exit condition are not infinite
2436 funsafe-loop-optimizations
2437 Common Report Var(flag_unsafe_loop_optimizations) Optimization
2438 Allow loop optimizations to assume that the loops behave in normal way.
2441 Common Report Var(flag_associative_math) SetByCombined Optimization
2442 Allow optimization for floating-point arithmetic which may change the
2443 result of the operation due to rounding.
2446 Common Report Var(flag_reciprocal_math) SetByCombined Optimization
2447 Same as -fassociative-math for expressions which include division.
2449 ; Nonzero means that unsafe floating-point math optimizations are allowed
2450 ; for the sake of speed. IEEE compliance is not guaranteed, and operations
2451 ; are allowed to assume that their arguments and results are "normal"
2452 ; (e.g., nonnegative for SQRT).
2453 funsafe-math-optimizations
2454 Common Report Var(flag_unsafe_math_optimizations) Optimization SetByCombined
2455 Allow math optimizations that may violate IEEE or ISO standards.
2458 Common Report Var(flag_unswitch_loops) Optimization
2459 Perform loop unswitching.
2462 Common Report Var(flag_unwind_tables) Optimization
2463 Just generate unwind tables for exception handling.
2466 Common Driver Negative(fuse-ld=gold)
2467 Use the bfd linker instead of the default linker.
2470 Common Driver Negative(fuse-ld=bfd)
2471 Use the gold linker instead of the default linker.
2474 Common Undocumented Var(flag_use_linker_plugin)
2476 ; Positive if we should track variables, negative if we should run
2477 ; the var-tracking pass only to discard debug annotations, zero if
2478 ; we're not to run it. When flag_var_tracking == 2 (AUTODETECT_VALUE) it
2479 ; will be set according to optimize, debug_info_level and debug_hooks
2480 ; in process_options ().
2482 Common Report Var(flag_var_tracking) Init(2) Optimization
2483 Perform variable tracking.
2485 ; Positive if we should track variables at assignments, negative if
2486 ; we should run the var-tracking pass only to discard debug
2487 ; annotations. When flag_var_tracking_assignments ==
2488 ; AUTODETECT_VALUE it will be set according to flag_var_tracking.
2489 fvar-tracking-assignments
2490 Common Report Var(flag_var_tracking_assignments) Init(2) Optimization
2491 Perform variable tracking by annotating assignments.
2493 ; Nonzero if we should toggle flag_var_tracking_assignments after
2494 ; processing options and computing its default. */
2495 fvar-tracking-assignments-toggle
2496 Common Report Var(flag_var_tracking_assignments_toggle) Optimization
2497 Toggle -fvar-tracking-assignments.
2499 ; Positive if we should track uninitialized variables, negative if
2500 ; we should run the var-tracking pass only to discard debug
2501 ; annotations. When flag_var_tracking_uninit == AUTODETECT_VALUE it
2502 ; will be set according to flag_var_tracking.
2503 fvar-tracking-uninit
2504 Common Report Var(flag_var_tracking_uninit) Optimization
2505 Perform variable tracking and also tag variables that are uninitialized.
2508 Common Report Var(flag_tree_vectorize) Optimization
2509 Enable vectorization on trees.
2511 ftree-vectorizer-verbose=
2512 Common Joined RejectNegative Ignore
2513 Does nothing. Preserved for backward compatibility.
2515 ftree-loop-vectorize
2516 Common Report Var(flag_tree_loop_vectorize) Optimization
2517 Enable loop vectorization on trees.
2520 Common Report Var(flag_tree_slp_vectorize) Optimization
2521 Enable basic block vectorization (SLP) on trees.
2524 Common Joined RejectNegative Enum(vect_cost_model) Var(flag_vect_cost_model) Init(VECT_COST_MODEL_DEFAULT) Optimization
2525 Specifies the cost model for vectorization.
2528 Common Joined RejectNegative Enum(vect_cost_model) Var(flag_simd_cost_model) Init(VECT_COST_MODEL_UNLIMITED) Optimization
2529 Specifies the vectorization cost model for code marked with a simd directive.
2532 Name(vect_cost_model) Type(enum vect_cost_model) UnknownError(unknown vectorizer cost model %qs)
2535 Enum(vect_cost_model) String(unlimited) Value(VECT_COST_MODEL_UNLIMITED)
2538 Enum(vect_cost_model) String(dynamic) Value(VECT_COST_MODEL_DYNAMIC)
2541 Enum(vect_cost_model) String(cheap) Value(VECT_COST_MODEL_CHEAP)
2544 Common RejectNegative Alias(fvect-cost-model=,dynamic)
2545 Enables the dynamic vectorizer cost model. Preserved for backward compatibility.
2548 Common RejectNegative Alias(fvect-cost-model=,unlimited)
2549 Enables the unlimited vectorizer cost model. Preserved for backward compatibility.
2551 ftree-vect-loop-version
2553 Does nothing. Preserved for backward compatibility.
2556 Common Report Var(flag_tree_scev_cprop) Init(1) Optimization
2557 Enable copy propagation of scalar-evolution information.
2559 ; -fverbose-asm causes extra commentary information to be produced in
2560 ; the generated assembly code (to make it more readable). This option
2561 ; is generally only of use to those who actually need to read the
2562 ; generated assembly code (perhaps while debugging the compiler itself).
2563 ; -fno-verbose-asm, the default, causes the extra information
2564 ; to not be added and is useful when comparing two assembler files.
2566 Common Report Var(flag_verbose_asm)
2567 Add extra commentary to assembler output.
2570 Common Joined RejectNegative Enum(symbol_visibility) Var(default_visibility) Init(VISIBILITY_DEFAULT)
2571 -fvisibility=[default|internal|hidden|protected] Set the default symbol visibility.
2574 Name(symbol_visibility) Type(enum symbol_visibility) UnknownError(unrecognized visibility value %qs)
2577 Enum(symbol_visibility) String(default) Value(VISIBILITY_DEFAULT)
2580 Enum(symbol_visibility) String(internal) Value(VISIBILITY_INTERNAL)
2583 Enum(symbol_visibility) String(hidden) Value(VISIBILITY_HIDDEN)
2586 Enum(symbol_visibility) String(protected) Value(VISIBILITY_PROTECTED)
2589 Common Joined RejectNegative Enum(vtv_priority) Var(flag_vtable_verify) Init(VTV_NO_PRIORITY)
2590 Validate vtable pointers before using them.
2593 Name(vtv_priority) Type(enum vtv_priority) UnknownError(unknown vtable verify initialization priority %qs)
2596 Enum(vtv_priority) String(none) Value(VTV_NO_PRIORITY)
2599 Enum(vtv_priority) String(std) Value(VTV_STANDARD_PRIORITY)
2602 Enum(vtv_priority) String(preinit) Value(VTV_PREINIT_PRIORITY)
2605 Common Var(flag_vtv_counts)
2606 Output vtable verification counters.
2609 Common Var(flag_vtv_debug)
2610 Output vtable verification pointer sets information.
2613 Common Report Var(flag_value_profile_transformations) Optimization
2614 Use expression value profiles in optimizations.
2617 Common Report Var(flag_web) Init(2) Optimization
2618 Construct webs and split unrelated uses of single variable.
2620 ftree-builtin-call-dce
2621 Common Report Var(flag_tree_builtin_call_dce) Init(0) Optimization
2622 Enable conditional dead code elimination for builtin calls.
2625 Common Report Var(flag_whole_program) Init(0)
2626 Perform whole program optimizations.
2629 Common Report Var(flag_wrapv) Optimization
2630 Assume signed arithmetic overflow wraps around.
2632 fzero-initialized-in-bss
2633 Common Report Var(flag_zero_initialized_in_bss) Init(1)
2634 Put zero initialized data in the bss section.
2637 Common JoinedOrMissing
2638 Generate debug information in default format.
2641 Common JoinedOrMissing Negative(gdwarf)
2642 Generate debug information in COFF format.
2645 Common JoinedOrMissing Negative(gdwarf-)
2646 Generate debug information in default version of DWARF format.
2649 Common Joined UInteger Var(dwarf_version) Init(4) Negative(gstabs)
2650 Generate debug information in DWARF v2 (or later) format.
2653 Common JoinedOrMissing
2654 Generate debug information in default extended format.
2657 Common Negative(gpubnames) Var(debug_generate_pub_sections, 0) Init(-1)
2658 Don't generate DWARF pubnames and pubtypes sections.
2661 Common Negative(ggnu-pubnames) Var(debug_generate_pub_sections, 1)
2662 Generate DWARF pubnames and pubtypes sections.
2665 Common Negative(gno-pubnames) Var(debug_generate_pub_sections, 2)
2666 Generate DWARF pubnames and pubtypes sections with GNU extensions.
2668 gno-record-gcc-switches
2669 Common RejectNegative Var(dwarf_record_gcc_switches,0) Init(1)
2670 Don't record gcc command line switches in DWARF DW_AT_producer.
2672 grecord-gcc-switches
2673 Common RejectNegative Var(dwarf_record_gcc_switches,1)
2674 Record gcc command line switches in DWARF DW_AT_producer.
2677 Common Driver RejectNegative Var(dwarf_split_debug_info,0) Init(0)
2678 Don't generate debug information in separate .dwo files.
2681 Common Driver RejectNegative Var(dwarf_split_debug_info,1)
2682 Generate debug information in separate .dwo files.
2685 Common JoinedOrMissing Negative(gstabs+)
2686 Generate debug information in STABS format.
2689 Common JoinedOrMissing Negative(gvms)
2690 Generate debug information in extended STABS format.
2693 Common RejectNegative Var(dwarf_strict,0) Init(0)
2694 Emit DWARF additions beyond selected version.
2697 Common Report RejectNegative Var(dwarf_strict,1)
2698 Don't emit DWARF additions beyond selected version.
2701 Common Report Var(flag_gtoggle)
2702 Toggle debug information generation.
2705 Common JoinedOrMissing Negative(gxcoff)
2706 Generate debug information in VMS format.
2709 Common JoinedOrMissing Negative(gxcoff+)
2710 Generate debug information in XCOFF format.
2713 Common JoinedOrMissing Negative(gcoff)
2714 Generate debug information in extended XCOFF format.
2717 Name(compressed_debug_sections) Type(int)
2719 ; Since -gz= is completely handled in specs, the values aren't used and we
2720 ; assign arbitrary constants.
2722 Enum(compressed_debug_sections) String(none) Value(0)
2725 Enum(compressed_debug_sections) String(zlib) Value(1)
2728 Enum(compressed_debug_sections) String(zlib-gnu) Value(2)
2732 Generate compressed debug sections.
2735 Common Driver Joined Enum(compressed_debug_sections)
2736 -gz=<format> Generate compressed debug sections in format <format>.
2739 Driver Joined Separate
2742 Common Joined Var(plugindir_string) Init(0)
2743 -iplugindir=<dir> Set <dir> to be the default plugin directory.
2746 Common Joined Separate RejectDriver Var(imultiarch) Init(0)
2747 -imultiarch <dir> Set <dir> to be the multiarch include subdirectory.
2750 Driver Joined Separate
2755 no-canonical-prefixes
2768 Common Driver Joined Separate Var(asm_file_name) MissingArgError(missing filename after %qs)
2769 -o <file> Place output into <file>.
2772 Common Var(profile_flag)
2773 Enable function profiling.
2776 Driver Var(pass_exit_codes)
2779 Common Alias(Wpedantic)
2782 Common Var(flag_pedantic_errors)
2783 Like -pedantic but issue them as errors.
2789 Driver Var(use_pipes)
2792 Driver JoinedOrMissing Var(print_file_name)
2794 print-libgcc-file-name
2797 print-multi-directory
2798 Driver Var(print_multi_directory)
2801 Driver Var(print_multi_lib)
2803 print-multi-os-directory
2804 Driver Var(print_multi_os_directory)
2807 Driver Var(print_multiarch)
2810 Driver JoinedOrMissing Var(print_prog_name)
2813 Driver Var(print_search_dirs)
2816 Driver Var(print_sysroot)
2818 print-sysroot-headers-suffix
2819 Driver Var(print_sysroot_headers_suffix)
2822 Common Var(quiet_flag) RejectDriver
2823 Do not display functions compiled or elapsed time.
2841 Driver Var(report_times)
2844 Driver JoinedOrMissing
2847 Driver Joined Separate
2851 ; C option, but driver must not handle as "-u ndef".
2854 Common Driver Var(verbose_flag)
2855 Enable verbose output.
2858 Common Var(version_flag) RejectDriver
2859 Display the compiler's version.
2862 Common Var(inhibit_warnings)
2866 Driver Separate Var(wrapper_string)
2869 Driver Joined Separate
2872 Driver RejectNegative Negative(pie)
2873 Create a shared library.
2879 Driver Separate Alias(specs=)
2892 ; Documented for Fortran, but always accepted by driver.
2899 ; Documented for Go, but always accepted by driver.
2917 Driver RejectNegative Negative(shared)
2918 Don't create a position independent executable.
2921 Driver RejectNegative Negative(no-pie)
2922 Create a position independent executable.
2925 Driver Joined Separate
2928 Common Report Var(flag_ipa_ra) Optimization
2929 Use caller save register across calls if possible.
2931 ; This comment is to ensure we retain the blank line above.