1 ; Options for the language- and target-independent parts of the compiler.
3 ; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
4 ; Free Software Foundation, Inc.
6 ; This file is part of GCC.
8 ; GCC is free software; you can redistribute it and/or modify it under
9 ; the terms of the GNU General Public License as published by the Free
10 ; Software Foundation; either version 3, or (at your option) any later
13 ; GCC is distributed in the hope that it will be useful, but WITHOUT ANY
14 ; WARRANTY; without even the implied warranty of MERCHANTABILITY or
15 ; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
18 ; You should have received a copy of the GNU General Public License
19 ; along with GCC; see the file COPYING3. If not see
20 ; <http://www.gnu.org/licenses/>.
22 ; See the GCC internals manual (options.texi) for a description of this file's format.
24 ; Please try to keep this file in ASCII collating order.
35 ; Not used directly to control optimizations, only to save -Ofast
36 ; setting for "optimize" attributes.
40 ; True if this is the lto front end. This is used to disable gimple
41 ; generation and lowering passes that are normally run on the output
42 ; of a front end. These passes must be bypassed for lto since they
43 ; have already been done before the gimple was written.
47 ; 0 means straightforward implementation of complex divide acceptable.
48 ; 1 means wide ranges of inputs must work for complex divide.
49 ; 2 means C99-like requirements for complex multiply and divide.
51 int flag_complex_method = 1
53 ; Nonzero if subexpressions must be evaluated from left-to-right.
55 int flag_evaluation_order = 0
57 ; Language specific warning pass for unused results.
59 bool flag_warn_unused_result = false
64 ; Nonzero if we should write GIMPLE bytecode for link-time optimization.
68 ; True to warn about any objects definitions whose size is larger
69 ; than N bytes. Also want about function definitions whose returned
70 ; values are larger than N bytes, where N is 'larger_than_size'.
75 HOST_WIDE_INT larger_than_size
77 ; True to warn about any function whose frame size is larger
80 bool warn_frame_larger_than
83 HOST_WIDE_INT frame_larger_than_size
85 ; Nonzero means we should be saving declaration info into a .X file.
87 int flag_gen_aux_info = 0
89 ; Nonzero if we are compiling code for a shared library, zero for
94 ; These two are really VEC(char_p,heap) *.
97 void *flag_instrument_functions_exclude_functions
100 void *flag_instrument_functions_exclude_files
102 ; Generic structs (e.g. templates not explicitly specialized)
103 ; may not have a compilation unit associated with them, and so
104 ; may need to be treated differently from ordinary structs.
106 ; Structs only handled by reference (indirectly), will also usually
107 ; not need as much debugging information.
110 enum debug_struct_file debug_struct_ordinary[DINFO_USAGE_NUM_ENUMS] = { DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY }
113 enum debug_struct_file debug_struct_generic[DINFO_USAGE_NUM_ENUMS] = { DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY }
115 ; True if we should exit after parsing options.
117 bool exit_after_options
119 ; Type(s) of debugging information we are producing (if any). See
120 ; flag-types.h for the definitions of the different possible types of
121 ; debugging information.
123 enum debug_info_type write_symbols = NO_DEBUG
125 ; Level of debugging information we are producing. See flag-types.h
126 ; for the definitions of the different possible levels.
128 enum debug_info_levels debug_info_level = DINFO_LEVEL_NONE
130 ; Nonzero means use GNU-only extensions in the generated symbolic
131 ; debugging information. Currently, this only has an effect when
132 ; write_symbols is set to DBX_DEBUG, XCOFF_DEBUG, or DWARF_DEBUG.
134 bool use_gnu_debug_info_extensions
136 ; Original value of maximum field alignment in bytes, specified via
137 ; -fpack-struct=<value>.
139 unsigned int initial_max_fld_align = TARGET_DEFAULT_PACK_STRUCT
142 enum vect_verbosity_levels user_vect_verbosity_level = MAX_VERBOSITY_LEVEL
144 ; Type of stack check.
146 enum stack_check_type flag_stack_check = NO_STACK_CHECK
148 ; True if stack usage information needs to be computed.
150 bool flag_stack_usage_info = false
152 ; -dA causes debug commentary information to be produced in
153 ; the generated assembly code (to make it more readable). This option
154 ; is generally only of use to those who actually need to read the
155 ; generated assembly code (perhaps while debugging the compiler itself).
156 ; Currently, this switch is only used by dwarf2out.c; however, it is intended
157 ; to be a catchall for printing debug information in the assembler file.
161 ; -dP causes the rtl to be emitted as a comment in assembly.
163 int flag_dump_rtl_in_asm
165 ; Whether -da was passed (used only in handle_common_deferred_options).
167 bool flag_dump_all_passed
169 ; Other flags saying which kinds of debugging dump have been requested.
172 int rtl_dump_and_exit
175 int flag_print_asm_name
178 enum graph_dump_types graph_dump_format = no_graph
180 ; Name of top-level original source file (what was input to cpp).
181 ; This comes from the #-command at the beginning of the actual input.
182 ; If there isn't any there, then this is the cc1 input file name.
184 const char *main_input_filename
186 ; Pointer to base name in main_input_filename, with directories and a
187 ; single final extension removed, and the length of this base
191 const char *main_input_basename
194 int main_input_baselength
196 ; Which options have been printed by --help.
200 ; Which enums have been printed by --help. 0 = not printed, no
201 ; relevant options seen, 1 = relevant option seen, not yet printed, 2
204 char *help_enum_printed
206 ; The number of columns for --help output.
208 unsigned int help_columns
210 ; Whether this options structure has been through finish_options
212 bool flag_opts_finished
224 Driver Alias(coverage)
230 Common Separate Alias(d)
233 Common Joined Alias(d)
236 Common Separate Alias(dumpbase)
239 Common Separate Alias(dumpdir)
242 Driver Separate Alias(e)
245 Driver Joined Alias(e)
248 Common Warning Alias(Wextra)
251 Driver Separate Alias(Xassembler)
254 Driver JoinedOrMissing Alias(Xassembler)
257 Driver Separate Alias(Xlinker)
260 Driver JoinedOrMissing Alias(Xlinker)
263 Driver Separate Alias(u)
266 Driver Joined Alias(u)
269 Common Driver Var(help_flag)
270 Display this information
273 Common Driver Report Joined
274 --help=<class> Display descriptions of a specific class of options. <class> is one or more of optimizers, target, warnings, undocumented, params
277 Driver Separate Alias(x)
280 Driver Joined Alias(x)
283 Driver Separate Alias(L)
286 Driver Joined Alias(L)
288 -no-canonical-prefixes
289 Driver Alias(no-canonical-prefixes)
291 -no-standard-libraries
292 Driver Alias(nostdlib)
301 Common Driver Separate Alias(o) MissingArgError(missing filename after %qs)
304 Common Driver Joined Alias(o) MissingArgError(missing filename after %qs)
307 Driver Alias(pass-exit-codes)
310 Common Alias(Wpedantic)
313 Common Alias(pedantic-errors)
322 Driver Separate Alias(B)
325 Driver JoinedOrMissing Alias(B)
331 Driver Separate Alias(print-file-name=)
334 Driver JoinedOrMissing Alias(print-file-name=)
336 -print-libgcc-file-name
337 Driver Alias(print-libgcc-file-name)
339 -print-multi-directory
340 Driver Alias(print-multi-directory)
343 Driver Alias(print-multi-lib)
345 -print-multi-os-directory
346 Driver Alias(print-multi-os-directory)
349 Driver Separate Alias(print-prog-name=)
352 Driver JoinedOrMissing Alias(print-prog-name=)
355 Driver Alias(print-search-dirs)
358 Driver Alias(print-sysroot)
360 -print-sysroot-headers-suffix
361 Driver Alias(print-sysroot-headers-suffix)
367 Driver Alias(save-temps)
373 Driver Separate Alias(specs=)
376 Driver Joined Alias(specs=)
382 Driver Alias(symbolic)
386 Alias for --help=target
394 ;; The driver used to convert options such as --help into forms such
395 ;; as -fhelp; the following four entries are for compatibility with
396 ;; any direct uses of those (undocumented) -f forms
398 Common Driver Alias(-help)
401 Common Driver Joined Alias(-help=)
404 Common Driver Alias(-target-help)
407 Common Driver Alias(-version)
411 --param <param>=<value> Set parameter <param> to value. See below for a complete list of parameters
414 Common Joined Alias(-param)
417 Driver Separate Alias(-sysroot=)
420 Driver JoinedOrMissing
426 Driver Joined Separate
432 Driver Joined Separate
438 Common JoinedOrMissing Optimization
439 -O<number> Set optimization level to <number>
443 Optimize for space rather than speed
447 Optimize for speed disregarding exact standards compliance
459 Driver Joined Separate
465 Driver Joined Separate
486 Common RejectNegative Warning Alias(Wextra)
487 This switch is deprecated; use -Wextra instead
490 Driver JoinedOrMissing
493 Driver JoinedOrMissing
496 Driver JoinedOrMissing
499 Common Var(warn_aggregate_return) Warning
500 Warn about returning structures, unions or arrays
503 Common Var(warn_array_bounds) Warning
504 Warn if an array is accessed out of bounds
507 Common Var(warn_attributes) Init(1) Warning
508 Warn about inappropriate attribute usage
511 Common Var(warn_cast_align) Warning
512 Warn about pointer casts which increase alignment
515 Common Var(warn_cpp) Init(1) Warning
516 Warn when a #warning directive is encountered
518 Wdeprecated-declarations
519 Common Var(warn_deprecated_decl) Init(1) Warning
520 Warn about uses of __attribute__((deprecated)) declarations
522 Wdisabled-optimization
523 Common Var(warn_disabled_optimization) Warning
524 Warn when an optimization pass is disabled
527 Common Var(warnings_are_errors)
528 Treat all warnings as errors
532 Treat specified warning as error
535 Common Var(extra_warnings) Warning
536 Print extra (possibly unwanted) warnings
539 Common Var(flag_fatal_errors)
540 Exit on the first error occurred
543 Common RejectNegative Joined UInteger
544 -Wframe-larger-than=<number> Warn if a function's stack frame requires more than <number> bytes
547 Common Var(warn_free_nonheap_object) Init(1) Warning
548 Warn when attempting to free a non-heap object
551 Common Var(warn_inline) Warning
552 Warn when an inlined function cannot be inlined
554 Winvalid-memory-model
555 Common Var(warn_invalid_memory_model) Init(1) Warning
556 Warn when an atomic memory model parameter is known to be outside the valid range.
559 Common RejectNegative Joined Warning Undocumented Alias(Wlarger-than=)
562 Common RejectNegative Joined UInteger Warning
563 -Wlarger-than=<number> Warn if an object is larger than <number> bytes
565 Wunsafe-loop-optimizations
566 Common Var(warn_unsafe_loop_optimizations) Warning
567 Warn if the loop cannot be optimized due to nontrivial assumptions.
570 Common Var(warn_missing_noreturn) Warning
571 Warn about functions which might be candidates for __attribute__((noreturn))
574 Common Var(warn_overflow) Init(1) Warning
575 Warn about overflow in arithmetic expressions
578 Common Var(warn_packed) Warning
579 Warn when the packed attribute has no effect on struct layout
582 Common Var(warn_padded) Warning
583 Warn when padding is required to align structure members
586 Common Var(pedantic) Warning
587 Issue warnings needed for strict compliance to the standard
590 Common Var(warn_shadow) Warning
591 Warn when one local variable shadows another
594 Common Var(warn_stack_protect) Warning
595 Warn when not issuing stack smashing protection for some reason
598 Common Joined RejectNegative UInteger Var(warn_stack_usage) Init(-1) Warning
599 Warn if stack usage might be larger than specified amount
603 Warn about code which might break strict aliasing rules
606 Common Joined RejectNegative UInteger Var(warn_strict_aliasing) Init(-1) Warning
607 Warn about code which might break strict aliasing rules
611 Warn about optimizations that assume that signed overflow is undefined
614 Common Joined RejectNegative UInteger Var(warn_strict_overflow) Init(-1) Warning
615 Warn about optimizations that assume that signed overflow is undefined
617 Wsuggest-attribute=const
618 Common Var(warn_suggest_attribute_const) Warning
619 Warn about functions which might be candidates for __attribute__((const))
621 Wsuggest-attribute=pure
622 Common Var(warn_suggest_attribute_pure) Warning
623 Warn about functions which might be candidates for __attribute__((pure))
625 Wsuggest-attribute=noreturn
626 Common Var(warn_suggest_attribute_noreturn) Warning
627 Warn about functions which might be candidates for __attribute__((noreturn))
630 Common Var(warn_switch) Warning
631 Warn about enumerated switches, with no default, missing a case
634 Common Var(warn_switch_default) Warning
635 Warn about enumerated switches missing a \"default:\" statement
638 Common Var(warn_switch_enum) Warning
639 Warn about all enumerated switches missing a specific case
642 Common Var(warn_system_headers) Warning
643 Do not suppress warnings from system headers
646 Common Var(warn_trampolines) Warning
647 Warn whenever a trampoline is generated
650 Common Var(warn_type_limits) Init(-1) Warning
651 Warn if a comparison is always true or always false due to the limited range of the data type
654 Common Var(warn_uninitialized) Init(-1) Warning
655 Warn about uninitialized automatic variables
658 Common Var(warn_maybe_uninitialized) Warning
659 Warn about maybe uninitialized automatic variables
663 Does nothing. Preserved for backward compatibility.
666 Common Var(warn_unused) Init(0) Warning
667 Enable all -Wunused- warnings
669 Wunused-but-set-parameter
670 Common Var(warn_unused_but_set_parameter) Init(-1) Warning
671 Warn when a function parameter is only set, otherwise unused
673 Wunused-but-set-variable
674 Common Var(warn_unused_but_set_variable) Init(-1) Warning
675 Warn when a variable is only set, otherwise unused
678 Common Var(warn_unused_function) Init(-1) Warning
679 Warn when a function is unused
682 Common Var(warn_unused_label) Init(-1) Warning
683 Warn when a label is unused
686 Common Var(warn_unused_parameter) Init(-1) Warning
687 Warn when a function parameter is unused
690 Common Var(warn_unused_value) Init(-1) Warning
691 Warn when an expression value is unused
694 Common Var(warn_unused_variable) Init(-1) Warning
695 Warn when a variable is unused
698 Common Var(warn_coverage_mismatch) Init(1) Warning
699 Warn in case profiles in -fprofile-use do not match
701 Wvector-operation-performance
702 Common Var(warn_vector_operation_performance) Warning
703 Warn when a vector operation is compiled outside the SIMD
718 Common Separate Var(aux_info_file_name)
719 -aux-info <file> Emit declaration information into <file>
722 Common Joined Alias(aux-info)
725 Common Separate RejectDriver Var(aux_base_name)
728 Common Separate RejectDriver
738 -d<letters> Enable dumps from specific passes of the compiler
741 Common Separate Var(dump_base_name)
742 -dumpbase <file> Set the file basename to be used for dumps
745 Common Separate Var(dump_dir_name)
746 -dumpdir <dir> Set the directory name to be used for dumps
758 Driver Joined Separate
760 ; This option has historically been passed down to the linker by an
761 ; accident of a %{e*} spec, so ensure it continues to be passed down
762 ; as a single option. The supported option for this purpose is
763 ; -rdynamic. See PR 47390.
767 ; The version of the C++ ABI in use. The following values are allowed:
769 ; 0: The version of the ABI believed most conformant with the C++ ABI
770 ; specification. This ABI may change as bugs are discovered and fixed.
771 ; Therefore, 0 will not necessarily indicate the same ABI in different
774 ; 1: The version of the ABI first used in G++ 3.2.
776 ; 2: The version of the ABI first used in G++ 3.4 (and current default).
778 ; 3: The version of the ABI that fixes the missing underscore
779 ; in template non-type arguments of pointer type.
781 ; 4: The version of the ABI that introduces unambiguous mangling of
782 ; vector types. First selectable in G++ 4.5.
784 ; 5: The version of the ABI that ignores attribute const/noreturn
785 ; in function pointer mangling, and corrects mangling of decltype and
786 ; function parameters used in other parameters and the return type.
787 ; First selectable in G++ 4.6.
789 ; 6: The version of the ABI that doesn't promote scoped enums to int and
790 ; changes the mangling of template argument packs, const/static_cast,
791 ; prefix ++ and --, and a class scope function used as a template
793 ; First selectable in G++ 4.7.
795 ; 7: The version of the ABI that treats nullptr_t as a builtin type.
796 ; First selectable in G++ 4.8.
797 ; Additional positive integers will be assigned as new versions of
798 ; the ABI become the default version of the ABI.
800 Common Joined RejectNegative UInteger Var(flag_abi_version) Init(2)
803 Common Report Var(align_functions,0) Optimization UInteger
804 Align the start of functions
807 Common RejectNegative Joined UInteger Var(align_functions)
810 Common Report Var(align_jumps,0) Optimization UInteger
811 Align labels which are only reached by jumping
814 Common RejectNegative Joined UInteger Var(align_jumps)
817 Common Report Var(align_labels,0) Optimization UInteger
821 Common RejectNegative Joined UInteger Var(align_labels)
824 Common Report Var(align_loops,0) Optimization UInteger
825 Align the start of loops
828 Common RejectNegative Joined UInteger Var(align_loops)
832 Does nothing. Preserved for backward compatibility.
836 Does nothing. Preserved for backward compatibility.
838 fargument-noalias-global
840 Does nothing. Preserved for backward compatibility.
842 fargument-noalias-anything
844 Does nothing. Preserved for backward compatibility.
846 fasynchronous-unwind-tables
847 Common Report Var(flag_asynchronous_unwind_tables) Optimization
848 Generate unwind tables that are exact at each instruction boundary
851 Common Report Var(flag_auto_inc_dec) Init(1)
852 Generate auto-inc/dec instructions
854 ; -fcheck-bounds causes gcc to generate array bounds checks.
855 ; For C, C++ and ObjC: defaults off.
856 ; For Java: defaults to on.
857 ; For Fortran: defaults to off.
859 Common Report Var(flag_bounds_check)
860 Generate code to check bounds before indexing arrays
863 Common Report Var(flag_branch_on_count_reg) Init(1) Optimization
864 Replace add, compare, branch with branch on count register
866 fbranch-probabilities
867 Common Report Var(flag_branch_probabilities) Optimization
868 Use profiling information for branch probabilities
870 fbranch-target-load-optimize
871 Common Report Var(flag_branch_target_load_optimize) Optimization
872 Perform branch target load optimization before prologue / epilogue threading
874 fbranch-target-load-optimize2
875 Common Report Var(flag_branch_target_load_optimize2) Optimization
876 Perform branch target load optimization after prologue / epilogue threading
879 Common Report Var(flag_btr_bb_exclusive) Optimization
880 Restrict target load migration not to re-use registers in any basic block
883 Common Joined RejectNegative Var(common_deferred_options) Defer
884 -fcall-saved-<register> Mark <register> as being preserved across functions
887 Common Joined RejectNegative Var(common_deferred_options) Defer
888 -fcall-used-<register> Mark <register> as being corrupted by function calls
890 ; Nonzero for -fcaller-saves: allocate values in regs that need to
891 ; be saved across function calls, if that produces overall better code.
892 ; Optional now, so people can test it.
894 Common Report Var(flag_caller_saves) Optimization
895 Save registers around function calls
898 Common Report Var(flag_check_data_deps)
899 Compare the results of several data dependence analyzers.
901 fcombine-stack-adjustments
902 Common Report Var(flag_combine_stack_adjustments) Optimization
903 Looks for opportunities to reduce stack adjustments and stack references.
906 Common Report Var(flag_no_common,0) Optimization
907 Do not put uninitialized globals in the common section
911 ; Converted by the driver to -fcompare-debug= options.
914 Common Driver JoinedOrMissing RejectNegative Var(flag_compare_debug_opt)
915 -fcompare-debug[=<opts>] Compile with and without e.g. -gtoggle, and compare the final-insns dump
917 fcompare-debug-second
918 Common Driver RejectNegative Var(flag_compare_debug)
919 Run only the second compilation of -fcompare-debug
922 Common Report Var(flag_compare_elim_after_reload) Optimization
923 Perform comparison elimination after register allocation has finished
926 Common Var(flag_conserve_stack) Optimization
927 Do not perform optimizations increasing noticeably stack usage
930 Common Report Var(flag_cprop_registers) Optimization
931 Perform a register copy-propagation optimization pass
934 Common Report Var(flag_crossjumping) Optimization
935 Perform cross-jumping optimization
938 Common Report Var(flag_cse_follow_jumps) Optimization
939 When running CSE, follow jumps to their targets
943 Does nothing. Preserved for backward compatibility.
946 Common Report Var(flag_cx_limited_range) Optimization SetByCombined
947 Omit range reduction step when performing complex division
950 Common Report Var(flag_cx_fortran_rules) Optimization
951 Complex multiplication and division follow Fortran rules
954 Common Report Var(flag_data_sections) Optimization
955 Place data items into their own section
958 Common Report Var(common_deferred_options) Defer
959 List all available debugging counters with their limits and counts.
962 Common RejectNegative Joined Var(common_deferred_options) Defer
963 -fdbg-cnt=<counter>:<limit>[,<counter>:<limit>,...] Set the debug counter limit.
966 Common Joined RejectNegative Var(common_deferred_options) Defer
967 Map one directory name to another in debug information
970 Common Report Var(flag_debug_types_section) Init(1)
971 Output .debug_types section when using DWARF v4 debuginfo.
973 ; Nonzero for -fdefer-pop: don't pop args after each function call
974 ; instead save them up to pop many calls' args with one insns.
976 Common Report Var(flag_defer_pop) Optimization
977 Defer popping functions args from stack until later
980 Common Report Var(flag_delayed_branch) Optimization
981 Attempt to fill delay slots of branch instructions
983 fdelete-null-pointer-checks
984 Common Report Var(flag_delete_null_pointer_checks) Init(1) Optimization
985 Delete useless null pointer checks
988 Common Report Var(flag_devirtualize) Optimization
989 Try to convert virtual calls to direct ones.
991 fdiagnostics-show-location=
992 Common Joined RejectNegative Enum(diagnostic_prefixing_rule)
993 -fdiagnostics-show-location=[once|every-line] How often to emit source location at the beginning of line-wrapped diagnostics
995 ; Required for these enum values.
1000 Name(diagnostic_prefixing_rule) Type(int)
1003 Enum(diagnostic_prefixing_rule) String(once) Value(DIAGNOSTICS_SHOW_PREFIX_ONCE)
1006 Enum(diagnostic_prefixing_rule) String(every-line) Value(DIAGNOSTICS_SHOW_PREFIX_EVERY_LINE)
1008 fdiagnostics-show-caret
1009 Common Var(flag_diagnostics_show_caret) Init(1)
1010 Show the source line with a caret indicating the column
1012 fdiagnostics-show-option
1013 Common Var(flag_diagnostics_show_option) Init(1)
1014 Amend appropriate diagnostic messages with the command line option that controls them
1017 Common Joined RejectNegative Var(common_deferred_options) Defer
1018 -fdisable-[tree|rtl|ipa]-<pass>=range1+range2 disables an optimization pass
1021 Common Joined RejectNegative Var(common_deferred_options) Defer
1022 -fenable-[tree|rtl|ipa]-<pass>=range1+range2 enables an optimization pass
1025 Common Joined RejectNegative Var(common_deferred_options) Defer
1026 -fdump-<type> Dump various compiler internals to a file
1029 Driver RejectNegative
1032 Common RejectNegative Joined Var(flag_dump_final_insns)
1033 -fdump-final-insns=filename Dump to filename the insns at the end of translation
1036 Common RejectNegative Joined Var(flag_dump_go_spec)
1037 -fdump-go-spec=filename Write all declarations to file as Go code
1040 Common Report Var(flag_dump_noaddr)
1041 Suppress output of addresses in debugging dumps
1044 Common Var(flag_dump_passes) Init(0)
1045 Dump optimization passes
1048 Common Report Var(flag_dump_unnumbered)
1049 Suppress output of instruction numbers, line number notes and addresses in debugging dumps
1051 fdump-unnumbered-links
1052 Common Report Var(flag_dump_unnumbered_links)
1053 Suppress output of previous and next insn numbers in debugging dumps
1056 Common Report Var(flag_dwarf2_cfi_asm) Init(HAVE_GAS_CFI_DIRECTIVE)
1057 Enable CFI tables via GAS assembler directives.
1060 Common Report Var(flag_early_inlining) Init(1) Optimization
1061 Perform early inlining
1063 feliminate-dwarf2-dups
1064 Common Report Var(flag_eliminate_dwarf2_dups)
1065 Perform DWARF2 duplicate elimination
1068 Common Report Var(flag_ipa_sra) Init(0) Optimization
1069 Perform interprocedural reduction of aggregates
1071 feliminate-unused-debug-symbols
1072 Common Report Var(flag_debug_only_used_symbols)
1073 Perform unused type elimination in debug info
1075 feliminate-unused-debug-types
1076 Common Report Var(flag_eliminate_unused_debug_types) Init(1)
1077 Perform unused type elimination in debug info
1079 femit-class-debug-always
1080 Common Report Var(flag_emit_class_debug_always) Init(0)
1081 Do not suppress C++ class debug information.
1084 Common Report Var(flag_exceptions) Optimization
1085 Enable exception handling
1087 fexpensive-optimizations
1088 Common Report Var(flag_expensive_optimizations) Optimization
1089 Perform a number of minor, expensive optimizations
1092 Common Joined RejectNegative Enum(excess_precision) Var(flag_excess_precision_cmdline) Init(EXCESS_PRECISION_DEFAULT)
1093 -fexcess-precision=[fast|standard] Specify handling of excess floating-point precision
1096 Name(excess_precision) Type(enum excess_precision) UnknownError(unknown excess precision style %qs)
1099 Enum(excess_precision) String(fast) Value(EXCESS_PRECISION_FAST)
1102 Enum(excess_precision) String(standard) Value(EXCESS_PRECISION_STANDARD)
1108 Common Var(flag_fat_lto_objects) Init(1)
1109 Output lto objects containing both the intermediate language and binary output.
1112 Common Report Var(flag_finite_math_only) Optimization SetByCombined
1113 Assume no NaNs or infinities are generated
1116 Common Joined RejectNegative Var(common_deferred_options) Defer
1117 -ffixed-<register> Mark <register> as being unavailable to the compiler
1120 Common Report Var(flag_float_store) Optimization
1121 Don't allocate floats and doubles in extended-precision registers
1125 Does nothing. Preserved for backward compatibility.
1128 Common Report Var(flag_forward_propagate) Optimization
1129 Perform a forward propagation pass on RTL
1132 Common Joined RejectNegative Enum(fp_contract_mode) Var(flag_fp_contract_mode) Init(FP_CONTRACT_FAST)
1133 -ffp-contract=[off|on|fast] Perform floating-point expression contraction.
1136 Name(fp_contract_mode) Type(enum fp_contract_mode) UnknownError(unknown floating point contraction style %qs)
1139 Enum(fp_contract_mode) String(off) Value(FP_CONTRACT_OFF)
1141 ; Not implemented, fall back to conservative FP_CONTRACT_OFF.
1143 Enum(fp_contract_mode) String(on) Value(FP_CONTRACT_OFF)
1146 Enum(fp_contract_mode) String(fast) Value(FP_CONTRACT_FAST)
1148 ; Nonzero means don't put addresses of constant functions in registers.
1149 ; Used for compiling the Unix kernel, where strange substitutions are
1150 ; done on the assembly output.
1152 Common Report Var(flag_no_function_cse,0)
1153 Allow function addresses to be held in registers
1156 Common Report Var(flag_function_sections)
1157 Place each function into its own section
1160 Common Report Var(flag_gcse) Optimization
1161 Perform global common subexpression elimination
1164 Common Report Var(flag_gcse_lm) Init(1) Optimization
1165 Perform enhanced load motion during global common subexpression elimination
1168 Common Report Var(flag_gcse_sm) Init(0) Optimization
1169 Perform store motion after global common subexpression elimination
1172 Common Report Var(flag_gcse_las) Init(0) Optimization
1173 Perform redundant load after store elimination in global common subexpression
1177 Common Report Var(flag_gcse_after_reload) Optimization
1178 Perform global common subexpression elimination after register allocation
1181 ; This option is not documented yet as its semantics will change.
1183 Common Report Var(flag_graphite)
1184 Enable in and out of Graphite representation
1187 Common Report Var(flag_graphite_identity) Optimization
1188 Enable Graphite Identity transformation
1190 floop-parallelize-all
1191 Common Report Var(flag_loop_parallelize_all) Optimization
1192 Mark all loops as parallel
1195 Common Report Var(flag_loop_strip_mine) Optimization
1196 Enable Loop Strip Mining transformation
1199 Common Report Var(flag_loop_interchange) Optimization
1200 Enable Loop Interchange transformation
1203 Common Report Var(flag_loop_block) Optimization
1204 Enable Loop Blocking transformation
1207 Common Report Var(flag_tm)
1208 Enable support for GNU transactional memory
1212 Does nothing. Preserved for backward compatibility.
1214 fstrict-volatile-bitfields
1215 Common Report Var(flag_strict_volatile_bitfields) Init(-1)
1216 Force bitfield accesses to match their type width
1218 fguess-branch-probability
1219 Common Report Var(flag_guess_branch_prob) Optimization
1220 Enable guessing of branch probabilities
1222 ; Nonzero means ignore `#ident' directives. 0 means handle them.
1223 ; Generate position-independent code for executables if possible
1224 ; On SVR4 targets, it also controls whether or not to emit a
1225 ; string identifying the compiler.
1227 Common Report Var(flag_no_ident,0)
1228 Process #ident directives
1231 Common Report Var(flag_if_conversion) Optimization
1232 Perform conversion of conditional jumps to branchless equivalents
1235 Common Report Var(flag_if_conversion2) Optimization
1236 Perform conversion of conditional jumps to conditional execution
1238 ftree-loop-if-convert
1239 Common Report Var(flag_tree_loop_if_convert) Init(-1) Optimization
1240 Convert conditional jumps in innermost loops to branchless equivalents
1242 ftree-loop-if-convert-stores
1243 Common Report Var(flag_tree_loop_if_convert_stores) Optimization
1244 Also if-convert conditional jumps containing memory writes
1246 ; -finhibit-size-directive inhibits output of .size for ELF.
1247 ; This is used only for compiling crtstuff.c,
1248 ; and it may be extended to other effects
1249 ; needed for crtstuff.c on other systems.
1250 finhibit-size-directive
1251 Common Report Var(flag_inhibit_size_directive)
1252 Do not generate .size directives
1255 Common Report Var(flag_indirect_inlining)
1256 Perform indirect inlining
1258 ; General flag to enable inlining. Specifying -fno-inline will disable
1259 ; all inlining apart from always-inline functions.
1261 Common Report Var(flag_no_inline,0) Init(0)
1262 Enable inlining of function declared \"inline\", disabling disables all inlining
1264 finline-small-functions
1265 Common Report Var(flag_inline_small_functions) Optimization
1266 Integrate functions into their callers when code size is known not to grow
1269 Common Report Var(flag_inline_functions) Optimization
1270 Integrate functions not declared \"inline\" into their callers when profitable
1272 finline-functions-called-once
1273 Common Report Var(flag_inline_functions_called_once) Optimization
1274 Integrate functions only required by their single caller
1277 Common RejectNegative Joined Alias(finline-limit=)
1280 Common RejectNegative Joined UInteger
1281 -finline-limit=<number> Limit the size of inlined functions to <number>
1284 Common Report Var(flag_inline_atomics) Init(1) Optimization
1285 Inline __atomic operations when a lock free instruction sequence is available.
1287 finstrument-functions
1288 Common Report Var(flag_instrument_function_entry_exit)
1289 Instrument function entry and exit with profiling calls
1291 finstrument-functions-exclude-function-list=
1292 Common RejectNegative Joined
1293 -finstrument-functions-exclude-function-list=name,... Do not instrument listed functions
1295 finstrument-functions-exclude-file-list=
1296 Common RejectNegative Joined
1297 -finstrument-functions-exclude-file-list=filename,... Do not instrument functions listed in files
1300 Common Report Var(flag_ipa_cp) Optimization
1301 Perform Interprocedural constant propagation
1304 Common Report Var(flag_ipa_cp_clone) Optimization
1305 Perform cloning to make Interprocedural constant propagation stronger
1308 Common Report Var(flag_ipa_profile) Init(0) Optimization
1309 Perform interprocedural profile propagation
1312 Common Report Var(flag_ipa_pta) Init(0) Optimization
1313 Perform interprocedural points-to analysis
1316 Common Report Var(flag_ipa_pure_const) Init(0) Optimization
1317 Discover pure and const functions
1320 Common Report Var(flag_ipa_reference) Init(0) Optimization
1321 Discover readonly and non addressable static variables
1324 Common Report Var(flag_ipa_matrix_reorg) Optimization
1325 Perform matrix layout flattening and transposing based
1326 on profiling information.
1330 Does nothing. Preserved for backward compatibility.
1333 Common Joined RejectNegative Enum(ira_algorithm) Var(flag_ira_algorithm) Init(IRA_ALGORITHM_CB)
1334 -fira-algorithm=[CB|priority] Set the used IRA algorithm
1337 Name(ira_algorithm) Type(enum ira_algorithm) UnknownError(unknown IRA algorithm %qs)
1340 Enum(ira_algorithm) String(CB) Value(IRA_ALGORITHM_CB)
1343 Enum(ira_algorithm) String(priority) Value(IRA_ALGORITHM_PRIORITY)
1346 Common Joined RejectNegative Enum(ira_region) Var(flag_ira_region) Init(IRA_REGION_AUTODETECT)
1347 -fira-region=[one|all|mixed] Set regions for IRA
1350 Name(ira_region) Type(enum ira_region) UnknownError(unknown IRA region %qs)
1353 Enum(ira_region) String(one) Value(IRA_REGION_ONE)
1356 Enum(ira_region) String(all) Value(IRA_REGION_ALL)
1359 Enum(ira_region) String(mixed) Value(IRA_REGION_MIXED)
1362 Common Report Var(flag_ira_loop_pressure)
1363 Use IRA based register pressure calculation
1364 in RTL loop optimizations.
1366 fira-share-save-slots
1367 Common Report Var(flag_ira_share_save_slots) Init(1)
1368 Share slots for saving different hard registers.
1370 fira-share-spill-slots
1371 Common Report Var(flag_ira_share_spill_slots) Init(1)
1372 Share stack slots for spilled pseudo-registers.
1375 Common RejectNegative Joined UInteger Var(flag_ira_verbose) Init(5)
1376 -fira-verbose=<number> Control IRA's level of diagnostic messages.
1379 Common Report Var(flag_ivopts) Init(1) Optimization
1380 Optimize induction variables on trees
1383 Common Var(flag_jump_tables) Init(1) Optimization
1384 Use jump tables for sufficiently large switch statements
1386 fkeep-inline-functions
1387 Common Report Var(flag_keep_inline_functions)
1388 Generate code for functions even if they are fully inlined
1391 Common Report Var(flag_keep_static_consts) Init(1)
1392 Emit static const variables even if they are not used
1395 Common Report Var(flag_leading_underscore) Init(-1)
1396 Give external symbols a leading underscore
1400 Does nothing. Preserved for backward compatibility.
1404 Enable link-time optimization.
1407 Common RejectNegative Joined Var(flag_lto)
1408 Link-time optimization with number of parallel jobs or jobserver.
1411 Common Var(flag_lto_partition_1to1)
1412 Partition functions and vars at linktime based on object files they originate from
1414 flto-partition=balanced
1415 Common Var(flag_lto_partition_balanced)
1416 Partition functions and vars at linktime into approximately same sized buckets
1419 Common Var(flag_lto_partition_none)
1420 Disable partioning and streaming
1422 ; The initial value of -1 comes from Z_DEFAULT_COMPRESSION in zlib.h.
1423 flto-compression-level=
1424 Common Joined RejectNegative UInteger Var(flag_lto_compression_level) Init(-1)
1425 -flto-compression-level=<number> Use zlib compression level <number> for IL
1428 Common Report Var(flag_lto_report) Init(0) Optimization
1429 Report various link-time optimization statistics
1432 Common Report Var(flag_errno_math) Init(1) Optimization SetByCombined
1433 Set errno after built-in math functions
1436 Common Joined RejectNegative UInteger Var(flag_max_errors)
1437 -fmax-errors=<number> Maximum number of errors to report
1440 Common Report Var(mem_report)
1441 Report on permanent memory allocation
1443 ; This will attempt to merge constant section constants, if 1 only
1444 ; string constants and constants from constant pool, if 2 also constant
1446 fmerge-all-constants
1447 Common Report Var(flag_merge_constants,2) Init(1) Optimization
1448 Attempt to merge identical constants and constant variables
1451 Common Report Var(flag_merge_constants,1) Optimization
1452 Attempt to merge identical constants across compilation units
1454 fmerge-debug-strings
1455 Common Report Var(flag_merge_debug_strings) Init(1)
1456 Attempt to merge identical debug strings across compilation units
1459 Common RejectNegative Joined UInteger
1460 -fmessage-length=<number> Limit diagnostics to <number> characters per line. 0 suppresses line-wrapping
1463 Common Report Var(flag_modulo_sched) Optimization
1464 Perform SMS based modulo scheduling before the first scheduling pass
1466 fmodulo-sched-allow-regmoves
1467 Common Report Var(flag_modulo_sched_allow_regmoves)
1468 Perform SMS based modulo scheduling with register moves allowed
1470 fmove-loop-invariants
1471 Common Report Var(flag_move_loop_invariants) Init(1) Optimization
1472 Move loop invariant computations out of loops
1475 Common Var(flag_dce) Init(1) Optimization
1476 Use the RTL dead code elimination pass
1479 Common Var(flag_dse) Init(1) Optimization
1480 Use the RTL dead store elimination pass
1482 freschedule-modulo-scheduled-loops
1483 Common Report Var(flag_resched_modulo_sched) Optimization
1484 Enable/Disable the traditional scheduling in loops that already passed modulo scheduling
1486 fnon-call-exceptions
1487 Common Report Var(flag_non_call_exceptions) Optimization
1488 Support synchronous non-call exceptions
1491 Common Report Var(flag_omit_frame_pointer) Optimization
1492 When possible do not generate stack frames
1494 foptimize-register-move
1495 Common Report Var(flag_regmove) Optimization
1496 Do the full register move optimization pass
1498 foptimize-sibling-calls
1499 Common Report Var(flag_optimize_sibling_calls) Optimization
1500 Optimize sibling and tail recursive calls
1503 Common Report Var(flag_partial_inlining)
1504 Perform partial inlining
1507 Common Report Var(pre_ipa_mem_report)
1508 Report on memory allocation before interprocedural optimization
1510 fpost-ipa-mem-report
1511 Common Report Var(post_ipa_mem_report)
1512 Report on memory allocation before interprocedural optimization
1515 Common Report Var(flag_pack_struct) Optimization
1516 Pack structure members together without holes
1519 Common RejectNegative Joined UInteger Optimization
1520 -fpack-struct=<number> Set initial maximum structure member alignment
1523 Common Report Var(flag_pcc_struct_return,1) Init(DEFAULT_PCC_STRUCT_RETURN)
1524 Return small aggregates in memory, not registers
1527 Common Report Var(flag_peel_loops) Optimization
1528 Perform loop peeling
1531 Common Report Var(flag_no_peephole,0) Optimization
1532 Enable machine specific peephole optimizations
1535 Common Report Var(flag_peephole2) Optimization
1536 Enable an RTL peephole pass before sched2
1539 Common Report Var(flag_pic,2)
1540 Generate position-independent code if possible (large mode)
1543 Common Report Var(flag_pie,2)
1544 Generate position-independent code for executables if possible (large mode)
1547 Common Report Var(flag_pic,1)
1548 Generate position-independent code if possible (small mode)
1551 Common Report Var(flag_pie,1)
1552 Generate position-independent code for executables if possible (small mode)
1555 Common Joined RejectNegative Var(common_deferred_options) Defer
1556 Specify a plugin to load
1559 Common Joined RejectNegative Var(common_deferred_options) Defer
1560 -fplugin-arg-<name>-<key>[=<value>] Specify argument <key>=<value> for plugin <name>
1562 fpredictive-commoning
1563 Common Report Var(flag_predictive_commoning) Optimization
1564 Run predictive commoning optimization.
1566 fprefetch-loop-arrays
1567 Common Report Var(flag_prefetch_loop_arrays) Init(-1) Optimization
1568 Generate prefetch instructions, if available, for arrays in loops
1571 Common Report Var(profile_flag)
1572 Enable basic program profiling code
1575 Common Report Var(profile_arc_flag)
1576 Insert arc-based program profiling code
1579 Common Joined RejectNegative Var(profile_data_prefix)
1580 Set the top-level directory for storing the profile data.
1581 The default is 'pwd'.
1584 Common Report Var(flag_profile_correction)
1585 Enable correction of flow inconsistent profile data input
1589 Enable common options for generating profile info for profile feedback directed optimizations
1592 Common Joined RejectNegative
1593 Enable common options for generating profile info for profile feedback directed optimizations, and set -fprofile-dir=
1596 Common Var(flag_profile_use)
1597 Enable common options for performing profile feedback directed optimizations
1600 Common Joined RejectNegative
1601 Enable common options for performing profile feedback directed optimizations, and set -fprofile-dir=
1604 Common Report Var(flag_profile_values)
1605 Insert code to profile values of expressions
1608 Common Var(common_deferred_options) Defer
1611 Common Joined RejectNegative Var(common_deferred_options) Defer
1612 -frandom-seed=<string> Make compile reproducible using <string>
1614 ; This switch causes the command line that was used to create an
1615 ; object file to be recorded into the object file. The exact format
1616 ; of this recording is target and binary file format dependent.
1617 ; It is related to the -fverbose-asm switch, but that switch only
1618 ; records information in the assembler output file as comments, so
1619 ; they never reach the object file.
1620 frecord-gcc-switches
1621 Common Report Var(flag_record_gcc_switches)
1622 Record gcc command line switches in the object file.
1625 Common Report Var(flag_pcc_struct_return,0) Optimization
1626 Return small aggregates in registers
1629 Common Report Var(flag_regmove) Optimization
1630 Enables a register move optimization
1633 Common Report Var(flag_rename_registers) Init(2) Optimization
1634 Perform a register renaming optimization pass
1637 Common Report Var(flag_reorder_blocks) Optimization
1638 Reorder basic blocks to improve code placement
1640 freorder-blocks-and-partition
1641 Common Report Var(flag_reorder_blocks_and_partition) Optimization
1642 Reorder basic blocks and partition into hot and cold sections
1645 Common Report Var(flag_reorder_functions) Optimization
1646 Reorder functions to improve code placement
1648 frerun-cse-after-loop
1649 Common Report Var(flag_rerun_cse_after_loop) Optimization
1650 Add a common subexpression elimination pass after loop optimizations
1654 Does nothing. Preserved for backward compatibility.
1657 Common Report Var(flag_rounding_math) Optimization SetByCombined
1658 Disable optimizations that assume default FP rounding behavior
1661 Common Report Var(flag_schedule_interblock) Init(1) Optimization
1662 Enable scheduling across basic blocks
1665 Common Report Var(flag_sched_pressure) Init(0) Optimization
1666 Enable register pressure sensitive insn scheduling
1669 Common Report Var(flag_schedule_speculative) Init(1) Optimization
1670 Allow speculative motion of non-loads
1673 Common Report Var(flag_schedule_speculative_load) Optimization
1674 Allow speculative motion of some loads
1676 fsched-spec-load-dangerous
1677 Common Report Var(flag_schedule_speculative_load_dangerous) Optimization
1678 Allow speculative motion of more loads
1681 Common RejectNegative Joined UInteger Var(sched_verbose_param)
1682 -fsched-verbose=<number> Set the verbosity level of the scheduler
1684 fsched2-use-superblocks
1685 Common Report Var(flag_sched2_use_superblocks) Optimization
1686 If scheduling post reload, do superblock scheduling
1690 Does nothing. Preserved for backward compatibility.
1693 Common Report Var(flag_schedule_insns) Optimization
1694 Reschedule instructions before register allocation
1697 Common Report Var(flag_schedule_insns_after_reload) Optimization
1698 Reschedule instructions after register allocation
1700 ; This flag should be on when a target implements non-trivial
1701 ; scheduling hooks, maybe saving some information for its own sake.
1702 ; On IA64, for example, this is used for correct bundling.
1703 fselective-scheduling
1704 Common Report Var(flag_selective_scheduling) Optimization
1705 Schedule instructions using selective scheduling algorithm
1707 fselective-scheduling2
1708 Common Report Var(flag_selective_scheduling2) Optimization
1709 Run selective scheduling after reload
1711 fsel-sched-pipelining
1712 Common Report Var(flag_sel_sched_pipelining) Init(0) Optimization
1713 Perform software pipelining of inner loops during selective scheduling
1715 fsel-sched-pipelining-outer-loops
1716 Common Report Var(flag_sel_sched_pipelining_outer_loops) Init(0) Optimization
1717 Perform software pipelining of outer loops during selective scheduling
1719 fsel-sched-reschedule-pipelined
1720 Common Report Var(flag_sel_sched_reschedule_pipelined) Init(0) Optimization
1721 Reschedule pipelined regions without pipelining
1723 ; sched_stalled_insns means that insns can be moved prematurely from the queue
1724 ; of stalled insns into the ready list.
1725 fsched-stalled-insns
1726 Common Report Var(flag_sched_stalled_insns) Optimization UInteger
1727 Allow premature scheduling of queued insns
1729 fsched-stalled-insns=
1730 Common RejectNegative Joined UInteger
1731 -fsched-stalled-insns=<number> Set number of queued insns that can be prematurely scheduled
1733 ; sched_stalled_insns_dep controls how many recently scheduled cycles will
1734 ; be examined for a dependency on a stalled insn that is candidate for
1735 ; premature removal from the queue of stalled insns into the ready list (has
1736 ; an effect only if the flag 'sched_stalled_insns' is set).
1737 fsched-stalled-insns-dep
1738 Common Report Var(flag_sched_stalled_insns_dep,1) Init(1) Optimization UInteger
1739 Set dependence distance checking in premature scheduling of queued insns
1741 fsched-stalled-insns-dep=
1742 Common RejectNegative Joined UInteger
1743 -fsched-stalled-insns-dep=<number> Set dependence distance checking in premature scheduling of queued insns
1745 fsched-group-heuristic
1746 Common Report Var(flag_sched_group_heuristic) Init(1) Optimization
1747 Enable the group heuristic in the scheduler
1749 fsched-critical-path-heuristic
1750 Common Report Var(flag_sched_critical_path_heuristic) Init(1) Optimization
1751 Enable the critical path heuristic in the scheduler
1753 fsched-spec-insn-heuristic
1754 Common Report Var(flag_sched_spec_insn_heuristic) Init(1) Optimization
1755 Enable the speculative instruction heuristic in the scheduler
1757 fsched-rank-heuristic
1758 Common Report Var(flag_sched_rank_heuristic) Init(1) Optimization
1759 Enable the rank heuristic in the scheduler
1761 fsched-last-insn-heuristic
1762 Common Report Var(flag_sched_last_insn_heuristic) Init(1) Optimization
1763 Enable the last instruction heuristic in the scheduler
1765 fsched-dep-count-heuristic
1766 Common Report Var(flag_sched_dep_count_heuristic) Init(1) Optimization
1767 Enable the dependent count heuristic in the scheduler
1770 Common Report Var(flag_section_anchors) Optimization
1771 Access data in the same section from shared anchor points
1775 Does nothing. Preserved for backward compatibility.
1779 Does nothing. Preserved for backward compatibility.
1782 Common Report Var(flag_ree) Init(0)
1783 Turn on Redundant Extensions Elimination pass.
1786 Common Report Var(flag_show_column) Init(1)
1787 Show column numbers in diagnostics, when available. Default on
1790 Common Report Var(flag_shrink_wrap) Optimization
1791 Emit function prologues only before parts of the function that need it,
1792 rather than at the top of the function.
1795 Common Report Var(flag_signaling_nans) Optimization SetByCombined
1796 Disable optimizations observable by IEEE signaling NaNs
1799 Common Report Var(flag_signed_zeros) Init(1) Optimization SetByCombined
1800 Disable floating point optimizations that ignore the IEEE signedness of zero
1802 fsingle-precision-constant
1803 Common Report Var(flag_single_precision_constant) Optimization
1804 Convert floating point constants to single precision constants
1806 fsplit-ivs-in-unroller
1807 Common Report Var(flag_split_ivs_in_unroller) Init(1) Optimization
1808 Split lifetimes of induction variables when loops are unrolled
1811 Common Report Var(flag_split_stack) Init(-1)
1812 Generate discontiguous stack frames
1815 Common Report Var(flag_split_wide_types) Optimization
1816 Split wide types into independent registers
1818 fvariable-expansion-in-unroller
1819 Common Report Var(flag_variable_expansion_in_unroller) Optimization
1820 Apply variable expansion when loops are unrolled
1823 Common Report RejectNegative Joined
1824 -fstack-check=[no|generic|specific] Insert stack checking code into the program
1827 Common Alias(fstack-check=, specific, no)
1828 Insert stack checking code into the program. Same as -fstack-check=specific
1831 Common Var(common_deferred_options) Defer
1833 fstack-limit-register=
1834 Common RejectNegative Joined Var(common_deferred_options) Defer
1835 -fstack-limit-register=<register> Trap if the stack goes past <register>
1837 fstack-limit-symbol=
1838 Common RejectNegative Joined Var(common_deferred_options) Defer
1839 -fstack-limit-symbol=<name> Trap if the stack goes past symbol <name>
1842 Common Report Var(flag_stack_protect, 1)
1843 Use propolice as a stack protection method
1845 fstack-protector-all
1846 Common Report RejectNegative Var(flag_stack_protect, 2)
1847 Use a stack protection method for every function
1850 Common RejectNegative Var(flag_stack_usage)
1851 Output stack usage information on a per-function basis
1855 Does nothing. Preserved for backward compatibility.
1857 ; Nonzero if we should do (language-dependent) alias analysis.
1858 ; Typically, this analysis will assume that expressions of certain
1859 ; types do not alias expressions of certain other types. Only used
1860 ; if alias analysis (in general) is enabled.
1862 Common Report Var(flag_strict_aliasing) Optimization
1863 Assume strict aliasing rules apply
1866 Common Report Var(flag_strict_overflow)
1867 Treat signed overflow as undefined
1870 Common Report Var(flag_syntax_only)
1871 Check for syntax errors, then stop
1874 Common Report Var(flag_test_coverage)
1875 Create data files needed by \"gcov\"
1878 Common Report Var(flag_thread_jumps) Optimization
1879 Perform jump threading optimizations
1882 Common Report Var(time_report)
1883 Report the time taken by each compiler pass
1886 Common Joined RejectNegative Enum(tls_model) Var(flag_tls_default) Init(TLS_MODEL_GLOBAL_DYNAMIC)
1887 -ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec] Set the default thread-local storage code generation model
1890 Name(tls_model) Type(enum tls_model) UnknownError(unknown TLS model %qs)
1893 Enum(tls_model) String(global-dynamic) Value(TLS_MODEL_GLOBAL_DYNAMIC)
1896 Enum(tls_model) String(local-dynamic) Value(TLS_MODEL_LOCAL_DYNAMIC)
1899 Enum(tls_model) String(initial-exec) Value(TLS_MODEL_INITIAL_EXEC)
1902 Enum(tls_model) String(local-exec) Value(TLS_MODEL_LOCAL_EXEC)
1905 Common Report Var(flag_toplevel_reorder) Init(2) Optimization
1906 Reorder top level functions, variables, and asms
1909 Common Report Var(flag_tracer)
1910 Perform superblock formation via tail duplication
1912 ; Zero means that floating-point math operations cannot generate a
1913 ; (user-visible) trap. This is the case, for example, in nonstop
1914 ; IEEE 754 arithmetic.
1916 Common Report Var(flag_trapping_math) Init(1) Optimization SetByCombined
1917 Assume floating-point operations can trap
1920 Common Report Var(flag_trapv) Optimization
1921 Trap for signed overflow in addition, subtraction and multiplication
1924 Common Report Var(flag_tree_ccp) Optimization
1925 Enable SSA-CCP optimization on trees
1928 Common Report Var(flag_tree_bit_ccp) Optimization
1929 Enable SSA-BIT-CCP optimization on trees
1933 Does nothing. Preserved for backward compatibility.
1936 Common Report Var(flag_tree_ch) Optimization
1937 Enable loop header copying on trees
1940 Common Report Var(flag_tree_copyrename) Optimization
1941 Replace SSA temporaries with better names in copies
1944 Common Report Var(flag_tree_copy_prop) Optimization
1945 Enable copy propagation on trees
1947 ftree-store-copy-prop
1949 Does nothing. Preserved for backward compatibility.
1952 Common Report Var(flag_tree_cselim) Init(2) Optimization
1953 Transform condition stores into unconditional ones
1955 ftree-switch-conversion
1956 Common Report Var(flag_tree_switch_conversion) Optimization
1957 Perform conversions of switch initializations.
1960 Common Report Var(flag_tree_dce) Optimization
1961 Enable SSA dead code elimination optimization on trees
1963 ftree-dominator-opts
1964 Common Report Var(flag_tree_dom) Optimization
1965 Enable dominator optimizations
1968 Common Report Var(flag_tree_tail_merge) Optimization
1969 Enable tail merging on trees
1972 Common Report Var(flag_tree_dse) Optimization
1973 Enable dead store elimination
1976 Common Report Var(flag_tree_forwprop) Init(1) Optimization
1977 Enable forward propagation on trees
1980 Common Report Var(flag_tree_fre) Optimization
1981 Enable Full Redundancy Elimination (FRE) on trees
1984 Common Report Var(flag_optimize_strlen) Optimization
1985 Enable string length optimizations on trees
1987 ftree-loop-distribution
1988 Common Report Var(flag_tree_loop_distribution) Optimization
1989 Enable loop distribution on trees
1991 ftree-loop-distribute-patterns
1992 Common Report Var(flag_tree_loop_distribute_patterns) Optimization
1993 Enable loop distribution for patterns transformed into a library call
1996 Common Report Var(flag_tree_loop_im) Init(1) Optimization
1997 Enable loop invariant motion on trees
2000 Common Alias(floop-interchange)
2001 Enable loop interchange transforms. Same as -floop-interchange
2004 Common Report Var(flag_tree_loop_ivcanon) Init(1) Optimization
2005 Create canonical induction variables in loops
2008 Common Report Var(flag_tree_loop_optimize) Init(1) Optimization
2009 Enable loop optimizations on tree level
2011 ftree-parallelize-loops=
2012 Common Report Joined RejectNegative UInteger Var(flag_tree_parallelize_loops) Init(1)
2013 Enable automatic parallelization of loops
2016 Common Report Var(flag_tree_phiprop) Init(1) Optimization
2017 Enable hoisting loads from conditional pointers.
2020 Common Report Var(flag_tree_pre) Optimization
2021 Enable SSA-PRE optimization on trees
2024 Common Report Var(flag_tree_pta) Init(1) Optimization
2025 Perform function-local points-to analysis on trees.
2028 Common Report Var(flag_tree_reassoc) Init(1) Optimization
2029 Enable reassociation on tree level
2033 Does nothing. Preserved for backward compatibility.
2036 Common Report Var(flag_tree_sink) Optimization
2037 Enable SSA code sinking on trees
2040 Common Report Var(flag_tree_sra) Optimization
2041 Perform scalar replacement of aggregates
2044 Common Report Var(flag_tree_ter) Optimization
2045 Replace temporary expressions in the SSA->normal pass
2048 Common Report Var(flag_tree_live_range_split) Optimization
2049 Perform live range splitting during the SSA->normal pass
2052 Common Report Var(flag_tree_vrp) Init(0) Optimization
2053 Perform Value Range Propagation on trees
2056 Common Report Var(flag_unit_at_a_time) Init(1) Optimization
2057 Compile whole compilation unit at a time
2060 Common Report Var(flag_unroll_loops) Optimization
2061 Perform loop unrolling when iteration count is known
2064 Common Report Var(flag_unroll_all_loops) Optimization
2065 Perform loop unrolling for all loops
2067 ; Nonzero means that loop optimizer may assume that the induction variables
2068 ; that control loops do not overflow and that the loops with nontrivial
2069 ; exit condition are not infinite
2070 funsafe-loop-optimizations
2071 Common Report Var(flag_unsafe_loop_optimizations) Optimization
2072 Allow loop optimizations to assume that the loops behave in normal way
2075 Common Report Var(flag_associative_math) SetByCombined
2076 Allow optimization for floating-point arithmetic which may change the
2077 result of the operation due to rounding.
2080 Common Report Var(flag_reciprocal_math) SetByCombined
2081 Same as -fassociative-math for expressions which include division.
2083 ; Nonzero means that unsafe floating-point math optimizations are allowed
2084 ; for the sake of speed. IEEE compliance is not guaranteed, and operations
2085 ; are allowed to assume that their arguments and results are "normal"
2086 ; (e.g., nonnegative for SQRT).
2087 funsafe-math-optimizations
2088 Common Report Var(flag_unsafe_math_optimizations) Optimization SetByCombined
2089 Allow math optimizations that may violate IEEE or ISO standards
2092 Common Report Var(flag_unswitch_loops) Optimization
2093 Perform loop unswitching
2096 Common Report Var(flag_unwind_tables) Optimization
2097 Just generate unwind tables for exception handling
2102 ; Positive if we should track variables, negative if we should run
2103 ; the var-tracking pass only to discard debug annotations, zero if
2104 ; we're not to run it. When flag_var_tracking == 2 (AUTODETECT_VALUE) it
2105 ; will be set according to optimize, debug_info_level and debug_hooks
2106 ; in process_options ().
2108 Common Report Var(flag_var_tracking) Init(2) Optimization
2109 Perform variable tracking
2111 ; Positive if we should track variables at assignments, negative if
2112 ; we should run the var-tracking pass only to discard debug
2113 ; annotations. When flag_var_tracking_assignments ==
2114 ; AUTODETECT_VALUE it will be set according to flag_var_tracking.
2115 fvar-tracking-assignments
2116 Common Report Var(flag_var_tracking_assignments) Init(2) Optimization
2117 Perform variable tracking by annotating assignments
2119 ; Nonzero if we should toggle flag_var_tracking_assignments after
2120 ; processing options and computing its default. */
2121 fvar-tracking-assignments-toggle
2122 Common Report Var(flag_var_tracking_assignments_toggle) Optimization
2123 Toggle -fvar-tracking-assignments
2125 fvar-tracking-uninit
2126 Common Report Var(flag_var_tracking_uninit) Optimization
2127 Perform variable tracking and also tag variables that are uninitialized
2130 Common Report Var(flag_tree_vectorize) Optimization
2131 Enable loop vectorization on trees
2134 Common Report Var(flag_tree_slp_vectorize) Init(2) Optimization
2135 Enable basic block vectorization (SLP) on trees
2138 Common Report Var(flag_vect_cost_model) Optimization
2139 Enable use of cost model in vectorization
2141 ftree-vect-loop-version
2142 Common Report Var(flag_tree_vect_loop_version) Init(1) Optimization
2143 Enable loop versioning when doing loop vectorization on trees
2145 ftree-vectorizer-verbose=
2146 Common RejectNegative Joined UInteger
2147 -ftree-vectorizer-verbose=<number> Set the verbosity level of the vectorizer
2150 Common Report Var(flag_tree_scev_cprop) Init(1) Optimization
2151 Enable copy propagation of scalar-evolution information.
2153 ; -fverbose-asm causes extra commentary information to be produced in
2154 ; the generated assembly code (to make it more readable). This option
2155 ; is generally only of use to those who actually need to read the
2156 ; generated assembly code (perhaps while debugging the compiler itself).
2157 ; -fno-verbose-asm, the default, causes the extra information
2158 ; to not be added and is useful when comparing two assembler files.
2160 Common Report Var(flag_verbose_asm)
2161 Add extra commentary to assembler output
2164 Common Joined RejectNegative Enum(symbol_visibility) Var(default_visibility) Init(VISIBILITY_DEFAULT)
2165 -fvisibility=[default|internal|hidden|protected] Set the default symbol visibility
2168 Name(symbol_visibility) Type(enum symbol_visibility) UnknownError(unrecognized visibility value %qs)
2171 Enum(symbol_visibility) String(default) Value(VISIBILITY_DEFAULT)
2174 Enum(symbol_visibility) String(internal) Value(VISIBILITY_INTERNAL)
2177 Enum(symbol_visibility) String(hidden) Value(VISIBILITY_HIDDEN)
2180 Enum(symbol_visibility) String(protected) Value(VISIBILITY_PROTECTED)
2183 Common Report Var(flag_value_profile_transformations) Optimization
2184 Use expression value profiles in optimizations
2187 Common Report Var(flag_web) Init(2) Optimization
2188 Construct webs and split unrelated uses of single variable
2190 ftree-builtin-call-dce
2191 Common Report Var(flag_tree_builtin_call_dce) Init(0) Optimization
2192 Enable conditional dead code elimination for builtin calls
2195 Common Report Var(flag_whole_program) Init(0) Optimization
2196 Perform whole program optimizations
2199 Common Report Var(flag_wrapv) Optimization
2200 Assume signed arithmetic overflow wraps around
2202 fzero-initialized-in-bss
2203 Common Report Var(flag_zero_initialized_in_bss) Init(1)
2204 Put zero initialized data in the bss section
2207 Common JoinedOrMissing
2208 Generate debug information in default format
2211 Common JoinedOrMissing Negative(gdwarf-)
2212 Generate debug information in COFF format
2215 Common Joined UInteger Var(dwarf_version) Init(2) Negative(gstabs)
2216 Generate debug information in DWARF v2 (or later) format
2219 Common JoinedOrMissing
2220 Generate debug information in default extended format
2222 gno-record-gcc-switches
2223 Common RejectNegative Var(dwarf_record_gcc_switches,0) Init(0)
2224 Don't record gcc command line switches in DWARF DW_AT_producer.
2226 grecord-gcc-switches
2227 Common RejectNegative Var(dwarf_record_gcc_switches,1)
2228 Record gcc command line switches in DWARF DW_AT_producer.
2231 Common JoinedOrMissing Negative(gstabs+)
2232 Generate debug information in STABS format
2235 Common JoinedOrMissing Negative(gvms)
2236 Generate debug information in extended STABS format
2239 Common RejectNegative Var(dwarf_strict,0) Init(-1)
2240 Emit DWARF additions beyond selected version
2243 Common Report RejectNegative Var(dwarf_strict,1)
2244 Don't emit DWARF additions beyond selected version
2247 Common Report Var(flag_gtoggle)
2248 Toggle debug information generation
2251 Common JoinedOrMissing Negative(gxcoff)
2252 Generate debug information in VMS format
2255 Common JoinedOrMissing Negative(gxcoff+)
2256 Generate debug information in XCOFF format
2259 Common JoinedOrMissing Negative(gcoff)
2260 Generate debug information in extended XCOFF format
2263 Driver Joined Separate
2266 Common Joined Var(plugindir_string) Init(0)
2267 -iplugindir=<dir> Set <dir> to be the default plugin directory
2270 Driver Joined Separate
2275 no-canonical-prefixes
2288 Common Driver Joined Separate Var(asm_file_name) MissingArgError(missing filename after %qs)
2289 -o <file> Place output into <file>
2292 Common Var(profile_flag)
2293 Enable function profiling
2296 Driver Var(pass_exit_codes)
2299 Common Alias(Wpedantic)
2302 Common Var(flag_pedantic_errors)
2303 Like -pedantic but issue them as errors
2309 Driver Var(use_pipes)
2312 Driver JoinedOrMissing Var(print_file_name)
2314 print-libgcc-file-name
2317 print-multi-directory
2318 Driver Var(print_multi_directory)
2321 Driver Var(print_multi_lib)
2323 print-multi-os-directory
2324 Driver Var(print_multi_os_directory)
2327 Driver JoinedOrMissing Var(print_prog_name)
2330 Driver Var(print_search_dirs)
2333 Driver Var(print_sysroot)
2335 print-sysroot-headers-suffix
2336 Driver Var(print_sysroot_headers_suffix)
2339 Common Var(quiet_flag) RejectDriver
2340 Do not display functions compiled or elapsed time
2358 Driver Var(report_times)
2361 Driver JoinedOrMissing
2364 Driver Joined Separate
2368 ; C option, but driver must not handle as "-u ndef".
2371 Common Driver Var(verbose_flag)
2372 Enable verbose output
2375 Common Var(version_flag) RejectDriver
2376 Display the compiler's version
2379 Common Var(inhibit_warnings)
2383 Driver Separate Var(wrapper_string)
2386 Driver Joined Separate
2389 Driver RejectNegative Negative(pie)
2390 Create a shared library
2396 Driver Separate Alias(specs=)
2409 ; Documented for Fortran, but always accepted by driver.
2416 ; Documented for Go, but always accepted by driver.
2422 Driver RejectNegative Negative(shared)
2423 Create a position independent executable
2426 Driver Joined Separate
2428 ; This comment is to ensure we retain the blank line above.