OSDN Git Service

e46a27735bb218d1bcfd3f151e6feafdb230de13
[pf3gnuchains/gcc-fork.git] / gcc / common.opt
1 ; Options for the language- and target-independent parts of the compiler.
2
3 ; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
4 ; Free Software Foundation, Inc.
5 ;
6 ; This file is part of GCC.
7 ;
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
11 ; version.
12 ;
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
16 ; for more details.
17 ;
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/>.
21
22 ; See the GCC internals manual (options.texi) for a description of this file's format.
23
24 ; Please try to keep this file in ASCII collating order.
25
26 Variable
27 int target_flags
28
29 Variable
30 int optimize
31
32 Variable
33 int optimize_size
34
35 ; 0 means straightforward implementation of complex divide acceptable.
36 ; 1 means wide ranges of inputs must work for complex divide.
37 ; 2 means C99-like requirements for complex multiply and divide.
38 Variable
39 int flag_complex_method = 1
40
41 ; Nonzero if subexpressions must be evaluated from left-to-right.
42 Variable
43 int flag_evaluation_order = 0
44
45 ; Set the default region and algorithm for the integrated register
46 ; allocator.
47
48 Variable
49 enum ira_algorithm flag_ira_algorithm = IRA_ALGORITHM_CB
50
51 Variable
52 enum ira_region flag_ira_region = IRA_REGION_MIXED
53
54 ; Language specific warning pass for unused results.
55 Variable
56 bool flag_warn_unused_result = false
57
58 Variable
59 int *param_values
60
61 ; Floating-point contraction mode, fast by default.
62 Variable
63 enum fp_contract_mode flag_fp_contract_mode = FP_CONTRACT_FAST
64
65 ; The excess precision specified on the command line, or defaulted by
66 ; the front end.
67 Variable
68 enum excess_precision flag_excess_precision_cmdline = EXCESS_PRECISION_DEFAULT
69
70 ; Nonzero if we should write GIMPLE bytecode for link-time optimization.
71 Variable
72 int flag_generate_lto
73
74 ; True to warn about any objects definitions whose size is larger
75 ; than N bytes.  Also want about function definitions whose returned
76 ; values are larger than N bytes, where N is 'larger_than_size'.
77 Variable
78 bool warn_larger_than
79
80 Variable
81 HOST_WIDE_INT larger_than_size
82
83 ; True to warn about any function whose frame size is larger
84 ; than N bytes.
85 Variable
86 bool warn_frame_larger_than
87
88 Variable
89 HOST_WIDE_INT frame_larger_than_size
90
91 ; Nonzero means we should be saving declaration info into a .X file.
92 Variable
93 int flag_gen_aux_info = 0
94
95 ; Nonzero if we are compiling code for a shared library, zero for
96 ; executable.
97 Variable
98 int flag_shlib
99
100 ; The default visibility for all symbols (unless overridden).
101 Variable
102 enum symbol_visibility default_visibility = VISIBILITY_DEFAULT
103
104 ; Set to the default thread-local storage (tls) model to use.
105 Variable
106 enum tls_model flag_tls_default = TLS_MODEL_GLOBAL_DYNAMIC
107
108 ; These two are really VEC(char_p,heap) *.
109
110 Variable
111 void *flag_instrument_functions_exclude_functions
112
113 Variable
114 void *flag_instrument_functions_exclude_files
115
116 ; Generic structs (e.g. templates not explicitly specialized)
117 ; may not have a compilation unit associated with them, and so
118 ; may need to be treated differently from ordinary structs.
119 ;
120 ; Structs only handled by reference (indirectly), will also usually
121 ; not need as much debugging information.
122
123 Variable
124 enum debug_struct_file debug_struct_ordinary[DINFO_USAGE_NUM_ENUMS] = { DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY }
125
126 Variable
127 enum debug_struct_file debug_struct_generic[DINFO_USAGE_NUM_ENUMS] = { DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY }
128
129 ; True if we should exit after parsing options.
130 Variable
131 bool exit_after_options
132
133 ; Type(s) of debugging information we are producing (if any).  See
134 ; flag-types.h for the definitions of the different possible types of
135 ; debugging information.
136 Variable
137 enum debug_info_type write_symbols = NO_DEBUG
138
139 ; Level of debugging information we are producing.  See flag-types.h
140 ; for the definitions of the different possible levels.
141 Variable
142 enum debug_info_levels debug_info_level = DINFO_LEVEL_NONE
143
144 ; Nonzero means use GNU-only extensions in the generated symbolic
145 ; debugging information.  Currently, this only has an effect when
146 ; write_symbols is set to DBX_DEBUG, XCOFF_DEBUG, or DWARF_DEBUG.
147 Variable
148 bool use_gnu_debug_info_extensions
149
150 ; Original value of maximum field alignment in bytes, specified via
151 ; -fpack-struct=<value>.
152 Variable
153 unsigned int initial_max_fld_align = TARGET_DEFAULT_PACK_STRUCT
154
155 ; -dA causes debug commentary information to be produced in
156 ; the generated assembly code (to make it more readable).  This option
157 ; is generally only of use to those who actually need to read the
158 ; generated assembly code (perhaps while debugging the compiler itself).
159 ; Currently, this switch is only used by dwarf2out.c; however, it is intended
160 ; to be a catchall for printing debug information in the assembler file.
161 Variable
162 int flag_debug_asm
163
164 ; -dP causes the rtl to be emitted as a comment in assembly.
165 Variable
166 int flag_dump_rtl_in_asm
167
168 ; Whether -da was passed (used only in handle_common_deferred_options).
169 Variable
170 bool flag_dump_all_passed
171
172 ; Other flags saying which kinds of debugging dump have been requested.
173
174 Variable
175 int rtl_dump_and_exit
176
177 Variable
178 int flag_print_asm_name
179
180 Variable
181 enum graph_dump_types graph_dump_format = no_graph
182
183 ; Which options have been printed by --help.
184 Variable
185 char *help_printed
186
187 ; The number of columns for --help output.
188 Variable
189 unsigned int help_columns
190
191 ; Whether this options structure has been through finish_options
192 Variable
193 bool flag_opts_finished
194
195 ###
196 Driver
197
198 -assemble
199 Driver Alias(S)
200
201 -compile
202 Driver Alias(c)
203
204 -coverage
205 Driver Alias(coverage)
206
207 -debug
208 Common Alias(g)
209
210 -dump
211 Common Separate Alias(d)
212
213 -dump=
214 Common Joined Alias(d)
215
216 -dumpbase
217 Common Separate Alias(dumpbase)
218
219 -dumpdir
220 Common Separate Alias(dumpdir)
221
222 -entry
223 Driver Separate Alias(e)
224
225 -entry=
226 Driver Joined Alias(e)
227
228 -extra-warnings
229 Common Warning Alias(Wextra)
230
231 -for-assembler
232 Driver Separate Alias(Xassembler)
233
234 -for-assembler=
235 Driver JoinedOrMissing Alias(Xassembler)
236
237 -for-linker
238 Driver Separate Alias(Xlinker)
239
240 -for-linker=
241 Driver JoinedOrMissing Alias(Xlinker)
242
243 -force-link
244 Driver Separate Alias(u)
245
246 -force-link=
247 Driver Joined Alias(u)
248
249 -help
250 Common Driver Var(help_flag)
251 Display this information
252
253 -help=
254 Common Driver Report Joined
255 --help=<class>  Display descriptions of a specific class of options.  <class> is one or more of optimizers, target, warnings, undocumented, params
256
257 -language
258 Driver Separate Alias(x)
259
260 -language=
261 Driver Joined Alias(x)
262
263 -library-directory
264 Driver Separate Alias(L)
265
266 -library-directory=
267 Driver Joined Alias(L)
268
269 -no-canonical-prefixes
270 Driver Alias(no-canonical-prefixes)
271
272 -no-standard-libraries
273 Driver Alias(nostdlib)
274
275 -no-warnings
276 Common Alias(w)
277
278 -optimize
279 Common Alias(O)
280
281 -output
282 Common Driver Separate Alias(o) MissingArgError(missing filename after %qs)
283
284 -output=
285 Common Driver Joined Alias(o) MissingArgError(missing filename after %qs)
286
287 -pass-exit-codes
288 Driver Alias(pass-exit-codes)
289
290 -pedantic
291 Common Alias(pedantic)
292
293 -pedantic-errors
294 Common Alias(pedantic-errors)
295
296 -pie
297 Common Alias(pie)
298
299 -pipe
300 Driver Alias(pipe)
301
302 -prefix
303 Driver Separate Alias(B)
304
305 -prefix=
306 Driver JoinedOrMissing Alias(B)
307
308 -preprocess
309 Driver Alias(E)
310
311 -print-file-name
312 Driver Separate Alias(print-file-name=)
313
314 -print-file-name=
315 Driver JoinedOrMissing Alias(print-file-name=)
316
317 -print-libgcc-file-name
318 Driver Alias(print-libgcc-file-name)
319
320 -print-multi-directory
321 Driver Alias(print-multi-directory)
322
323 -print-multi-lib
324 Driver Alias(print-multi-lib)
325
326 -print-multi-os-directory
327 Driver Alias(print-multi-os-directory)
328
329 -print-prog-name
330 Driver Separate Alias(print-prog-name=)
331
332 -print-prog-name=
333 Driver JoinedOrMissing Alias(print-prog-name=)
334
335 -print-search-dirs
336 Driver Alias(print-search-dirs)
337
338 -print-sysroot
339 Driver Alias(print-sysroot)
340
341 -print-sysroot-headers-suffix
342 Driver Alias(print-sysroot-headers-suffix)
343
344 -profile
345 Common Alias(p)
346
347 -save-temps
348 Driver Alias(save-temps)
349
350 -shared
351 Common Alias(shared)
352
353 -specs
354 Driver Separate Alias(specs=)
355
356 -specs=
357 Driver Joined Alias(specs=)
358
359 -static
360 Driver Alias(static)
361
362 -symbolic
363 Driver Alias(symbolic)
364
365 -target-help
366 Common Driver
367 Alias for --help=target
368
369 -time
370 Driver Alias(time)
371
372 -verbose
373 Driver Alias(v)
374
375 ;; The driver used to convert options such as --help into forms such
376 ;; as -fhelp; the following four entries are for compatibility with
377 ;; any direct uses of those (undocumented) -f forms
378 fhelp
379 Common Driver Alias(-help)
380
381 fhelp=
382 Common Driver Joined Alias(-help=)
383
384 ftarget-help
385 Common Driver Alias(-target-help)
386
387 fversion
388 Common Driver Alias(-version)
389
390 -param
391 Common Separate
392 --param <param>=<value> Set parameter <param> to value.  See below for a complete list of parameters
393
394 -param=
395 Common Joined Alias(-param)
396
397 -sysroot
398 Driver Separate Alias(-sysroot=)
399
400 -sysroot=
401 Driver JoinedOrMissing
402
403 -version
404 Common Driver
405
406 B
407 Driver Joined Separate
408
409 E
410 Driver
411
412 L
413 Driver Joined Separate
414
415 O
416 Common JoinedOrMissing Optimization
417 -O<number>      Set optimization level to <number>
418
419 Os
420 Common Optimization
421 Optimize for space rather than speed
422
423 Ofast
424 Common Optimization
425 Optimize for speed disregarding exact standards compliance
426
427 R
428 Driver Joined Separate
429
430 S
431 Driver
432
433 T
434 Driver Joined Separate
435
436 Tbss
437 Driver Separate
438
439 Tdata
440 Driver Separate
441
442 Ttext
443 Driver Separate
444
445 W
446 Common RejectNegative Warning Alias(Wextra)
447 This switch is deprecated; use -Wextra instead
448
449 Wa,
450 Driver JoinedOrMissing
451
452 Wl,
453 Driver JoinedOrMissing
454
455 Wp,
456 Driver JoinedOrMissing
457
458 Waggregate-return
459 Common Var(warn_aggregate_return) Warning
460 Warn about returning structures, unions or arrays
461
462 Warray-bounds
463 Common Var(warn_array_bounds) Warning
464 Warn if an array is accessed out of bounds
465
466 Wattributes
467 Common Var(warn_attributes) Init(1) Warning
468 Warn about inappropriate attribute usage
469
470 Wcast-align
471 Common Var(warn_cast_align) Warning
472 Warn about pointer casts which increase alignment
473
474 Wcpp
475 Common Var(warn_cpp) Init(1) Warning
476 Warn when a #warning directive is encountered
477
478 Wdeprecated-declarations
479 Common Var(warn_deprecated_decl) Init(1) Warning
480 Warn about uses of __attribute__((deprecated)) declarations
481
482 Wdisabled-optimization
483 Common Var(warn_disabled_optimization) Warning
484 Warn when an optimization pass is disabled
485
486 Werror
487 Common Var(warnings_are_errors)
488 Treat all warnings as errors
489
490 Werror=
491 Common Joined
492 Treat specified warning as error
493
494 Wextra
495 Common Var(extra_warnings) Warning
496 Print extra (possibly unwanted) warnings
497
498 Wfatal-errors
499 Common Var(flag_fatal_errors)
500 Exit on the first error occurred
501
502 Wframe-larger-than=
503 Common RejectNegative Joined UInteger
504 -Wframe-larger-than=<number>    Warn if a function's stack frame requires more than <number> bytes
505
506 Winline
507 Common Var(warn_inline) Warning
508 Warn when an inlined function cannot be inlined
509
510 Wlarger-than-
511 Common RejectNegative Joined Warning Undocumented Alias(Wlarger-than=)
512
513 Wlarger-than=
514 Common RejectNegative Joined UInteger Warning
515 -Wlarger-than=<number>  Warn if an object is larger than <number> bytes
516
517 Wunsafe-loop-optimizations
518 Common Var(warn_unsafe_loop_optimizations) Warning
519 Warn if the loop cannot be optimized due to nontrivial assumptions.
520
521 Wmissing-noreturn
522 Common Var(warn_missing_noreturn) Warning
523 Warn about functions which might be candidates for __attribute__((noreturn))
524
525 Wmudflap
526 Common Var(warn_mudflap) Init(1) Warning
527 Warn about constructs not instrumented by -fmudflap
528
529 Woverflow
530 Common Var(warn_overflow) Init(1) Warning
531 Warn about overflow in arithmetic expressions
532
533 Wpacked
534 Common Var(warn_packed) Warning
535 Warn when the packed attribute has no effect on struct layout
536
537 Wpadded
538 Common Var(warn_padded) Warning
539 Warn when padding is required to align structure members
540
541 Wshadow
542 Common Var(warn_shadow) Warning
543 Warn when one local variable shadows another
544
545 Wstack-protector
546 Common Var(warn_stack_protect) Warning
547 Warn when not issuing stack smashing protection for some reason
548
549 Wstrict-aliasing
550 Common Warning
551 Warn about code which might break strict aliasing rules
552
553 Wstrict-aliasing=
554 Common Joined RejectNegative UInteger Var(warn_strict_aliasing) Init(-1) Warning
555 Warn about code which might break strict aliasing rules
556
557 Wstrict-overflow
558 Common Warning
559 Warn about optimizations that assume that signed overflow is undefined
560
561 Wstrict-overflow=
562 Common Joined RejectNegative UInteger Var(warn_strict_overflow) Init(-1) Warning
563 Warn about optimizations that assume that signed overflow is undefined
564
565 Wsuggest-attribute=const
566 Common Var(warn_suggest_attribute_const) Warning
567 Warn about functions which might be candidates for __attribute__((const))
568
569 Wsuggest-attribute=pure
570 Common Var(warn_suggest_attribute_pure) Warning
571 Warn about functions which might be candidates for __attribute__((pure))
572
573 Wsuggest-attribute=noreturn
574 Common Var(warn_suggest_attribute_noreturn) Warning
575 Warn about functions which might be candidates for __attribute__((noreturn))
576
577 Wswitch
578 Common Var(warn_switch) Warning
579 Warn about enumerated switches, with no default, missing a case
580
581 Wswitch-default
582 Common Var(warn_switch_default) Warning
583 Warn about enumerated switches missing a \"default:\" statement
584
585 Wswitch-enum
586 Common Var(warn_switch_enum) Warning
587 Warn about all enumerated switches missing a specific case
588
589 Wsystem-headers
590 Common Var(warn_system_headers) Warning
591 Do not suppress warnings from system headers
592
593 Wtrampolines
594 Common Var(warn_trampolines) Warning
595 Warn whenever a trampoline is generated
596
597 Wtype-limits
598 Common Var(warn_type_limits) Init(-1) Warning
599 Warn if a comparison is always true or always false due to the limited range of the data type
600
601 Wuninitialized
602 Common Var(warn_uninitialized) Init(-1) Warning
603 Warn about uninitialized automatic variables
604
605 Wunreachable-code
606 Common Ignore
607 Does nothing. Preserved for backward compatibility.
608
609 Wunused
610 Common Var(warn_unused) Init(0) Warning
611 Enable all -Wunused- warnings
612
613 Wunused-but-set-parameter
614 Common Var(warn_unused_but_set_parameter) Init(-1) Warning
615 Warn when a function parameter is only set, otherwise unused
616
617 Wunused-but-set-variable
618 Common Var(warn_unused_but_set_variable) Init(-1) Warning
619 Warn when a variable is only set, otherwise unused
620
621 Wunused-function
622 Common Var(warn_unused_function) Init(-1) Warning
623 Warn when a function is unused
624
625 Wunused-label
626 Common Var(warn_unused_label) Init(-1) Warning
627 Warn when a label is unused
628
629 Wunused-parameter
630 Common Var(warn_unused_parameter) Init(-1) Warning
631 Warn when a function parameter is unused
632
633 Wunused-value
634 Common Var(warn_unused_value) Init(-1) Warning
635 Warn when an expression value is unused
636
637 Wunused-variable
638 Common Var(warn_unused_variable) Init(-1) Warning
639 Warn when a variable is unused
640
641 Wcoverage-mismatch
642 Common Var(warn_coverage_mismatch) Init(1) Warning
643 Warn in case profiles in -fprofile-use do not match
644
645 Xassembler
646 Driver Separate
647
648 Xlinker
649 Driver Separate
650
651 Xpreprocessor
652 Driver Separate
653
654 aux-info
655 Common Separate Var(aux_info_file_name)
656 -aux-info <file>        Emit declaration information into <file>
657
658 aux-info=
659 Common Joined Alias(aux-info)
660
661 auxbase
662 Common Separate RejectDriver Var(aux_base_name)
663
664 auxbase-strip
665 Common Separate RejectDriver
666
667 coverage
668 Driver
669
670 c
671 Driver
672
673 d
674 Common Joined
675 -d<letters>     Enable dumps from specific passes of the compiler
676
677 dumpbase
678 Common Separate Var(dump_base_name)
679 -dumpbase <file>        Set the file basename to be used for dumps
680
681 dumpdir
682 Common Separate Var(dump_dir_name)
683 -dumpdir <dir>  Set the directory name to be used for dumps
684
685 dumpmachine
686 Driver
687
688 dumpspecs
689 Driver
690
691 dumpversion
692 Driver
693
694 e
695 Driver Joined Separate
696
697 ; The version of the C++ ABI in use.  The following values are allowed:
698 ;
699 ; 0: The version of the ABI believed most conformant with the C++ ABI
700 ;    specification.  This ABI may change as bugs are discovered and fixed.
701 ;    Therefore, 0 will not necessarily indicate the same ABI in different
702 ;    versions of G++.
703 ;
704 ; 1: The version of the ABI first used in G++ 3.2.
705 ;
706 ; 2: The version of the ABI first used in G++ 3.4 (and current default).
707 ;
708 ; 3: The version of the ABI that fixes the missing underscore
709 ;    in template non-type arguments of pointer type.
710 ;
711 ; 4: The version of the ABI that introduces unambiguous mangling of
712 ;    vector types.
713 ;
714 ; Additional positive integers will be assigned as new versions of
715 ; the ABI become the default version of the ABI.
716 fabi-version=
717 Common Joined RejectNegative UInteger Var(flag_abi_version) Init(2)
718
719 falign-functions
720 Common Report Var(align_functions,0) Optimization UInteger
721 Align the start of functions
722
723 falign-functions=
724 Common RejectNegative Joined UInteger Var(align_functions)
725
726 falign-jumps
727 Common Report Var(align_jumps,0) Optimization UInteger
728 Align labels which are only reached by jumping
729
730 falign-jumps=
731 Common RejectNegative Joined UInteger Var(align_jumps)
732
733 falign-labels
734 Common Report Var(align_labels,0) Optimization UInteger
735 Align all labels
736
737 falign-labels=
738 Common RejectNegative Joined UInteger Var(align_labels)
739
740 falign-loops
741 Common Report Var(align_loops,0) Optimization UInteger
742 Align the start of loops
743
744 falign-loops=
745 Common RejectNegative Joined UInteger Var(align_loops)
746
747 fargument-alias
748 Common Ignore
749 Does nothing. Preserved for backward compatibility.
750
751 fargument-noalias
752 Common Ignore
753 Does nothing. Preserved for backward compatibility.
754
755 fargument-noalias-global
756 Common Ignore
757 Does nothing. Preserved for backward compatibility.
758
759 fargument-noalias-anything
760 Common Ignore
761 Does nothing. Preserved for backward compatibility.
762
763 fasynchronous-unwind-tables
764 Common Report Var(flag_asynchronous_unwind_tables) Optimization
765 Generate unwind tables that are exact at each instruction boundary
766
767 fauto-inc-dec
768 Common Report Var(flag_auto_inc_dec) Init(1)
769 Generate auto-inc/dec instructions
770
771 ; -fcheck-bounds causes gcc to generate array bounds checks.
772 ; For C, C++ and ObjC: defaults off.
773 ; For Java: defaults to on.
774 ; For Fortran: defaults to off.
775 fbounds-check
776 Common Report Var(flag_bounds_check)
777 Generate code to check bounds before indexing arrays
778
779 fbranch-count-reg
780 Common Report Var(flag_branch_on_count_reg) Init(1) Optimization
781 Replace add, compare, branch with branch on count register
782
783 fbranch-probabilities
784 Common Report Var(flag_branch_probabilities) Optimization
785 Use profiling information for branch probabilities
786
787 fbranch-target-load-optimize
788 Common Report Var(flag_branch_target_load_optimize) Optimization
789 Perform branch target load optimization before prologue / epilogue threading
790
791 fbranch-target-load-optimize2
792 Common Report Var(flag_branch_target_load_optimize2) Optimization
793 Perform branch target load optimization after prologue / epilogue threading
794
795 fbtr-bb-exclusive
796 Common Report Var(flag_btr_bb_exclusive) Optimization
797 Restrict target load migration not to re-use registers in any basic block
798
799 fcall-saved-
800 Common Joined RejectNegative Var(common_deferred_options) Defer
801 -fcall-saved-<register> Mark <register> as being preserved across functions
802
803 fcall-used-
804 Common Joined RejectNegative Var(common_deferred_options) Defer
805 -fcall-used-<register>  Mark <register> as being corrupted by function calls
806
807 ; Nonzero for -fcaller-saves: allocate values in regs that need to
808 ; be saved across function calls, if that produces overall better code.
809 ; Optional now, so people can test it.
810 fcaller-saves
811 Common Report Var(flag_caller_saves) Optimization
812 Save registers around function calls
813
814 fcheck-data-deps
815 Common Report Var(flag_check_data_deps)
816 Compare the results of several data dependence analyzers.
817
818 fcombine-stack-adjustments
819 Common Report Var(flag_combine_stack_adjustments) Optimization
820 Looks for opportunities to reduce stack adjustments and stack references.
821
822 fcommon
823 Common Report Var(flag_no_common,0) Optimization
824 Do not put uninitialized globals in the common section
825
826 fcompare-debug
827 Driver
828 ; Converted by the driver to -fcompare-debug= options.
829
830 fcompare-debug=
831 Common Driver JoinedOrMissing RejectNegative Var(flag_compare_debug_opt)
832 -fcompare-debug[=<opts>]        Compile with and without e.g. -gtoggle, and compare the final-insns dump
833
834 fcompare-debug-second
835 Common Driver RejectNegative
836 Run only the second compilation of -fcompare-debug
837
838 fconserve-stack
839 Common Var(flag_conserve_stack) Optimization
840 Do not perform optimizations increasing noticeably stack usage
841
842 fcprop-registers
843 Common Report Var(flag_cprop_registers) Optimization
844 Perform a register copy-propagation optimization pass
845
846 fcrossjumping
847 Common Report Var(flag_crossjumping) Optimization
848 Perform cross-jumping optimization
849
850 fcse-follow-jumps
851 Common Report Var(flag_cse_follow_jumps) Optimization
852 When running CSE, follow jumps to their targets
853
854 fcse-skip-blocks
855 Common Ignore
856 Does nothing.  Preserved for backward compatibility.
857
858 fcx-limited-range
859 Common Report Var(flag_cx_limited_range) Optimization
860 Omit range reduction step when performing complex division
861
862 fcx-fortran-rules
863 Common Report Var(flag_cx_fortran_rules) Optimization
864 Complex multiplication and division follow Fortran rules
865
866 fdata-sections
867 Common Report Var(flag_data_sections) Optimization
868 Place data items into their own section
869
870 fdbg-cnt-list
871 Common Report Var(common_deferred_options) Defer
872 List all available debugging counters with their limits and counts.
873
874 fdbg-cnt=
875 Common RejectNegative Joined Var(common_deferred_options) Defer
876 -fdbg-cnt=<counter>:<limit>[,<counter>:<limit>,...]     Set the debug counter limit.   
877
878 fdebug-prefix-map=
879 Common Joined RejectNegative Var(common_deferred_options) Defer
880 Map one directory name to another in debug information
881
882 ; Nonzero for -fdefer-pop: don't pop args after each function call
883 ; instead save them up to pop many calls' args with one insns.
884 fdefer-pop
885 Common Report Var(flag_defer_pop) Optimization
886 Defer popping functions args from stack until later
887
888 fdelayed-branch
889 Common Report Var(flag_delayed_branch) Optimization
890 Attempt to fill delay slots of branch instructions
891
892 fdelete-null-pointer-checks
893 Common Report Var(flag_delete_null_pointer_checks) Init(1) Optimization
894 Delete useless null pointer checks
895
896 fdiagnostics-show-location=
897 Common Joined RejectNegative
898 -fdiagnostics-show-location=[once|every-line]   How often to emit source location at the beginning of line-wrapped diagnostics
899
900 fdiagnostics-show-option
901 Common Var(flag_diagnostics_show_option) Init(1)
902 Amend appropriate diagnostic messages with the command line option that controls them
903
904 fdump-
905 Common Joined RejectNegative Var(common_deferred_options) Defer
906 -fdump-<type>   Dump various compiler internals to a file
907
908 fdump-final-insns
909 Driver RejectNegative
910
911 fdump-final-insns=
912 Common RejectNegative Joined Var(flag_dump_final_insns)
913 -fdump-final-insns=filename     Dump to filename the insns at the end of translation
914
915 fdump-go-spec=
916 Common RejectNegative Joined Var(flag_dump_go_spec)
917 -fdump-go-spec=filename Write all declarations to file as Go code
918
919 fdump-noaddr
920 Common Report Var(flag_dump_noaddr)
921 Suppress output of addresses in debugging dumps
922
923 fdump-unnumbered
924 Common Report Var(flag_dump_unnumbered)
925 Suppress output of instruction numbers, line number notes and addresses in debugging dumps
926
927 fdump-unnumbered-links
928 Common Report Var(flag_dump_unnumbered_links)
929 Suppress output of previous and next insn numbers in debugging dumps
930
931 fdwarf2-cfi-asm
932 Common Report Var(flag_dwarf2_cfi_asm) Init(HAVE_GAS_CFI_DIRECTIVE)
933 Enable CFI tables via GAS assembler directives.
934
935 fearly-inlining
936 Common Report Var(flag_early_inlining) Init(1) Optimization
937 Perform early inlining
938
939 feliminate-dwarf2-dups
940 Common Report Var(flag_eliminate_dwarf2_dups)
941 Perform DWARF2 duplicate elimination
942
943 fipa-sra
944 Common Report Var(flag_ipa_sra) Init(0) Optimization
945 Perform interprocedural reduction of aggregates
946
947 feliminate-unused-debug-symbols
948 Common Report Var(flag_debug_only_used_symbols)
949 Perform unused type elimination in debug info
950
951 feliminate-unused-debug-types
952 Common Report Var(flag_eliminate_unused_debug_types) Init(1)
953 Perform unused type elimination in debug info
954
955 femit-class-debug-always
956 Common Report Var(flag_emit_class_debug_always) Init(0)
957 Do not suppress C++ class debug information.
958
959 fenable-icf-debug
960 Common Report Var(flag_enable_icf_debug)
961 Generate debug information to support Identical Code Folding (ICF)
962
963 fexceptions
964 Common Report Var(flag_exceptions) Optimization
965 Enable exception handling
966
967 fexpensive-optimizations
968 Common Report Var(flag_expensive_optimizations) Optimization
969 Perform a number of minor, expensive optimizations
970
971 fexcess-precision=
972 Common Joined RejectNegative
973 -fexcess-precision=[fast|standard]      Specify handling of excess floating-point precision
974
975 ffast-math
976 Common
977
978 ffinite-math-only
979 Common Report Var(flag_finite_math_only) Optimization
980 Assume no NaNs or infinities are generated
981
982 ffixed-
983 Common Joined RejectNegative Var(common_deferred_options) Defer
984 -ffixed-<register>      Mark <register> as being unavailable to the compiler
985
986 ffloat-store
987 Common Report Var(flag_float_store) Optimization
988 Don't allocate floats and doubles in extended-precision registers
989
990 fforce-addr
991 Common Ignore
992 Does nothing.  Preserved for backward compatibility.
993
994 fforward-propagate
995 Common Report Var(flag_forward_propagate) Optimization
996 Perform a forward propagation pass on RTL
997
998 ffp-contract=
999 Common Joined RejectNegative
1000 -ffp-contract=[off|on|fast] Perform floating-point expression contraction.
1001
1002 ; Nonzero means don't put addresses of constant functions in registers.
1003 ; Used for compiling the Unix kernel, where strange substitutions are
1004 ; done on the assembly output.
1005 ffunction-cse
1006 Common Report Var(flag_no_function_cse,0)
1007 Allow function addresses to be held in registers
1008
1009 ffunction-sections
1010 Common Report Var(flag_function_sections)
1011 Place each function into its own section
1012
1013 fgcse
1014 Common Report Var(flag_gcse) Optimization
1015 Perform global common subexpression elimination
1016
1017 fgcse-lm
1018 Common Report Var(flag_gcse_lm) Init(1) Optimization
1019 Perform enhanced load motion during global common subexpression elimination
1020
1021 fgcse-sm
1022 Common Report Var(flag_gcse_sm) Init(0) Optimization
1023 Perform store motion after global common subexpression elimination
1024
1025 fgcse-las
1026 Common Report Var(flag_gcse_las) Init(0) Optimization
1027 Perform redundant load after store elimination in global common subexpression
1028 elimination
1029
1030 fgcse-after-reload
1031 Common Report Var(flag_gcse_after_reload) Optimization
1032 Perform global common subexpression elimination after register allocation
1033 has finished
1034
1035 ; This option is not documented yet as its semantics will change.
1036 fgraphite
1037 Common Report Var(flag_graphite)
1038 Enable in and out of Graphite representation
1039
1040 fgraphite-identity
1041 Common Report Var(flag_graphite_identity) Optimization
1042 Enable Graphite Identity transformation
1043
1044 floop-parallelize-all
1045 Common Report Var(flag_loop_parallelize_all) Optimization
1046 Mark all loops as parallel
1047
1048 floop-strip-mine
1049 Common Report Var(flag_loop_strip_mine) Optimization
1050 Enable Loop Strip Mining transformation
1051
1052 floop-interchange
1053 Common Report Var(flag_loop_interchange) Optimization
1054 Enable Loop Interchange transformation
1055
1056 floop-block
1057 Common Report Var(flag_loop_block) Optimization
1058 Enable Loop Blocking transformation
1059
1060 floop-flatten
1061 Common Report Var(flag_loop_flatten) Optimization
1062 Enable Loop Flattening transformation
1063
1064 fstrict-volatile-bitfields
1065 Common Report Var(flag_strict_volatile_bitfields) Init(-1)
1066 Force bitfield accesses to match their type width
1067
1068 fguess-branch-probability
1069 Common Report Var(flag_guess_branch_prob) Optimization
1070 Enable guessing of branch probabilities
1071
1072 ; Nonzero means ignore `#ident' directives.  0 means handle them.
1073 ; Generate position-independent code for executables if possible
1074 ; On SVR4 targets, it also controls whether or not to emit a
1075 ; string identifying the compiler.
1076 fident
1077 Common Report Var(flag_no_ident,0)
1078 Process #ident directives
1079
1080 fif-conversion
1081 Common Report Var(flag_if_conversion) Optimization
1082 Perform conversion of conditional jumps to branchless equivalents
1083
1084 fif-conversion2
1085 Common Report Var(flag_if_conversion2) Optimization
1086 Perform conversion of conditional jumps to conditional execution
1087
1088 ftree-loop-if-convert
1089 Common Report Var(flag_tree_loop_if_convert) Init(-1) Optimization
1090 Convert conditional jumps in innermost loops to branchless equivalents
1091
1092 ftree-loop-if-convert-stores
1093 Common Report Var(flag_tree_loop_if_convert_stores) Optimization
1094 Also if-convert conditional jumps containing memory writes
1095
1096 ; -finhibit-size-directive inhibits output of .size for ELF.
1097 ; This is used only for compiling crtstuff.c,
1098 ; and it may be extended to other effects
1099 ; needed for crtstuff.c on other systems.
1100 finhibit-size-directive
1101 Common Report Var(flag_inhibit_size_directive)
1102 Do not generate .size directives
1103
1104 findirect-inlining
1105 Common Report Var(flag_indirect_inlining)
1106 Perform indirect inlining
1107
1108 ; Nonzero means that functions declared `inline' will be treated
1109 ; as `static'.  Prevents generation of zillions of copies of unused
1110 ; static inline functions; instead, `inlines' are written out
1111 ; only when actually used.  Used in conjunction with -g.  Also
1112 ; does the right thing with #pragma interface.
1113 finline
1114 Common Report Var(flag_no_inline,0) Init(0)
1115 Pay attention to the \"inline\" keyword
1116
1117 finline-small-functions
1118 Common Report Var(flag_inline_small_functions) Optimization
1119 Integrate simple functions into their callers when code size is known to not growth
1120
1121 finline-functions
1122 Common Report Var(flag_inline_functions) Optimization
1123 Integrate simple functions into their callers
1124
1125 finline-functions-called-once
1126 Common Report Var(flag_inline_functions_called_once) Init(1) Optimization
1127 Integrate functions called once into their callers
1128
1129 finline-limit-
1130 Common RejectNegative Joined Alias(finline-limit=)
1131
1132 finline-limit=
1133 Common RejectNegative Joined UInteger
1134 -finline-limit=<number> Limit the size of inlined functions to <number>
1135
1136 finstrument-functions
1137 Common Report Var(flag_instrument_function_entry_exit)
1138 Instrument function entry and exit with profiling calls
1139
1140 finstrument-functions-exclude-function-list=
1141 Common RejectNegative Joined
1142 -finstrument-functions-exclude-function-list=name,...  Do not instrument listed functions
1143
1144 finstrument-functions-exclude-file-list=
1145 Common RejectNegative Joined
1146 -finstrument-functions-exclude-file-list=filename,...  Do not instrument functions listed in files
1147
1148 fipa-cp
1149 Common Report Var(flag_ipa_cp) Optimization
1150 Perform Interprocedural constant propagation
1151
1152 fipa-cp-clone
1153 Common Report Var(flag_ipa_cp_clone) Optimization
1154 Perform cloning to make Interprocedural constant propagation stronger
1155
1156 fipa-profile
1157 Common Report Var(flag_ipa_profile) Init(0) Optimization
1158 Perform interprocedural profile propagation
1159
1160 fipa-pta
1161 Common Report Var(flag_ipa_pta) Init(0) Optimization
1162 Perform interprocedural points-to analysis
1163
1164 fipa-pure-const
1165 Common Report Var(flag_ipa_pure_const) Init(0) Optimization
1166 Discover pure and const functions
1167
1168 fipa-reference
1169 Common Report Var(flag_ipa_reference) Init(0) Optimization
1170 Discover readonly and non addressable static variables
1171
1172 fipa-matrix-reorg
1173 Common Report Var(flag_ipa_matrix_reorg) Optimization
1174 Perform matrix layout flattening and transposing based
1175 on profiling information.
1176
1177 fipa-struct-reorg
1178 Common Report Var(flag_ipa_struct_reorg)
1179 Perform structure layout optimizations based
1180 on profiling information.
1181
1182 fira-algorithm=
1183 Common Joined RejectNegative
1184 -fira-algorithm=[CB|priority] Set the used IRA algorithm
1185
1186 fira-region=
1187 Common Joined RejectNegative
1188 -fira-region=[one|all|mixed] Set regions for IRA
1189
1190 fira-loop-pressure
1191 Common Report Var(flag_ira_loop_pressure)
1192 Use IRA based register pressure calculation
1193 in RTL loop optimizations.
1194
1195 fira-share-save-slots
1196 Common Report Var(flag_ira_share_save_slots) Init(1)
1197 Share slots for saving different hard registers.
1198
1199 fira-share-spill-slots
1200 Common Report Var(flag_ira_share_spill_slots) Init(1)
1201 Share stack slots for spilled pseudo-registers.
1202
1203 fira-verbose=
1204 Common RejectNegative Joined UInteger Var(flag_ira_verbose) Init(5)
1205 -fira-verbose=<number>  Control IRA's level of diagnostic messages.
1206
1207 fivopts
1208 Common Report Var(flag_ivopts) Init(1) Optimization
1209 Optimize induction variables on trees
1210
1211 fjump-tables
1212 Common Var(flag_jump_tables) Init(1) Optimization
1213 Use jump tables for sufficiently large switch statements
1214
1215 fkeep-inline-functions
1216 Common Report Var(flag_keep_inline_functions)
1217 Generate code for functions even if they are fully inlined
1218
1219 fkeep-static-consts
1220 Common Report Var(flag_keep_static_consts) Init(1)
1221 Emit static const variables even if they are not used
1222
1223 fleading-underscore
1224 Common Report Var(flag_leading_underscore) Init(-1)
1225 Give external symbols a leading underscore
1226
1227 floop-optimize
1228 Common Ignore
1229 Does nothing.  Preserved for backward compatibility.
1230
1231 flto
1232 Common
1233 Enable link-time optimization.
1234
1235 flto=
1236 Common RejectNegative Joined Var(flag_lto)
1237 Link-time optimization with number of parallel jobs or jobserver.
1238
1239 flto-partition=1to1
1240 Common Var(flag_lto_partition_1to1)
1241 Partition functions and vars at linktime based on object files they originate from
1242
1243 flto-partition=balanced
1244 Common Var(flag_lto_partition_balanced)
1245 Partition functions and vars at linktime into approximately same sized buckets
1246
1247 flto-partition=none
1248 Common Var(flag_lto_partition_none)
1249 Disable partioning and streaming
1250
1251 ; The initial value of -1 comes from Z_DEFAULT_COMPRESSION in zlib.h.
1252 flto-compression-level=
1253 Common Joined RejectNegative UInteger Var(flag_lto_compression_level) Init(-1)
1254 -flto-compression-level=<number>        Use zlib compression level <number> for IL
1255
1256 flto-report
1257 Common Report Var(flag_lto_report) Init(0) Optimization
1258 Report various link-time optimization statistics
1259
1260 fmath-errno
1261 Common Report Var(flag_errno_math) Init(1) Optimization
1262 Set errno after built-in math functions
1263
1264 fmax-errors=
1265 Common Joined RejectNegative UInteger Var(flag_max_errors)
1266 -fmax-errors=<number>   Maximum number of errors to report
1267
1268 fmem-report
1269 Common Report Var(mem_report)
1270 Report on permanent memory allocation
1271
1272 ; This will attempt to merge constant section constants, if 1 only
1273 ; string constants and constants from constant pool, if 2 also constant
1274 ; variables.
1275 fmerge-all-constants
1276 Common Report Var(flag_merge_constants,2) Init(1) Optimization
1277 Attempt to merge identical constants and constant variables
1278
1279 fmerge-constants
1280 Common Report Var(flag_merge_constants,1) Optimization
1281 Attempt to merge identical constants across compilation units
1282
1283 fmerge-debug-strings
1284 Common Report Var(flag_merge_debug_strings) Init(1)
1285 Attempt to merge identical debug strings across compilation units
1286
1287 fmessage-length=
1288 Common RejectNegative Joined UInteger
1289 -fmessage-length=<number>       Limit diagnostics to <number> characters per line.  0 suppresses line-wrapping
1290
1291 fmodulo-sched
1292 Common Report Var(flag_modulo_sched) Optimization
1293 Perform SMS based modulo scheduling before the first scheduling pass
1294
1295 fmodulo-sched-allow-regmoves
1296 Common Report Var(flag_modulo_sched_allow_regmoves)
1297 Perform SMS based modulo scheduling with register moves allowed
1298
1299 fmove-loop-invariants
1300 Common Report Var(flag_move_loop_invariants) Init(1) Optimization
1301 Move loop invariant computations out of loops
1302
1303 fmudflap
1304 Common RejectNegative Report Var(flag_mudflap)
1305 Add mudflap bounds-checking instrumentation for single-threaded program
1306
1307 fmudflapth
1308 Common RejectNegative Report Var(flag_mudflap,2)
1309 Add mudflap bounds-checking instrumentation for multi-threaded program
1310
1311 fmudflapir
1312 Common RejectNegative Report Var(flag_mudflap_ignore_reads)
1313 Ignore read operations when inserting mudflap instrumentation
1314
1315 fdce
1316 Common Var(flag_dce) Init(1) Optimization
1317 Use the RTL dead code elimination pass
1318
1319 fdse
1320 Common Var(flag_dse) Init(1) Optimization
1321 Use the RTL dead store elimination pass
1322
1323 freschedule-modulo-scheduled-loops
1324 Common Report Var(flag_resched_modulo_sched) Optimization
1325 Enable/Disable the traditional scheduling in loops that already passed modulo scheduling
1326
1327 fnon-call-exceptions
1328 Common Report Var(flag_non_call_exceptions) Optimization
1329 Support synchronous non-call exceptions
1330
1331 fomit-frame-pointer
1332 Common Report Var(flag_omit_frame_pointer) Optimization
1333 When possible do not generate stack frames
1334
1335 foptimize-register-move
1336 Common Report Var(flag_regmove) Optimization
1337 Do the full register move optimization pass
1338
1339 foptimize-sibling-calls
1340 Common Report Var(flag_optimize_sibling_calls) Optimization
1341 Optimize sibling and tail recursive calls
1342
1343 fpartial-inlining
1344 Common Report Var(flag_partial_inlining)
1345 Perform partial inlining
1346
1347 fpre-ipa-mem-report
1348 Common Report Var(pre_ipa_mem_report)
1349 Report on memory allocation before interprocedural optimization
1350
1351 fpost-ipa-mem-report
1352 Common Report Var(post_ipa_mem_report)
1353 Report on memory allocation before interprocedural optimization
1354
1355 fpack-struct
1356 Common Report Var(flag_pack_struct) Optimization
1357 Pack structure members together without holes
1358
1359 fpack-struct=
1360 Common RejectNegative Joined UInteger Optimization
1361 -fpack-struct=<number>  Set initial maximum structure member alignment
1362
1363 fpcc-struct-return
1364 Common Report Var(flag_pcc_struct_return,1) Init(DEFAULT_PCC_STRUCT_RETURN)
1365 Return small aggregates in memory, not registers
1366
1367 fpeel-loops
1368 Common Report Var(flag_peel_loops) Optimization
1369 Perform loop peeling
1370
1371 fpeephole
1372 Common Report Var(flag_no_peephole,0) Optimization
1373 Enable machine specific peephole optimizations
1374
1375 fpeephole2
1376 Common Report Var(flag_peephole2) Optimization
1377 Enable an RTL peephole pass before sched2
1378
1379 fPIC
1380 Common Report Var(flag_pic,2)
1381 Generate position-independent code if possible (large mode)
1382
1383 fPIE
1384 Common Report Var(flag_pie,2)
1385 Generate position-independent code for executables if possible (large mode)
1386
1387 fpic
1388 Common Report Var(flag_pic,1)
1389 Generate position-independent code if possible (small mode)
1390
1391 fpie
1392 Common Report Var(flag_pie,1)
1393 Generate position-independent code for executables if possible (small mode)
1394
1395 fplugin=
1396 Common Joined RejectNegative Var(common_deferred_options) Defer
1397 Specify a plugin to load
1398
1399 fplugin-arg-
1400 Common Joined RejectNegative Var(common_deferred_options) Defer
1401 -fplugin-arg-<name>-<key>[=<value>]     Specify argument <key>=<value> for plugin <name>
1402
1403 fpredictive-commoning
1404 Common Report Var(flag_predictive_commoning) Optimization
1405 Run predictive commoning optimization.
1406
1407 fprefetch-loop-arrays
1408 Common Report Var(flag_prefetch_loop_arrays) Init(-1) Optimization
1409 Generate prefetch instructions, if available, for arrays in loops
1410
1411 fprofile
1412 Common Report Var(profile_flag)
1413 Enable basic program profiling code
1414
1415 fprofile-arcs
1416 Common Report Var(profile_arc_flag)
1417 Insert arc-based program profiling code
1418
1419 fprofile-dir=
1420 Common Joined RejectNegative Var(profile_data_prefix)
1421 Set the top-level directory for storing the profile data.
1422 The default is 'pwd'.
1423
1424 fprofile-correction
1425 Common Report Var(flag_profile_correction)
1426 Enable correction of flow inconsistent profile data input
1427
1428 fprofile-generate
1429 Common
1430 Enable common options for generating profile info for profile feedback directed optimizations
1431
1432 fprofile-generate=
1433 Common Joined RejectNegative
1434 Enable common options for generating profile info for profile feedback directed optimizations, and set -fprofile-dir=
1435
1436 fprofile-use
1437 Common Var(flag_profile_use)
1438 Enable common options for performing profile feedback directed optimizations
1439
1440 fprofile-use=
1441 Common Joined RejectNegative
1442 Enable common options for performing profile feedback directed optimizations, and set -fprofile-dir=
1443
1444 fprofile-values
1445 Common Report Var(flag_profile_values)
1446 Insert code to profile values of expressions
1447
1448 frandom-seed
1449 Common Var(common_deferred_options) Defer
1450
1451 frandom-seed=
1452 Common Joined RejectNegative Var(common_deferred_options) Defer
1453 -frandom-seed=<string>  Make compile reproducible using <string>
1454
1455 ; This switch causes the command line that was used to create an
1456 ; object file to be recorded into the object file.  The exact format
1457 ; of this recording is target and binary file format dependent.
1458 ; It is related to the -fverbose-asm switch, but that switch only
1459 ; records information in the assembler output file as comments, so
1460 ; they never reach the object file.
1461 frecord-gcc-switches
1462 Common Report Var(flag_record_gcc_switches)
1463 Record gcc command line switches in the object file.
1464
1465 freg-struct-return
1466 Common Report Var(flag_pcc_struct_return,0) Optimization
1467 Return small aggregates in registers
1468
1469 fregmove
1470 Common Report Var(flag_regmove) Optimization
1471 Enables a register move optimization
1472
1473 frename-registers
1474 Common Report Var(flag_rename_registers) Init(2) Optimization
1475 Perform a register renaming optimization pass
1476
1477 freorder-blocks
1478 Common Report Var(flag_reorder_blocks) Optimization
1479 Reorder basic blocks to improve code placement
1480
1481 freorder-blocks-and-partition
1482 Common Report Var(flag_reorder_blocks_and_partition) Optimization
1483 Reorder basic blocks and partition into hot and cold sections
1484
1485 freorder-functions
1486 Common Report Var(flag_reorder_functions) Optimization
1487 Reorder functions to improve code placement
1488
1489 frerun-cse-after-loop
1490 Common Report Var(flag_rerun_cse_after_loop) Optimization
1491 Add a common subexpression elimination pass after loop optimizations
1492
1493 frerun-loop-opt
1494 Common Ignore
1495 Does nothing.  Preserved for backward compatibility.
1496
1497 frounding-math
1498 Common Report Var(flag_rounding_math) Optimization
1499 Disable optimizations that assume default FP rounding behavior
1500
1501 fsched-interblock
1502 Common Report Var(flag_schedule_interblock) Init(1) Optimization
1503 Enable scheduling across basic blocks
1504
1505 fsched-pressure
1506 Common Report Var(flag_sched_pressure) Init(0) Optimization
1507 Enable register pressure sensitive insn scheduling
1508
1509 fsched-spec
1510 Common Report Var(flag_schedule_speculative) Init(1) Optimization
1511 Allow speculative motion of non-loads
1512
1513 fsched-spec-load
1514 Common Report Var(flag_schedule_speculative_load) Optimization
1515 Allow speculative motion of some loads
1516
1517 fsched-spec-load-dangerous
1518 Common Report Var(flag_schedule_speculative_load_dangerous) Optimization
1519 Allow speculative motion of more loads
1520
1521 fsched-verbose=
1522 Common RejectNegative Joined UInteger Var(sched_verbose_param)
1523 -fsched-verbose=<number>        Set the verbosity level of the scheduler
1524
1525 fsched2-use-superblocks
1526 Common Report Var(flag_sched2_use_superblocks) Optimization
1527 If scheduling post reload, do superblock scheduling
1528
1529 fsched2-use-traces
1530 Common Ignore
1531 Does nothing.  Preserved for backward compatibility.
1532
1533 fschedule-insns
1534 Common Report Var(flag_schedule_insns) Optimization
1535 Reschedule instructions before register allocation
1536
1537 fschedule-insns2
1538 Common Report Var(flag_schedule_insns_after_reload) Optimization
1539 Reschedule instructions after register allocation
1540
1541 ; This flag should be on when a target implements non-trivial
1542 ; scheduling hooks, maybe saving some information for its own sake.
1543 ; On IA64, for example, this is used for correct bundling. 
1544 fselective-scheduling
1545 Common Report Var(flag_selective_scheduling) Optimization
1546 Schedule instructions using selective scheduling algorithm
1547
1548 fselective-scheduling2
1549 Common Report Var(flag_selective_scheduling2) Optimization 
1550 Run selective scheduling after reload
1551
1552 fsel-sched-pipelining
1553 Common Report Var(flag_sel_sched_pipelining) Init(0) Optimization
1554 Perform software pipelining of inner loops during selective scheduling
1555
1556 fsel-sched-pipelining-outer-loops
1557 Common Report Var(flag_sel_sched_pipelining_outer_loops) Init(0) Optimization
1558 Perform software pipelining of outer loops during selective scheduling
1559
1560 fsel-sched-reschedule-pipelined
1561 Common Report Var(flag_sel_sched_reschedule_pipelined) Init(0) Optimization
1562 Reschedule pipelined regions without pipelining
1563
1564 ; sched_stalled_insns means that insns can be moved prematurely from the queue
1565 ; of stalled insns into the ready list.
1566 fsched-stalled-insns
1567 Common Report Var(flag_sched_stalled_insns) Optimization UInteger
1568 Allow premature scheduling of queued insns
1569
1570 fsched-stalled-insns=
1571 Common RejectNegative Joined UInteger
1572 -fsched-stalled-insns=<number>  Set number of queued insns that can be prematurely scheduled
1573
1574 ; sched_stalled_insns_dep controls how many recently scheduled cycles will
1575 ; be examined for a dependency on a stalled insn that is candidate for
1576 ; premature removal from the queue of stalled insns into the ready list (has
1577 ; an effect only if the flag 'sched_stalled_insns' is set).
1578 fsched-stalled-insns-dep
1579 Common Report Var(flag_sched_stalled_insns_dep,1) Init(1) Optimization UInteger
1580 Set dependence distance checking in premature scheduling of queued insns
1581
1582 fsched-stalled-insns-dep=
1583 Common RejectNegative Joined UInteger
1584 -fsched-stalled-insns-dep=<number>      Set dependence distance checking in premature scheduling of queued insns
1585
1586 fsched-group-heuristic
1587 Common Report Var(flag_sched_group_heuristic) Init(1) Optimization
1588 Enable the group heuristic in the scheduler
1589
1590 fsched-critical-path-heuristic
1591 Common Report Var(flag_sched_critical_path_heuristic) Init(1) Optimization
1592 Enable the critical path heuristic in the scheduler
1593
1594 fsched-spec-insn-heuristic
1595 Common Report Var(flag_sched_spec_insn_heuristic) Init(1) Optimization
1596 Enable the speculative instruction heuristic in the scheduler
1597
1598 fsched-rank-heuristic
1599 Common Report Var(flag_sched_rank_heuristic) Init(1) Optimization
1600 Enable the rank heuristic in the scheduler
1601
1602 fsched-last-insn-heuristic
1603 Common Report Var(flag_sched_last_insn_heuristic) Init(1) Optimization
1604 Enable the last instruction heuristic in the scheduler
1605
1606 fsched-dep-count-heuristic
1607 Common Report Var(flag_sched_dep_count_heuristic) Init(1) Optimization
1608 Enable the dependent count heuristic in the scheduler
1609
1610 fsection-anchors
1611 Common Report Var(flag_section_anchors) Optimization
1612 Access data in the same section from shared anchor points
1613
1614 fsee
1615 Common Ignore
1616 Does nothing.  Preserved for backward compatibility.
1617
1618 fzee
1619 Common Report Var(flag_zee) Init(0)
1620 Eliminate redundant zero extensions on targets that support implicit extensions.
1621
1622 fshow-column
1623 Common Report Var(flag_show_column) Init(1)
1624 Show column numbers in diagnostics, when available.  Default on
1625
1626 fsignaling-nans
1627 Common Report Var(flag_signaling_nans) Optimization
1628 Disable optimizations observable by IEEE signaling NaNs
1629
1630 fsigned-zeros
1631 Common Report Var(flag_signed_zeros) Init(1) Optimization
1632 Disable floating point optimizations that ignore the IEEE signedness of zero
1633
1634 fsingle-precision-constant
1635 Common Report Var(flag_single_precision_constant) Optimization
1636 Convert floating point constants to single precision constants
1637
1638 fsplit-ivs-in-unroller
1639 Common Report Var(flag_split_ivs_in_unroller) Init(1) Optimization
1640 Split lifetimes of induction variables when loops are unrolled
1641
1642 fsplit-stack
1643 Common Report Var(flag_split_stack) Init(-1)
1644 Generate discontiguous stack frames
1645
1646 fsplit-wide-types
1647 Common Report Var(flag_split_wide_types) Optimization
1648 Split wide types into independent registers
1649
1650 fvariable-expansion-in-unroller
1651 Common Report Var(flag_variable_expansion_in_unroller) Optimization
1652 Apply variable expansion when loops are unrolled
1653
1654 fstack-check=
1655 Common Report RejectNegative Joined
1656 -fstack-check=[no|generic|specific]     Insert stack checking code into the program
1657
1658 fstack-check
1659 Common Alias(fstack-check=, specific, no)
1660 Insert stack checking code into the program.  Same as -fstack-check=specific
1661
1662 fstack-limit
1663 Common Var(common_deferred_options) Defer
1664
1665 fstack-limit-register=
1666 Common RejectNegative Joined Var(common_deferred_options) Defer
1667 -fstack-limit-register=<register>       Trap if the stack goes past <register>
1668
1669 fstack-limit-symbol=
1670 Common RejectNegative Joined Var(common_deferred_options) Defer
1671 -fstack-limit-symbol=<name>     Trap if the stack goes past symbol <name>
1672
1673 fstack-protector
1674 Common Report Var(flag_stack_protect, 1)
1675 Use propolice as a stack protection method
1676
1677 fstack-protector-all
1678 Common Report RejectNegative Var(flag_stack_protect, 2)
1679 Use a stack protection method for every function
1680
1681 fstack-usage
1682 Common RejectNegative Var(flag_stack_usage)
1683 Output stack usage information on a per-function basis
1684
1685 fstrength-reduce
1686 Common Ignore
1687 Does nothing.  Preserved for backward compatibility.
1688
1689 ; Nonzero if we should do (language-dependent) alias analysis.
1690 ; Typically, this analysis will assume that expressions of certain
1691 ; types do not alias expressions of certain other types.  Only used
1692 ; if alias analysis (in general) is enabled.
1693 fstrict-aliasing
1694 Common Report Var(flag_strict_aliasing) Optimization
1695 Assume strict aliasing rules apply
1696
1697 fstrict-overflow
1698 Common Report Var(flag_strict_overflow)
1699 Treat signed overflow as undefined
1700
1701 fsyntax-only
1702 Common Report Var(flag_syntax_only)
1703 Check for syntax errors, then stop
1704
1705 ftest-coverage
1706 Common Report Var(flag_test_coverage)
1707 Create data files needed by \"gcov\"
1708
1709 fthread-jumps
1710 Common Report Var(flag_thread_jumps) Optimization
1711 Perform jump threading optimizations
1712
1713 ftime-report
1714 Common Report Var(time_report)
1715 Report the time taken by each compiler pass
1716
1717 ftls-model=
1718 Common Joined RejectNegative
1719 -ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec]      Set the default thread-local storage code generation model
1720
1721 ftoplevel-reorder
1722 Common Report Var(flag_toplevel_reorder) Init(2) Optimization
1723 Reorder top level functions, variables, and asms
1724
1725 ftracer
1726 Common Report Var(flag_tracer)
1727 Perform superblock formation via tail duplication
1728
1729 ; Zero means that floating-point math operations cannot generate a
1730 ; (user-visible) trap.  This is the case, for example, in nonstop
1731 ; IEEE 754 arithmetic.
1732 ftrapping-math
1733 Common Report Var(flag_trapping_math) Init(1) Optimization
1734 Assume floating-point operations can trap
1735
1736 ftrapv
1737 Common Report Var(flag_trapv) Optimization
1738 Trap for signed overflow in addition, subtraction and multiplication
1739
1740 ftree-ccp
1741 Common Report Var(flag_tree_ccp) Optimization
1742 Enable SSA-CCP optimization on trees
1743
1744 ftree-bit-ccp
1745 Common Report Var(flag_tree_bit_ccp) Optimization
1746 Enable SSA-BIT-CCP optimization on trees
1747
1748 ftree-store-ccp
1749 Common Ignore
1750 Does nothing.  Preserved for backward compatibility.
1751
1752 ftree-ch
1753 Common Report Var(flag_tree_ch) Optimization
1754 Enable loop header copying on trees
1755
1756 ftree-copyrename
1757 Common Report Var(flag_tree_copyrename) Optimization
1758 Replace SSA temporaries with better names in copies
1759
1760 ftree-copy-prop
1761 Common Report Var(flag_tree_copy_prop) Optimization
1762 Enable copy propagation on trees
1763
1764 ftree-store-copy-prop
1765 Common Ignore
1766 Does nothing.  Preserved for backward compatibility.
1767
1768 ftree-cselim
1769 Common Report Var(flag_tree_cselim) Init(2) Optimization
1770 Transform condition stores into unconditional ones
1771
1772 ftree-switch-conversion
1773 Common Report Var(flag_tree_switch_conversion) Optimization
1774 Perform conversions of switch initializations.
1775
1776 ftree-dce
1777 Common Report Var(flag_tree_dce) Optimization
1778 Enable SSA dead code elimination optimization on trees
1779
1780 ftree-dominator-opts
1781 Common Report Var(flag_tree_dom) Optimization
1782 Enable dominator optimizations
1783
1784 ftree-dse
1785 Common Report Var(flag_tree_dse) Optimization
1786 Enable dead store elimination
1787
1788 ftree-forwprop
1789 Common Report Var(flag_tree_forwprop) Init(1) Optimization
1790 Enable forward propagation on trees
1791
1792 ftree-fre
1793 Common Report Var(flag_tree_fre) Optimization
1794 Enable Full Redundancy Elimination (FRE) on trees
1795
1796 ftree-loop-distribution
1797 Common Report Var(flag_tree_loop_distribution) Optimization
1798 Enable loop distribution on trees
1799
1800 ftree-loop-distribute-patterns
1801 Common Report Var(flag_tree_loop_distribute_patterns) Optimization
1802 Enable loop distribution for patterns transformed into a library call
1803
1804 ftree-loop-im
1805 Common Report Var(flag_tree_loop_im) Init(1) Optimization
1806 Enable loop invariant motion on trees
1807
1808 ftree-loop-linear
1809 Common Report Var(flag_tree_loop_linear) Optimization
1810 Enable linear loop transforms on trees
1811
1812 ftree-loop-ivcanon
1813 Common Report Var(flag_tree_loop_ivcanon) Init(1) Optimization
1814 Create canonical induction variables in loops
1815
1816 ftree-loop-optimize
1817 Common Report Var(flag_tree_loop_optimize) Init(1) Optimization
1818 Enable loop optimizations on tree level
1819
1820 ftree-parallelize-loops=
1821 Common Report Joined RejectNegative UInteger Var(flag_tree_parallelize_loops) Init(1)
1822 Enable automatic parallelization of loops
1823
1824 ftree-phiprop
1825 Common Report Var(flag_tree_phiprop) Init(1) Optimization
1826 Enable hoisting loads from conditional pointers.
1827
1828 ftree-pre
1829 Common Report Var(flag_tree_pre) Optimization
1830 Enable SSA-PRE optimization on trees
1831
1832 ftree-pta
1833 Common Report Var(flag_tree_pta) Init(1) Optimization
1834 Perform function-local points-to analysis on trees.
1835
1836 ftree-reassoc
1837 Common Report Var(flag_tree_reassoc) Init(1) Optimization
1838 Enable reassociation on tree level
1839
1840 ftree-salias
1841 Common Ignore
1842 Does nothing.  Preserved for backward compatibility.
1843
1844 ftree-sink
1845 Common Report Var(flag_tree_sink) Optimization
1846 Enable SSA code sinking on trees
1847
1848 ftree-sra
1849 Common Report Var(flag_tree_sra) Optimization
1850 Perform scalar replacement of aggregates
1851
1852 ftree-ter
1853 Common Report Var(flag_tree_ter) Optimization
1854 Replace temporary expressions in the SSA->normal pass
1855
1856 ftree-lrs
1857 Common Report Var(flag_tree_live_range_split) Optimization
1858 Perform live range splitting during the SSA->normal pass
1859
1860 ftree-vrp
1861 Common Report Var(flag_tree_vrp) Init(0) Optimization
1862 Perform Value Range Propagation on trees
1863
1864 funit-at-a-time
1865 Common Report Var(flag_unit_at_a_time) Init(1) Optimization
1866 Compile whole compilation unit at a time
1867
1868 funroll-loops
1869 Common Report Var(flag_unroll_loops) Optimization
1870 Perform loop unrolling when iteration count is known
1871
1872 funroll-all-loops
1873 Common Report Var(flag_unroll_all_loops) Optimization
1874 Perform loop unrolling for all loops
1875
1876 ; Nonzero means that loop optimizer may assume that the induction variables
1877 ; that control loops do not overflow and that the loops with nontrivial
1878 ; exit condition are not infinite
1879 funsafe-loop-optimizations
1880 Common Report Var(flag_unsafe_loop_optimizations) Optimization
1881 Allow loop optimizations to assume that the loops behave in normal way
1882
1883 fassociative-math
1884 Common Report Var(flag_associative_math)
1885 Allow optimization for floating-point arithmetic which may change the
1886 result of the operation due to rounding.
1887
1888 freciprocal-math
1889 Common Report Var(flag_reciprocal_math)
1890 Same as -fassociative-math for expressions which include division.
1891
1892 ; Nonzero means that unsafe floating-point math optimizations are allowed
1893 ; for the sake of speed.  IEEE compliance is not guaranteed, and operations
1894 ; are allowed to assume that their arguments and results are "normal"
1895 ; (e.g., nonnegative for SQRT).
1896 funsafe-math-optimizations
1897 Common Report Var(flag_unsafe_math_optimizations) Optimization
1898 Allow math optimizations that may violate IEEE or ISO standards
1899
1900 funswitch-loops
1901 Common Report Var(flag_unswitch_loops) Optimization
1902 Perform loop unswitching
1903
1904 funwind-tables
1905 Common Report Var(flag_unwind_tables) Optimization
1906 Just generate unwind tables for exception handling
1907
1908 fuse-linker-plugin
1909 Common Undocumented
1910
1911 ; Positive if we should track variables, negative if we should run
1912 ; the var-tracking pass only to discard debug annotations, zero if
1913 ; we're not to run it.  When flag_var_tracking == 2 (AUTODETECT_VALUE) it
1914 ; will be set according to optimize, debug_info_level and debug_hooks
1915 ; in process_options ().
1916 fvar-tracking
1917 Common Report Var(flag_var_tracking) Init(2) Optimization
1918 Perform variable tracking
1919
1920 ; Positive if we should track variables at assignments, negative if
1921 ; we should run the var-tracking pass only to discard debug
1922 ; annotations.  When flag_var_tracking_assignments ==
1923 ; AUTODETECT_VALUE it will be set according to flag_var_tracking.
1924 fvar-tracking-assignments
1925 Common Report Var(flag_var_tracking_assignments) Init(2) Optimization
1926 Perform variable tracking by annotating assignments
1927
1928 ; Nonzero if we should toggle flag_var_tracking_assignments after
1929 ; processing options and computing its default.  */
1930 fvar-tracking-assignments-toggle
1931 Common Report Var(flag_var_tracking_assignments_toggle) Optimization
1932 Toggle -fvar-tracking-assignments
1933
1934 fvar-tracking-uninit
1935 Common Report Var(flag_var_tracking_uninit) Optimization
1936 Perform variable tracking and also tag variables that are uninitialized
1937
1938 ftree-vectorize
1939 Common Report Var(flag_tree_vectorize) Optimization
1940 Enable loop vectorization on trees
1941
1942 ftree-slp-vectorize
1943 Common Report Var(flag_tree_slp_vectorize) Init(2) Optimization
1944 Enable basic block vectorization (SLP) on trees
1945
1946 fvect-cost-model
1947 Common Report Var(flag_vect_cost_model) Optimization
1948 Enable use of cost model in vectorization
1949
1950 ftree-vect-loop-version
1951 Common Report Var(flag_tree_vect_loop_version) Init(1) Optimization
1952 Enable loop versioning when doing loop vectorization on trees
1953
1954 ftree-vectorizer-verbose=
1955 Common RejectNegative Joined
1956 -ftree-vectorizer-verbose=<number>      Set the verbosity level of the vectorizer
1957
1958 ftree-scev-cprop
1959 Common Report Var(flag_tree_scev_cprop) Init(1) Optimization
1960 Enable copy propagation of scalar-evolution information.
1961
1962 ; -fverbose-asm causes extra commentary information to be produced in
1963 ; the generated assembly code (to make it more readable).  This option
1964 ; is generally only of use to those who actually need to read the
1965 ; generated assembly code (perhaps while debugging the compiler itself).
1966 ; -fno-verbose-asm, the default, causes the extra information
1967 ; to not be added and is useful when comparing two assembler files.
1968 fverbose-asm
1969 Common Report Var(flag_verbose_asm)
1970 Add extra commentary to assembler output
1971
1972 fvisibility=
1973 Common Joined RejectNegative
1974 -fvisibility=[default|internal|hidden|protected]        Set the default symbol visibility
1975
1976
1977 fvpt
1978 Common Report Var(flag_value_profile_transformations) Optimization
1979 Use expression value profiles in optimizations
1980
1981 fweb
1982 Common Report Var(flag_web) Init(2) Optimization
1983 Construct webs and split unrelated uses of single variable
1984
1985 ftree-builtin-call-dce
1986 Common Report Var(flag_tree_builtin_call_dce) Init(0) Optimization
1987 Enable conditional dead code elimination for builtin calls
1988
1989 fwhole-program
1990 Common Report Var(flag_whole_program) Init(0) Optimization
1991 Perform whole program optimizations
1992
1993 fwrapv
1994 Common Report Var(flag_wrapv) Optimization
1995 Assume signed arithmetic overflow wraps around
1996
1997 fzero-initialized-in-bss
1998 Common Report Var(flag_zero_initialized_in_bss) Init(1)
1999 Put zero initialized data in the bss section
2000
2001 g
2002 Common JoinedOrMissing
2003 Generate debug information in default format
2004
2005 gcoff
2006 Common JoinedOrMissing Negative(gdwarf-)
2007 Generate debug information in COFF format
2008
2009 gdwarf-
2010 Common Joined UInteger Var(dwarf_version) Init(2) Negative(gstabs)
2011 Generate debug information in DWARF v2 (or later) format
2012
2013 ggdb
2014 Common JoinedOrMissing
2015 Generate debug information in default extended format
2016
2017 gstabs
2018 Common JoinedOrMissing Negative(gstabs+)
2019 Generate debug information in STABS format
2020
2021 gstabs+
2022 Common JoinedOrMissing Negative(gvms)
2023 Generate debug information in extended STABS format
2024
2025 gno-strict-dwarf
2026 Common RejectNegative Var(dwarf_strict,0) Init(-1)
2027 Emit DWARF additions beyond selected version
2028
2029 gstrict-dwarf
2030 Common Report RejectNegative Var(dwarf_strict,1)
2031 Don't emit DWARF additions beyond selected version
2032
2033 gtoggle
2034 Common Report Var(flag_gtoggle)
2035 Toggle debug information generation
2036
2037 gvms
2038 Common JoinedOrMissing Negative(gxcoff)
2039 Generate debug information in VMS format
2040
2041 gxcoff
2042 Common JoinedOrMissing Negative(gxcoff+)
2043 Generate debug information in XCOFF format
2044
2045 gxcoff+
2046 Common JoinedOrMissing Negative(gcoff)
2047 Generate debug information in extended XCOFF format
2048
2049 h
2050 Driver Joined Separate
2051
2052 iplugindir=
2053 Common Joined Var(plugindir_string) Init(0)
2054 -iplugindir=<dir>       Set <dir> to be the default plugin directory
2055
2056 l
2057 Driver Joined Separate
2058
2059 no-canonical-prefixes
2060 Driver
2061
2062 nodefaultlibs
2063 Driver
2064
2065 nostdlib
2066 Driver
2067
2068 o
2069 Common Driver Joined Separate Var(asm_file_name) MissingArgError(missing filename after %qs)
2070 -o <file>       Place output into <file>
2071
2072 p
2073 Common Var(profile_flag)
2074 Enable function profiling
2075
2076 pass-exit-codes
2077 Driver Var(pass_exit_codes)
2078
2079 pedantic
2080 Common Var(pedantic)
2081 Issue warnings needed for strict compliance to the standard
2082
2083 pedantic-errors
2084 Common Var(flag_pedantic_errors)
2085 Like -pedantic but issue them as errors
2086
2087 pg
2088 Driver
2089
2090 pipe
2091 Driver Var(use_pipes)
2092
2093 print-file-name=
2094 Driver JoinedOrMissing Var(print_file_name)
2095
2096 print-libgcc-file-name
2097 Driver
2098
2099 print-multi-directory
2100 Driver Var(print_multi_directory)
2101
2102 print-multi-lib
2103 Driver Var(print_multi_lib)
2104
2105 print-multi-os-directory
2106 Driver Var(print_multi_os_directory)
2107
2108 print-prog-name=
2109 Driver JoinedOrMissing Var(print_prog_name)
2110
2111 print-search-dirs
2112 Driver Var(print_search_dirs)
2113
2114 print-sysroot
2115 Driver Var(print_sysroot)
2116
2117 print-sysroot-headers-suffix
2118 Driver Var(print_sysroot_headers_suffix)
2119
2120 quiet
2121 Common Var(quiet_flag) RejectDriver
2122 Do not display functions compiled or elapsed time
2123
2124 save-temps
2125 Driver
2126
2127 save-temps=
2128 Driver Joined
2129
2130 time
2131 Driver Var(report_times)
2132
2133 time=
2134 Driver JoinedOrMissing
2135
2136 u
2137 Driver Joined Separate
2138
2139 undef
2140 Driver
2141 ; C option, but driver must not handle as "-u ndef".
2142
2143 v
2144 Common Driver Var(verbose_flag)
2145 Enable verbose output
2146
2147 version
2148 Common Var(version_flag) RejectDriver
2149 Display the compiler's version
2150
2151 w
2152 Common Var(inhibit_warnings)
2153 Suppress warnings
2154
2155 wrapper
2156 Driver Separate Var(wrapper_string)
2157
2158 x
2159 Driver Joined Separate
2160
2161 shared
2162 Common RejectNegative Negative(pie)
2163 Create a shared library
2164
2165 shared-libgcc
2166 Driver
2167
2168 specs
2169 Driver Separate Alias(specs=)
2170
2171 specs=
2172 Driver Joined
2173
2174 static
2175 Driver
2176
2177 static-libgcc
2178 Driver
2179
2180 static-libgfortran
2181 Driver
2182 ; Documented for Fortran, but always accepted by driver.
2183
2184 static-libstdc++
2185 Driver
2186
2187 symbolic
2188 Driver
2189
2190 pie
2191 Common RejectNegative Negative(shared)
2192 Create a position independent executable
2193
2194 z
2195 Driver Joined Separate
2196
2197 ; This comment is to ensure we retain the blank line above.