1 ; Options for the language- and target-independent parts of the compiler.
3 ; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009
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.
28 Display this information
32 --help=<class> Display descriptions of a specific class of options. <class> is one or more of optimizers, target, warnings, undocumented, params
36 Alias for --help=target
38 ;; The following four entries are to work around the gcc driver
39 ;; program's insatiable desire to turn options starting with a
40 ;; double dash (--) into options starting with a dash f (-f).
55 --param <param>=<value> Set parameter <param> to value. See below for a complete list of parameters
61 Common Joined Separate UInteger
62 -G<number> Put global and static data smaller than <number> bytes into a special section (on some targets)
65 Common JoinedOrMissing Optimization
66 -O<number> Set optimization level to <number>
70 Optimize for space rather than speed
73 Common RejectNegative Var(extra_warnings) Warning
74 This switch is deprecated; use -Wextra instead
77 Common Var(warn_aggregate_return) Warning
78 Warn about returning structures, unions or arrays
81 Common Var(warn_array_bounds) Warning
82 Warn if an array is accessed out of bounds
85 Common Var(warn_attributes) Init(1) Warning
86 Warn about inappropriate attribute usage
89 Common Var(warn_cast_align) Warning
90 Warn about pointer casts which increase alignment
92 Wdeprecated-declarations
93 Common Var(warn_deprecated_decl) Init(1) Warning
94 Warn about uses of __attribute__((deprecated)) declarations
96 Wdisabled-optimization
97 Common Var(warn_disabled_optimization) Warning
98 Warn when an optimization pass is disabled
101 Common Var(warnings_are_errors)
102 Treat all warnings as errors
106 Treat specified warning as error
109 Common Var(extra_warnings) Warning
110 Print extra (possibly unwanted) warnings
113 Common Var(flag_fatal_errors)
114 Exit on the first error occurred
117 Common RejectNegative Joined UInteger
118 -Wframe-larger-than=<number> Warn if a function's stack frame requires more than <number> bytes
121 Common Var(warn_inline) Warning
122 Warn when an inlined function cannot be inlined
125 Common RejectNegative Joined UInteger Warning
128 Common RejectNegative Joined UInteger Warning
129 -Wlarger-than=<number> Warn if an object is larger than <number> bytes
131 Wunsafe-loop-optimizations
132 Common Var(warn_unsafe_loop_optimizations) Warning
133 Warn if the loop cannot be optimized due to nontrivial assumptions.
136 Common Var(warn_missing_noreturn) Warning
137 Warn about functions which might be candidates for __attribute__((noreturn))
140 Common Var(warn_mudflap) Init(1) Warning
141 Warn about constructs not instrumented by -fmudflap
144 Common Var(warn_overflow) Init(1) Warning
145 Warn about overflow in arithmetic expressions
148 Common Var(warn_packed) Warning
149 Warn when the packed attribute has no effect on struct layout
152 Common Var(warn_padded) Warning
153 Warn when padding is required to align structure members
156 Common Var(warn_shadow) Warning
157 Warn when one local variable shadows another
160 Common Var(warn_stack_protect) Warning
161 Warn when not issuing stack smashing protection for some reason
165 Warn about code which might break strict aliasing rules
168 Common Joined UInteger Var(warn_strict_aliasing) Init(-1) Warning
169 Warn about code which might break strict aliasing rules
173 Warn about optimizations that assume that signed overflow is undefined
176 Common Joined UInteger Var(warn_strict_overflow) Init(-1) Warning
177 Warn about optimizations that assume that signed overflow is undefined
180 Common Var(warn_switch) Warning
181 Warn about enumerated switches, with no default, missing a case
184 Common Var(warn_switch_default) Warning
185 Warn about enumerated switches missing a \"default:\" statement
188 Common Var(warn_switch_enum) Warning
189 Warn about all enumerated switches missing a specific case
192 Common Var(warn_system_headers) Warning
193 Do not suppress warnings from system headers
196 Common Var(warn_type_limits) Init(-1) Warning
197 Warn if a comparison is always true or always false due to the limited range of the data type
200 Common Var(warn_uninitialized) Init(-1) Warning
201 Warn about uninitialized automatic variables
204 Common Var(warn_notreached) Warning
205 Warn about code that will never be executed
208 Common Var(warn_unused) Init(0) Warning
209 Enable all -Wunused- warnings
212 Common Var(warn_unused_function) Init(-1) Warning
213 Warn when a function is unused
216 Common Var(warn_unused_label) Init(-1) Warning
217 Warn when a label is unused
220 Common Var(warn_unused_parameter) Init(-1) Warning
221 Warn when a function parameter is unused
224 Common Var(warn_unused_value) Init(-1) Warning
225 Warn when an expression value is unused
228 Common Var(warn_unused_variable) Init(-1) Warning
229 Warn when a variable is unused
232 Common RejectNegative Var(warn_coverage_mismatch) Warning
233 Warn instead of error in case profiles in -fprofile-use do not match
237 -aux-info <file> Emit declaration information into <file>
250 -d<letters> Enable dumps from specific passes of the compiler
254 -dumpbase <file> Set the file basename to be used for dumps
256 ; The version of the C++ ABI in use. The following values are allowed:
258 ; 0: The version of the ABI believed most conformant with the C++ ABI
259 ; specification. This ABI may change as bugs are discovered and fixed.
260 ; Therefore, 0 will not necessarily indicate the same ABI in different
263 ; 1: The version of the ABI first used in G++ 3.2.
265 ; 2: The version of the ABI first used in G++ 3.4.
267 ; Additional positive integers will be assigned as new versions of
268 ; the ABI become the default version of the ABI.
270 Common Joined UInteger Var(flag_abi_version) Init(2)
273 Common Report Var(align_functions,0) Optimization UInteger
274 Align the start of functions
277 Common RejectNegative Joined UInteger
280 Common Report Var(align_jumps,0) Optimization UInteger
281 Align labels which are only reached by jumping
284 Common RejectNegative Joined UInteger
287 Common Report Var(align_labels,0) Optimization UInteger
291 Common RejectNegative Joined UInteger
294 Common Report Var(align_loops) Optimization UInteger
295 Align the start of loops
298 Common RejectNegative Joined UInteger
300 ; This flag is only tested if alias checking is enabled.
301 ; 0 if pointer arguments may alias each other. True in C.
302 ; 1 if pointer arguments may not alias each other but may alias
304 ; 2 if pointer arguments may not alias each other and may not
305 ; alias global variables.
306 ; 3 if pointer arguments may not alias anything. True in Fortran.
307 ; Set by the front end.
309 Common Report Var(flag_argument_noalias,0) Optimization
310 Specify that arguments may alias each other and globals
313 Common Report Var(flag_argument_noalias,1) VarExists Optimization
314 Assume arguments may alias globals but not each other
316 fargument-noalias-global
317 Common Report Var(flag_argument_noalias,2) VarExists Optimization
318 Assume arguments alias neither each other nor globals
320 fargument-noalias-anything
321 Common Report Var(flag_argument_noalias,3) VarExists Optimization
322 Assume arguments alias no other storage
324 fasynchronous-unwind-tables
325 Common Report Var(flag_asynchronous_unwind_tables) Optimization
326 Generate unwind tables that are exact at each instruction boundary
329 Common Report Var(flag_auto_inc_dec) Init(1)
330 Generate auto-inc/dec instructions
332 ; -fcheck-bounds causes gcc to generate array bounds checks.
333 ; For C, C++ and ObjC: defaults off.
334 ; For Java: defaults to on.
335 ; For Fortran: defaults to off.
337 Common Report Var(flag_bounds_check)
338 Generate code to check bounds before indexing arrays
341 Common Report Var(flag_branch_on_count_reg) Init(1) Optimization
342 Replace add, compare, branch with branch on count register
344 fbranch-probabilities
345 Common Report Var(flag_branch_probabilities) Optimization
346 Use profiling information for branch probabilities
348 fbranch-target-load-optimize
349 Common Report Var(flag_branch_target_load_optimize) Optimization
350 Perform branch target load optimization before prologue / epilogue threading
352 fbranch-target-load-optimize2
353 Common Report Var(flag_branch_target_load_optimize2) Optimization
354 Perform branch target load optimization after prologue / epilogue threading
357 Common Report Var(flag_btr_bb_exclusive) Optimization
358 Restrict target load migration not to re-use registers in any basic block
361 Common Joined RejectNegative
362 -fcall-saved-<register> Mark <register> as being preserved across functions
365 Common Joined RejectNegative
366 -fcall-used-<register> Mark <register> as being corrupted by function calls
368 ; Nonzero for -fcaller-saves: allocate values in regs that need to
369 ; be saved across function calls, if that produces overall better code.
370 ; Optional now, so people can test it.
372 Common Report Var(flag_caller_saves) Optimization
373 Save registers around function calls
376 Common Report Var(flag_check_data_deps)
377 Compare the results of several data dependence analyzers.
380 Common Report Var(flag_no_common,0) Optimization
381 Do not put uninitialized globals in the common section
384 Common JoinedOrMissing RejectNegative Var(flag_compare_debug_opt)
385 -fcompare-debug[=<opts>] Compile with and without e.g. -gtoggle, and compare the final-insns dump
387 fcompare-debug-second
388 Common RejectNegative Var(flag_compare_debug)
389 Run only the second compilation of -fcompare-debug
392 Common Var(flag_conserve_stack) Optimization
393 Do not perform optimizations increasing noticeably stack usage
396 Common Report Var(flag_cprop_registers) Optimization
397 Perform a register copy-propagation optimization pass
400 Common Report Var(flag_crossjumping) Optimization
401 Perform cross-jumping optimization
404 Common Report Var(flag_cse_follow_jumps) Optimization
405 When running CSE, follow jumps to their targets
409 Does nothing. Preserved for backward compatibility.
412 Common Report Var(flag_cx_limited_range) Optimization
413 Omit range reduction step when performing complex division
416 Common Report Var(flag_cx_fortran_rules) Optimization
417 Complex multiplication and division follow Fortran rules
420 Common Report Var(flag_data_sections) Optimization
421 Place data items into their own section
425 List all available debugging counters with their limits and counts.
428 Common RejectNegative Joined
429 -fdbg-cnt=<counter>:<limit>[,<counter>:<limit>,...] Set the debug counter limit.
432 Common Joined RejectNegative
433 Map one directory name to another in debug information
435 ; Nonzero for -fdefer-pop: don't pop args after each function call
436 ; instead save them up to pop many calls' args with one insns.
438 Common Report Var(flag_defer_pop) Optimization
439 Defer popping functions args from stack until later
442 Common Report Var(flag_delayed_branch) Optimization
443 Attempt to fill delay slots of branch instructions
445 fdelete-null-pointer-checks
446 Common Report Var(flag_delete_null_pointer_checks) Init(1) Optimization
447 Delete useless null pointer checks
449 fdiagnostics-show-location=
450 Common Joined RejectNegative
451 -fdiagnostics-show-location=[once|every-line] How often to emit source location at the beginning of line-wrapped diagnostics
453 fdiagnostics-show-option
455 Amend appropriate diagnostic messages with the command line option that controls them
458 Common Joined RejectNegative
459 -fdump-<type> Dump various compiler internals to a file
462 Common RejectNegative Joined Var(flag_dump_final_insns)
463 -fdump-final-insns=filename Dump to filename the insns at the end of translation
466 Common Report Var(flag_dump_noaddr)
467 Suppress output of addresses in debugging dumps
470 Common Report Var(flag_dump_unnumbered) VarExists
471 Suppress output of instruction numbers, line number notes and addresses in debugging dumps
473 fdump-unnumbered-links
474 Common Report Var(flag_dump_unnumbered_links) VarExists
475 Suppress output of previous and next insn numbers in debugging dumps
478 Common Report Var(flag_dwarf2_cfi_asm) Init(HAVE_GAS_CFI_DIRECTIVE)
479 Enable CFI tables via GAS assembler directives.
482 Common Report Var(flag_early_inlining) Init(1) Optimization
483 Perform early inlining
485 feliminate-dwarf2-dups
486 Common Report Var(flag_eliminate_dwarf2_dups)
487 Perform DWARF2 duplicate elimination
490 Common Report Var(flag_ipa_sra) Init(0) Optimization
491 Perform interprocedural reduction of aggregates
493 feliminate-unused-debug-symbols
494 Common Report Var(flag_debug_only_used_symbols)
495 Perform unused type elimination in debug info
497 feliminate-unused-debug-types
498 Common Report Var(flag_eliminate_unused_debug_types) Init(1)
499 Perform unused type elimination in debug info
501 femit-class-debug-always
502 Common Report Var(flag_emit_class_debug_always) Init(0)
503 Do not suppress C++ class debug information.
506 Common Report Var(flag_enable_icf_debug)
507 Generate debug information to support Identical Code Folding (ICF)
510 Common Report Var(flag_exceptions) Optimization
511 Enable exception handling
513 fexpensive-optimizations
514 Common Report Var(flag_expensive_optimizations) Optimization
515 Perform a number of minor, expensive optimizations
518 Common Joined RejectNegative
519 -fexcess-precision=[fast|standard] Specify handling of excess floating-point precision
525 Common Report Var(flag_finite_math_only) Optimization
526 Assume no NaNs or infinities are generated
529 Common Joined RejectNegative
530 -ffixed-<register> Mark <register> as being unavailable to the compiler
533 Common Report Var(flag_float_store) Optimization
534 Don't allocate floats and doubles in extended-precision registers
538 Does nothing. Preserved for backward compatibility.
541 Common Report Var(flag_forward_propagate) Optimization
542 Perform a forward propagation pass on RTL
544 ; Nonzero means don't put addresses of constant functions in registers.
545 ; Used for compiling the Unix kernel, where strange substitutions are
546 ; done on the assembly output.
548 Common Report Var(flag_no_function_cse,0)
549 Allow function addresses to be held in registers
552 Common Report Var(flag_function_sections)
553 Place each function into its own section
556 Common Report Var(flag_gcse) Optimization
557 Perform global common subexpression elimination
560 Common Report Var(flag_gcse_lm) Init(1) Optimization
561 Perform enhanced load motion during global common subexpression elimination
564 Common Report Var(flag_gcse_sm) Init(0) Optimization
565 Perform store motion after global common subexpression elimination
568 Common Report Var(flag_gcse_las) Init(0) Optimization
569 Perform redundant load after store elimination in global common subexpression
573 Common Report Var(flag_gcse_after_reload) Optimization
574 Perform global common subexpression elimination after register allocation
577 ; This option is not documented yet as its semantics will change.
579 Common Report Var(flag_graphite)
580 Enable in and out of Graphite representation
583 Common Report Var(flag_graphite_identity) Optimization
584 Enable Graphite Identity transformation
586 floop-parallelize-all
587 Common Report Var(flag_loop_parallelize_all) Optimization
588 Mark all loops as parallel
591 Common Report Var(flag_loop_strip_mine) Optimization
592 Enable Loop Strip Mining transformation
595 Common Report Var(flag_loop_interchange) Optimization
596 Enable Loop Interchange transformation
599 Common Report Var(flag_loop_block) Optimization
600 Enable Loop Blocking transformation
602 fguess-branch-probability
603 Common Report Var(flag_guess_branch_prob) Optimization
604 Enable guessing of branch probabilities
607 Common Report Var(flag_ici)
608 Enables Interactive Compilation Interface
611 Common Report Var(flag_api_clone_functions)
612 Enable API function cloning
614 fapi-instrument-functions
615 Common Report Var(flag_api_instrument_functions)
616 Enable API function/code instrumentation
618 ; Nonzero means ignore `#ident' directives. 0 means handle them.
619 ; Generate position-independent code for executables if possible
620 ; On SVR4 targets, it also controls whether or not to emit a
621 ; string identifying the compiler.
623 Common Report Var(flag_no_ident,0)
624 Process #ident directives
627 Common Report Var(flag_if_conversion) Optimization
628 Perform conversion of conditional jumps to branchless equivalents
631 Common Report Var(flag_if_conversion2) Optimization
632 Perform conversion of conditional jumps to conditional execution
634 ; -finhibit-size-directive inhibits output of .size for ELF.
635 ; This is used only for compiling crtstuff.c,
636 ; and it may be extended to other effects
637 ; needed for crtstuff.c on other systems.
638 finhibit-size-directive
639 Common Report Var(flag_inhibit_size_directive)
640 Do not generate .size directives
643 Common Report Var(flag_indirect_inlining)
644 Perform indirect inlining
646 ; Nonzero means that functions declared `inline' will be treated
647 ; as `static'. Prevents generation of zillions of copies of unused
648 ; static inline functions; instead, `inlines' are written out
649 ; only when actually used. Used in conjunction with -g. Also
650 ; does the right thing with #pragma interface.
652 Common Report Var(flag_no_inline,0) Init(0)
653 Pay attention to the \"inline\" keyword
655 finline-small-functions
656 Common Report Var(flag_inline_small_functions) Optimization
657 Integrate simple functions into their callers when code size is known to not growth
660 Common Report Var(flag_inline_functions) Optimization
661 Integrate simple functions into their callers
663 finline-functions-called-once
664 Common Report Var(flag_inline_functions_called_once) Init(1) Optimization
665 Integrate functions called once into their callers
668 Common RejectNegative Joined UInteger
671 Common RejectNegative Joined UInteger
672 -finline-limit=<number> Limit the size of inlined functions to <number>
674 finstrument-functions
675 Common Report Var(flag_instrument_function_entry_exit)
676 Instrument function entry and exit with profiling calls
678 finstrument-functions-exclude-function-list=
679 Common RejectNegative Joined
680 -finstrument-functions-exclude-function-list=name,... Do not instrument listed functions
682 finstrument-functions-exclude-file-list=
683 Common RejectNegative Joined
684 -finstrument-functions-exclude-file-list=filename,... Do not instrument functions listed in files
687 Common Report Var(flag_ipa_cp) Optimization
688 Perform Interprocedural constant propagation
691 Common Report Var(flag_ipa_cp_clone) Optimization
692 Perform cloning to make Interprocedural constant propagation stronger
695 Common Report Var(flag_ipa_pure_const) Init(0) Optimization
696 Discover pure and const functions
699 Common Report Var(flag_ipa_pta) Init(0) Optimization
700 Perform interprocedural points-to analysis
703 Common Report Var(flag_ipa_reference) Init(0) Optimization
704 Discover readonly and non addressable static variables
707 Common Report Var(flag_ipa_type_escape) Init(0) Optimization
708 Type based escape and alias analysis
711 Common Report Var(flag_ipa_matrix_reorg) Optimization
712 Perform matrix layout flattening and transposing based
713 on profiling information.
716 Common Report Var(flag_ipa_struct_reorg)
717 Perform structure layout optimizations based
718 on profiling information.
721 Common Joined RejectNegative
722 -fira-algorithm=[CB|priority] Set the used IRA algorithm
725 Common Joined RejectNegative
726 -fira-region=[one|all|mixed] Set regions for IRA
729 Common Report Var(flag_ira_coalesce) Init(0)
730 Do optimistic coalescing.
733 Common Report Var(flag_ira_loop_pressure)
734 Use IRA based register pressure calculation
735 in RTL loop optimizations.
737 fira-share-save-slots
738 Common Report Var(flag_ira_share_save_slots) Init(1)
739 Share slots for saving different hard registers.
741 fira-share-spill-slots
742 Common Report Var(flag_ira_share_spill_slots) Init(1)
743 Share stack slots for spilled pseudo-registers.
746 Common RejectNegative Joined UInteger
747 -fira-verbose=<number> Control IRA's level of diagnostic messages.
750 Common Report Var(flag_ivopts) Init(1) Optimization
751 Optimize induction variables on trees
754 Common Var(flag_jump_tables) Init(1) Optimization
755 Use jump tables for sufficiently large switch statements
757 fkeep-inline-functions
758 Common Report Var(flag_keep_inline_functions)
759 Generate code for functions even if they are fully inlined
762 Common Report Var(flag_keep_static_consts) Init(1)
763 Emit static const variables even if they are not used
766 Common Report Var(flag_leading_underscore) Init(-1)
767 Give external symbols a leading underscore
771 Does nothing. Preserved for backward compatibility.
775 Enable link-time optimization.
777 ; The initial value of -1 comes from Z_DEFAULT_COMPRESSION in zlib.h.
778 flto-compression-level=
779 Common Joined UInteger Var(flag_lto_compression_level) Init(-1)
780 -flto-compression-level=<number> Use zlib compression level <number> for IL
783 Common Report Var(flag_lto_report) Init(0) Optimization
784 Report various link-time optimization statistics
787 Common Report Var(flag_errno_math) Init(1) Optimization
788 Set errno after built-in math functions
791 Common Report Var(mem_report)
792 Report on permanent memory allocation
794 ; This will attempt to merge constant section constants, if 1 only
795 ; string constants and constants from constant pool, if 2 also constant
798 Common Report Var(flag_merge_constants,2) Init(1) Optimization
799 Attempt to merge identical constants and constant variables
802 Common Report Var(flag_merge_constants,1) VarExists Optimization
803 Attempt to merge identical constants across compilation units
806 Common Report Var(flag_merge_debug_strings) Init(1)
807 Attempt to merge identical debug strings across compilation units
810 Common RejectNegative Joined UInteger
811 -fmessage-length=<number> Limit diagnostics to <number> characters per line. 0 suppresses line-wrapping
814 Common Report Var(flag_modulo_sched) Optimization
815 Perform SMS based modulo scheduling before the first scheduling pass
817 fmodulo-sched-allow-regmoves
818 Common Report Var(flag_modulo_sched_allow_regmoves)
819 Perform SMS based modulo scheduling with register moves allowed
821 fmove-loop-invariants
822 Common Report Var(flag_move_loop_invariants) Init(1) Optimization
823 Move loop invariant computations out of loops
826 Common RejectNegative Report Var(flag_mudflap)
827 Add mudflap bounds-checking instrumentation for single-threaded program
830 Common RejectNegative Report VarExists Var(flag_mudflap,2)
831 Add mudflap bounds-checking instrumentation for multi-threaded program
834 Common RejectNegative Report Var(flag_mudflap_ignore_reads)
835 Ignore read operations when inserting mudflap instrumentation
838 Common Var(flag_dce) Init(1) Optimization
839 Use the RTL dead code elimination pass
842 Common Var(flag_dse) Init(1) Optimization
843 Use the RTL dead store elimination pass
845 freschedule-modulo-scheduled-loops
846 Common Report Var(flag_resched_modulo_sched) Optimization
847 Enable/Disable the traditional scheduling in loops that already passed modulo scheduling
850 Common Report Var(flag_non_call_exceptions) Optimization
851 Support synchronous non-call exceptions
854 Common Report Var(flag_omit_frame_pointer) Optimization
855 When possible do not generate stack frames
857 foptimize-register-move
858 Common Report Var(flag_regmove) Optimization
859 Do the full register move optimization pass
861 foptimize-sibling-calls
862 Common Report Var(flag_optimize_sibling_calls) Optimization
863 Optimize sibling and tail recursive calls
866 Common Report Var(pre_ipa_mem_report)
867 Report on memory allocation before interprocedural optimization
870 Common Report Var(post_ipa_mem_report)
871 Report on memory allocation before interprocedural optimization
874 Common Report Var(flag_pack_struct) Optimization
875 Pack structure members together without holes
878 Common RejectNegative Joined UInteger Optimization
879 -fpack-struct=<number> Set initial maximum structure member alignment
882 Common Report Var(flag_pcc_struct_return,1) VarExists
883 Return small aggregates in memory, not registers
886 Common Report Var(flag_peel_loops) Optimization
890 Common Report Var(flag_no_peephole,0) Optimization
891 Enable machine specific peephole optimizations
894 Common Report Var(flag_peephole2) Optimization
895 Enable an RTL peephole pass before sched2
898 Common Report Var(flag_pic,2)
899 Generate position-independent code if possible (large mode)
902 Common Report Var(flag_pie,2)
903 Generate position-independent code for executables if possible (large mode)
906 Common Report Var(flag_pic,1) VarExists
907 Generate position-independent code if possible (small mode)
910 Common Report Var(flag_pie,1) VarExists
911 Generate position-independent code for executables if possible (small mode)
914 Common Joined RejectNegative
915 Specify a plugin to load
918 Common Joined RejectNegative
919 -fplugin-arg-<name>-<key>[=<value>] Specify argument <key>=<value> for plugin <name>
921 fpredictive-commoning
922 Common Report Var(flag_predictive_commoning) Optimization
923 Run predictive commoning optimization.
925 fprefetch-loop-arrays
926 Common Report Var(flag_prefetch_loop_arrays) Optimization
927 Generate prefetch instructions, if available, for arrays in loops
930 Common Report Var(profile_flag)
931 Enable basic program profiling code
934 Common Report Var(profile_arc_flag)
935 Insert arc-based program profiling code
938 Common Joined RejectNegative
939 Set the top-level directory for storing the profile data.
940 The default is 'pwd'.
943 Common Report Var(flag_profile_correction)
944 Enable correction of flow inconsistent profile data input
948 Enable common options for generating profile info for profile feedback directed optimizations
951 Common Joined RejectNegative
952 Enable common options for generating profile info for profile feedback directed optimizations, and set -fprofile-dir=
955 Common Var(flag_profile_use)
956 Enable common options for performing profile feedback directed optimizations
959 Common Joined RejectNegative
960 Enable common options for performing profile feedback directed optimizations, and set -fprofile-dir=
963 Common Report Var(flag_profile_values)
964 Insert code to profile values of expressions
970 Common Joined RejectNegative
971 -frandom-seed=<string> Make compile reproducible using <string>
973 ; This switch causes the command line that was used to create an
974 ; object file to be recorded into the object file. The exact format
975 ; of this recording is target and binary file format dependent.
976 ; It is related to the -fverbose-asm switch, but that switch only
977 ; records information in the assembler output file as comments, so
978 ; they never reach the object file.
980 Common Report Var(flag_record_gcc_switches)
981 Record gcc command line switches in the object file.
984 Common Report Var(flag_pcc_struct_return,0) VarExists Optimization
985 Return small aggregates in registers
988 Common Report Var(flag_regmove) Optimization
989 Enables a register move optimization
992 Common Report Var(flag_rename_registers) Init(2) Optimization
993 Perform a register renaming optimization pass
996 Common Report Var(flag_reorder_blocks) Optimization
997 Reorder basic blocks to improve code placement
999 freorder-blocks-and-partition
1000 Common Report Var(flag_reorder_blocks_and_partition) Optimization
1001 Reorder basic blocks and partition into hot and cold sections
1004 Common Report Var(flag_reorder_functions) Optimization
1005 Reorder functions to improve code placement
1007 frerun-cse-after-loop
1008 Common Report Var(flag_rerun_cse_after_loop) Init(2) Optimization
1009 Add a common subexpression elimination pass after loop optimizations
1013 Does nothing. Preserved for backward compatibility.
1016 Common Report Var(flag_rounding_math) Optimization
1017 Disable optimizations that assume default FP rounding behavior
1020 Common Report Var(flag_schedule_interblock) Init(1) Optimization
1021 Enable scheduling across basic blocks
1024 Common Report Var(flag_sched_pressure) Init(0) Optimization
1025 Enable register pressure sensitive insn scheduling
1028 Common Report Var(flag_schedule_speculative) Init(1) Optimization
1029 Allow speculative motion of non-loads
1032 Common Report Var(flag_schedule_speculative_load) Optimization
1033 Allow speculative motion of some loads
1035 fsched-spec-load-dangerous
1036 Common Report Var(flag_schedule_speculative_load_dangerous) Optimization
1037 Allow speculative motion of more loads
1040 Common RejectNegative Joined
1041 -fsched-verbose=<number> Set the verbosity level of the scheduler
1043 fsched2-use-superblocks
1044 Common Report Var(flag_sched2_use_superblocks) Optimization
1045 If scheduling post reload, do superblock scheduling
1048 Common Report Var(flag_sched2_use_traces) Optimization
1049 If scheduling post reload, do trace scheduling
1052 Common Report Var(flag_schedule_insns) Optimization
1053 Reschedule instructions before register allocation
1056 Common Report Var(flag_schedule_insns_after_reload) Optimization
1057 Reschedule instructions after register allocation
1059 ; This flag should be on when a target implements non-trivial
1060 ; scheduling hooks, maybe saving some information for its own sake.
1061 ; On IA64, for example, this is used for correct bundling.
1062 fselective-scheduling
1063 Common Report Var(flag_selective_scheduling) Optimization
1064 Schedule instructions using selective scheduling algorithm
1066 fselective-scheduling2
1067 Common Report Var(flag_selective_scheduling2) Optimization
1068 Run selective scheduling after reload
1070 fsel-sched-pipelining
1071 Common Report Var(flag_sel_sched_pipelining) Init(0) Optimization
1072 Perform software pipelining of inner loops during selective scheduling
1074 fsel-sched-pipelining-outer-loops
1075 Common Report Var(flag_sel_sched_pipelining_outer_loops) Init(0) Optimization
1076 Perform software pipelining of outer loops during selective scheduling
1078 fsel-sched-reschedule-pipelined
1079 Common Report Var(flag_sel_sched_reschedule_pipelined) Init(0) Optimization
1080 Reschedule pipelined regions without pipelining
1082 ; sched_stalled_insns means that insns can be moved prematurely from the queue
1083 ; of stalled insns into the ready list.
1084 fsched-stalled-insns
1085 Common Report Var(flag_sched_stalled_insns) Optimization UInteger
1086 Allow premature scheduling of queued insns
1088 fsched-stalled-insns=
1089 Common RejectNegative Joined UInteger
1090 -fsched-stalled-insns=<number> Set number of queued insns that can be prematurely scheduled
1092 ; sched_stalled_insns_dep controls how many recently scheduled cycles will
1093 ; be examined for a dependency on a stalled insn that is candidate for
1094 ; premature removal from the queue of stalled insns into the ready list (has
1095 ; an effect only if the flag 'sched_stalled_insns' is set).
1096 fsched-stalled-insns-dep
1097 Common Report Var(flag_sched_stalled_insns_dep,1) Init(1) Optimization UInteger
1098 Set dependence distance checking in premature scheduling of queued insns
1100 fsched-stalled-insns-dep=
1101 Common RejectNegative Joined UInteger
1102 -fsched-stalled-insns-dep=<number> Set dependence distance checking in premature scheduling of queued insns
1104 fsched-group-heuristic
1105 Common Report Var(flag_sched_group_heuristic) Init(1) Optimization
1106 Enable the group heuristic in the scheduler
1108 fsched-critical-path-heuristic
1109 Common Report Var(flag_sched_critical_path_heuristic) Init(1) Optimization
1110 Enable the critical path heuristic in the scheduler
1112 fsched-spec-insn-heuristic
1113 Common Report Var(flag_sched_spec_insn_heuristic) Init(1) Optimization
1114 Enable the speculative instruction heuristic in the scheduler
1116 fsched-rank-heuristic
1117 Common Report Var(flag_sched_rank_heuristic) Init(1) Optimization
1118 Enable the rank heuristic in the scheduler
1120 fsched-last-insn-heuristic
1121 Common Report Var(flag_sched_last_insn_heuristic) Init(1) Optimization
1122 Enable the last instruction heuristic in the scheduler
1124 fsched-dep-count-heuristic
1125 Common Report Var(flag_sched_dep_count_heuristic) Init(1) Optimization
1126 Enable the dependent count heuristic in the scheduler
1129 Common Report Var(flag_section_anchors) Optimization
1130 Access data in the same section from shared anchor points
1134 Does nothing. Preserved for backward compatibility.
1137 Common C ObjC C++ ObjC++ Report Var(flag_show_column) Init(1)
1138 Show column numbers in diagnostics, when available. Default on
1141 Common Report Var(flag_signaling_nans) Optimization
1142 Disable optimizations observable by IEEE signaling NaNs
1145 Common Report Var(flag_signed_zeros) Init(1) Optimization
1146 Disable floating point optimizations that ignore the IEEE signedness of zero
1148 fsingle-precision-constant
1149 Common Report Var(flag_single_precision_constant) Optimization
1150 Convert floating point constants to single precision constants
1152 fsplit-ivs-in-unroller
1153 Common Report Var(flag_split_ivs_in_unroller) Init(1) Optimization
1154 Split lifetimes of induction variables when loops are unrolled
1157 Common Report Var(flag_split_wide_types) Optimization
1158 Split wide types into independent registers
1160 fvariable-expansion-in-unroller
1161 Common Report Var(flag_variable_expansion_in_unroller) Optimization
1162 Apply variable expansion when loops are unrolled
1165 Common Report RejectNegative Joined
1166 -fstack-check=[no|generic|specific] Insert stack checking code into the program
1170 Insert stack checking code into the program. Same as -fstack-check=specific
1175 fstack-limit-register=
1176 Common RejectNegative Joined
1177 -fstack-limit-register=<register> Trap if the stack goes past <register>
1179 fstack-limit-symbol=
1180 Common RejectNegative Joined
1181 -fstack-limit-symbol=<name> Trap if the stack goes past symbol <name>
1184 Common Report Var(flag_stack_protect, 1)
1185 Use propolice as a stack protection method
1187 fstack-protector-all
1188 Common Report RejectNegative Var(flag_stack_protect, 2) VarExists
1189 Use a stack protection method for every function
1193 Does nothing. Preserved for backward compatibility.
1195 ; Nonzero if we should do (language-dependent) alias analysis.
1196 ; Typically, this analysis will assume that expressions of certain
1197 ; types do not alias expressions of certain other types. Only used
1198 ; if alias analysis (in general) is enabled.
1200 Common Report Var(flag_strict_aliasing) Optimization
1201 Assume strict aliasing rules apply
1204 Common Report Var(flag_strict_overflow)
1205 Treat signed overflow as undefined
1208 Common Report Var(flag_syntax_only)
1209 Check for syntax errors, then stop
1212 Common Report Var(flag_test_coverage)
1213 Create data files needed by \"gcov\"
1216 Common Report Var(flag_thread_jumps) Optimization
1217 Perform jump threading optimizations
1220 Common Report Var(time_report)
1221 Report the time taken by each compiler pass
1224 Common Joined RejectNegative
1225 -ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec] Set the default thread-local storage code generation model
1228 Common Report Var(flag_toplevel_reorder) Init(2) Optimization
1229 Reorder top level functions, variables, and asms
1232 Common Report Var(flag_tracer)
1233 Perform superblock formation via tail duplication
1235 ; Zero means that floating-point math operations cannot generate a
1236 ; (user-visible) trap. This is the case, for example, in nonstop
1237 ; IEEE 754 arithmetic.
1239 Common Report Var(flag_trapping_math) Init(1) Optimization
1240 Assume floating-point operations can trap
1243 Common Report Var(flag_trapv) Optimization
1244 Trap for signed overflow in addition, subtraction and multiplication
1247 Common Report Var(flag_tree_ccp) Optimization
1248 Enable SSA-CCP optimization on trees
1252 Does nothing. Preserved for backward compatibility.
1255 Common Report Var(flag_tree_ch) Optimization
1256 Enable loop header copying on trees
1259 Common Report Var(flag_tree_copyrename) Optimization
1260 Replace SSA temporaries with better names in copies
1263 Common Report Var(flag_tree_copy_prop) Optimization
1264 Enable copy propagation on trees
1266 ftree-store-copy-prop
1268 Does nothing. Preserved for backward compatibility.
1271 Common Report Var(flag_tree_cselim) Init(2) Optimization
1272 Transform condition stores into unconditional ones
1274 ftree-switch-conversion
1275 Common Report Var(flag_tree_switch_conversion) Optimization
1276 Perform conversions of switch initializations.
1279 Common Report Var(flag_tree_dce) Optimization
1280 Enable SSA dead code elimination optimization on trees
1282 ftree-dominator-opts
1283 Common Report Var(flag_tree_dom) Optimization
1284 Enable dominator optimizations
1287 Common Report Var(flag_tree_dse) Optimization
1288 Enable dead store elimination
1291 Common Report Var(flag_tree_forwprop) Init(1) Optimization
1292 Enable forward propagation on trees
1295 Common Report Var(flag_tree_fre) Optimization
1296 Enable Full Redundancy Elimination (FRE) on trees
1298 ftree-loop-distribution
1299 Common Report Var(flag_tree_loop_distribution) Optimization
1300 Enable loop distribution on trees
1303 Common Report Var(flag_tree_loop_im) Init(1) Optimization
1304 Enable loop invariant motion on trees
1307 Common Report Var(flag_tree_loop_linear) Optimization
1308 Enable linear loop transforms on trees
1311 Common Report Var(flag_tree_loop_ivcanon) Init(1) Optimization
1312 Create canonical induction variables in loops
1315 Common Report Var(flag_tree_loop_optimize) Init(1) Optimization
1316 Enable loop optimizations on tree level
1318 ftree-parallelize-loops=
1319 Common Report Joined UInteger Var(flag_tree_parallelize_loops) Init(1)
1320 Enable automatic parallelization of loops
1323 Common Report Var(flag_tree_phiprop) Init(1) Optimization
1324 Enable hoisting loads from conditional pointers.
1327 Common Report Var(flag_tree_pre) Optimization
1328 Enable SSA-PRE optimization on trees
1331 Common Report Var(flag_tree_pta) Init(1) Optimization
1332 Perform function-local points-to analysis on trees.
1335 Common Report Var(flag_tree_reassoc) Init(1) Optimization
1336 Enable reassociation on tree level
1340 Does nothing. Preserved for backward compatibility.
1343 Common Report Var(flag_tree_sink) Optimization
1344 Enable SSA code sinking on trees
1347 Common Report Var(flag_tree_sra) Optimization
1348 Perform scalar replacement of aggregates
1351 Common Report Var(flag_tree_ter) Init(1) Optimization
1352 Replace temporary expressions in the SSA->normal pass
1355 Common Report Var(flag_tree_live_range_split) Optimization
1356 Perform live range splitting during the SSA->normal pass
1359 Common Report Var(flag_tree_vrp) Init(0) Optimization
1360 Perform Value Range Propagation on trees
1363 Common Report Var(flag_unit_at_a_time) Init(1) Optimization
1364 Compile whole compilation unit at a time
1367 Common Report Var(flag_unroll_loops) Optimization
1368 Perform loop unrolling when iteration count is known
1371 Common Report Var(flag_unroll_all_loops) Optimization
1372 Perform loop unrolling for all loops
1374 ; Nonzero means that loop optimizer may assume that the induction variables
1375 ; that control loops do not overflow and that the loops with nontrivial
1376 ; exit condition are not infinite
1377 funsafe-loop-optimizations
1378 Common Report Var(flag_unsafe_loop_optimizations) Optimization
1379 Allow loop optimizations to assume that the loops behave in normal way
1382 Common Report Var(flag_associative_math)
1383 Allow optimization for floating-point arithmetic which may change the
1384 result of the operation due to rounding.
1387 Common Report Var(flag_reciprocal_math)
1388 Same as -fassociative-math for expressions which include division.
1390 ; Nonzero means that unsafe floating-point math optimizations are allowed
1391 ; for the sake of speed. IEEE compliance is not guaranteed, and operations
1392 ; are allowed to assume that their arguments and results are "normal"
1393 ; (e.g., nonnegative for SQRT).
1394 funsafe-math-optimizations
1395 Common Report Var(flag_unsafe_math_optimizations) Optimization
1396 Allow math optimizations that may violate IEEE or ISO standards
1399 Common Report Var(flag_unswitch_loops) Optimization
1400 Perform loop unswitching
1403 Common Report Var(flag_unwind_tables) Optimization
1404 Just generate unwind tables for exception handling
1410 Common Report Var(flag_var_tracking) VarExists Optimization
1411 Perform variable tracking
1413 fvar-tracking-assignments
1414 Common Report Var(flag_var_tracking_assignments) VarExists Optimization
1415 Perform variable tracking by annotating assignments
1417 fvar-tracking-assignments-toggle
1418 Common Report Var(flag_var_tracking_assignments_toggle) VarExists Optimization
1419 Toggle -fvar-tracking-assignments
1421 fvar-tracking-uninit
1422 Common Report Var(flag_var_tracking_uninit) Optimization
1423 Perform variable tracking and also tag variables that are uninitialized
1426 Common Report Var(flag_tree_vectorize) Optimization
1427 Enable loop vectorization on trees
1430 Common Report Var(flag_tree_slp_vectorize) Init(2) Optimization
1431 Enable basic block vectorization (SLP) on trees
1434 Common Report Var(flag_vect_cost_model) Optimization
1435 Enable use of cost model in vectorization
1437 ftree-vect-loop-version
1438 Common Report Var(flag_tree_vect_loop_version) Init(1) Optimization
1439 Enable loop versioning when doing loop vectorization on trees
1441 ftree-vectorizer-verbose=
1442 Common RejectNegative Joined
1443 -ftree-vectorizer-verbose=<number> Set the verbosity level of the vectorizer
1446 Common Report Var(flag_tree_scev_cprop) Init(1) Optimization
1447 Enable copy propagation of scalar-evolution information.
1449 ; -fverbose-asm causes extra commentary information to be produced in
1450 ; the generated assembly code (to make it more readable). This option
1451 ; is generally only of use to those who actually need to read the
1452 ; generated assembly code (perhaps while debugging the compiler itself).
1453 ; -fno-verbose-asm, the default, causes the extra information
1454 ; to not be added and is useful when comparing two assembler files.
1456 Common Report Var(flag_verbose_asm)
1457 Add extra commentary to assembler output
1460 Common Joined RejectNegative
1461 -fvisibility=[default|internal|hidden|protected] Set the default symbol visibility
1465 Common Report Var(flag_value_profile_transformations) Optimization
1466 Use expression value profiles in optimizations
1469 Common Report Var(flag_web) Init(2) Optimization
1470 Construct webs and split unrelated uses of single variable
1473 Common Var(flag_whopr)
1474 Enable partitioned link-time optimization.
1476 ftree-builtin-call-dce
1477 Common Report Var(flag_tree_builtin_call_dce) Init(0) Optimization
1478 Enable conditional dead code elimination for builtin calls
1481 Common Report Var(flag_whole_program) Init(0) Optimization
1482 Perform whole program optimizations
1485 Common Report Var(flag_wrapv) Optimization
1486 Assume signed arithmetic overflow wraps around
1488 fzero-initialized-in-bss
1489 Common Report Var(flag_zero_initialized_in_bss) Init(1)
1490 Put zero initialized data in the bss section
1493 Common JoinedOrMissing
1494 Generate debug information in default format
1497 Common JoinedOrMissing Negative(gdwarf-)
1498 Generate debug information in COFF format
1501 Common Joined UInteger Var(dwarf_version) Init(2) Negative(gstabs)
1502 Generate debug information in DWARF v2 (or later) format
1505 Common JoinedOrMissing
1506 Generate debug information in default extended format
1509 Common JoinedOrMissing Negative(gstabs+)
1510 Generate debug information in STABS format
1513 Common JoinedOrMissing Negative(gvms)
1514 Generate debug information in extended STABS format
1517 Common RejectNegative Var(dwarf_strict,0) Init(-1)
1518 Emit DWARF additions beyond selected version
1521 Common Report RejectNegative Var(dwarf_strict,1) VarExists
1522 Don't emit DWARF additions beyond selected version
1525 Common Report Var(flag_gtoggle)
1526 Toggle debug information generation
1529 Common JoinedOrMissing Negative(gxcoff)
1530 Generate debug information in VMS format
1533 Common JoinedOrMissing Negative(gxcoff+)
1534 Generate debug information in XCOFF format
1537 Common JoinedOrMissing Negative(gcoff)
1538 Generate debug information in extended XCOFF format
1541 Common Joined Separate
1542 -o <file> Place output into <file>
1545 Common Var(profile_flag)
1546 Enable function profiling
1549 Common Var(pedantic)
1550 Issue warnings needed for strict compliance to the standard
1554 Like -pedantic but issue them as errors
1557 Common Var(quiet_flag)
1558 Do not display functions compiled or elapsed time
1561 Common Var(version_flag)
1562 Display the compiler's version
1565 Common Var(inhibit_warnings)
1569 Common RejectNegative Negative(pie)
1570 Create a shared library
1573 Common RejectNegative Negative(shared)
1574 Create a position independent executable
1576 ; This comment is to ensure we retain the blank line above.