]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/common.opt
* c-decl.c (WANT_C99_INLINE_SEMANTICS): New, set to 1.
[thirdparty/gcc.git] / gcc / common.opt
CommitLineData
3272db82 1; Options for the language- and target-independent parts of the compiler.
2e9da478 2
76f02516 3; Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
3272db82 4;
5; This file is part of GCC.
6;
7; GCC is free software; you can redistribute it and/or modify it under
8; the terms of the GNU General Public License as published by the Free
9; Software Foundation; either version 2, or (at your option) any later
10; version.
a0c938f0 11;
3272db82 12; GCC is distributed in the hope that it will be useful, but WITHOUT ANY
13; WARRANTY; without even the implied warranty of MERCHANTABILITY or
14; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
15; for more details.
a0c938f0 16;
3272db82 17; You should have received a copy of the GNU General Public License
18; along with GCC; see the file COPYING. If not, write to the Free
67ce556b 19; Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
20; 02110-1301, USA.
3272db82 21
5fd4bf3b 22; See the GCC internals manual for a description of this file's format.
3272db82 23
24; Please try to keep this file in ASCII collating order.
25
e690b385 26-help
27Common
53b8e5c1 28Display this information
e690b385 29
da3b1bab 30-param
31Common Separate
29fed0db 32--param <param>=<value> Set parameter <param> to value. See below for a complete list of parameters
da3b1bab 33
e690b385 34-target-help
35Common
36
37-version
38Common
39
40G
837277ab 41Common Joined Separate UInteger
53b8e5c1 42-G<number> Put global and static data smaller than <number> bytes into a special section (on some targets)
e690b385 43
da3b1bab 44O
45Common JoinedOrMissing
53b8e5c1 46-O<number> Set optimization level to <number>
da3b1bab 47
48Os
49Common
53b8e5c1 50Optimize for space rather than speed
da3b1bab 51
52W
53Common RejectNegative
bb0814ce 54This switch is deprecated; use -Wextra instead
da3b1bab 55
6f2f567f 56Waggregate-return
2e9da478 57Common Var(warn_aggregate_return)
bb0814ce 58Warn about returning structures, unions or arrays
6f2f567f 59
90fea167 60Walways-true
61Common Var(warn_always_true)
62Warn about comparisons that always evaluate to true
63
9b2d6d13 64Wattributes
65Common Var(warn_attributes) Init(1)
66Warn about inappropriate attribute usage
67
6f2f567f 68Wcast-align
2e9da478 69Common Var(warn_cast_align)
bb0814ce 70Warn about pointer casts which increase alignment
6f2f567f 71
72Wdeprecated-declarations
2e9da478 73Common Var(warn_deprecated_decl) Init(1)
bb0814ce 74Warn about uses of __attribute__((deprecated)) declarations
6f2f567f 75
76Wdisabled-optimization
2e9da478 77Common Var(warn_disabled_optimization)
bb0814ce 78Warn when an optimization pass is disabled
6f2f567f 79
80Werror
2e9da478 81Common Var(warnings_are_errors)
bb0814ce 82Treat all warnings as errors
6f2f567f 83
76f02516 84Werror=
85Common Joined
86Treat specified warning as error
87
da3b1bab 88Wextra
89Common
53b8e5c1 90Print extra (possibly unwanted) warnings
da3b1bab 91
295acf4f 92Wfatal-errors
2e9da478 93Common Var(flag_fatal_errors)
295acf4f 94Exit on the first error occurred
95
6f2f567f 96Winline
2e9da478 97Common Var(warn_inline)
bb0814ce 98Warn when an inlined function cannot be inlined
6f2f567f 99
100Wlarger-than-
101Common RejectNegative Joined UInteger
53b8e5c1 102-Wlarger-than-<number> Warn if an object is larger than <number> bytes
6f2f567f 103
7e3cc681 104Wunsafe-loop-optimizations
105Common Var(warn_unsafe_loop_optimizations)
106Warn if the loop cannot be optimized due to nontrivial assumptions.
107
6f2f567f 108Wmissing-noreturn
2e9da478 109Common Var(warn_missing_noreturn)
bb0814ce 110Warn about functions which might be candidates for __attribute__((noreturn))
6f2f567f 111
55972f40 112Woverflow
113Common Var(warn_overflow) Init(1)
114Warn about overflow in arithmetic expressions
115
6f2f567f 116Wpacked
2e9da478 117Common Var(warn_packed)
bb0814ce 118Warn when the packed attribute has no effect on struct layout
6f2f567f 119
120Wpadded
2e9da478 121Common Var(warn_padded)
bb0814ce 122Warn when padding is required to align structure members
6f2f567f 123
124Wshadow
2e9da478 125Common Var(warn_shadow)
bb0814ce 126Warn when one local variable shadows another
6f2f567f 127
f1a0edff 128Wstack-protector
129Common Var(warn_stack_protect)
130Warn when not issuing stack smashing protection for some reason
131
6f2f567f 132Wstrict-aliasing
133Common
bb0814ce 134Warn about code which might break strict aliasing rules
6f2f567f 135
c1628b55 136Wstrict-aliasing=
137Common Joined UInteger
138Warn about code which might break strict aliasing rules
139
19f0596c 140Wstring-literal-comparison
141Common Var(warn_string_literal_comparison)
142Warn about comparisons to constant string literals
143
6f2f567f 144Wswitch
2e9da478 145Common Var(warn_switch)
bb0814ce 146Warn about enumerated switches, with no default, missing a case
6f2f567f 147
148Wswitch-default
2e9da478 149Common Var(warn_switch_default)
bb0814ce 150Warn about enumerated switches missing a \"default:\" statement
6f2f567f 151
152Wswitch-enum
2e9da478 153Common Var(warn_switch_enum)
bb0814ce 154Warn about all enumerated switches missing a specific case
6f2f567f 155
156Wsystem-headers
2e9da478 157Common Var(warn_system_headers)
72528c71 158Do not suppress warnings from system headers
6f2f567f 159
160Wuninitialized
2e9da478 161Common Var(warn_uninitialized)
bb0814ce 162Warn about uninitialized automatic variables
6f2f567f 163
164Wunreachable-code
2e9da478 165Common Var(warn_notreached)
bb0814ce 166Warn about code that will never be executed
6f2f567f 167
da3b1bab 168Wunused
169Common
53b8e5c1 170Enable all -Wunused- warnings
da3b1bab 171
6f2f567f 172Wunused-function
2e9da478 173Common Var(warn_unused_function)
bb0814ce 174Warn when a function is unused
6f2f567f 175
176Wunused-label
2e9da478 177Common Var(warn_unused_label)
bb0814ce 178Warn when a label is unused
6f2f567f 179
180Wunused-parameter
2e9da478 181Common Var(warn_unused_parameter)
bb0814ce 182Warn when a function parameter is unused
6f2f567f 183
184Wunused-value
2e9da478 185Common Var(warn_unused_value)
bb0814ce 186Warn when an expression value is unused
6f2f567f 187
188Wunused-variable
2e9da478 189Common Var(warn_unused_variable)
bb0814ce 190Warn when a variable is unused
6f2f567f 191
bf2a1b05 192Wvolatile-register-var
193Common Var(warn_register_var)
194Warn when a register variable is declared volatile
195
e690b385 196aux-info
197Common Separate
53b8e5c1 198-aux-info <file> Emit declaration information into <file>
e690b385 199
200aux-info=
201Common Joined
202
203auxbase
204Common Separate
205
206auxbase-strip
207Common Separate
208
209d
210Common Joined
53b8e5c1 211-d<letters> Enable dumps from specific passes of the compiler
e690b385 212
213dumpbase
214Common Separate
53b8e5c1 215-dumpbase <file> Set the file basename to be used for dumps
e690b385 216
82a16202 217; The version of the C++ ABI in use. The following values are allowed:
218;
219; 0: The version of the ABI believed most conformant with the C++ ABI
220; specification. This ABI may change as bugs are discovered and fixed.
221; Therefore, 0 will not necessarily indicate the same ABI in different
222; versions of G++.
223;
224; 1: The version of the ABI first used in G++ 3.2.
225;
226; Additional positive integers will be assigned as new versions of
227; the ABI become the default version of the ABI.
e100aadc 228fabi-version=
2e9da478 229Common Joined UInteger Var(flag_abi_version) Init(2)
e100aadc 230
ecdb6d1a 231falign-functions
2e9da478 232Common Report Var(align_functions,0)
72528c71 233Align the start of functions
ecdb6d1a 234
941a4893 235falign-functions=
236Common RejectNegative Joined UInteger
237
ecdb6d1a 238falign-jumps
2e9da478 239Common Report Var(align_jumps,0)
72528c71 240Align labels which are only reached by jumping
ecdb6d1a 241
941a4893 242falign-jumps=
243Common RejectNegative Joined UInteger
244
ecdb6d1a 245falign-labels
2e9da478 246Common Report Var(align_labels,0)
72528c71 247Align all labels
ecdb6d1a 248
941a4893 249falign-labels=
250Common RejectNegative Joined UInteger
251
ecdb6d1a 252falign-loops
2e9da478 253Common Report Var(align_loops)
72528c71 254Align the start of loops
ecdb6d1a 255
941a4893 256falign-loops=
257Common RejectNegative Joined UInteger
258
82a16202 259; This flag is only tested if alias checking is enabled.
260; 0 if pointer arguments may alias each other. True in C.
261; 1 if pointer arguments may not alias each other but may alias
262; global variables.
263; 2 if pointer arguments may not alias each other and may not
5ff22aea 264; alias global variables.
265; 3 if pointer arguments may not alias anything. True in Fortran.
266; Set by the front end.
ecdb6d1a 267fargument-alias
2e9da478 268Common Report Var(flag_argument_noalias,0)
72528c71 269Specify that arguments may alias each other and globals
ecdb6d1a 270
271fargument-noalias
2e9da478 272Common Report Var(flag_argument_noalias,1) VarExists
72528c71 273Assume arguments may alias globals but not each other
ecdb6d1a 274
275fargument-noalias-global
2e9da478 276Common Report Var(flag_argument_noalias,2) VarExists
72528c71 277Assume arguments alias neither each other nor globals
ecdb6d1a 278
5ff22aea 279fargument-noalias-anything
280Common Report Var(flag_argument_noalias,3) VarExists
281Assume arguments alias no other storage
282
ecdb6d1a 283fasynchronous-unwind-tables
2e9da478 284Common Report Var(flag_asynchronous_unwind_tables)
72528c71 285Generate unwind tables that are exact at each instruction boundary
ecdb6d1a 286
82a16202 287; -fcheck-bounds causes gcc to generate array bounds checks.
288; For C, C++ and ObjC: defaults off.
289; For Java: defaults to on.
290; For Fortran: defaults to off.
ecdb6d1a 291fbounds-check
2e9da478 292Common Report Var(flag_bounds_check)
72528c71 293Generate code to check bounds before indexing arrays
ecdb6d1a 294
295fbranch-count-reg
2e9da478 296Common Report Var(flag_branch_on_count_reg) Init(1)
72528c71 297Replace add, compare, branch with branch on count register
ecdb6d1a 298
299fbranch-probabilities
2e9da478 300Common Report Var(flag_branch_probabilities)
72528c71 301Use profiling information for branch probabilities
ecdb6d1a 302
1e06725a 303fbranch-target-load-optimize
2e9da478 304Common Report Var(flag_branch_target_load_optimize)
72528c71 305Perform branch target load optimization before prologue / epilogue threading
1e06725a 306
307fbranch-target-load-optimize2
2e9da478 308Common Report Var(flag_branch_target_load_optimize2)
72528c71 309Perform branch target load optimization after prologue / epilogue threading
1e06725a 310
08d163a9 311fbtr-bb-exclusive
2e9da478 312Common Report Var(flag_btr_bb_exclusive)
08d163a9 313Restrict target load migration not to re-use registers in any basic block
314
941a4893 315fcall-saved-
316Common Joined RejectNegative
53b8e5c1 317-fcall-saved-<register> Mark <register> as being preserved across functions
941a4893 318
319fcall-used-
320Common Joined RejectNegative
53b8e5c1 321-fcall-used-<register> Mark <register> as being corrupted by function calls
941a4893 322
82a16202 323; Nonzero for -fcaller-saves: allocate values in regs that need to
324; be saved across function calls, if that produces overall better code.
325; Optional now, so people can test it.
1e06725a 326fcaller-saves
2e9da478 327Common Report Var(flag_caller_saves)
72528c71 328Save registers around function calls
1e06725a 329
ecdb6d1a 330fcommon
2e9da478 331Common Report Var(flag_no_common,0)
72528c71 332Do not put uninitialized globals in the common section
ecdb6d1a 333
334fcprop-registers
2e9da478 335Common Report Var(flag_cprop_registers)
72528c71 336Perform a register copy-propagation optimization pass
ecdb6d1a 337
1e06725a 338fcrossjumping
2e9da478 339Common Report Var(flag_crossjumping)
72528c71 340Perform cross-jumping optimization
1e06725a 341
342fcse-follow-jumps
2e9da478 343Common Report Var(flag_cse_follow_jumps)
72528c71 344When running CSE, follow jumps to their targets
1e06725a 345
346fcse-skip-blocks
2e9da478 347Common Report Var(flag_cse_skip_blocks)
72528c71 348When running CSE, follow conditional jumps
1e06725a 349
45b9d334 350fcx-limited-range
351Common Report Var(flag_cx_limited_range)
352Omit range reduction step when performing complex division
353
ecdb6d1a 354fdata-sections
2e9da478 355Common Report Var(flag_data_sections)
72528c71 356Place data items into their own section
ecdb6d1a 357
82a16202 358; Nonzero for -fdefer-pop: don't pop args after each function call
359; instead save them up to pop many calls' args with one insns.
1e06725a 360fdefer-pop
2e9da478 361Common Report Var(flag_defer_pop)
72528c71 362Defer popping functions args from stack until later
1e06725a 363
364fdelayed-branch
2e9da478 365Common Report Var(flag_delayed_branch)
72528c71 366Attempt to fill delay slots of branch instructions
1e06725a 367
368fdelete-null-pointer-checks
2e9da478 369Common Report Var(flag_delete_null_pointer_checks)
72528c71 370Delete useless null pointer checks
1e06725a 371
372fdiagnostics-show-location=
373Common Joined RejectNegative
53b8e5c1 374-fdiagnostics-show-location=[once|every-line] How often to emit source location at the beginning of line-wrapped diagnostics
1e06725a 375
efb9d9ee 376fdiagnostics-show-option
b0932b2f 377Common
3284a242 378Amend appropriate diagnostic messages with the command line option that controls them
efb9d9ee 379
4ee9c684 380fdump-
381Common Joined RejectNegative
382-fdump-<type> Dump various compiler internals to a file
383
969239ad 384fdump-noaddr
385Common Report Var(flag_dump_noaddr)
386Suppress output of addresses in debugging dumps
387
ecdb6d1a 388fdump-unnumbered
2e9da478 389Common Report Var(flag_dump_unnumbered) VarExists
969239ad 390Suppress output of instruction numbers, line number notes and addresses in debugging dumps
ecdb6d1a 391
f1aa280c 392fearly-inlining
393Common Report Var(flag_early_inlining) Init(1)
394Perform early inlining
395
1e06725a 396feliminate-dwarf2-dups
2e9da478 397Common Report Var(flag_eliminate_dwarf2_dups)
72528c71 398Perform DWARF2 duplicate elimination
1e06725a 399
262444a6 400feliminate-unused-debug-symbols
2e9da478 401Common Report Var(flag_debug_only_used_symbols)
72528c71 402Perform unused type elimination in debug info
262444a6 403
1e06725a 404feliminate-unused-debug-types
2e9da478 405Common Report Var(flag_eliminate_unused_debug_types) Init(1)
72528c71 406Perform unused type elimination in debug info
1e06725a 407
0c573f98 408femit-class-debug-always
409Common Report Var(flag_emit_class_debug_always) Init(1)
410Do not suppress C++ class debug information.
411
ecdb6d1a 412fexceptions
2e9da478 413Common Report Var(flag_exceptions)
72528c71 414Enable exception handling
ecdb6d1a 415
1e06725a 416fexpensive-optimizations
2e9da478 417Common Report Var(flag_expensive_optimizations)
72528c71 418Perform a number of minor, expensive optimizations
1e06725a 419
941a4893 420ffast-math
421Common
422
ecdb6d1a 423ffinite-math-only
2e9da478 424Common Report Var(flag_finite_math_only)
72528c71 425Assume no NaNs or infinities are generated
ecdb6d1a 426
941a4893 427ffixed-
428Common Joined RejectNegative
53b8e5c1 429-ffixed-<register> Mark <register> as being unavailable to the compiler
941a4893 430
1e06725a 431ffloat-store
2e9da478 432Common Report Var(flag_float_store)
82a16202 433Don't allocate floats and doubles in extended-precision registers
1e06725a 434
82a16202 435; Nonzero for -fforce-addr: load memory address into a register before
436; reference to memory. This makes better cse but slower compilation.
1e06725a 437fforce-addr
2e9da478 438Common Report Var(flag_force_addr)
72528c71 439Copy memory address constants into registers before use
1e06725a 440
82a16202 441; Nonzero for -fforce-mem: load memory value into a register
442; before arithmetic on it. This makes better cse but slower compilation.
1e06725a 443fforce-mem
2e9da478 444Common Report Var(flag_force_mem)
72528c71 445Copy memory operands into registers before use
1e06725a 446
82a16202 447; Nonzero means don't put addresses of constant functions in registers.
448; Used for compiling the Unix kernel, where strange substitutions are
449; done on the assembly output.
1e06725a 450ffunction-cse
2e9da478 451Common Report Var(flag_no_function_cse,0)
72528c71 452Allow function addresses to be held in registers
1e06725a 453
ecdb6d1a 454ffunction-sections
2e9da478 455Common Report Var(flag_function_sections)
72528c71 456Place each function into its own section
ecdb6d1a 457
1e06725a 458fgcse
2e9da478 459Common Report Var(flag_gcse)
72528c71 460Perform global common subexpression elimination
1e06725a 461
462fgcse-lm
2e9da478 463Common Report Var(flag_gcse_lm) Init(1)
72528c71 464Perform enhanced load motion during global common subexpression elimination
1e06725a 465
466fgcse-sm
62434574 467Common Report Var(flag_gcse_sm) Init(0)
72528c71 468Perform store motion after global common subexpression elimination
1e06725a 469
5c47e414 470fgcse-las
62434574 471Common Report Var(flag_gcse_las) Init(0)
839f8415 472Perform redundant load after store elimination in global common subexpression
473elimination
474
475fgcse-after-reload
868e8f12 476Common Report Var(flag_gcse_after_reload)
839f8415 477Perform global common subexpression elimination after register allocation
3284a242 478has finished
5c47e414 479
ecdb6d1a 480fguess-branch-probability
2e9da478 481Common Report Var(flag_guess_branch_prob)
72528c71 482Enable guessing of branch probabilities
ecdb6d1a 483
82a16202 484; Nonzero means ignore `#ident' directives. 0 means handle them.
485; Generate position-independent code for executables if possible
486; On SVR4 targets, it also controls whether or not to emit a
487; string identifying the compiler.
ecdb6d1a 488fident
2e9da478 489Common Report Var(flag_no_ident,0)
72528c71 490Process #ident directives
ecdb6d1a 491
1e06725a 492fif-conversion
2e9da478 493Common Report Var(flag_if_conversion)
72528c71 494Perform conversion of conditional jumps to branchless equivalents
1e06725a 495
496fif-conversion2
2e9da478 497Common Report Var(flag_if_conversion2)
72528c71 498Perform conversion of conditional jumps to conditional execution
1e06725a 499
82a16202 500; -finhibit-size-directive inhibits output of .size for ELF.
501; This is used only for compiling crtstuff.c,
502; and it may be extended to other effects
503; needed for crtstuff.c on other systems.
ecdb6d1a 504finhibit-size-directive
2e9da478 505Common Report Var(flag_inhibit_size_directive)
72528c71 506Do not generate .size directives
ecdb6d1a 507
82a16202 508; Nonzero means that functions declared `inline' will be treated
509; as `static'. Prevents generation of zillions of copies of unused
510; static inline functions; instead, `inlines' are written out
511; only when actually used. Used in conjunction with -g. Also
512; does the right thing with #pragma interface.
1e06725a 513finline
2e9da478 514Common Report Var(flag_no_inline,0) Init(2)
72528c71 515Pay attention to the \"inline\" keyword
1e06725a 516
517finline-functions
2e9da478 518Common Report Var(flag_inline_functions)
72528c71 519Integrate simple functions into their callers
1e06725a 520
f1aa280c 521finline-functions-called-once
522Common Report Var(flag_inline_functions_called_once) Init(1)
523Integrate functions called once into their callers
9e0baf4d 524
39470ac3 525finline-limit-
526Common RejectNegative Joined UInteger
527
528finline-limit=
529Common RejectNegative Joined UInteger
53b8e5c1 530-finline-limit=<number> Limit the size of inlined functions to <number>
39470ac3 531
ecdb6d1a 532finstrument-functions
2e9da478 533Common Report Var(flag_instrument_function_entry_exit)
72528c71 534Instrument function entry and exit with profiling calls
ecdb6d1a 535
a17a73c7 536fipa-cp
537Common Report Var(flag_ipa_cp)
538Perform Interprocedural constant propagation
539
f7d118a9 540fipa-pure-const
541Common Report Var(flag_ipa_pure_const) Init(0)
542Discover pure and const functions
543
bdf4f142 544fipa-pta
545Common Report Var(flag_ipa_pta) Init(0)
546Perform interprocedural points-to analysis
547
f7d118a9 548fipa-reference
549Common Report Var(flag_ipa_reference) Init(0)
550Discover readonly and non addressable static variables
551
552fipa-type-escape
553Common Report Var(flag_ipa_type_escape) Init(0)
554Type based escape and alias analysis
555
dec41e98 556fivopts
557Common Report Var(flag_ivopts) Init(1)
558Optimize induction variables on trees
559
51d8e657 560fjump-tables
561Common Var(flag_jump_tables) Init(1)
562Use jump tables for sufficiently large switch statements
563
1e06725a 564fkeep-inline-functions
2e9da478 565Common Report Var(flag_keep_inline_functions)
72528c71 566Generate code for functions even if they are fully inlined
1e06725a 567
568fkeep-static-consts
2e9da478 569Common Report Var(flag_keep_static_consts) Init(1)
72528c71 570Emit static const variables even if they are not used
1e06725a 571
ecdb6d1a 572fleading-underscore
2e9da478 573Common Report Var(flag_leading_underscore) Init(-1)
72528c71 574Give external symbols a leading underscore
ecdb6d1a 575
4f87b914 576floop-optimize
577Common
334ec2d8 578Does nothing. Preserved for backward compatibility.
4f87b914 579
ecdb6d1a 580fmath-errno
2e9da478 581Common Report Var(flag_errno_math) Init(1)
72528c71 582Set errno after built-in math functions
ecdb6d1a 583
584fmem-report
2e9da478 585Common Report Var(mem_report)
72528c71 586Report on permanent memory allocation
ecdb6d1a 587
82a16202 588; This will attempt to merge constant section constants, if 1 only
589; string constants and constants from constant pool, if 2 also constant
590; variables.
ecdb6d1a 591fmerge-all-constants
2e9da478 592Common Report Var(flag_merge_constants,2) Init(1)
72528c71 593Attempt to merge identical constants and constant variables
ecdb6d1a 594
595fmerge-constants
2e9da478 596Common Report Var(flag_merge_constants,1) VarExists
72528c71 597Attempt to merge identical constants across compilation units
ecdb6d1a 598
1e06725a 599fmessage-length=
600Common RejectNegative Joined UInteger
53b8e5c1 601-fmessage-length=<number> Limit diagnostics to <number> characters per line. 0 suppresses line-wrapping
1e06725a 602
406a73e7 603fmodulo-sched
2e9da478 604Common Report Var(flag_modulo_sched)
406a73e7 605Perform SMS based modulo scheduling before the first scheduling pass
606
3a0ecac2 607fmove-loop-invariants
a82484af 608Common Report Var(flag_move_loop_invariants) Init(1)
3a0ecac2 609Move loop invariant computations out of loops
610
4ee9c684 611fmudflap
2e9da478 612Common RejectNegative Report Var(flag_mudflap)
3284a242 613Add mudflap bounds-checking instrumentation for single-threaded program
4ee9c684 614
615fmudflapth
c1d36cca 616Common RejectNegative Report VarExists Var(flag_mudflap,2)
3284a242 617Add mudflap bounds-checking instrumentation for multi-threaded program
4ee9c684 618
619fmudflapir
2e9da478 620Common RejectNegative Report Var(flag_mudflap_ignore_reads)
3284a242 621Ignore read operations when inserting mudflap instrumentation
4ee9c684 622
f045d41d 623freschedule-modulo-scheduled-loops
624Common Report Var(flag_resched_modulo_sched)
625Enable/Disable the traditional scheduling in loops that already passed modulo scheduling
626
ecdb6d1a 627fnon-call-exceptions
2e9da478 628Common Report Var(flag_non_call_exceptions)
72528c71 629Support synchronous non-call exceptions
ecdb6d1a 630
1e06725a 631fomit-frame-pointer
2e9da478 632Common Report Var(flag_omit_frame_pointer)
72528c71 633When possible do not generate stack frames
1e06725a 634
ecdb6d1a 635foptimize-register-move
2e9da478 636Common Report Var(flag_regmove)
72528c71 637Do the full register move optimization pass
ecdb6d1a 638
1e06725a 639foptimize-sibling-calls
2e9da478 640Common Report Var(flag_optimize_sibling_calls)
72528c71 641Optimize sibling and tail recursive calls
1e06725a 642
ecdb6d1a 643fpack-struct
2e9da478 644Common Report Var(flag_pack_struct)
72528c71 645Pack structure members together without holes
ecdb6d1a 646
6b5553e5 647fpack-struct=
648Common RejectNegative Joined UInteger
649-fpack-struct=<number> Set initial maximum structure member alignment
650
1e06725a 651fpcc-struct-return
2e9da478 652Common Report Var(flag_pcc_struct_return,1) VarExists
72528c71 653Return small aggregates in memory, not registers
1e06725a 654
655fpeel-loops
2e9da478 656Common Report Var(flag_peel_loops)
72528c71 657Perform loop peeling
1e06725a 658
659fpeephole
2e9da478 660Common Report Var(flag_no_peephole,0)
72528c71 661Enable machine specific peephole optimizations
1e06725a 662
ecdb6d1a 663fpeephole2
2e9da478 664Common Report Var(flag_peephole2)
72528c71 665Enable an RTL peephole pass before sched2
ecdb6d1a 666
82a16202 667fPIC
668Common Report Var(flag_pic,2)
669Generate position-independent code if possible (large mode)
670
671fPIE
672Common Report Var(flag_pie,2)
673Generate position-independent code for executables if possible (large mode)
674
ecdb6d1a 675fpic
2e9da478 676Common Report Var(flag_pic,1) VarExists
82a16202 677Generate position-independent code if possible (small mode)
ecdb6d1a 678
679fpie
2e9da478 680Common Report Var(flag_pie,1) VarExists
82a16202 681Generate position-independent code for executables if possible (small mode)
ecdb6d1a 682
1e06725a 683fprefetch-loop-arrays
4f87b914 684Common Report Var(flag_prefetch_loop_arrays)
72528c71 685Generate prefetch instructions, if available, for arrays in loops
1e06725a 686
ecdb6d1a 687fprofile
2e9da478 688Common Report Var(profile_flag)
72528c71 689Enable basic program profiling code
ecdb6d1a 690
691fprofile-arcs
2e9da478 692Common Report Var(profile_arc_flag)
72528c71 693Insert arc-based program profiling code
ecdb6d1a 694
7dea76ba 695fprofile-generate
696Common
697Enable common options for generating profile info for profile feedback directed optimizations
698
699fprofile-use
700Common
701Enable common options for performing profile feedback directed optimizations
702
1c6a7b8c 703fprofile-values
2e9da478 704Common Report Var(flag_profile_values)
1c6a7b8c 705Insert code to profile values of expressions
706
1e06725a 707frandom-seed
708Common
709
710frandom-seed=
711Common Joined RejectNegative
53b8e5c1 712-frandom-seed=<string> Make compile reproducible using <string>
1e06725a 713
1e06725a 714freg-struct-return
2e9da478 715Common Report Var(flag_pcc_struct_return,0) VarExists
72528c71 716Return small aggregates in registers
1e06725a 717
ecdb6d1a 718fregmove
2e9da478 719Common Report Var(flag_regmove)
72528c71 720Enables a register move optimization
ecdb6d1a 721
722frename-registers
472cd78a 723Common Report Var(flag_rename_registers) Init(2)
72528c71 724Perform a register renaming optimization pass
ecdb6d1a 725
726freorder-blocks
2e9da478 727Common Report Var(flag_reorder_blocks)
72528c71 728Reorder basic blocks to improve code placement
ecdb6d1a 729
4f18499c 730freorder-blocks-and-partition
2e9da478 731Common Report Var(flag_reorder_blocks_and_partition)
4f18499c 732Reorder basic blocks and partition into hot and cold sections
733
ecdb6d1a 734freorder-functions
2e9da478 735Common Report Var(flag_reorder_functions)
72528c71 736Reorder functions to improve code placement
ecdb6d1a 737
1e06725a 738frerun-cse-after-loop
868e8f12 739Common Report Var(flag_rerun_cse_after_loop) Init(2)
72528c71 740Add a common subexpression elimination pass after loop optimizations
1e06725a 741
4f87b914 742frerun-loop-opt
743Common
334ec2d8 744Does nothing. Preserved for backward compatibility.
4f87b914 745
5466f589 746frounding-math
2e9da478 747Common Report Var(flag_rounding_math)
5466f589 748Disable optimizations that assume default FP rounding behavior
749
ecdb6d1a 750fsched-interblock
2e9da478 751Common Report Var(flag_schedule_interblock) Init(1)
72528c71 752Enable scheduling across basic blocks
ecdb6d1a 753
754fsched-spec
2e9da478 755Common Report Var(flag_schedule_speculative) Init(1)
72528c71 756Allow speculative motion of non-loads
ecdb6d1a 757
758fsched-spec-load
2e9da478 759Common Report Var(flag_schedule_speculative_load)
72528c71 760Allow speculative motion of some loads
ecdb6d1a 761
762fsched-spec-load-dangerous
2e9da478 763Common Report Var(flag_schedule_speculative_load_dangerous)
72528c71 764Allow speculative motion of more loads
ecdb6d1a 765
1e06725a 766fsched-verbose=
767Common RejectNegative Joined
53b8e5c1 768-fsched-verbose=<number> Set the verbosity level of the scheduler
1e06725a 769
ecdb6d1a 770fsched2-use-superblocks
2e9da478 771Common Report Var(flag_sched2_use_superblocks)
72528c71 772If scheduling post reload, do superblock scheduling
ecdb6d1a 773
774fsched2-use-traces
2e9da478 775Common Report Var(flag_sched2_use_traces)
72528c71 776If scheduling post reload, do trace scheduling
ecdb6d1a 777
1e06725a 778fschedule-insns
2e9da478 779Common Report Var(flag_schedule_insns)
72528c71 780Reschedule instructions before register allocation
1e06725a 781
782fschedule-insns2
2e9da478 783Common Report Var(flag_schedule_insns_after_reload)
72528c71 784Reschedule instructions after register allocation
1e06725a 785
82a16202 786; sched_stalled_insns means that insns can be moved prematurely from the queue
787; of stalled insns into the ready list.
52c4b43f 788fsched-stalled-insns
2e9da478 789Common Report Var(flag_sched_stalled_insns)
52c4b43f 790Allow premature scheduling of queued insns
791
792fsched-stalled-insns=
a0c938f0 793Common RejectNegative Joined UInteger
98b93ebb 794-fsched-stalled-insns=<number> Set number of queued insns that can be prematurely scheduled
52c4b43f 795
82a16202 796; sched_stalled_insns_dep controls how many recently scheduled cycles will
797; be examined for a dependency on a stalled insn that is candidate for
798; premature removal from the queue of stalled insns into the ready list (has
799; an effect only if the flag 'sched_stalled_insns' is set).
52c4b43f 800fsched-stalled-insns-dep
2e9da478 801Common Report Var(flag_sched_stalled_insns_dep,1) Init(1)
52c4b43f 802Set dependence distance checking in premature scheduling of queued insns
803
804fsched-stalled-insns-dep=
805Common RejectNegative Joined UInteger
98b93ebb 806-fsched-stalled-insns-dep=<number> Set dependence distance checking in premature scheduling of queued insns
52c4b43f 807
f2d0e9f1 808fsection-anchors
809Common Report Var(flag_section_anchors)
810Access data in the same section from shared anchor points
811
89140b26 812frtl-abstract-sequences
813Common Report Var(flag_rtl_seqabstr)
814Perform sequence abstraction optimization on RTL
815
2b74c150 816fsee
817Common Report Var(flag_see) Init(0)
818Eliminate redundant sign extensions using LCM.
819
5fd4bf3b 820fshow-column
821Common C ObjC C++ ObjC++ Report Var(flag_show_column) Init(1)
3284a242 822Show column numbers in diagnostics, when available. Default on
5fd4bf3b 823
ecdb6d1a 824fsignaling-nans
2e9da478 825Common Report Var(flag_signaling_nans)
72528c71 826Disable optimizations observable by IEEE signaling NaNs
ecdb6d1a 827
828fsingle-precision-constant
2e9da478 829Common Report Var(flag_single_precision_constant)
72528c71 830Convert floating point constants to single precision constants
ecdb6d1a 831
a9989fb4 832fsplit-ivs-in-unroller
833Common Report Var(flag_split_ivs_in_unroller) Init(1)
3284a242 834Split lifetimes of induction variables when loops are unrolled
a9989fb4 835
375bb675 836fvariable-expansion-in-unroller
a0c938f0 837Common Report Var(flag_variable_expansion_in_unroller)
3284a242 838Apply variable expansion when loops are unrolled
375bb675 839
82a16202 840; Emit code to probe the stack, to help detect stack overflow; also
841; may cause large objects to be allocated dynamically.
ecdb6d1a 842fstack-check
2e9da478 843Common Report Var(flag_stack_check)
72528c71 844Insert stack checking code into the program
ecdb6d1a 845
1e06725a 846fstack-limit
847Common
848
941a4893 849fstack-limit-register=
850Common RejectNegative Joined
53b8e5c1 851-fstack-limit-register=<register> Trap if the stack goes past <register>
941a4893 852
853fstack-limit-symbol=
854Common RejectNegative Joined
53b8e5c1 855-fstack-limit-symbol=<name> Trap if the stack goes past symbol <name>
941a4893 856
f1a0edff 857fstack-protector
858Common Report Var(flag_stack_protect, 1)
859Use propolice as a stack protection method
860
861fstack-protector-all
862Common Report RejectNegative Var(flag_stack_protect, 2) VarExists
863Use a stack protection method for every function
864
1e06725a 865fstrength-reduce
4f87b914 866Common
334ec2d8 867Does nothing. Preserved for backward compatibility.
1e06725a 868
82a16202 869; Nonzero if we should do (language-dependent) alias analysis.
870; Typically, this analysis will assume that expressions of certain
871; types do not alias expressions of certain other types. Only used
872; if alias analysis (in general) is enabled.
ecdb6d1a 873fstrict-aliasing
2e9da478 874Common Report Var(flag_strict_aliasing)
72528c71 875Assume strict aliasing rules apply
ecdb6d1a 876
1e06725a 877fsyntax-only
2e9da478 878Common Report Var(flag_syntax_only)
72528c71 879Check for syntax errors, then stop
1e06725a 880
ecdb6d1a 881ftest-coverage
2e9da478 882Common Report Var(flag_test_coverage)
72528c71 883Create data files needed by \"gcov\"
ecdb6d1a 884
1e06725a 885fthread-jumps
2e9da478 886Common Report Var(flag_thread_jumps)
72528c71 887Perform jump threading optimizations
1e06725a 888
ecdb6d1a 889ftime-report
2e9da478 890Common Report Var(time_report)
72528c71 891Report the time taken by each compiler pass
ecdb6d1a 892
941a4893 893ftls-model=
894Common Joined RejectNegative
53b8e5c1 895-ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec] Set the default thread-local storage code generation model
941a4893 896
56af936e 897ftoplevel-reorder
898Common Report Var(flag_toplevel_reorder) Init(1)
899Reorder top level functions, variables, and asms
900
1e06725a 901ftracer
2e9da478 902Common Report Var(flag_tracer)
72528c71 903Perform superblock formation via tail duplication
1e06725a 904
82a16202 905; Zero means that floating-point math operations cannot generate a
906; (user-visible) trap. This is the case, for example, in nonstop
907; IEEE 754 arithmetic.
ecdb6d1a 908ftrapping-math
a619b050 909Common Report Var(flag_trapping_math) Init(1)
72528c71 910Assume floating-point operations can trap
ecdb6d1a 911
912ftrapv
2e9da478 913Common Report Var(flag_trapv)
72528c71 914Trap for signed overflow in addition, subtraction and multiplication
ecdb6d1a 915
4ee9c684 916ftree-ccp
2e9da478 917Common Report Var(flag_tree_ccp)
4ee9c684 918Enable SSA-CCP optimization on trees
919
88dbf20f 920ftree-store-ccp
921Common Report Var(flag_tree_store_ccp)
922Enable SSA-CCP optimization for stores and loads
923
4ee9c684 924ftree-ch
2e9da478 925Common Report Var(flag_tree_ch)
4ee9c684 926Enable loop header copying on trees
927
928ftree-combine-temps
2e9da478 929Common Report Var(flag_tree_combine_temps)
4ee9c684 930Coalesce memory temporaries in the SSA->normal pass
931
932ftree-copyrename
2e9da478 933Common Report Var(flag_tree_copyrename)
3284a242 934Replace SSA temporaries with better names in copies
4ee9c684 935
88dbf20f 936ftree-copy-prop
937Common Report Var(flag_tree_copy_prop)
938Enable copy propagation on trees
939
940ftree-store-copy-prop
941Common Report Var(flag_tree_store_copy_prop)
942Enable copy propagation for stores and loads
943
4ee9c684 944ftree-dce
2e9da478 945Common Report Var(flag_tree_dce)
4ee9c684 946Enable SSA dead code elimination optimization on trees
947
948ftree-dominator-opts
2e9da478 949Common Report Var(flag_tree_dom)
4ee9c684 950Enable dominator optimizations
951
952ftree-dse
2e9da478 953Common Report Var(flag_tree_dse)
4ee9c684 954Enable dead store elimination
955
591c2a30 956ftree-fre
957Common Report Var(flag_tree_fre)
958Enable Full Redundancy Elimination (FRE) on trees
959
41b5cc78 960ftree-loop-im
961Common Report Var(flag_tree_loop_im) Init(1)
7d23383d 962Enable loop invariant motion on trees
963
60cfcb79 964ftree-loop-linear
965Common Report Var(flag_tree_loop_linear)
966Enable linear loop transforms on trees
967
41b5cc78 968ftree-loop-ivcanon
08162157 969Common Report Var(flag_tree_loop_ivcanon) Init(1)
41b5cc78 970Create canonical induction variables in loops
971
dcb9eccb 972ftree-loop-optimize
973Common Report Var(flag_tree_loop_optimize) Init(1)
974Enable loop optimizations on tree level
975
4ee9c684 976ftree-pre
2e9da478 977Common Report Var(flag_tree_pre)
4ee9c684 978Enable SSA-PRE optimization on trees
979
2be14d8b 980ftree-salias
981Common Report Var(flag_tree_salias)
982Perform structural alias analysis
983
5e733b02 984ftree-sink
985Common Report Var(flag_tree_sink)
986Enable SSA code sinking on trees
987
4ee9c684 988ftree-sra
2e9da478 989Common Report Var(flag_tree_sra)
4ee9c684 990Perform scalar replacement of aggregates
991
992ftree-ter
2e9da478 993Common Report Var(flag_tree_ter)
4ee9c684 994Replace temporary expressions in the SSA->normal pass
995
996ftree-lrs
2e9da478 997Common Report Var(flag_tree_live_range_split)
3284a242 998Perform live range splitting during the SSA->normal pass
4ee9c684 999
88dbf20f 1000ftree-vrp
1001Common Report Var(flag_tree_vrp) Init(0)
1002Perform Value Range Propagation on trees
1003
1e06725a 1004funit-at-a-time
2e9da478 1005Common Report Var(flag_unit_at_a_time)
72528c71 1006Compile whole compilation unit at a time
1e06725a 1007
1008funroll-loops
2e9da478 1009Common Report Var(flag_unroll_loops)
72528c71 1010Perform loop unrolling when iteration count is known
1e06725a 1011
1012funroll-all-loops
2e9da478 1013Common Report Var(flag_unroll_all_loops)
72528c71 1014Perform loop unrolling for all loops
1e06725a 1015
7e3cc681 1016; Nonzero means that loop optimizer may assume that the induction variables
1017; that control loops do not overflow and that the loops with nontrivial
1018; exit condition are not infinite
1019funsafe-loop-optimizations
1020Common Report Var(flag_unsafe_loop_optimizations)
1021Allow loop optimizations to assume that the loops behave in normal way
1022
82a16202 1023; Nonzero means that unsafe floating-point math optimizations are allowed
1024; for the sake of speed. IEEE compliance is not guaranteed, and operations
1025; are allowed to assume that their arguments and results are "normal"
1026; (e.g., nonnegative for SQRT).
ecdb6d1a 1027funsafe-math-optimizations
2e9da478 1028Common Report Var(flag_unsafe_math_optimizations)
72528c71 1029Allow math optimizations that may violate IEEE or ISO standards
ecdb6d1a 1030
1e06725a 1031funswitch-loops
2e9da478 1032Common Report Var(flag_unswitch_loops)
72528c71 1033Perform loop unswitching
1e06725a 1034
ecdb6d1a 1035funwind-tables
2e9da478 1036Common Report Var(flag_unwind_tables)
72528c71 1037Just generate unwind tables for exception handling
ecdb6d1a 1038
5923a5e7 1039fvar-tracking
2e9da478 1040Common Report Var(flag_var_tracking) VarExists
5923a5e7 1041Perform variable tracking
1042
c91e8223 1043ftree-vectorize
1044Common Report Var(flag_tree_vectorize)
1045Enable loop vectorization on trees
1046
25e3c2e8 1047ftree-vect-loop-version
1048Common Report Var(flag_tree_vect_loop_version) Init(1)
1049Enable loop versioning when doing loop vectorization on trees
1050
459e8543 1051ftree-vectorizer-verbose=
1052Common RejectNegative Joined
98b93ebb 1053-ftree-vectorizer-verbose=<number> Set the verbosity level of the vectorizer
459e8543 1054
82a16202 1055; -fverbose-asm causes extra commentary information to be produced in
1056; the generated assembly code (to make it more readable). This option
1057; is generally only of use to those who actually need to read the
1058; generated assembly code (perhaps while debugging the compiler itself).
1059; -fno-verbose-asm, the default, causes the extra information
1060; to not be added and is useful when comparing two assembler files.
ecdb6d1a 1061fverbose-asm
2e9da478 1062Common Report Var(flag_verbose_asm)
72528c71 1063Add extra commentary to assembler output
ecdb6d1a 1064
b212f378 1065fvisibility=
1066Common Joined RejectNegative
1067-fvisibility=[default|internal|hidden|protected] Set the default symbol visibility
1068
1069
1c6a7b8c 1070fvpt
2e9da478 1071Common Report Var(flag_value_profile_transformations)
1c6a7b8c 1072Use expression value profiles in optimizations
1073
eeb4a70e 1074fweb
472cd78a 1075Common Report Var(flag_web) Init(2)
eeb4a70e 1076Construct webs and split unrelated uses of single variable
1077
62eec3b4 1078fwhole-program
1079Common Report Var(flag_whole_program) Init(0)
1080Perform whole program optimizations
1081
ecdb6d1a 1082fwrapv
2e9da478 1083Common Report Var(flag_wrapv)
72528c71 1084Assume signed arithmetic overflow wraps around
ecdb6d1a 1085
ecdb6d1a 1086fzero-initialized-in-bss
2e9da478 1087Common Report Var(flag_zero_initialized_in_bss) Init(1)
72528c71 1088Put zero initialized data in the bss section
ecdb6d1a 1089
6f2f567f 1090g
1091Common JoinedOrMissing
b0e56fb1 1092Generate debug information in default format
1093
1094gcoff
a1baa5f1 1095Common JoinedOrMissing Negative(gdwarf-2)
b0e56fb1 1096Generate debug information in COFF format
1097
b0e56fb1 1098gdwarf-2
a1baa5f1 1099Common JoinedOrMissing Negative(gstabs)
b0e56fb1 1100Generate debug information in DWARF v2 format
1101
1102ggdb
1103Common JoinedOrMissing
1104Generate debug information in default extended format
1105
1106gstabs
a1baa5f1 1107Common JoinedOrMissing Negative(gstabs+)
b0e56fb1 1108Generate debug information in STABS format
1109
1110gstabs+
a1baa5f1 1111Common JoinedOrMissing Negative(gvms)
b0e56fb1 1112Generate debug information in extended STABS format
1113
1114gvms
a1baa5f1 1115Common JoinedOrMissing Negative(gxcoff)
b0e56fb1 1116Generate debug information in VMS format
1117
1118gxcoff
a1baa5f1 1119Common JoinedOrMissing Negative(gxcoff+)
b0e56fb1 1120Generate debug information in XCOFF format
1121
1122gxcoff+
a1baa5f1 1123Common JoinedOrMissing Negative(gcoff)
b0e56fb1 1124Generate debug information in extended XCOFF format
6f2f567f 1125
e690b385 1126o
1127Common Joined Separate
53b8e5c1 1128-o <file> Place output into <file>
e690b385 1129
1130p
2e9da478 1131Common Var(profile_flag)
53b8e5c1 1132Enable function profiling
e690b385 1133
1134pedantic
2e9da478 1135Common Var(pedantic)
53b8e5c1 1136Issue warnings needed for strict compliance to the standard
e690b385 1137
1138pedantic-errors
1139Common
53b8e5c1 1140Like -pedantic but issue them as errors
e690b385 1141
3272db82 1142quiet
2e9da478 1143Common Var(quiet_flag)
53b8e5c1 1144Do not display functions compiled or elapsed time
3272db82 1145
e690b385 1146version
2e9da478 1147Common Var(version_flag)
53b8e5c1 1148Display the compiler's version
e690b385 1149
1150w
2e9da478 1151Common Var(inhibit_warnings)
53b8e5c1 1152Suppress warnings
e690b385 1153
3272db82 1154; This comment is to ensure we retain the blank line above.