1 ; Options for the language- and target-independent parts of the compiler.
3 ; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
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 ; 0 means straightforward implementation of complex divide acceptable.
41 ; 1 means wide ranges of inputs must work for complex divide.
42 ; 2 means C99-like requirements for complex multiply and divide.
44 int flag_complex_method = 1
46 ; Nonzero if subexpressions must be evaluated from left-to-right.
48 int flag_evaluation_order = 0
50 ; Language specific warning pass for unused results.
52 bool flag_warn_unused_result = false
57 ; Nonzero if we should write GIMPLE bytecode for link-time optimization.
61 ; True to warn about any objects definitions whose size is larger
62 ; than N bytes. Also want about function definitions whose returned
63 ; values are larger than N bytes, where N is 'larger_than_size'.
68 HOST_WIDE_INT larger_than_size
70 ; True to warn about any function whose frame size is larger
73 bool warn_frame_larger_than
76 HOST_WIDE_INT frame_larger_than_size
78 ; Nonzero means we should be saving declaration info into a .X file.
80 int flag_gen_aux_info = 0
82 ; Nonzero if we are compiling code for a shared library, zero for
87 ; These two are really VEC(char_p,heap) *.
90 void *flag_instrument_functions_exclude_functions
93 void *flag_instrument_functions_exclude_files
95 ; Generic structs (e.g. templates not explicitly specialized)
96 ; may not have a compilation unit associated with them, and so
97 ; may need to be treated differently from ordinary structs.
99 ; Structs only handled by reference (indirectly), will also usually
100 ; not need as much debugging information.
103 enum debug_struct_file debug_struct_ordinary[DINFO_USAGE_NUM_ENUMS] = { DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY }
106 enum debug_struct_file debug_struct_generic[DINFO_USAGE_NUM_ENUMS] = { DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY }
108 ; True if we should exit after parsing options.
110 bool exit_after_options
112 ; Type(s) of debugging information we are producing (if any). See
113 ; flag-types.h for the definitions of the different possible types of
114 ; debugging information.
116 enum debug_info_type write_symbols = NO_DEBUG
118 ; Level of debugging information we are producing. See flag-types.h
119 ; for the definitions of the different possible levels.
121 enum debug_info_levels debug_info_level = DINFO_LEVEL_NONE
123 ; Nonzero means use GNU-only extensions in the generated symbolic
124 ; debugging information. Currently, this only has an effect when
125 ; write_symbols is set to DBX_DEBUG, XCOFF_DEBUG, or DWARF_DEBUG.
127 bool use_gnu_debug_info_extensions
129 ; Original value of maximum field alignment in bytes, specified via
130 ; -fpack-struct=<value>.
132 unsigned int initial_max_fld_align = TARGET_DEFAULT_PACK_STRUCT
135 enum vect_verbosity_levels user_vect_verbosity_level = MAX_VERBOSITY_LEVEL
137 ; Type of stack check.
139 enum stack_check_type flag_stack_check = NO_STACK_CHECK
141 ; -dA causes debug commentary information to be produced in
142 ; the generated assembly code (to make it more readable). This option
143 ; is generally only of use to those who actually need to read the
144 ; generated assembly code (perhaps while debugging the compiler itself).
145 ; Currently, this switch is only used by dwarf2out.c; however, it is intended
146 ; to be a catchall for printing debug information in the assembler file.
150 ; -dP causes the rtl to be emitted as a comment in assembly.
152 int flag_dump_rtl_in_asm
154 ; Whether -da was passed (used only in handle_common_deferred_options).
156 bool flag_dump_all_passed
158 ; Other flags saying which kinds of debugging dump have been requested.
161 int rtl_dump_and_exit
164 int flag_print_asm_name
167 enum graph_dump_types graph_dump_format = no_graph
169 ; Name of top-level original source file (what was input to cpp).
170 ; This comes from the #-command at the beginning of the actual input.
171 ; If there isn't any there, then this is the cc1 input file name.
173 const char *main_input_filename
175 ; Pointer to base name in main_input_filename, with directories and a
176 ; single final extension removed, and the length of this base
180 const char *main_input_basename
183 int main_input_baselength
185 ; Which options have been printed by --help.
189 ; Which enums have been printed by --help. 0 = not printed, no
190 ; relevant options seen, 1 = relevant option seen, not yet printed, 2
193 char *help_enum_printed
195 ; The number of columns for --help output.
197 unsigned int help_columns
199 ; Whether this options structure has been through finish_options
201 bool flag_opts_finished
213 Driver Alias(coverage)
219 Common Separate Alias(d)
222 Common Joined Alias(d)
225 Common Separate Alias(dumpbase)
228 Common Separate Alias(dumpdir)
231 Driver Separate Alias(e)
234 Driver Joined Alias(e)
237 Common Warning Alias(Wextra)
240 Driver Separate Alias(Xassembler)
243 Driver JoinedOrMissing Alias(Xassembler)
246 Driver Separate Alias(Xlinker)
249 Driver JoinedOrMissing Alias(Xlinker)
252 Driver Separate Alias(u)
255 Driver Joined Alias(u)
258 Common Driver Var(help_flag)
259 Display this information
262 Common Driver Report Joined
263 --help=<class> Display descriptions of a specific class of options. <class> is one or more of optimizers, target, warnings, undocumented, params
266 Driver Separate Alias(x)
269 Driver Joined Alias(x)
272 Driver Separate Alias(L)
275 Driver Joined Alias(L)
277 -no-canonical-prefixes
278 Driver Alias(no-canonical-prefixes)
280 -no-standard-libraries
281 Driver Alias(nostdlib)
290 Common Driver Separate Alias(o) MissingArgError(missing filename after %qs)
293 Common Driver Joined Alias(o) MissingArgError(missing filename after %qs)
296 Driver Alias(pass-exit-codes)
299 Common Alias(pedantic)
302 Common Alias(pedantic-errors)
311 Driver Separate Alias(B)
314 Driver JoinedOrMissing Alias(B)
320 Driver Separate Alias(print-file-name=)
323 Driver JoinedOrMissing Alias(print-file-name=)
325 -print-libgcc-file-name
326 Driver Alias(print-libgcc-file-name)
328 -print-multi-directory
329 Driver Alias(print-multi-directory)
332 Driver Alias(print-multi-lib)
334 -print-multi-os-directory
335 Driver Alias(print-multi-os-directory)
338 Driver Separate Alias(print-prog-name=)
341 Driver JoinedOrMissing Alias(print-prog-name=)
344 Driver Alias(print-search-dirs)
347 Driver Alias(print-sysroot)
349 -print-sysroot-headers-suffix
350 Driver Alias(print-sysroot-headers-suffix)
356 Driver Alias(save-temps)
362 Driver Separate Alias(specs=)
365 Driver Joined Alias(specs=)
371 Driver Alias(symbolic)
375 Alias for --help=target
383 ;; The driver used to convert options such as --help into forms such
384 ;; as -fhelp; the following four entries are for compatibility with
385 ;; any direct uses of those (undocumented) -f forms
387 Common Driver Alias(-help)
390 Common Driver Joined Alias(-help=)
393 Common Driver Alias(-target-help)
396 Common Driver Alias(-version)
400 --param <param>=<value> Set parameter <param> to value. See below for a complete list of parameters
403 Common Joined Alias(-param)
406 Driver Separate Alias(-sysroot=)
409 Driver JoinedOrMissing
415 Driver Joined Separate
421 Driver Joined Separate
427 Common JoinedOrMissing Optimization
428 -O<number> Set optimization level to <number>
432 Optimize for space rather than speed
436 Optimize for speed disregarding exact standards compliance
448 Driver Joined Separate
454 Driver Joined Separate
466 Common RejectNegative Warning Alias(Wextra)
467 This switch is deprecated; use -Wextra instead
470 Driver JoinedOrMissing
473 Driver JoinedOrMissing
476 Driver JoinedOrMissing
479 Common Var(warn_aggregate_return) Warning
480 Warn about returning structures, unions or arrays
483 Common Var(warn_array_bounds) Warning
484 Warn if an array is accessed out of bounds
487 Common Var(warn_attributes) Init(1) Warning
488 Warn about inappropriate attribute usage
491 Common Var(warn_cast_align) Warning
492 Warn about pointer casts which increase alignment
495 Common Var(warn_cpp) Init(1) Warning
496 Warn when a #warning directive is encountered
498 Wdeprecated-declarations
499 Common Var(warn_deprecated_decl) Init(1) Warning
500 Warn about uses of __attribute__((deprecated)) declarations
502 Wdisabled-optimization
503 Common Var(warn_disabled_optimization) Warning
504 Warn when an optimization pass is disabled
507 Common Var(warnings_are_errors)
508 Treat all warnings as errors
512 Treat specified warning as error
515 Common Var(extra_warnings) Warning
516 Print extra (possibly unwanted) warnings
519 Common Var(flag_fatal_errors)
520 Exit on the first error occurred
523 Common RejectNegative Joined UInteger
524 -Wframe-larger-than=<number> Warn if a function's stack frame requires more than <number> bytes
527 Common Var(warn_inline) Warning
528 Warn when an inlined function cannot be inlined
531 Common RejectNegative Joined Warning Undocumented Alias(Wlarger-than=)
534 Common RejectNegative Joined UInteger Warning
535 -Wlarger-than=<number> Warn if an object is larger than <number> bytes
537 Wunsafe-loop-optimizations
538 Common Var(warn_unsafe_loop_optimizations) Warning
539 Warn if the loop cannot be optimized due to nontrivial assumptions.
542 Common Var(warn_missing_noreturn) Warning
543 Warn about functions which might be candidates for __attribute__((noreturn))
546 Common Var(warn_mudflap) Init(1) Warning
547 Warn about constructs not instrumented by -fmudflap
550 Common Var(warn_overflow) Init(1) Warning
551 Warn about overflow in arithmetic expressions
554 Common Var(warn_packed) Warning
555 Warn when the packed attribute has no effect on struct layout
558 Common Var(warn_padded) Warning
559 Warn when padding is required to align structure members
562 Common Var(warn_shadow) Warning
563 Warn when one local variable shadows another
566 Common Var(warn_stack_protect) Warning
567 Warn when not issuing stack smashing protection for some reason
571 Warn about code which might break strict aliasing rules
574 Common Joined RejectNegative UInteger Var(warn_strict_aliasing) Init(-1) Warning
575 Warn about code which might break strict aliasing rules
579 Warn about optimizations that assume that signed overflow is undefined
582 Common Joined RejectNegative UInteger Var(warn_strict_overflow) Init(-1) Warning
583 Warn about optimizations that assume that signed overflow is undefined
585 Wsuggest-attribute=const
586 Common Var(warn_suggest_attribute_const) Warning
587 Warn about functions which might be candidates for __attribute__((const))
589 Wsuggest-attribute=pure
590 Common Var(warn_suggest_attribute_pure) Warning
591 Warn about functions which might be candidates for __attribute__((pure))
593 Wsuggest-attribute=noreturn
594 Common Var(warn_suggest_attribute_noreturn) Warning
595 Warn about functions which might be candidates for __attribute__((noreturn))
598 Common Var(warn_switch) Warning
599 Warn about enumerated switches, with no default, missing a case
602 Common Var(warn_switch_default) Warning
603 Warn about enumerated switches missing a \"default:\" statement
606 Common Var(warn_switch_enum) Warning
607 Warn about all enumerated switches missing a specific case
610 Common Var(warn_system_headers) Warning
611 Do not suppress warnings from system headers
614 Common Var(warn_trampolines) Warning
615 Warn whenever a trampoline is generated
618 Common Var(warn_type_limits) Init(-1) Warning
619 Warn if a comparison is always true or always false due to the limited range of the data type
622 Common Var(warn_uninitialized) Init(-1) Warning
623 Warn about uninitialized automatic variables
627 Does nothing. Preserved for backward compatibility.
630 Common Var(warn_unused) Init(0) Warning
631 Enable all -Wunused- warnings
633 Wunused-but-set-parameter
634 Common Var(warn_unused_but_set_parameter) Init(-1) Warning
635 Warn when a function parameter is only set, otherwise unused
637 Wunused-but-set-variable
638 Common Var(warn_unused_but_set_variable) Init(-1) Warning
639 Warn when a variable is only set, otherwise unused
642 Common Var(warn_unused_function) Init(-1) Warning
643 Warn when a function is unused
646 Common Var(warn_unused_label) Init(-1) Warning
647 Warn when a label is unused
650 Common Var(warn_unused_parameter) Init(-1) Warning
651 Warn when a function parameter is unused
654 Common Var(warn_unused_value) Init(-1) Warning
655 Warn when an expression value is unused
658 Common Var(warn_unused_variable) Init(-1) Warning
659 Warn when a variable is unused
662 Common Var(warn_coverage_mismatch) Init(1) Warning
663 Warn in case profiles in -fprofile-use do not match
678 Common Separate Var(aux_info_file_name)
679 -aux-info <file> Emit declaration information into <file>
682 Common Joined Alias(aux-info)
685 Common Separate RejectDriver Var(aux_base_name)
688 Common Separate RejectDriver
698 -d<letters> Enable dumps from specific passes of the compiler
701 Common Separate Var(dump_base_name)
702 -dumpbase <file> Set the file basename to be used for dumps
705 Common Separate Var(dump_dir_name)
706 -dumpdir <dir> Set the directory name to be used for dumps
718 Driver Joined Separate
720 ; This option has historically been passed down to the linker by an
721 ; accident of a %{e*} spec, so ensure it continues to be passed down
722 ; as a single option. The supported option for this purpose is
723 ; -rdynamic. See PR 47390.
727 ; The version of the C++ ABI in use. The following values are allowed:
729 ; 0: The version of the ABI believed most conformant with the C++ ABI
730 ; specification. This ABI may change as bugs are discovered and fixed.
731 ; Therefore, 0 will not necessarily indicate the same ABI in different
734 ; 1: The version of the ABI first used in G++ 3.2.
736 ; 2: The version of the ABI first used in G++ 3.4 (and current default).
738 ; 3: The version of the ABI that fixes the missing underscore
739 ; in template non-type arguments of pointer type.
741 ; 4: The version of the ABI that introduces unambiguous mangling of
744 ; 5: The version of the ABI that ignores attribute const/noreturn
745 ; in function pointer mangling.
747 ; 6: The version of the ABI that corrects mangling of decltype and
748 ; function parameters used in other parameters and the return type.
750 ; Additional positive integers will be assigned as new versions of
751 ; the ABI become the default version of the ABI.
753 Common Joined RejectNegative UInteger Var(flag_abi_version) Init(2)
756 Common Report Var(align_functions,0) Optimization UInteger
757 Align the start of functions
760 Common RejectNegative Joined UInteger Var(align_functions)
763 Common Report Var(align_jumps,0) Optimization UInteger
764 Align labels which are only reached by jumping
767 Common RejectNegative Joined UInteger Var(align_jumps)
770 Common Report Var(align_labels,0) Optimization UInteger
774 Common RejectNegative Joined UInteger Var(align_labels)
777 Common Report Var(align_loops,0) Optimization UInteger
778 Align the start of loops
781 Common RejectNegative Joined UInteger Var(align_loops)
785 Does nothing. Preserved for backward compatibility.
789 Does nothing. Preserved for backward compatibility.
791 fargument-noalias-global
793 Does nothing. Preserved for backward compatibility.
795 fargument-noalias-anything
797 Does nothing. Preserved for backward compatibility.
799 fasynchronous-unwind-tables
800 Common Report Var(flag_asynchronous_unwind_tables) Optimization
801 Generate unwind tables that are exact at each instruction boundary
804 Common Report Var(flag_auto_inc_dec) Init(1)
805 Generate auto-inc/dec instructions
807 ; -fcheck-bounds causes gcc to generate array bounds checks.
808 ; For C, C++ and ObjC: defaults off.
809 ; For Java: defaults to on.
810 ; For Fortran: defaults to off.
812 Common Report Var(flag_bounds_check)
813 Generate code to check bounds before indexing arrays
816 Common Report Var(flag_branch_on_count_reg) Init(1) Optimization
817 Replace add, compare, branch with branch on count register
819 fbranch-probabilities
820 Common Report Var(flag_branch_probabilities) Optimization
821 Use profiling information for branch probabilities
823 fbranch-target-load-optimize
824 Common Report Var(flag_branch_target_load_optimize) Optimization
825 Perform branch target load optimization before prologue / epilogue threading
827 fbranch-target-load-optimize2
828 Common Report Var(flag_branch_target_load_optimize2) Optimization
829 Perform branch target load optimization after prologue / epilogue threading
832 Common Report Var(flag_btr_bb_exclusive) Optimization
833 Restrict target load migration not to re-use registers in any basic block
836 Common Joined RejectNegative Var(common_deferred_options) Defer
837 -fcall-saved-<register> Mark <register> as being preserved across functions
840 Common Joined RejectNegative Var(common_deferred_options) Defer
841 -fcall-used-<register> Mark <register> as being corrupted by function calls
843 ; Nonzero for -fcaller-saves: allocate values in regs that need to
844 ; be saved across function calls, if that produces overall better code.
845 ; Optional now, so people can test it.
847 Common Report Var(flag_caller_saves) Optimization
848 Save registers around function calls
851 Common Report Var(flag_check_data_deps)
852 Compare the results of several data dependence analyzers.
854 fcombine-stack-adjustments
855 Common Report Var(flag_combine_stack_adjustments) Optimization
856 Looks for opportunities to reduce stack adjustments and stack references.
859 Common Report Var(flag_no_common,0) Optimization
860 Do not put uninitialized globals in the common section
864 ; Converted by the driver to -fcompare-debug= options.
867 Common Driver JoinedOrMissing RejectNegative Var(flag_compare_debug_opt)
868 -fcompare-debug[=<opts>] Compile with and without e.g. -gtoggle, and compare the final-insns dump
870 fcompare-debug-second
871 Common Driver RejectNegative Var(flag_compare_debug)
872 Run only the second compilation of -fcompare-debug
875 Common Report Var(flag_compare_elim_after_reload) Optimization
876 Perform comparison elimination after register allocation has finished
879 Common Var(flag_conserve_stack) Optimization
880 Do not perform optimizations increasing noticeably stack usage
883 Common Report Var(flag_cprop_registers) Optimization
884 Perform a register copy-propagation optimization pass
887 Common Report Var(flag_crossjumping) Optimization
888 Perform cross-jumping optimization
891 Common Report Var(flag_cse_follow_jumps) Optimization
892 When running CSE, follow jumps to their targets
896 Does nothing. Preserved for backward compatibility.
899 Common Report Var(flag_cx_limited_range) Optimization SetByCombined
900 Omit range reduction step when performing complex division
903 Common Report Var(flag_cx_fortran_rules) Optimization
904 Complex multiplication and division follow Fortran rules
907 Common Report Var(flag_data_sections) Optimization
908 Place data items into their own section
911 Common Report Var(common_deferred_options) Defer
912 List all available debugging counters with their limits and counts.
915 Common RejectNegative Joined Var(common_deferred_options) Defer
916 -fdbg-cnt=<counter>:<limit>[,<counter>:<limit>,...] Set the debug counter limit.
919 Common Joined RejectNegative Var(common_deferred_options) Defer
920 Map one directory name to another in debug information
922 ; Nonzero for -fdefer-pop: don't pop args after each function call
923 ; instead save them up to pop many calls' args with one insns.
925 Common Report Var(flag_defer_pop) Optimization
926 Defer popping functions args from stack until later
929 Common Report Var(flag_delayed_branch) Optimization
930 Attempt to fill delay slots of branch instructions
932 fdelete-null-pointer-checks
933 Common Report Var(flag_delete_null_pointer_checks) Init(1) Optimization
934 Delete useless null pointer checks
937 Common Report Var(flag_devirtualize) Optimization
938 Try to convert virtual calls to direct ones.
940 fdiagnostics-show-location=
941 Common Joined RejectNegative Enum(diagnostic_prefixing_rule)
942 -fdiagnostics-show-location=[once|every-line] How often to emit source location at the beginning of line-wrapped diagnostics
944 ; Required for these enum values.
949 Name(diagnostic_prefixing_rule) Type(int)
952 Enum(diagnostic_prefixing_rule) String(once) Value(DIAGNOSTICS_SHOW_PREFIX_ONCE)
955 Enum(diagnostic_prefixing_rule) String(every-line) Value(DIAGNOSTICS_SHOW_PREFIX_EVERY_LINE)
957 fdiagnostics-show-option
958 Common Var(flag_diagnostics_show_option) Init(1)
959 Amend appropriate diagnostic messages with the command line option that controls them
962 Common Joined RejectNegative Var(common_deferred_options) Defer
963 -fdump-<type> Dump various compiler internals to a file
966 Driver RejectNegative
969 Common RejectNegative Joined Var(flag_dump_final_insns)
970 -fdump-final-insns=filename Dump to filename the insns at the end of translation
973 Common RejectNegative Joined Var(flag_dump_go_spec)
974 -fdump-go-spec=filename Write all declarations to file as Go code
977 Common Report Var(flag_dump_noaddr)
978 Suppress output of addresses in debugging dumps
981 Common Report Var(flag_dump_unnumbered)
982 Suppress output of instruction numbers, line number notes and addresses in debugging dumps
984 fdump-unnumbered-links
985 Common Report Var(flag_dump_unnumbered_links)
986 Suppress output of previous and next insn numbers in debugging dumps
989 Common Report Var(flag_dwarf2_cfi_asm) Init(HAVE_GAS_CFI_DIRECTIVE)
990 Enable CFI tables via GAS assembler directives.
993 Common Report Var(flag_early_inlining) Init(1) Optimization
994 Perform early inlining
996 feliminate-dwarf2-dups
997 Common Report Var(flag_eliminate_dwarf2_dups)
998 Perform DWARF2 duplicate elimination
1001 Common Report Var(flag_ipa_sra) Init(0) Optimization
1002 Perform interprocedural reduction of aggregates
1004 feliminate-unused-debug-symbols
1005 Common Report Var(flag_debug_only_used_symbols)
1006 Perform unused type elimination in debug info
1008 feliminate-unused-debug-types
1009 Common Report Var(flag_eliminate_unused_debug_types) Init(1)
1010 Perform unused type elimination in debug info
1012 femit-class-debug-always
1013 Common Report Var(flag_emit_class_debug_always) Init(0)
1014 Do not suppress C++ class debug information.
1017 Common Report Var(flag_enable_icf_debug)
1018 Generate debug information to support Identical Code Folding (ICF)
1021 Common Report Var(flag_exceptions) Optimization
1022 Enable exception handling
1024 fexpensive-optimizations
1025 Common Report Var(flag_expensive_optimizations) Optimization
1026 Perform a number of minor, expensive optimizations
1029 Common Joined RejectNegative Enum(excess_precision) Var(flag_excess_precision_cmdline) Init(EXCESS_PRECISION_DEFAULT)
1030 -fexcess-precision=[fast|standard] Specify handling of excess floating-point precision
1033 Name(excess_precision) Type(enum excess_precision) UnknownError(unknown excess precision style %qs)
1036 Enum(excess_precision) String(fast) Value(EXCESS_PRECISION_FAST)
1039 Enum(excess_precision) String(standard) Value(EXCESS_PRECISION_STANDARD)
1045 Common Report Var(flag_finite_math_only) Optimization SetByCombined
1046 Assume no NaNs or infinities are generated
1049 Common Joined RejectNegative Var(common_deferred_options) Defer
1050 -ffixed-<register> Mark <register> as being unavailable to the compiler
1053 Common Report Var(flag_float_store) Optimization
1054 Don't allocate floats and doubles in extended-precision registers
1058 Does nothing. Preserved for backward compatibility.
1061 Common Report Var(flag_forward_propagate) Optimization
1062 Perform a forward propagation pass on RTL
1065 Common Joined RejectNegative Enum(fp_contract_mode) Var(flag_fp_contract_mode) Init(FP_CONTRACT_FAST)
1066 -ffp-contract=[off|on|fast] Perform floating-point expression contraction.
1069 Name(fp_contract_mode) Type(enum fp_contract_mode) UnknownError(unknown floating point contraction style %qs)
1072 Enum(fp_contract_mode) String(off) Value(FP_CONTRACT_OFF)
1074 ; Not implemented, fall back to conservative FP_CONTRACT_OFF.
1076 Enum(fp_contract_mode) String(on) Value(FP_CONTRACT_OFF)
1079 Enum(fp_contract_mode) String(fast) Value(FP_CONTRACT_FAST)
1081 ; Nonzero means don't put addresses of constant functions in registers.
1082 ; Used for compiling the Unix kernel, where strange substitutions are
1083 ; done on the assembly output.
1085 Common Report Var(flag_no_function_cse,0)
1086 Allow function addresses to be held in registers
1089 Common Report Var(flag_function_sections)
1090 Place each function into its own section
1093 Common Report Var(flag_gcse) Optimization
1094 Perform global common subexpression elimination
1097 Common Report Var(flag_gcse_lm) Init(1) Optimization
1098 Perform enhanced load motion during global common subexpression elimination
1101 Common Report Var(flag_gcse_sm) Init(0) Optimization
1102 Perform store motion after global common subexpression elimination
1105 Common Report Var(flag_gcse_las) Init(0) Optimization
1106 Perform redundant load after store elimination in global common subexpression
1110 Common Report Var(flag_gcse_after_reload) Optimization
1111 Perform global common subexpression elimination after register allocation
1114 ; This option is not documented yet as its semantics will change.
1116 Common Report Var(flag_graphite)
1117 Enable in and out of Graphite representation
1120 Common Report Var(flag_graphite_identity) Optimization
1121 Enable Graphite Identity transformation
1123 floop-parallelize-all
1124 Common Report Var(flag_loop_parallelize_all) Optimization
1125 Mark all loops as parallel
1128 Common Report Var(flag_loop_strip_mine) Optimization
1129 Enable Loop Strip Mining transformation
1132 Common Report Var(flag_loop_interchange) Optimization
1133 Enable Loop Interchange transformation
1136 Common Report Var(flag_loop_block) Optimization
1137 Enable Loop Blocking transformation
1140 Common Report Var(flag_loop_flatten) Optimization
1141 Enable Loop Flattening transformation
1143 fstrict-volatile-bitfields
1144 Common Report Var(flag_strict_volatile_bitfields) Init(-1)
1145 Force bitfield accesses to match their type width
1147 fguess-branch-probability
1148 Common Report Var(flag_guess_branch_prob) Optimization
1149 Enable guessing of branch probabilities
1151 ; Nonzero means ignore `#ident' directives. 0 means handle them.
1152 ; Generate position-independent code for executables if possible
1153 ; On SVR4 targets, it also controls whether or not to emit a
1154 ; string identifying the compiler.
1156 Common Report Var(flag_no_ident,0)
1157 Process #ident directives
1160 Common Report Var(flag_if_conversion) Optimization
1161 Perform conversion of conditional jumps to branchless equivalents
1164 Common Report Var(flag_if_conversion2) Optimization
1165 Perform conversion of conditional jumps to conditional execution
1167 ftree-loop-if-convert
1168 Common Report Var(flag_tree_loop_if_convert) Init(-1) Optimization
1169 Convert conditional jumps in innermost loops to branchless equivalents
1171 ftree-loop-if-convert-stores
1172 Common Report Var(flag_tree_loop_if_convert_stores) Optimization
1173 Also if-convert conditional jumps containing memory writes
1175 ; -finhibit-size-directive inhibits output of .size for ELF.
1176 ; This is used only for compiling crtstuff.c,
1177 ; and it may be extended to other effects
1178 ; needed for crtstuff.c on other systems.
1179 finhibit-size-directive
1180 Common Report Var(flag_inhibit_size_directive)
1181 Do not generate .size directives
1184 Common Report Var(flag_indirect_inlining)
1185 Perform indirect inlining
1187 ; Nonzero means that functions declared `inline' will be treated
1188 ; as `static'. Prevents generation of zillions of copies of unused
1189 ; static inline functions; instead, `inlines' are written out
1190 ; only when actually used. Used in conjunction with -g. Also
1191 ; does the right thing with #pragma interface.
1193 Common Report Var(flag_no_inline,0) Init(0)
1194 Pay attention to the \"inline\" keyword
1196 finline-small-functions
1197 Common Report Var(flag_inline_small_functions) Optimization
1198 Integrate simple functions into their callers when code size is known to not growth
1201 Common Report Var(flag_inline_functions) Optimization
1202 Integrate simple functions into their callers
1204 finline-functions-called-once
1205 Common Report Var(flag_inline_functions_called_once) Init(1) Optimization
1206 Integrate functions called once into their callers
1209 Common RejectNegative Joined Alias(finline-limit=)
1212 Common RejectNegative Joined UInteger
1213 -finline-limit=<number> Limit the size of inlined functions to <number>
1215 finstrument-functions
1216 Common Report Var(flag_instrument_function_entry_exit)
1217 Instrument function entry and exit with profiling calls
1219 finstrument-functions-exclude-function-list=
1220 Common RejectNegative Joined
1221 -finstrument-functions-exclude-function-list=name,... Do not instrument listed functions
1223 finstrument-functions-exclude-file-list=
1224 Common RejectNegative Joined
1225 -finstrument-functions-exclude-file-list=filename,... Do not instrument functions listed in files
1228 Common Report Var(flag_ipa_cp) Optimization
1229 Perform Interprocedural constant propagation
1232 Common Report Var(flag_ipa_cp_clone) Optimization
1233 Perform cloning to make Interprocedural constant propagation stronger
1236 Common Report Var(flag_ipa_profile) Init(0) Optimization
1237 Perform interprocedural profile propagation
1240 Common Report Var(flag_ipa_pta) Init(0) Optimization
1241 Perform interprocedural points-to analysis
1244 Common Report Var(flag_ipa_pure_const) Init(0) Optimization
1245 Discover pure and const functions
1248 Common Report Var(flag_ipa_reference) Init(0) Optimization
1249 Discover readonly and non addressable static variables
1252 Common Report Var(flag_ipa_matrix_reorg) Optimization
1253 Perform matrix layout flattening and transposing based
1254 on profiling information.
1257 Common Report Var(flag_ipa_struct_reorg)
1258 Perform structure layout optimizations based
1259 on profiling information.
1262 Common Joined RejectNegative Enum(ira_algorithm) Var(flag_ira_algorithm) Init(IRA_ALGORITHM_CB)
1263 -fira-algorithm=[CB|priority] Set the used IRA algorithm
1266 Name(ira_algorithm) Type(enum ira_algorithm) UnknownError(unknown IRA algorithm %qs)
1269 Enum(ira_algorithm) String(CB) Value(IRA_ALGORITHM_CB)
1272 Enum(ira_algorithm) String(priority) Value(IRA_ALGORITHM_PRIORITY)
1275 Common Joined RejectNegative Enum(ira_region) Var(flag_ira_region) Init(IRA_REGION_MIXED)
1276 -fira-region=[one|all|mixed] Set regions for IRA
1279 Name(ira_region) Type(enum ira_region) UnknownError(unknown IRA region %qs)
1282 Enum(ira_region) String(one) Value(IRA_REGION_ONE)
1285 Enum(ira_region) String(all) Value(IRA_REGION_ALL)
1288 Enum(ira_region) String(mixed) Value(IRA_REGION_MIXED)
1291 Common Report Var(flag_ira_loop_pressure)
1292 Use IRA based register pressure calculation
1293 in RTL loop optimizations.
1295 fira-share-save-slots
1296 Common Report Var(flag_ira_share_save_slots) Init(1)
1297 Share slots for saving different hard registers.
1299 fira-share-spill-slots
1300 Common Report Var(flag_ira_share_spill_slots) Init(1)
1301 Share stack slots for spilled pseudo-registers.
1304 Common RejectNegative Joined UInteger Var(flag_ira_verbose) Init(5)
1305 -fira-verbose=<number> Control IRA's level of diagnostic messages.
1308 Common Report Var(flag_ivopts) Init(1) Optimization
1309 Optimize induction variables on trees
1312 Common Var(flag_jump_tables) Init(1) Optimization
1313 Use jump tables for sufficiently large switch statements
1315 fkeep-inline-functions
1316 Common Report Var(flag_keep_inline_functions)
1317 Generate code for functions even if they are fully inlined
1320 Common Report Var(flag_keep_static_consts) Init(1)
1321 Emit static const variables even if they are not used
1324 Common Report Var(flag_leading_underscore) Init(-1)
1325 Give external symbols a leading underscore
1329 Does nothing. Preserved for backward compatibility.
1333 Enable link-time optimization.
1336 Common RejectNegative Joined Var(flag_lto)
1337 Link-time optimization with number of parallel jobs or jobserver.
1340 Common Var(flag_lto_partition_1to1)
1341 Partition functions and vars at linktime based on object files they originate from
1343 flto-partition=balanced
1344 Common Var(flag_lto_partition_balanced)
1345 Partition functions and vars at linktime into approximately same sized buckets
1348 Common Var(flag_lto_partition_none)
1349 Disable partioning and streaming
1351 ; The initial value of -1 comes from Z_DEFAULT_COMPRESSION in zlib.h.
1352 flto-compression-level=
1353 Common Joined RejectNegative UInteger Var(flag_lto_compression_level) Init(-1)
1354 -flto-compression-level=<number> Use zlib compression level <number> for IL
1357 Common Report Var(flag_lto_report) Init(0) Optimization
1358 Report various link-time optimization statistics
1361 Common Report Var(flag_errno_math) Init(1) Optimization SetByCombined
1362 Set errno after built-in math functions
1365 Common Joined RejectNegative UInteger Var(flag_max_errors)
1366 -fmax-errors=<number> Maximum number of errors to report
1369 Common Report Var(mem_report)
1370 Report on permanent memory allocation
1372 ; This will attempt to merge constant section constants, if 1 only
1373 ; string constants and constants from constant pool, if 2 also constant
1375 fmerge-all-constants
1376 Common Report Var(flag_merge_constants,2) Init(1) Optimization
1377 Attempt to merge identical constants and constant variables
1380 Common Report Var(flag_merge_constants,1) Optimization
1381 Attempt to merge identical constants across compilation units
1383 fmerge-debug-strings
1384 Common Report Var(flag_merge_debug_strings) Init(1)
1385 Attempt to merge identical debug strings across compilation units
1388 Common RejectNegative Joined UInteger
1389 -fmessage-length=<number> Limit diagnostics to <number> characters per line. 0 suppresses line-wrapping
1392 Common Report Var(flag_modulo_sched) Optimization
1393 Perform SMS based modulo scheduling before the first scheduling pass
1395 fmodulo-sched-allow-regmoves
1396 Common Report Var(flag_modulo_sched_allow_regmoves)
1397 Perform SMS based modulo scheduling with register moves allowed
1399 fmove-loop-invariants
1400 Common Report Var(flag_move_loop_invariants) Init(1) Optimization
1401 Move loop invariant computations out of loops
1404 Common RejectNegative Report Var(flag_mudflap)
1405 Add mudflap bounds-checking instrumentation for single-threaded program
1408 Common RejectNegative Report Var(flag_mudflap,2)
1409 Add mudflap bounds-checking instrumentation for multi-threaded program
1412 Common RejectNegative Report Var(flag_mudflap_ignore_reads)
1413 Ignore read operations when inserting mudflap instrumentation
1416 Common Var(flag_dce) Init(1) Optimization
1417 Use the RTL dead code elimination pass
1420 Common Var(flag_dse) Init(1) Optimization
1421 Use the RTL dead store elimination pass
1423 freschedule-modulo-scheduled-loops
1424 Common Report Var(flag_resched_modulo_sched) Optimization
1425 Enable/Disable the traditional scheduling in loops that already passed modulo scheduling
1427 fnon-call-exceptions
1428 Common Report Var(flag_non_call_exceptions) Optimization
1429 Support synchronous non-call exceptions
1432 Common Report Var(flag_omit_frame_pointer) Optimization
1433 When possible do not generate stack frames
1435 foptimize-register-move
1436 Common Report Var(flag_regmove) Optimization
1437 Do the full register move optimization pass
1439 foptimize-sibling-calls
1440 Common Report Var(flag_optimize_sibling_calls) Optimization
1441 Optimize sibling and tail recursive calls
1444 Common Report Var(flag_partial_inlining)
1445 Perform partial inlining
1448 Common Report Var(pre_ipa_mem_report)
1449 Report on memory allocation before interprocedural optimization
1451 fpost-ipa-mem-report
1452 Common Report Var(post_ipa_mem_report)
1453 Report on memory allocation before interprocedural optimization
1456 Common Report Var(flag_pack_struct) Optimization
1457 Pack structure members together without holes
1460 Common RejectNegative Joined UInteger Optimization
1461 -fpack-struct=<number> Set initial maximum structure member alignment
1464 Common Report Var(flag_pcc_struct_return,1) Init(DEFAULT_PCC_STRUCT_RETURN)
1465 Return small aggregates in memory, not registers
1468 Common Report Var(flag_peel_loops) Optimization
1469 Perform loop peeling
1472 Common Report Var(flag_no_peephole,0) Optimization
1473 Enable machine specific peephole optimizations
1476 Common Report Var(flag_peephole2) Optimization
1477 Enable an RTL peephole pass before sched2
1480 Common Report Var(flag_pic,2)
1481 Generate position-independent code if possible (large mode)
1484 Common Report Var(flag_pie,2)
1485 Generate position-independent code for executables if possible (large mode)
1488 Common Report Var(flag_pic,1)
1489 Generate position-independent code if possible (small mode)
1492 Common Report Var(flag_pie,1)
1493 Generate position-independent code for executables if possible (small mode)
1496 Common Joined RejectNegative Var(common_deferred_options) Defer
1497 Specify a plugin to load
1500 Common Joined RejectNegative Var(common_deferred_options) Defer
1501 -fplugin-arg-<name>-<key>[=<value>] Specify argument <key>=<value> for plugin <name>
1503 fpredictive-commoning
1504 Common Report Var(flag_predictive_commoning) Optimization
1505 Run predictive commoning optimization.
1507 fprefetch-loop-arrays
1508 Common Report Var(flag_prefetch_loop_arrays) Init(-1) Optimization
1509 Generate prefetch instructions, if available, for arrays in loops
1512 Common Report Var(profile_flag)
1513 Enable basic program profiling code
1516 Common Report Var(profile_arc_flag)
1517 Insert arc-based program profiling code
1520 Common Joined RejectNegative Var(profile_data_prefix)
1521 Set the top-level directory for storing the profile data.
1522 The default is 'pwd'.
1525 Common Report Var(flag_profile_correction)
1526 Enable correction of flow inconsistent profile data input
1530 Enable common options for generating profile info for profile feedback directed optimizations
1533 Common Joined RejectNegative
1534 Enable common options for generating profile info for profile feedback directed optimizations, and set -fprofile-dir=
1537 Common Var(flag_profile_use)
1538 Enable common options for performing profile feedback directed optimizations
1541 Common Joined RejectNegative
1542 Enable common options for performing profile feedback directed optimizations, and set -fprofile-dir=
1545 Common Report Var(flag_profile_values)
1546 Insert code to profile values of expressions
1549 Common Var(common_deferred_options) Defer
1552 Common Joined RejectNegative Var(common_deferred_options) Defer
1553 -frandom-seed=<string> Make compile reproducible using <string>
1555 ; This switch causes the command line that was used to create an
1556 ; object file to be recorded into the object file. The exact format
1557 ; of this recording is target and binary file format dependent.
1558 ; It is related to the -fverbose-asm switch, but that switch only
1559 ; records information in the assembler output file as comments, so
1560 ; they never reach the object file.
1561 frecord-gcc-switches
1562 Common Report Var(flag_record_gcc_switches)
1563 Record gcc command line switches in the object file.
1566 Common Report Var(flag_pcc_struct_return,0) Optimization
1567 Return small aggregates in registers
1570 Common Report Var(flag_regmove) Optimization
1571 Enables a register move optimization
1574 Common Report Var(flag_rename_registers) Init(2) Optimization
1575 Perform a register renaming optimization pass
1578 Common Report Var(flag_reorder_blocks) Optimization
1579 Reorder basic blocks to improve code placement
1581 freorder-blocks-and-partition
1582 Common Report Var(flag_reorder_blocks_and_partition) Optimization
1583 Reorder basic blocks and partition into hot and cold sections
1586 Common Report Var(flag_reorder_functions) Optimization
1587 Reorder functions to improve code placement
1589 frerun-cse-after-loop
1590 Common Report Var(flag_rerun_cse_after_loop) Optimization
1591 Add a common subexpression elimination pass after loop optimizations
1595 Does nothing. Preserved for backward compatibility.
1598 Common Report Var(flag_rounding_math) Optimization SetByCombined
1599 Disable optimizations that assume default FP rounding behavior
1602 Common Report Var(flag_schedule_interblock) Init(1) Optimization
1603 Enable scheduling across basic blocks
1606 Common Report Var(flag_sched_pressure) Init(0) Optimization
1607 Enable register pressure sensitive insn scheduling
1610 Common Report Var(flag_schedule_speculative) Init(1) Optimization
1611 Allow speculative motion of non-loads
1614 Common Report Var(flag_schedule_speculative_load) Optimization
1615 Allow speculative motion of some loads
1617 fsched-spec-load-dangerous
1618 Common Report Var(flag_schedule_speculative_load_dangerous) Optimization
1619 Allow speculative motion of more loads
1622 Common RejectNegative Joined UInteger Var(sched_verbose_param)
1623 -fsched-verbose=<number> Set the verbosity level of the scheduler
1625 fsched2-use-superblocks
1626 Common Report Var(flag_sched2_use_superblocks) Optimization
1627 If scheduling post reload, do superblock scheduling
1631 Does nothing. Preserved for backward compatibility.
1634 Common Report Var(flag_schedule_insns) Optimization
1635 Reschedule instructions before register allocation
1638 Common Report Var(flag_schedule_insns_after_reload) Optimization
1639 Reschedule instructions after register allocation
1641 ; This flag should be on when a target implements non-trivial
1642 ; scheduling hooks, maybe saving some information for its own sake.
1643 ; On IA64, for example, this is used for correct bundling.
1644 fselective-scheduling
1645 Common Report Var(flag_selective_scheduling) Optimization
1646 Schedule instructions using selective scheduling algorithm
1648 fselective-scheduling2
1649 Common Report Var(flag_selective_scheduling2) Optimization
1650 Run selective scheduling after reload
1652 fsel-sched-pipelining
1653 Common Report Var(flag_sel_sched_pipelining) Init(0) Optimization
1654 Perform software pipelining of inner loops during selective scheduling
1656 fsel-sched-pipelining-outer-loops
1657 Common Report Var(flag_sel_sched_pipelining_outer_loops) Init(0) Optimization
1658 Perform software pipelining of outer loops during selective scheduling
1660 fsel-sched-reschedule-pipelined
1661 Common Report Var(flag_sel_sched_reschedule_pipelined) Init(0) Optimization
1662 Reschedule pipelined regions without pipelining
1664 ; sched_stalled_insns means that insns can be moved prematurely from the queue
1665 ; of stalled insns into the ready list.
1666 fsched-stalled-insns
1667 Common Report Var(flag_sched_stalled_insns) Optimization UInteger
1668 Allow premature scheduling of queued insns
1670 fsched-stalled-insns=
1671 Common RejectNegative Joined UInteger
1672 -fsched-stalled-insns=<number> Set number of queued insns that can be prematurely scheduled
1674 ; sched_stalled_insns_dep controls how many recently scheduled cycles will
1675 ; be examined for a dependency on a stalled insn that is candidate for
1676 ; premature removal from the queue of stalled insns into the ready list (has
1677 ; an effect only if the flag 'sched_stalled_insns' is set).
1678 fsched-stalled-insns-dep
1679 Common Report Var(flag_sched_stalled_insns_dep,1) Init(1) Optimization UInteger
1680 Set dependence distance checking in premature scheduling of queued insns
1682 fsched-stalled-insns-dep=
1683 Common RejectNegative Joined UInteger
1684 -fsched-stalled-insns-dep=<number> Set dependence distance checking in premature scheduling of queued insns
1686 fsched-group-heuristic
1687 Common Report Var(flag_sched_group_heuristic) Init(1) Optimization
1688 Enable the group heuristic in the scheduler
1690 fsched-critical-path-heuristic
1691 Common Report Var(flag_sched_critical_path_heuristic) Init(1) Optimization
1692 Enable the critical path heuristic in the scheduler
1694 fsched-spec-insn-heuristic
1695 Common Report Var(flag_sched_spec_insn_heuristic) Init(1) Optimization
1696 Enable the speculative instruction heuristic in the scheduler
1698 fsched-rank-heuristic
1699 Common Report Var(flag_sched_rank_heuristic) Init(1) Optimization
1700 Enable the rank heuristic in the scheduler
1702 fsched-last-insn-heuristic
1703 Common Report Var(flag_sched_last_insn_heuristic) Init(1) Optimization
1704 Enable the last instruction heuristic in the scheduler
1706 fsched-dep-count-heuristic
1707 Common Report Var(flag_sched_dep_count_heuristic) Init(1) Optimization
1708 Enable the dependent count heuristic in the scheduler
1711 Common Report Var(flag_section_anchors) Optimization
1712 Access data in the same section from shared anchor points
1716 Does nothing. Preserved for backward compatibility.
1719 Common Report Var(flag_zee) Init(0)
1720 Eliminate redundant zero extensions on targets that support implicit extensions.
1723 Common Report Var(flag_show_column) Init(1)
1724 Show column numbers in diagnostics, when available. Default on
1727 Common Report Var(flag_signaling_nans) Optimization SetByCombined
1728 Disable optimizations observable by IEEE signaling NaNs
1731 Common Report Var(flag_signed_zeros) Init(1) Optimization SetByCombined
1732 Disable floating point optimizations that ignore the IEEE signedness of zero
1734 fsingle-precision-constant
1735 Common Report Var(flag_single_precision_constant) Optimization
1736 Convert floating point constants to single precision constants
1738 fsplit-ivs-in-unroller
1739 Common Report Var(flag_split_ivs_in_unroller) Init(1) Optimization
1740 Split lifetimes of induction variables when loops are unrolled
1743 Common Report Var(flag_split_stack) Init(-1)
1744 Generate discontiguous stack frames
1747 Common Report Var(flag_split_wide_types) Optimization
1748 Split wide types into independent registers
1750 fvariable-expansion-in-unroller
1751 Common Report Var(flag_variable_expansion_in_unroller) Optimization
1752 Apply variable expansion when loops are unrolled
1755 Common Report RejectNegative Joined
1756 -fstack-check=[no|generic|specific] Insert stack checking code into the program
1759 Common Alias(fstack-check=, specific, no)
1760 Insert stack checking code into the program. Same as -fstack-check=specific
1763 Common Var(common_deferred_options) Defer
1765 fstack-limit-register=
1766 Common RejectNegative Joined Var(common_deferred_options) Defer
1767 -fstack-limit-register=<register> Trap if the stack goes past <register>
1769 fstack-limit-symbol=
1770 Common RejectNegative Joined Var(common_deferred_options) Defer
1771 -fstack-limit-symbol=<name> Trap if the stack goes past symbol <name>
1774 Common Report Var(flag_stack_protect, 1)
1775 Use propolice as a stack protection method
1777 fstack-protector-all
1778 Common Report RejectNegative Var(flag_stack_protect, 2)
1779 Use a stack protection method for every function
1782 Common RejectNegative Var(flag_stack_usage)
1783 Output stack usage information on a per-function basis
1787 Does nothing. Preserved for backward compatibility.
1789 ; Nonzero if we should do (language-dependent) alias analysis.
1790 ; Typically, this analysis will assume that expressions of certain
1791 ; types do not alias expressions of certain other types. Only used
1792 ; if alias analysis (in general) is enabled.
1794 Common Report Var(flag_strict_aliasing) Optimization
1795 Assume strict aliasing rules apply
1798 Common Report Var(flag_strict_overflow)
1799 Treat signed overflow as undefined
1802 Common Report Var(flag_syntax_only)
1803 Check for syntax errors, then stop
1806 Common Report Var(flag_test_coverage)
1807 Create data files needed by \"gcov\"
1810 Common Report Var(flag_thread_jumps) Optimization
1811 Perform jump threading optimizations
1814 Common Report Var(time_report)
1815 Report the time taken by each compiler pass
1818 Common Joined RejectNegative Enum(tls_model) Var(flag_tls_default) Init(TLS_MODEL_GLOBAL_DYNAMIC)
1819 -ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec] Set the default thread-local storage code generation model
1822 Name(tls_model) Type(enum tls_model) UnknownError(unknown TLS model %qs)
1825 Enum(tls_model) String(global-dynamic) Value(TLS_MODEL_GLOBAL_DYNAMIC)
1828 Enum(tls_model) String(local-dynamic) Value(TLS_MODEL_LOCAL_DYNAMIC)
1831 Enum(tls_model) String(initial-exec) Value(TLS_MODEL_INITIAL_EXEC)
1834 Enum(tls_model) String(local-exec) Value(TLS_MODEL_LOCAL_EXEC)
1837 Common Report Var(flag_toplevel_reorder) Init(2) Optimization
1838 Reorder top level functions, variables, and asms
1841 Common Report Var(flag_tracer)
1842 Perform superblock formation via tail duplication
1844 ; Zero means that floating-point math operations cannot generate a
1845 ; (user-visible) trap. This is the case, for example, in nonstop
1846 ; IEEE 754 arithmetic.
1848 Common Report Var(flag_trapping_math) Init(1) Optimization SetByCombined
1849 Assume floating-point operations can trap
1852 Common Report Var(flag_trapv) Optimization
1853 Trap for signed overflow in addition, subtraction and multiplication
1856 Common Report Var(flag_tree_ccp) Optimization
1857 Enable SSA-CCP optimization on trees
1860 Common Report Var(flag_tree_bit_ccp) Optimization
1861 Enable SSA-BIT-CCP optimization on trees
1865 Does nothing. Preserved for backward compatibility.
1868 Common Report Var(flag_tree_ch) Optimization
1869 Enable loop header copying on trees
1872 Common Report Var(flag_tree_copyrename) Optimization
1873 Replace SSA temporaries with better names in copies
1876 Common Report Var(flag_tree_copy_prop) Optimization
1877 Enable copy propagation on trees
1879 ftree-store-copy-prop
1881 Does nothing. Preserved for backward compatibility.
1884 Common Report Var(flag_tree_cselim) Init(2) Optimization
1885 Transform condition stores into unconditional ones
1887 ftree-switch-conversion
1888 Common Report Var(flag_tree_switch_conversion) Optimization
1889 Perform conversions of switch initializations.
1892 Common Report Var(flag_tree_dce) Optimization
1893 Enable SSA dead code elimination optimization on trees
1895 ftree-dominator-opts
1896 Common Report Var(flag_tree_dom) Optimization
1897 Enable dominator optimizations
1900 Common Report Var(flag_tree_dse) Optimization
1901 Enable dead store elimination
1904 Common Report Var(flag_tree_forwprop) Init(1) Optimization
1905 Enable forward propagation on trees
1908 Common Report Var(flag_tree_fre) Optimization
1909 Enable Full Redundancy Elimination (FRE) on trees
1911 ftree-loop-distribution
1912 Common Report Var(flag_tree_loop_distribution) Optimization
1913 Enable loop distribution on trees
1915 ftree-loop-distribute-patterns
1916 Common Report Var(flag_tree_loop_distribute_patterns) Optimization
1917 Enable loop distribution for patterns transformed into a library call
1920 Common Report Var(flag_tree_loop_im) Init(1) Optimization
1921 Enable loop invariant motion on trees
1924 Common Alias(floop-interchange)
1925 Enable loop interchange transforms. Same as -floop-interchange
1928 Common Report Var(flag_tree_loop_ivcanon) Init(1) Optimization
1929 Create canonical induction variables in loops
1932 Common Report Var(flag_tree_loop_optimize) Init(1) Optimization
1933 Enable loop optimizations on tree level
1935 ftree-parallelize-loops=
1936 Common Report Joined RejectNegative UInteger Var(flag_tree_parallelize_loops) Init(1)
1937 Enable automatic parallelization of loops
1940 Common Report Var(flag_tree_phiprop) Init(1) Optimization
1941 Enable hoisting loads from conditional pointers.
1944 Common Report Var(flag_tree_pre) Optimization
1945 Enable SSA-PRE optimization on trees
1948 Common Report Var(flag_tree_pta) Init(1) Optimization
1949 Perform function-local points-to analysis on trees.
1952 Common Report Var(flag_tree_reassoc) Init(1) Optimization
1953 Enable reassociation on tree level
1957 Does nothing. Preserved for backward compatibility.
1960 Common Report Var(flag_tree_sink) Optimization
1961 Enable SSA code sinking on trees
1964 Common Report Var(flag_tree_sra) Optimization
1965 Perform scalar replacement of aggregates
1968 Common Report Var(flag_tree_ter) Optimization
1969 Replace temporary expressions in the SSA->normal pass
1972 Common Report Var(flag_tree_live_range_split) Optimization
1973 Perform live range splitting during the SSA->normal pass
1976 Common Report Var(flag_tree_vrp) Init(0) Optimization
1977 Perform Value Range Propagation on trees
1980 Common Report Var(flag_unit_at_a_time) Init(1) Optimization
1981 Compile whole compilation unit at a time
1984 Common Report Var(flag_unroll_loops) Optimization
1985 Perform loop unrolling when iteration count is known
1988 Common Report Var(flag_unroll_all_loops) Optimization
1989 Perform loop unrolling for all loops
1991 ; Nonzero means that loop optimizer may assume that the induction variables
1992 ; that control loops do not overflow and that the loops with nontrivial
1993 ; exit condition are not infinite
1994 funsafe-loop-optimizations
1995 Common Report Var(flag_unsafe_loop_optimizations) Optimization
1996 Allow loop optimizations to assume that the loops behave in normal way
1999 Common Report Var(flag_associative_math) SetByCombined
2000 Allow optimization for floating-point arithmetic which may change the
2001 result of the operation due to rounding.
2004 Common Report Var(flag_reciprocal_math) SetByCombined
2005 Same as -fassociative-math for expressions which include division.
2007 ; Nonzero means that unsafe floating-point math optimizations are allowed
2008 ; for the sake of speed. IEEE compliance is not guaranteed, and operations
2009 ; are allowed to assume that their arguments and results are "normal"
2010 ; (e.g., nonnegative for SQRT).
2011 funsafe-math-optimizations
2012 Common Report Var(flag_unsafe_math_optimizations) Optimization SetByCombined
2013 Allow math optimizations that may violate IEEE or ISO standards
2016 Common Report Var(flag_unswitch_loops) Optimization
2017 Perform loop unswitching
2020 Common Report Var(flag_unwind_tables) Optimization
2021 Just generate unwind tables for exception handling
2026 ; Positive if we should track variables, negative if we should run
2027 ; the var-tracking pass only to discard debug annotations, zero if
2028 ; we're not to run it. When flag_var_tracking == 2 (AUTODETECT_VALUE) it
2029 ; will be set according to optimize, debug_info_level and debug_hooks
2030 ; in process_options ().
2032 Common Report Var(flag_var_tracking) Init(2) Optimization
2033 Perform variable tracking
2035 ; Positive if we should track variables at assignments, negative if
2036 ; we should run the var-tracking pass only to discard debug
2037 ; annotations. When flag_var_tracking_assignments ==
2038 ; AUTODETECT_VALUE it will be set according to flag_var_tracking.
2039 fvar-tracking-assignments
2040 Common Report Var(flag_var_tracking_assignments) Init(2) Optimization
2041 Perform variable tracking by annotating assignments
2043 ; Nonzero if we should toggle flag_var_tracking_assignments after
2044 ; processing options and computing its default. */
2045 fvar-tracking-assignments-toggle
2046 Common Report Var(flag_var_tracking_assignments_toggle) Optimization
2047 Toggle -fvar-tracking-assignments
2049 fvar-tracking-uninit
2050 Common Report Var(flag_var_tracking_uninit) Optimization
2051 Perform variable tracking and also tag variables that are uninitialized
2054 Common Report Var(flag_tree_vectorize) Optimization
2055 Enable loop vectorization on trees
2058 Common Report Var(flag_tree_slp_vectorize) Init(2) Optimization
2059 Enable basic block vectorization (SLP) on trees
2062 Common Report Var(flag_vect_cost_model) Optimization
2063 Enable use of cost model in vectorization
2065 ftree-vect-loop-version
2066 Common Report Var(flag_tree_vect_loop_version) Init(1) Optimization
2067 Enable loop versioning when doing loop vectorization on trees
2069 ftree-vectorizer-verbose=
2070 Common RejectNegative Joined UInteger
2071 -ftree-vectorizer-verbose=<number> Set the verbosity level of the vectorizer
2074 Common Report Var(flag_tree_scev_cprop) Init(1) Optimization
2075 Enable copy propagation of scalar-evolution information.
2077 ; -fverbose-asm causes extra commentary information to be produced in
2078 ; the generated assembly code (to make it more readable). This option
2079 ; is generally only of use to those who actually need to read the
2080 ; generated assembly code (perhaps while debugging the compiler itself).
2081 ; -fno-verbose-asm, the default, causes the extra information
2082 ; to not be added and is useful when comparing two assembler files.
2084 Common Report Var(flag_verbose_asm)
2085 Add extra commentary to assembler output
2088 Common Joined RejectNegative Enum(symbol_visibility) Var(default_visibility) Init(VISIBILITY_DEFAULT)
2089 -fvisibility=[default|internal|hidden|protected] Set the default symbol visibility
2092 Name(symbol_visibility) Type(enum symbol_visibility) UnknownError(unrecognized visibility value %qs)
2095 Enum(symbol_visibility) String(default) Value(VISIBILITY_DEFAULT)
2098 Enum(symbol_visibility) String(internal) Value(VISIBILITY_INTERNAL)
2101 Enum(symbol_visibility) String(hidden) Value(VISIBILITY_HIDDEN)
2104 Enum(symbol_visibility) String(protected) Value(VISIBILITY_PROTECTED)
2107 Common Report Var(flag_value_profile_transformations) Optimization
2108 Use expression value profiles in optimizations
2111 Common Report Var(flag_web) Init(2) Optimization
2112 Construct webs and split unrelated uses of single variable
2114 ftree-builtin-call-dce
2115 Common Report Var(flag_tree_builtin_call_dce) Init(0) Optimization
2116 Enable conditional dead code elimination for builtin calls
2119 Common Report Var(flag_whole_program) Init(0) Optimization
2120 Perform whole program optimizations
2123 Common Report Var(flag_wrapv) Optimization
2124 Assume signed arithmetic overflow wraps around
2126 fzero-initialized-in-bss
2127 Common Report Var(flag_zero_initialized_in_bss) Init(1)
2128 Put zero initialized data in the bss section
2131 Common JoinedOrMissing
2132 Generate debug information in default format
2135 Common JoinedOrMissing Negative(gdwarf-)
2136 Generate debug information in COFF format
2139 Common Joined UInteger Var(dwarf_version) Init(2) Negative(gstabs)
2140 Generate debug information in DWARF v2 (or later) format
2143 Common JoinedOrMissing
2144 Generate debug information in default extended format
2147 Common JoinedOrMissing Negative(gstabs+)
2148 Generate debug information in STABS format
2151 Common JoinedOrMissing Negative(gvms)
2152 Generate debug information in extended STABS format
2155 Common RejectNegative Var(dwarf_strict,0) Init(-1)
2156 Emit DWARF additions beyond selected version
2159 Common Report RejectNegative Var(dwarf_strict,1)
2160 Don't emit DWARF additions beyond selected version
2163 Common Report Var(flag_gtoggle)
2164 Toggle debug information generation
2167 Common JoinedOrMissing Negative(gxcoff)
2168 Generate debug information in VMS format
2171 Common JoinedOrMissing Negative(gxcoff+)
2172 Generate debug information in XCOFF format
2175 Common JoinedOrMissing Negative(gcoff)
2176 Generate debug information in extended XCOFF format
2179 Driver Joined Separate
2182 Common Joined Var(plugindir_string) Init(0)
2183 -iplugindir=<dir> Set <dir> to be the default plugin directory
2186 Driver Joined Separate
2191 no-canonical-prefixes
2204 Common Driver Joined Separate Var(asm_file_name) MissingArgError(missing filename after %qs)
2205 -o <file> Place output into <file>
2208 Common Var(profile_flag)
2209 Enable function profiling
2212 Driver Var(pass_exit_codes)
2215 Common Var(pedantic)
2216 Issue warnings needed for strict compliance to the standard
2219 Common Var(flag_pedantic_errors)
2220 Like -pedantic but issue them as errors
2226 Driver Var(use_pipes)
2229 Driver JoinedOrMissing Var(print_file_name)
2231 print-libgcc-file-name
2234 print-multi-directory
2235 Driver Var(print_multi_directory)
2238 Driver Var(print_multi_lib)
2240 print-multi-os-directory
2241 Driver Var(print_multi_os_directory)
2244 Driver JoinedOrMissing Var(print_prog_name)
2247 Driver Var(print_search_dirs)
2250 Driver Var(print_sysroot)
2252 print-sysroot-headers-suffix
2253 Driver Var(print_sysroot_headers_suffix)
2256 Common Var(quiet_flag) RejectDriver
2257 Do not display functions compiled or elapsed time
2275 Driver Var(report_times)
2278 Driver JoinedOrMissing
2281 Driver Joined Separate
2285 ; C option, but driver must not handle as "-u ndef".
2288 Common Driver Var(verbose_flag)
2289 Enable verbose output
2292 Common Var(version_flag) RejectDriver
2293 Display the compiler's version
2296 Common Var(inhibit_warnings)
2300 Driver Separate Var(wrapper_string)
2303 Driver Joined Separate
2306 Common RejectNegative Negative(pie)
2307 Create a shared library
2313 Driver Separate Alias(specs=)
2326 ; Documented for Fortran, but always accepted by driver.
2333 ; Documented for Go, but always accepted by driver.
2339 Common RejectNegative Negative(shared)
2340 Create a position independent executable
2343 Driver Joined Separate
2345 ; This comment is to ensure we retain the blank line above.