xref: /netbsd-src/external/gpl3/gcc.old/dist/gcc/common.opt (revision 7c192b2a5e1093666e67801684f930ef49b3b363)
1; Options for the language- and target-independent parts of the compiler.
2
3; Copyright (C) 2003-2015 Free Software Foundation, Inc.
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 3, or (at your option) any later
10; version.
11;
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.
16;
17; You should have received a copy of the GNU General Public License
18; along with GCC; see the file COPYING3.  If not see
19; <http://www.gnu.org/licenses/>.
20
21; See the GCC internals manual (options.texi) for a description of this file's format.
22
23; Please try to keep this file in ASCII collating order.
24
25Variable
26int target_flags
27
28Variable
29int optimize
30
31Variable
32int optimize_size
33
34Variable
35int optimize_debug
36
37; Not used directly to control optimizations, only to save -Ofast
38; setting for "optimize" attributes.
39Variable
40int optimize_fast
41
42; True if this is the lto front end.  This is used to disable gimple
43; generation and lowering passes that are normally run on the output
44; of a front end.  These passes must be bypassed for lto since they
45; have already been done before the gimple was written.
46Variable
47bool in_lto_p = false
48
49; 0 means straightforward implementation of complex divide acceptable.
50; 1 means wide ranges of inputs must work for complex divide.
51; 2 means C99-like requirements for complex multiply and divide.
52Variable
53int flag_complex_method = 1
54
55; Nonzero if subexpressions must be evaluated from left-to-right.
56Variable
57int flag_evaluation_order = 0
58
59; Language specific warning pass for unused results.
60Variable
61bool flag_warn_unused_result = false
62
63Variable
64int *param_values
65
66; Nonzero if we should write GIMPLE bytecode for link-time optimization.
67Variable
68int flag_generate_lto
69
70; Nonzero if we should write GIMPLE bytecode for offload compilation.
71Variable
72int flag_generate_offload = 0
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'.
77Variable
78bool warn_larger_than
79
80Variable
81HOST_WIDE_INT larger_than_size
82
83; True to warn about any function whose frame size is larger
84; than N bytes.
85Variable
86bool warn_frame_larger_than
87
88Variable
89HOST_WIDE_INT frame_larger_than_size
90
91; Nonzero means we should be saving declaration info into a .X file.
92Variable
93int flag_gen_aux_info = 0
94
95; Nonzero if we are compiling code for a shared library, zero for
96; executable.
97Variable
98int flag_shlib
99
100; These two are really VEC(char_p,heap) *.
101
102Variable
103void *flag_instrument_functions_exclude_functions
104
105Variable
106void *flag_instrument_functions_exclude_files
107
108; Generic structs (e.g. templates not explicitly specialized)
109; may not have a compilation unit associated with them, and so
110; may need to be treated differently from ordinary structs.
111;
112; Structs only handled by reference (indirectly), will also usually
113; not need as much debugging information.
114
115Variable
116enum debug_struct_file debug_struct_ordinary[DINFO_USAGE_NUM_ENUMS] = { DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY }
117
118Variable
119enum debug_struct_file debug_struct_generic[DINFO_USAGE_NUM_ENUMS] = { DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY }
120
121; True if we should exit after parsing options.
122Variable
123bool exit_after_options
124
125; Type(s) of debugging information we are producing (if any).  See
126; flag-types.h for the definitions of the different possible types of
127; debugging information.
128Variable
129enum debug_info_type write_symbols = NO_DEBUG
130
131; Level of debugging information we are producing.  See flag-types.h
132; for the definitions of the different possible levels.
133Variable
134enum debug_info_levels debug_info_level = DINFO_LEVEL_NONE
135
136; Nonzero means use GNU-only extensions in the generated symbolic
137; debugging information.  Currently, this only has an effect when
138; write_symbols is set to DBX_DEBUG, XCOFF_DEBUG, or DWARF_DEBUG.
139Variable
140bool use_gnu_debug_info_extensions
141
142; Original value of maximum field alignment in bytes, specified via
143; -fpack-struct=<value>.
144Variable
145unsigned int initial_max_fld_align = TARGET_DEFAULT_PACK_STRUCT
146
147; Type of stack check.
148Variable
149enum stack_check_type flag_stack_check = NO_STACK_CHECK
150
151; True if stack usage information needs to be computed.
152Variable
153bool flag_stack_usage_info = false
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.
161Variable
162int flag_debug_asm
163
164; -dP causes the rtl to be emitted as a comment in assembly.
165Variable
166int flag_dump_rtl_in_asm
167
168; Whether -da was passed (used only in handle_common_deferred_options).
169Variable
170bool flag_dump_all_passed
171
172; Other flags saying which kinds of debugging dump have been requested.
173
174Variable
175int rtl_dump_and_exit
176
177Variable
178int flag_print_asm_name
179
180; Name of top-level original source file (what was input to cpp).
181; This comes from the #-command at the beginning of the actual input.
182; If there isn't any there, then this is the cc1 input file name.
183Variable
184const char *main_input_filename
185
186; Pointer to base name in main_input_filename, with directories and a
187; single final extension removed, and the length of this base
188; name.
189
190Variable
191const char *main_input_basename
192
193Variable
194int main_input_baselength
195
196; Which options have been printed by --help.
197Variable
198char *help_printed
199
200; Which enums have been printed by --help.  0 = not printed, no
201; relevant options seen, 1 = relevant option seen, not yet printed, 2
202; = printed.
203Variable
204char *help_enum_printed
205
206; The number of columns for --help output.
207Variable
208unsigned int help_columns
209
210; Whether this options structure has been through finish_options
211Variable
212bool flag_opts_finished
213
214; What the sanitizer should instrument
215Variable
216unsigned int flag_sanitize
217
218; What sanitizers should recover from errors
219Variable
220unsigned int flag_sanitize_recover = SANITIZE_UNDEFINED | SANITIZE_NONDEFAULT | SANITIZE_KERNEL_ADDRESS
221
222; Flag whether a prefix has been added to dump_base_name
223Variable
224bool dump_base_name_prefixed = false
225
226###
227Driver
228
229-assemble
230Driver Alias(S)
231
232-compile
233Driver Alias(c)
234
235-coverage
236Driver Alias(coverage)
237
238-debug
239Common Alias(g)
240
241-dump
242Common Separate Alias(d)
243
244-dump=
245Common Joined Alias(d)
246
247-dumpbase
248Common Separate Alias(dumpbase)
249
250-dumpdir
251Common Separate Alias(dumpdir)
252
253-entry
254Driver Separate Alias(e)
255
256-entry=
257Driver Joined Alias(e)
258
259-extra-warnings
260Common Warning Alias(Wextra)
261
262-for-assembler
263Driver Separate Alias(Xassembler)
264
265-for-assembler=
266Driver JoinedOrMissing Alias(Xassembler)
267
268-for-linker
269Driver Separate Alias(Xlinker)
270
271-for-linker=
272Driver JoinedOrMissing Alias(Xlinker)
273
274-force-link
275Driver Separate Alias(u)
276
277-force-link=
278Driver Joined Alias(u)
279
280-help
281Common Driver Var(help_flag)
282Display this information
283
284-help=
285Common Driver Report Joined
286--help=<class>	Display descriptions of a specific class of options.  <class> is one or more of optimizers, target, warnings, undocumented, params
287
288-language
289Driver Separate Alias(x)
290
291-language=
292Driver Joined Alias(x)
293
294-library-directory
295Driver Separate Alias(L)
296
297-library-directory=
298Driver Joined Alias(L)
299
300-no-canonical-prefixes
301Driver Alias(no-canonical-prefixes)
302
303-no-standard-libraries
304Driver Alias(nostdlib)
305
306-no-sysroot-suffix
307Driver Var(no_sysroot_suffix)
308
309-no-warnings
310Common Alias(w)
311
312-optimize
313Common Alias(O)
314
315-output
316Common Driver Separate Alias(o) MissingArgError(missing filename after %qs)
317
318-output=
319Common Driver Joined Alias(o) MissingArgError(missing filename after %qs)
320
321-pass-exit-codes
322Driver Alias(pass-exit-codes)
323
324-pedantic
325Common Alias(Wpedantic)
326
327-pedantic-errors
328Common Alias(pedantic-errors)
329
330-pie
331Driver Alias(pie)
332
333-pipe
334Driver Alias(pipe)
335
336-prefix
337Driver Separate Alias(B)
338
339-prefix=
340Driver JoinedOrMissing Alias(B)
341
342-preprocess
343Driver Alias(E)
344
345-print-file-name
346Driver Separate Alias(print-file-name=)
347
348-print-file-name=
349Driver JoinedOrMissing Alias(print-file-name=)
350
351-print-libgcc-file-name
352Driver Alias(print-libgcc-file-name)
353
354-print-multi-directory
355Driver Alias(print-multi-directory)
356
357-print-multi-lib
358Driver Alias(print-multi-lib)
359
360-print-multi-os-directory
361Driver Alias(print-multi-os-directory)
362
363-print-multiarch
364Driver Alias(print-multiarch)
365
366-print-prog-name
367Driver Separate Alias(print-prog-name=)
368
369-print-prog-name=
370Driver JoinedOrMissing Alias(print-prog-name=)
371
372-print-search-dirs
373Driver Alias(print-search-dirs)
374
375-print-sysroot
376Driver Alias(print-sysroot)
377
378-print-sysroot-headers-suffix
379Driver Alias(print-sysroot-headers-suffix)
380
381-profile
382Common Alias(p)
383
384-save-temps
385Driver Alias(save-temps)
386
387-shared
388Driver Alias(shared)
389
390-specs
391Driver Separate Alias(specs=)
392
393-specs=
394Driver Joined Alias(specs=)
395
396-static
397Driver Alias(static)
398
399-symbolic
400Driver Alias(symbolic)
401
402-target-help
403Common Driver
404Alias for --help=target
405
406-time
407Driver Alias(time)
408
409-verbose
410Driver Alias(v)
411
412;; The driver used to convert options such as --help into forms such
413;; as -fhelp; the following four entries are for compatibility with
414;; any direct uses of those (undocumented) -f forms
415fhelp
416Common Driver Alias(-help)
417
418fhelp=
419Common Driver Joined Alias(-help=)
420
421ftarget-help
422Common Driver Alias(-target-help)
423
424fversion
425Common Driver Alias(-version)
426
427-param
428Common Separate
429--param <param>=<value>	Set parameter <param> to value.  See below for a complete list of parameters
430
431-param=
432Common Joined Alias(-param)
433
434-sysroot
435Driver Separate Alias(-sysroot=)
436
437-sysroot=
438Driver JoinedOrMissing
439
440-version
441Common Driver
442
443B
444Driver Joined Separate
445
446E
447Driver
448
449L
450Driver Joined Separate
451
452N
453Driver
454
455O
456Common JoinedOrMissing Optimization
457-O<number>	Set optimization level to <number>
458
459Os
460Common Optimization
461Optimize for space rather than speed
462
463Ofast
464Common Optimization
465Optimize for speed disregarding exact standards compliance
466
467Og
468Common Optimization
469Optimize for debugging experience rather than speed or size
470
471Q
472Driver
473
474Qn
475Driver Negative(Qy)
476
477Qy
478Driver Negative(Qn)
479
480R
481Driver Joined Separate
482
483S
484Driver
485
486T
487Driver Joined Separate
488
489Tbss
490Driver Separate
491
492Tbss=
493Driver Joined
494
495Tdata
496Driver Separate
497
498Tdata=
499Driver Joined
500
501Ttext
502Driver Separate
503
504Ttext=
505Driver Joined
506
507W
508Common RejectNegative Warning Alias(Wextra)
509This switch is deprecated; use -Wextra instead
510
511Wa,
512Driver JoinedOrMissing
513
514Wl,
515Driver JoinedOrMissing
516
517Wp,
518Driver JoinedOrMissing
519
520Waggregate-return
521Common Var(warn_aggregate_return) Warning
522Warn about returning structures, unions or arrays
523
524Waggressive-loop-optimizations
525Common Var(warn_aggressive_loop_optimizations) Init(1) Warning
526Warn if a loop with constant number of iterations triggers undefined behavior
527
528Warray-bounds
529Common Var(warn_array_bounds) Warning
530Warn if an array is accessed out of bounds
531
532Warray-bounds=
533Common Joined RejectNegative UInteger Var(warn_array_bounds) Warning
534Warn if an array is accessed out of bounds
535
536Wattributes
537Common Var(warn_attributes) Init(1) Warning
538Warn about inappropriate attribute usage
539
540Wcast-align
541Common Var(warn_cast_align) Warning
542Warn about pointer casts which increase alignment
543
544Wcpp
545Common Var(warn_cpp) Init(1) Warning
546Warn when a #warning directive is encountered
547
548Wdeprecated-declarations
549Common Var(warn_deprecated_decl) Init(1) Warning
550Warn about uses of __attribute__((deprecated)) declarations
551
552Wdisabled-optimization
553Common Var(warn_disabled_optimization) Warning
554Warn when an optimization pass is disabled
555
556Werror
557Common Var(warnings_are_errors)
558Treat all warnings as errors
559
560Werror=
561Common Joined
562Treat specified warning as error
563
564Wextra
565Common Var(extra_warnings) Warning
566Print extra (possibly unwanted) warnings
567
568Wfatal-errors
569Common Var(flag_fatal_errors)
570Exit on the first error occurred
571
572Wframe-larger-than=
573Common RejectNegative Joined UInteger
574-Wframe-larger-than=<number>	Warn if a function's stack frame requires more than <number> bytes
575
576Wfree-nonheap-object
577Common Var(warn_free_nonheap_object) Init(1) Warning
578Warn when attempting to free a non-heap object
579
580Winline
581Common Var(warn_inline) Warning
582Warn when an inlined function cannot be inlined
583
584Winvalid-memory-model
585Common Var(warn_invalid_memory_model) Init(1) Warning
586Warn when an atomic memory model parameter is known to be outside the valid range.
587
588Wlarger-than-
589Common RejectNegative Joined Warning Undocumented Alias(Wlarger-than=)
590
591Wlarger-than=
592Common RejectNegative Joined UInteger Warning
593-Wlarger-than=<number>	Warn if an object is larger than <number> bytes
594
595Wunsafe-loop-optimizations
596Common Var(warn_unsafe_loop_optimizations) Warning
597Warn if the loop cannot be optimized due to nontrivial assumptions.
598
599Wmissing-noreturn
600Common Alias(Wsuggest-attribute=noreturn)
601
602Wodr
603Common Var(warn_odr_violations) Init(1) Warning
604Warn about some C++ One Definition Rule violations during link time optimization
605
606Woverflow
607Common Var(warn_overflow) Init(1) Warning
608Warn about overflow in arithmetic expressions
609
610Wpacked
611Common Var(warn_packed) Warning
612Warn when the packed attribute has no effect on struct layout
613
614Wpadded
615Common Var(warn_padded) Warning
616Warn when padding is required to align structure members
617
618Wpedantic
619Common Var(pedantic) Init(0) Warning
620Issue warnings needed for strict compliance to the standard
621
622Wreturn-local-addr
623Common Var(warn_return_local_addr) Init(1) Warning
624Warn about returning a pointer/reference to a local or temporary variable.
625
626Wshadow
627Common Var(warn_shadow) Warning
628Warn when one local variable shadows another
629
630Wstack-protector
631Common Var(warn_stack_protect) Warning
632Warn when not issuing stack smashing protection for some reason
633
634Wstack-usage=
635Common Joined RejectNegative UInteger Var(warn_stack_usage) Init(-1) Warning
636Warn if stack usage might be larger than specified amount
637
638Wstrict-aliasing
639Common Warning
640Warn about code which might break strict aliasing rules
641
642Wstrict-aliasing=
643Common Joined RejectNegative UInteger Var(warn_strict_aliasing) Warning
644Warn about code which might break strict aliasing rules
645
646Wstrict-overflow
647Common Warning
648Warn about optimizations that assume that signed overflow is undefined
649
650Wstrict-overflow=
651Common Joined RejectNegative UInteger Var(warn_strict_overflow) Warning
652Warn about optimizations that assume that signed overflow is undefined
653
654Wsuggest-attribute=const
655Common Var(warn_suggest_attribute_const) Warning
656Warn about functions which might be candidates for __attribute__((const))
657
658Wsuggest-attribute=pure
659Common Var(warn_suggest_attribute_pure) Warning
660Warn about functions which might be candidates for __attribute__((pure))
661
662Wsuggest-attribute=noreturn
663Common Var(warn_suggest_attribute_noreturn) Warning
664Warn about functions which might be candidates for __attribute__((noreturn))
665
666Wsuggest-final-types
667Common Var(warn_suggest_final_types) Warning
668Warn about C++ polymorphic types where adding final keyword would improve code quality
669
670Wsuggest-final-methods
671Common Var(warn_suggest_final_methods) Warning
672Warn about C++ virtual methods where adding final keyword would improve code quality
673
674Wsystem-headers
675Common Var(warn_system_headers) Warning
676Do not suppress warnings from system headers
677
678Wtrampolines
679Common Var(warn_trampolines) Warning
680Warn whenever a trampoline is generated
681
682Wtype-limits
683Common Var(warn_type_limits) Warning EnabledBy(Wextra)
684Warn if a comparison is always true or always false due to the limited range of the data type
685
686Wuninitialized
687Common Var(warn_uninitialized) Warning EnabledBy(Wextra)
688Warn about uninitialized automatic variables
689
690Wmaybe-uninitialized
691Common Var(warn_maybe_uninitialized) Warning EnabledBy(Wuninitialized)
692Warn about maybe uninitialized automatic variables
693
694Wunreachable-code
695Common Ignore
696Does nothing. Preserved for backward compatibility.
697
698Wunused
699Common Var(warn_unused) Init(0) Warning
700Enable all -Wunused- warnings
701
702Wunused-but-set-parameter
703Common Var(warn_unused_but_set_parameter) Warning EnabledBy(Wunused && Wextra)
704Warn when a function parameter is only set, otherwise unused
705
706Wunused-but-set-variable
707Common Var(warn_unused_but_set_variable) Warning EnabledBy(Wunused)
708Warn when a variable is only set, otherwise unused
709
710Wunused-function
711Common Var(warn_unused_function) Warning EnabledBy(Wunused)
712Warn when a function is unused
713
714Wunused-label
715Common Var(warn_unused_label) Warning EnabledBy(Wunused)
716Warn when a label is unused
717
718Wunused-parameter
719Common Var(warn_unused_parameter) Warning EnabledBy(Wunused && Wextra)
720Warn when a function parameter is unused
721
722Wunused-value
723Common Var(warn_unused_value) Warning EnabledBy(Wunused)
724Warn when an expression value is unused
725
726Wunused-variable
727Common Var(warn_unused_variable) Warning EnabledBy(Wunused)
728Warn when a variable is unused
729
730Wcoverage-mismatch
731Common Var(warn_coverage_mismatch) Init(1) Warning
732Warn in case profiles in -fprofile-use do not match
733
734Wvector-operation-performance
735Common Var(warn_vector_operation_performance) Warning
736Warn when a vector operation is compiled outside the SIMD
737
738Xassembler
739Driver Separate
740
741Xlinker
742Driver Separate
743
744Xpreprocessor
745Driver Separate
746
747Z
748Driver
749
750aux-info
751Common Separate Var(aux_info_file_name)
752-aux-info <file>	Emit declaration information into <file>
753
754aux-info=
755Common Joined Alias(aux-info)
756
757auxbase
758Common Separate RejectDriver Var(aux_base_name)
759
760auxbase-strip
761Common Separate RejectDriver
762
763coverage
764Driver
765
766c
767Driver
768
769d
770Common Joined
771-d<letters>	Enable dumps from specific passes of the compiler
772
773dumpbase
774Common Separate Var(dump_base_name)
775-dumpbase <file>	Set the file basename to be used for dumps
776
777dumpdir
778Common Separate Var(dump_dir_name)
779-dumpdir <dir>	Set the directory name to be used for dumps
780
781dumpmachine
782Driver
783
784dumpspecs
785Driver
786
787dumpversion
788Driver
789
790e
791Driver Joined Separate
792
793; This option has historically been passed down to the linker by an
794; accident of a %{e*} spec, so ensure it continues to be passed down
795; as a single option.  The supported option for this purpose is
796; -rdynamic.  See PR 47390.
797export-dynamic
798Driver Undocumented
799
800; The version of the C++ ABI in use.  The following values are allowed:
801;
802; 0: The version of the ABI believed most conformant with the C++ ABI
803;    specification.  This ABI may change as bugs are discovered and fixed.
804;    Therefore, 0 will not necessarily indicate the same ABI in different
805;    versions of G++.
806;
807; 1: The version of the ABI first used in G++ 3.2.  No longer selectable.
808;
809; 2: The version of the ABI first used in G++ 3.4, and the default
810;    until GCC 4.9.
811;
812; 3: The version of the ABI that fixes the missing underscore
813;    in template non-type arguments of pointer type.
814;
815; 4: The version of the ABI that introduces unambiguous mangling of
816;    vector types.  First selectable in G++ 4.5.
817;
818; 5: The version of the ABI that ignores attribute const/noreturn
819;    in function pointer mangling, and corrects mangling of decltype and
820;    function parameters used in other parameters and the return type.
821;    First selectable in G++ 4.6.
822;
823; 6: The version of the ABI that doesn't promote scoped enums to int and
824;    changes the mangling of template argument packs, const/static_cast,
825;    prefix ++ and --, and a class scope function used as a template
826;    argument.
827;    First selectable in G++ 4.7.
828;
829; 7: The version of the ABI that treats nullptr_t as a builtin type and
830;    corrects the mangling of lambdas in default argument scope.
831;    First selectable in G++ 4.8.
832;
833; 8: The version of the ABI that corrects the substitution behavior of
834;    function types with function-cv-qualifiers.
835;    First selectable in G++ 4.9 and default in G++ 5
836;
837; 9: The version of the ABI that corrects the alignment of nullptr_t.
838;    First selectable and default in G++ 5.2.
839;    (set in c_common_post_options).
840;
841; Additional positive integers will be assigned as new versions of
842; the ABI become the default version of the ABI.
843fabi-version=
844Common Joined RejectNegative UInteger Var(flag_abi_version) Init(0)
845The version of the C++ ABI in use
846
847faggressive-loop-optimizations
848Common Report Var(flag_aggressive_loop_optimizations) Optimization Init(1)
849Aggressively optimize loops using language constraints
850
851falign-functions
852Common Report Var(align_functions,0) Optimization UInteger
853Align the start of functions
854
855falign-functions=
856Common RejectNegative Joined UInteger Var(align_functions)
857
858falign-jumps
859Common Report Var(align_jumps,0) Optimization UInteger
860Align labels which are only reached by jumping
861
862falign-jumps=
863Common RejectNegative Joined UInteger Var(align_jumps)
864
865falign-labels
866Common Report Var(align_labels,0) Optimization UInteger
867Align all labels
868
869falign-labels=
870Common RejectNegative Joined UInteger Var(align_labels)
871
872falign-loops
873Common Report Var(align_loops,0) Optimization UInteger
874Align the start of loops
875
876falign-loops=
877Common RejectNegative Joined UInteger Var(align_loops)
878
879fargument-alias
880Common Ignore
881Does nothing. Preserved for backward compatibility.
882
883fargument-noalias
884Common Ignore
885Does nothing. Preserved for backward compatibility.
886
887fargument-noalias-global
888Common Ignore
889Does nothing. Preserved for backward compatibility.
890
891fargument-noalias-anything
892Common Ignore
893Does nothing. Preserved for backward compatibility.
894
895fsanitize=
896Common Driver Report Joined
897Select what to sanitize
898
899fasan-shadow-offset=
900Common Joined RejectNegative Var(common_deferred_options) Defer
901-fasan-shadow-offset=<number>	Use custom shadow memory offset.
902
903fsanitize-recover=
904Common Report Joined
905After diagnosing undefined behavior attempt to continue execution
906
907fsanitize-recover
908Common Report
909This switch is deprecated; use -fsanitize-recover= instead
910
911fsanitize-undefined-trap-on-error
912Common Driver Report Var(flag_sanitize_undefined_trap_on_error) Init(0)
913Use trap instead of a library function for undefined behavior sanitization
914
915fasynchronous-unwind-tables
916Common Report Var(flag_asynchronous_unwind_tables) Optimization
917Generate unwind tables that are exact at each instruction boundary
918
919fauto-inc-dec
920Common Report Var(flag_auto_inc_dec) Init(1) Optimization
921Generate auto-inc/dec instructions
922
923fauto-profile
924Common Report Var(flag_auto_profile)
925Use sample profile information for call graph node weights. The default
926profile file is fbdata.afdo in 'pwd'.
927
928fauto-profile=
929Common Joined RejectNegative Var(auto_profile_file)
930Use sample profile information for call graph node weights. The profile
931file is specified in the argument.
932
933; -fcheck-bounds causes gcc to generate array bounds checks.
934; For C, C++ and ObjC: defaults off.
935; For Java: defaults to on.
936; For Fortran: defaults to off.
937fbounds-check
938Common Report Var(flag_bounds_check)
939Generate code to check bounds before indexing arrays
940
941fbranch-count-reg
942Common Report Var(flag_branch_on_count_reg) Optimization
943Replace add, compare, branch with branch on count register
944
945fbranch-probabilities
946Common Report Var(flag_branch_probabilities) Optimization
947Use profiling information for branch probabilities
948
949fbranch-target-load-optimize
950Common Report Var(flag_branch_target_load_optimize) Optimization
951Perform branch target load optimization before prologue / epilogue threading
952
953fbranch-target-load-optimize2
954Common Report Var(flag_branch_target_load_optimize2) Optimization
955Perform branch target load optimization after prologue / epilogue threading
956
957fbtr-bb-exclusive
958Common Report Var(flag_btr_bb_exclusive) Optimization
959Restrict target load migration not to re-use registers in any basic block
960
961fcall-saved-
962Common Joined RejectNegative Var(common_deferred_options) Defer
963-fcall-saved-<register>	Mark <register> as being preserved across functions
964
965fcall-used-
966Common Joined RejectNegative Var(common_deferred_options) Defer
967-fcall-used-<register>	Mark <register> as being corrupted by function calls
968
969; Nonzero for -fcaller-saves: allocate values in regs that need to
970; be saved across function calls, if that produces overall better code.
971; Optional now, so people can test it.
972fcaller-saves
973Common Report Var(flag_caller_saves) Optimization
974Save registers around function calls
975
976fcheck-data-deps
977Common Report Var(flag_check_data_deps)
978Compare the results of several data dependence analyzers.
979
980fcheck-new
981Common Var(flag_check_new)
982Check the return value of new in C++
983
984fcombine-stack-adjustments
985Common Report Var(flag_combine_stack_adjustments) Optimization
986Looks for opportunities to reduce stack adjustments and stack references.
987
988fcommon
989Common Report Var(flag_no_common,0)
990Do not put uninitialized globals in the common section
991
992fcompare-debug
993Driver
994; Converted by the driver to -fcompare-debug= options.
995
996fcompare-debug=
997Common Driver JoinedOrMissing RejectNegative Var(flag_compare_debug_opt)
998-fcompare-debug[=<opts>]	Compile with and without e.g. -gtoggle, and compare the final-insns dump
999
1000fcompare-debug-second
1001Common Driver RejectNegative Var(flag_compare_debug)
1002Run only the second compilation of -fcompare-debug
1003
1004fcompare-elim
1005Common Report Var(flag_compare_elim_after_reload) Optimization
1006Perform comparison elimination after register allocation has finished
1007
1008fconserve-stack
1009Common Var(flag_conserve_stack) Optimization
1010Do not perform optimizations increasing noticeably stack usage
1011
1012fcprop-registers
1013Common Report Var(flag_cprop_registers) Optimization
1014Perform a register copy-propagation optimization pass
1015
1016fcrossjumping
1017Common Report Var(flag_crossjumping) Optimization
1018Perform cross-jumping optimization
1019
1020fcse-follow-jumps
1021Common Report Var(flag_cse_follow_jumps) Optimization
1022When running CSE, follow jumps to their targets
1023
1024fcse-skip-blocks
1025Common Ignore
1026Does nothing.  Preserved for backward compatibility.
1027
1028fcx-limited-range
1029Common Report Var(flag_cx_limited_range) Optimization SetByCombined
1030Omit range reduction step when performing complex division
1031
1032fcx-fortran-rules
1033Common Report Var(flag_cx_fortran_rules) Optimization
1034Complex multiplication and division follow Fortran rules
1035
1036fdata-sections
1037Common Report Var(flag_data_sections)
1038Place data items into their own section
1039
1040fdbg-cnt-list
1041Common Report Var(common_deferred_options) Defer
1042List all available debugging counters with their limits and counts.
1043
1044fdbg-cnt=
1045Common RejectNegative Joined Var(common_deferred_options) Defer
1046-fdbg-cnt=<counter>:<limit>[,<counter>:<limit>,...]	Set the debug counter limit.
1047
1048fdebug-prefix-map=
1049Common Joined RejectNegative Var(common_deferred_options) Defer
1050Map one directory name prefix to another in debug information
1051
1052fdebug-regex-map=
1053Common Joined RejectNegative Var(common_deferred_options) Defer
1054Map one directory name to another in debug information using regular expression matching
1055
1056fdebug-types-section
1057Common Report Var(flag_debug_types_section) Init(0)
1058Output .debug_types section when using DWARF v4 debuginfo.
1059
1060; Nonzero for -fdefer-pop: don't pop args after each function call
1061; instead save them up to pop many calls' args with one insns.
1062fdefer-pop
1063Common Report Var(flag_defer_pop) Optimization
1064Defer popping functions args from stack until later
1065
1066fdelayed-branch
1067Common Report Var(flag_delayed_branch) Optimization
1068Attempt to fill delay slots of branch instructions
1069
1070fdelete-dead-exceptions
1071Common Report Var(flag_delete_dead_exceptions) Init(0) Optimization
1072Delete dead instructions that may throw exceptions
1073
1074fdelete-null-pointer-checks
1075Common Report Var(flag_delete_null_pointer_checks) Init(0) Optimization
1076Delete useless null pointer checks
1077
1078fdevirtualize-at-ltrans
1079Common Report Var(flag_ltrans_devirtualize)
1080Stream extra data to support more aggressive devirtualization in LTO local transformation mode
1081
1082fdevirtualize-speculatively
1083Common Report Var(flag_devirtualize_speculatively) Optimization
1084Perform speculative devirtualization
1085
1086fdevirtualize
1087Common Report Var(flag_devirtualize) Optimization
1088Try to convert virtual calls to direct ones.
1089
1090fdiagnostics-show-location=
1091Common Joined RejectNegative Enum(diagnostic_prefixing_rule)
1092-fdiagnostics-show-location=[once|every-line]	How often to emit source location at the beginning of line-wrapped diagnostics
1093
1094; Required for these enum values.
1095SourceInclude
1096pretty-print.h
1097
1098Enum
1099Name(diagnostic_prefixing_rule) Type(int)
1100
1101EnumValue
1102Enum(diagnostic_prefixing_rule) String(once) Value(DIAGNOSTICS_SHOW_PREFIX_ONCE)
1103
1104EnumValue
1105Enum(diagnostic_prefixing_rule) String(every-line) Value(DIAGNOSTICS_SHOW_PREFIX_EVERY_LINE)
1106
1107fdiagnostics-show-caret
1108Common Var(flag_diagnostics_show_caret) Init(1)
1109Show the source line with a caret indicating the column
1110
1111fdiagnostics-color
1112Common Alias(fdiagnostics-color=,always,never)
1113;
1114
1115fdiagnostics-color=
1116Driver Common Joined RejectNegative Var(flag_diagnostics_show_color) Enum(diagnostic_color_rule) Init(DIAGNOSTICS_COLOR_NO)
1117-fdiagnostics-color=[never|always|auto]	Colorize diagnostics
1118
1119; Required for these enum values.
1120SourceInclude
1121diagnostic-color.h
1122
1123Enum
1124Name(diagnostic_color_rule) Type(int)
1125
1126EnumValue
1127Enum(diagnostic_color_rule) String(never) Value(DIAGNOSTICS_COLOR_NO)
1128
1129EnumValue
1130Enum(diagnostic_color_rule) String(always) Value(DIAGNOSTICS_COLOR_YES)
1131
1132EnumValue
1133Enum(diagnostic_color_rule) String(auto) Value(DIAGNOSTICS_COLOR_AUTO)
1134
1135fdiagnostics-show-option
1136Common Var(flag_diagnostics_show_option) Init(1)
1137Amend appropriate diagnostic messages with the command line option that controls them
1138
1139fdisable-
1140Common Joined RejectNegative Var(common_deferred_options) Defer
1141-fdisable-[tree|rtl|ipa]-<pass>=range1+range2 disables an optimization pass
1142
1143fenable-
1144Common Joined RejectNegative Var(common_deferred_options) Defer
1145-fenable-[tree|rtl|ipa]-<pass>=range1+range2 enables an optimization pass
1146
1147fdump-
1148Common Joined RejectNegative Var(common_deferred_options) Defer
1149-fdump-<type>	Dump various compiler internals to a file
1150
1151fdump-final-insns
1152Driver RejectNegative
1153
1154fdump-final-insns=
1155Common RejectNegative Joined Var(flag_dump_final_insns)
1156-fdump-final-insns=filename	Dump to filename the insns at the end of translation
1157
1158fdump-go-spec=
1159Common RejectNegative Joined Var(flag_dump_go_spec)
1160-fdump-go-spec=filename	Write all declarations to file as Go code
1161
1162fdump-noaddr
1163Common Report Var(flag_dump_noaddr)
1164Suppress output of addresses in debugging dumps
1165
1166freport-bug
1167Common Driver Var(flag_report_bug)
1168Collect and dump debug information into temporary file if ICE in C/C++
1169compiler occured.
1170
1171fdump-passes
1172Common Var(flag_dump_passes) Init(0)
1173Dump optimization passes
1174
1175fdump-unnumbered
1176Common Report Var(flag_dump_unnumbered)
1177Suppress output of instruction numbers, line number notes and addresses in debugging dumps
1178
1179fdump-unnumbered-links
1180Common Report Var(flag_dump_unnumbered_links)
1181Suppress output of previous and next insn numbers in debugging dumps
1182
1183fdwarf2-cfi-asm
1184Common Report Var(flag_dwarf2_cfi_asm) Init(HAVE_GAS_CFI_DIRECTIVE)
1185Enable CFI tables via GAS assembler directives.
1186
1187fearly-inlining
1188Common Report Var(flag_early_inlining) Init(1) Optimization
1189Perform early inlining
1190
1191feliminate-dwarf2-dups
1192Common Report Var(flag_eliminate_dwarf2_dups)
1193Perform DWARF2 duplicate elimination
1194
1195fipa-sra
1196Common Report Var(flag_ipa_sra) Init(0) Optimization
1197Perform interprocedural reduction of aggregates
1198
1199feliminate-unused-debug-symbols
1200Common Report Var(flag_debug_only_used_symbols)
1201Perform unused symbol elimination in debug info
1202
1203feliminate-unused-debug-types
1204Common Report Var(flag_eliminate_unused_debug_types) Init(1)
1205Perform unused type elimination in debug info
1206
1207femit-class-debug-always
1208Common Report Var(flag_emit_class_debug_always) Init(0)
1209Do not suppress C++ class debug information.
1210
1211fexceptions
1212Common Report Var(flag_exceptions) Optimization
1213Enable exception handling
1214
1215fexpensive-optimizations
1216Common Report Var(flag_expensive_optimizations) Optimization
1217Perform a number of minor, expensive optimizations
1218
1219fexcess-precision=
1220Common Joined RejectNegative Enum(excess_precision) Var(flag_excess_precision_cmdline) Init(EXCESS_PRECISION_DEFAULT)
1221-fexcess-precision=[fast|standard]	Specify handling of excess floating-point precision
1222
1223Enum
1224Name(excess_precision) Type(enum excess_precision) UnknownError(unknown excess precision style %qs)
1225
1226EnumValue
1227Enum(excess_precision) String(fast) Value(EXCESS_PRECISION_FAST)
1228
1229EnumValue
1230Enum(excess_precision) String(standard) Value(EXCESS_PRECISION_STANDARD)
1231
1232ffast-math
1233Common
1234
1235ffat-lto-objects
1236Common Var(flag_fat_lto_objects)
1237Output lto objects containing both the intermediate language and binary output.
1238
1239ffinite-math-only
1240Common Report Var(flag_finite_math_only) Optimization SetByCombined
1241Assume no NaNs or infinities are generated
1242
1243ffixed-
1244Common Joined RejectNegative Var(common_deferred_options) Defer
1245-ffixed-<register>	Mark <register> as being unavailable to the compiler
1246
1247ffloat-store
1248Common Report Var(flag_float_store) Optimization
1249Don't allocate floats and doubles in extended-precision registers
1250
1251fforce-addr
1252Common Ignore
1253Does nothing.  Preserved for backward compatibility.
1254
1255fforward-propagate
1256Common Report Var(flag_forward_propagate) Optimization
1257Perform a forward propagation pass on RTL
1258
1259ffp-contract=
1260Common Joined RejectNegative Enum(fp_contract_mode) Var(flag_fp_contract_mode) Init(FP_CONTRACT_FAST) Optimization
1261-ffp-contract=[off|on|fast] Perform floating-point expression contraction.
1262
1263Enum
1264Name(fp_contract_mode) Type(enum fp_contract_mode) UnknownError(unknown floating point contraction style %qs)
1265
1266EnumValue
1267Enum(fp_contract_mode) String(off) Value(FP_CONTRACT_OFF)
1268
1269; Not implemented, fall back to conservative FP_CONTRACT_OFF.
1270EnumValue
1271Enum(fp_contract_mode) String(on) Value(FP_CONTRACT_OFF)
1272
1273EnumValue
1274Enum(fp_contract_mode) String(fast) Value(FP_CONTRACT_FAST)
1275
1276; Nonzero means don't put addresses of constant functions in registers.
1277; Used for compiling the Unix kernel, where strange substitutions are
1278; done on the assembly output.
1279ffunction-cse
1280Common Report Var(flag_no_function_cse,0) Optimization
1281Allow function addresses to be held in registers
1282
1283ffunction-sections
1284Common Report Var(flag_function_sections)
1285Place each function into its own section
1286
1287fgcse
1288Common Report Var(flag_gcse) Optimization
1289Perform global common subexpression elimination
1290
1291fgcse-lm
1292Common Report Var(flag_gcse_lm) Init(1) Optimization
1293Perform enhanced load motion during global common subexpression elimination
1294
1295fgcse-sm
1296Common Report Var(flag_gcse_sm) Init(0) Optimization
1297Perform store motion after global common subexpression elimination
1298
1299fgcse-las
1300Common Report Var(flag_gcse_las) Init(0) Optimization
1301Perform redundant load after store elimination in global common subexpression
1302elimination
1303
1304fgcse-after-reload
1305Common Report Var(flag_gcse_after_reload) Optimization
1306Perform global common subexpression elimination after register allocation
1307has finished
1308
1309; This option is not documented yet as its semantics will change.
1310fgraphite
1311Common Report Var(flag_graphite) Optimization
1312Enable in and out of Graphite representation
1313
1314fgraphite-identity
1315Common Report Var(flag_graphite_identity) Optimization
1316Enable Graphite Identity transformation
1317
1318fhoist-adjacent-loads
1319Common Report Var(flag_hoist_adjacent_loads) Optimization
1320Enable hoisting adjacent loads to encourage generating conditional move
1321instructions
1322
1323floop-parallelize-all
1324Common Report Var(flag_loop_parallelize_all) Optimization
1325Mark all loops as parallel
1326
1327floop-strip-mine
1328Common Report Var(flag_loop_strip_mine) Optimization
1329Enable Loop Strip Mining transformation
1330
1331floop-interchange
1332Common Report Var(flag_loop_interchange) Optimization
1333Enable Loop Interchange transformation
1334
1335floop-block
1336Common Report Var(flag_loop_block) Optimization
1337Enable Loop Blocking transformation
1338
1339floop-unroll-and-jam
1340Common Report Var(flag_loop_unroll_jam) Optimization
1341Enable Loop Unroll Jam transformation
1342
1343fgnu-tm
1344Common Report Var(flag_tm)
1345Enable support for GNU transactional memory
1346
1347fgnu-unique
1348Common Report Var(flag_gnu_unique) Init(1)
1349Use STB_GNU_UNIQUE if supported by the assembler
1350
1351floop-flatten
1352Common Ignore
1353Does nothing. Preserved for backward compatibility.
1354
1355floop-nest-optimize
1356Common Report Var(flag_loop_optimize_isl) Optimization
1357Enable the ISL based loop nest optimizer
1358
1359fstrict-volatile-bitfields
1360Common Report Var(flag_strict_volatile_bitfields) Init(-1) Optimization
1361Force bitfield accesses to match their type width
1362
1363fguess-branch-probability
1364Common Report Var(flag_guess_branch_prob) Optimization
1365Enable guessing of branch probabilities
1366
1367; Nonzero means ignore `#ident' directives.  0 means handle them.
1368; Generate position-independent code for executables if possible
1369; On SVR4 targets, it also controls whether or not to emit a
1370; string identifying the compiler.
1371fident
1372Common Report Var(flag_no_ident,0)
1373Process #ident directives
1374
1375fif-conversion
1376Common Report Var(flag_if_conversion) Optimization
1377Perform conversion of conditional jumps to branchless equivalents
1378
1379fif-conversion2
1380Common Report Var(flag_if_conversion2) Optimization
1381Perform conversion of conditional jumps to conditional execution
1382
1383fstack-reuse=
1384Common Joined RejectNegative Enum(stack_reuse_level) Var(flag_stack_reuse) Init(SR_ALL) Optimization
1385-fstack-reuse=[all|named_vars|none] Set stack reuse level for local variables.
1386
1387Enum
1388Name(stack_reuse_level) Type(enum stack_reuse_level) UnknownError(unknown Stack Reuse Level %qs)
1389
1390EnumValue
1391Enum(stack_reuse_level) String(all) Value(SR_ALL)
1392
1393EnumValue
1394Enum(stack_reuse_level) String(named_vars) Value(SR_NAMED_VARS)
1395
1396EnumValue
1397Enum(stack_reuse_level) String(none) Value(SR_NONE)
1398
1399ftree-loop-if-convert
1400Common Report Var(flag_tree_loop_if_convert) Init(-1) Optimization
1401Convert conditional jumps in innermost loops to branchless equivalents
1402
1403ftree-loop-if-convert-stores
1404Common Report Var(flag_tree_loop_if_convert_stores) Optimization
1405Also if-convert conditional jumps containing memory writes
1406
1407; -finhibit-size-directive inhibits output of .size for ELF.
1408; This is used only for compiling crtstuff.c,
1409; and it may be extended to other effects
1410; needed for crtstuff.c on other systems.
1411finhibit-size-directive
1412Common Report Var(flag_inhibit_size_directive)
1413Do not generate .size directives
1414
1415findirect-inlining
1416Common Report Var(flag_indirect_inlining) Optimization
1417Perform indirect inlining
1418
1419; General flag to enable inlining.  Specifying -fno-inline will disable
1420; all inlining apart from always-inline functions.
1421finline
1422Common Report Var(flag_no_inline,0) Init(0) Optimization
1423Enable inlining of function declared \"inline\", disabling disables all inlining
1424
1425finline-small-functions
1426Common Report Var(flag_inline_small_functions) Optimization
1427Integrate functions into their callers when code size is known not to grow
1428
1429finline-functions
1430Common Report Var(flag_inline_functions) Optimization
1431Integrate functions not declared \"inline\" into their callers when profitable
1432
1433finline-functions-called-once
1434Common Report Var(flag_inline_functions_called_once) Optimization
1435Integrate functions only required by their single caller
1436
1437finline-limit-
1438Common RejectNegative Joined Alias(finline-limit=)
1439
1440finline-limit=
1441Common RejectNegative Joined UInteger
1442-finline-limit=<number>	Limit the size of inlined functions to <number>
1443
1444finline-atomics
1445Common Report Var(flag_inline_atomics) Init(1) Optimization
1446Inline __atomic operations when a lock free instruction sequence is available.
1447
1448finstrument-functions
1449Common Report Var(flag_instrument_function_entry_exit)
1450Instrument function entry and exit with profiling calls
1451
1452finstrument-functions-exclude-function-list=
1453Common RejectNegative Joined
1454-finstrument-functions-exclude-function-list=name,...  Do not instrument listed functions
1455
1456finstrument-functions-exclude-file-list=
1457Common RejectNegative Joined
1458-finstrument-functions-exclude-file-list=filename,...  Do not instrument functions listed in files
1459
1460fipa-cp
1461Common Report Var(flag_ipa_cp) Optimization
1462Perform interprocedural constant propagation
1463
1464fipa-cp-clone
1465Common Report Var(flag_ipa_cp_clone) Optimization
1466Perform cloning to make Interprocedural constant propagation stronger
1467
1468fipa-cp-alignment
1469Common Report Var(flag_ipa_cp_alignment) Optimization
1470Perform alignment discovery and propagation to make Interprocedural constant propagation stronger
1471
1472fipa-profile
1473Common Report Var(flag_ipa_profile) Init(0) Optimization
1474Perform interprocedural profile propagation
1475
1476fipa-pta
1477Common Report Var(flag_ipa_pta) Init(0) Optimization
1478Perform interprocedural points-to analysis
1479
1480fipa-pure-const
1481Common Report Var(flag_ipa_pure_const) Init(0) Optimization
1482Discover pure and const functions
1483
1484fipa-icf
1485Common Report Var(flag_ipa_icf) Optimization
1486Perform Identical Code Folding for functions and read-only variables
1487
1488fipa-icf-functions
1489Common Report Var(flag_ipa_icf_functions) Optimization
1490Perform Identical Code Folding for functions
1491
1492fipa-icf-variables
1493Common Report Var(flag_ipa_icf_variables)
1494Perform Identical Code Folding for variables
1495
1496fipa-reference
1497Common Report Var(flag_ipa_reference) Init(0) Optimization
1498Discover readonly and non addressable static variables
1499
1500fipa-matrix-reorg
1501Common Ignore
1502Does nothing. Preserved for backward compatibility.
1503
1504fipa-struct-reorg
1505Common Ignore
1506Does nothing. Preserved for backward compatibility.
1507
1508fira-algorithm=
1509Common Joined RejectNegative Enum(ira_algorithm) Var(flag_ira_algorithm) Init(IRA_ALGORITHM_CB) Optimization
1510-fira-algorithm=[CB|priority] Set the used IRA algorithm
1511
1512Enum
1513Name(ira_algorithm) Type(enum ira_algorithm) UnknownError(unknown IRA algorithm %qs)
1514
1515EnumValue
1516Enum(ira_algorithm) String(CB) Value(IRA_ALGORITHM_CB)
1517
1518EnumValue
1519Enum(ira_algorithm) String(priority) Value(IRA_ALGORITHM_PRIORITY)
1520
1521fira-region=
1522Common Joined RejectNegative Enum(ira_region) Var(flag_ira_region) Init(IRA_REGION_AUTODETECT) Optimization
1523-fira-region=[one|all|mixed] Set regions for IRA
1524
1525Enum
1526Name(ira_region) Type(enum ira_region) UnknownError(unknown IRA region %qs)
1527
1528EnumValue
1529Enum(ira_region) String(one) Value(IRA_REGION_ONE)
1530
1531EnumValue
1532Enum(ira_region) String(all) Value(IRA_REGION_ALL)
1533
1534EnumValue
1535Enum(ira_region) String(mixed) Value(IRA_REGION_MIXED)
1536
1537fira-hoist-pressure
1538Common Report Var(flag_ira_hoist_pressure) Init(1) Optimization
1539Use IRA based register pressure calculation
1540in RTL hoist optimizations.
1541
1542fira-loop-pressure
1543Common Report Var(flag_ira_loop_pressure) Optimization
1544Use IRA based register pressure calculation
1545in RTL loop optimizations.
1546
1547fira-share-save-slots
1548Common Report Var(flag_ira_share_save_slots) Init(1) Optimization
1549Share slots for saving different hard registers.
1550
1551fira-share-spill-slots
1552Common Report Var(flag_ira_share_spill_slots) Init(1) Optimization
1553Share stack slots for spilled pseudo-registers.
1554
1555fira-verbose=
1556Common RejectNegative Joined UInteger Var(flag_ira_verbose) Init(5)
1557-fira-verbose=<number>	Control IRA's level of diagnostic messages.
1558
1559fivopts
1560Common Report Var(flag_ivopts) Init(1) Optimization
1561Optimize induction variables on trees
1562
1563fjump-tables
1564Common Var(flag_jump_tables) Init(1) Optimization
1565Use jump tables for sufficiently large switch statements
1566
1567fkeep-inline-functions
1568Common Report Var(flag_keep_inline_functions)
1569Generate code for functions even if they are fully inlined
1570
1571fkeep-static-consts
1572Common Report Var(flag_keep_static_consts) Init(1)
1573Emit static const variables even if they are not used
1574
1575fleading-underscore
1576Common Report Var(flag_leading_underscore) Init(-1)
1577Give external symbols a leading underscore
1578
1579floop-optimize
1580Common Ignore
1581Does nothing.  Preserved for backward compatibility.
1582
1583flra-remat
1584Common Report Var(flag_lra_remat) Optimization
1585Do CFG-sensitive rematerialization in LRA
1586
1587flto
1588Common
1589Enable link-time optimization.
1590
1591flto=
1592Common RejectNegative Joined Var(flag_lto)
1593Link-time optimization with number of parallel jobs or jobserver.
1594
1595Enum
1596Name(lto_partition_model) Type(enum lto_partition_model) UnknownError(unknown LTO partitioning model %qs)
1597
1598EnumValue
1599Enum(lto_partition_model) String(none) Value(LTO_PARTITION_NONE)
1600
1601EnumValue
1602Enum(lto_partition_model) String(one) Value(LTO_PARTITION_ONE)
1603
1604EnumValue
1605Enum(lto_partition_model) String(balanced) Value(LTO_PARTITION_BALANCED)
1606
1607EnumValue
1608Enum(lto_partition_model) String(1to1) Value(LTO_PARTITION_1TO1)
1609
1610EnumValue
1611Enum(lto_partition_model) String(max) Value(LTO_PARTITION_MAX)
1612
1613flto-partition=
1614Common Joined RejectNegative Enum(lto_partition_model) Var(flag_lto_partition) Init(LTO_PARTITION_BALANCED)
1615Specify the algorithm to partition symbols and vars at linktime
1616
1617; The initial value of -1 comes from Z_DEFAULT_COMPRESSION in zlib.h.
1618flto-compression-level=
1619Common Joined RejectNegative UInteger Var(flag_lto_compression_level) Init(-1)
1620-flto-compression-level=<number>	Use zlib compression level <number> for IL
1621
1622flto-odr-type-merging
1623Common Report Var(flag_lto_odr_type_mering) Init(1)
1624Merge C++ types using One Definition Rule
1625
1626flto-report
1627Common Report Var(flag_lto_report) Init(0)
1628Report various link-time optimization statistics
1629
1630flto-report-wpa
1631Common Report Var(flag_lto_report_wpa) Init(0)
1632Report various link-time optimization statistics for WPA only
1633
1634fmath-errno
1635Common Report Var(flag_errno_math) Init(1) Optimization SetByCombined
1636Set errno after built-in math functions
1637
1638fmax-errors=
1639Common Joined RejectNegative UInteger Var(flag_max_errors)
1640-fmax-errors=<number>	Maximum number of errors to report
1641
1642fmem-report
1643Common Report Var(mem_report)
1644Report on permanent memory allocation
1645
1646fmem-report-wpa
1647Common Report Var(mem_report_wpa)
1648Report on permanent memory allocation in WPA only
1649
1650; This will attempt to merge constant section constants, if 1 only
1651; string constants and constants from constant pool, if 2 also constant
1652; variables.
1653fmerge-all-constants
1654Common Report Var(flag_merge_constants,2) Init(1)
1655Attempt to merge identical constants and constant variables
1656
1657fmerge-constants
1658Common Report Var(flag_merge_constants,1)
1659Attempt to merge identical constants across compilation units
1660
1661fmerge-debug-strings
1662Common Report Var(flag_merge_debug_strings) Init(1)
1663Attempt to merge identical debug strings across compilation units
1664
1665fmessage-length=
1666Common RejectNegative Joined UInteger
1667-fmessage-length=<number>	Limit diagnostics to <number> characters per line.  0 suppresses line-wrapping
1668
1669fmodulo-sched
1670Common Report Var(flag_modulo_sched) Optimization
1671Perform SMS based modulo scheduling before the first scheduling pass
1672
1673fmodulo-sched-allow-regmoves
1674Common Report Var(flag_modulo_sched_allow_regmoves) Optimization
1675Perform SMS based modulo scheduling with register moves allowed
1676
1677fmove-loop-invariants
1678Common Report Var(flag_move_loop_invariants) Optimization
1679Move loop invariant computations out of loops
1680
1681fdce
1682Common Var(flag_dce) Init(1) Optimization
1683Use the RTL dead code elimination pass
1684
1685fdse
1686Common Var(flag_dse) Init(1) Optimization
1687Use the RTL dead store elimination pass
1688
1689freschedule-modulo-scheduled-loops
1690Common Report Var(flag_resched_modulo_sched) Optimization
1691Enable/Disable the traditional scheduling in loops that already passed modulo scheduling
1692
1693fnon-call-exceptions
1694Common Report Var(flag_non_call_exceptions) Optimization
1695Support synchronous non-call exceptions
1696
1697foffload=
1698Common Driver Joined MissingArgError(options or targets missing after %qs)
1699-foffload=<targets>=<options>  Specify offloading targets and options for them
1700
1701foffload-abi=
1702Common Joined RejectNegative Enum(offload_abi) Var(flag_offload_abi) Init(OFFLOAD_ABI_UNSET)
1703-foffload-abi=[lp64|ilp32]     Set the ABI to use in an offload compiler
1704
1705Enum
1706Name(offload_abi) Type(enum offload_abi) UnknownError(unknown offload ABI %qs)
1707
1708EnumValue
1709Enum(offload_abi) String(ilp32) Value(OFFLOAD_ABI_ILP32)
1710
1711EnumValue
1712Enum(offload_abi) String(lp64) Value(OFFLOAD_ABI_LP64)
1713
1714fomit-frame-pointer
1715Common Report Var(flag_omit_frame_pointer) Optimization
1716When possible do not generate stack frames
1717
1718fopt-info
1719Common Report Var(flag_opt_info) Optimization
1720Enable all optimization info dumps on stderr
1721
1722fopt-info-
1723Common Joined RejectNegative Var(common_deferred_options) Defer
1724-fopt-info[-<type>=filename]	Dump compiler optimization details
1725
1726foptimize-register-move
1727Common Ignore
1728Does nothing. Preserved for backward compatibility.
1729
1730foptimize-sibling-calls
1731Common Report Var(flag_optimize_sibling_calls) Optimization
1732Optimize sibling and tail recursive calls
1733
1734fpartial-inlining
1735Common Report Var(flag_partial_inlining) Optimization
1736Perform partial inlining
1737
1738fpre-ipa-mem-report
1739Common Report Var(pre_ipa_mem_report)
1740Report on memory allocation before interprocedural optimization
1741
1742fpost-ipa-mem-report
1743Common Report Var(post_ipa_mem_report)
1744Report on memory allocation before interprocedural optimization
1745
1746fpack-struct
1747Common Report Var(flag_pack_struct) Optimization
1748Pack structure members together without holes
1749
1750fpack-struct=
1751Common RejectNegative Joined UInteger Optimization
1752-fpack-struct=<number>	Set initial maximum structure member alignment
1753
1754fpcc-struct-return
1755Common Report Var(flag_pcc_struct_return,1) Init(DEFAULT_PCC_STRUCT_RETURN)
1756Return small aggregates in memory, not registers
1757
1758fpeel-loops
1759Common Report Var(flag_peel_loops) Optimization
1760Perform loop peeling
1761
1762fpeephole
1763Common Report Var(flag_no_peephole,0) Optimization
1764Enable machine specific peephole optimizations
1765
1766fpeephole2
1767Common Report Var(flag_peephole2) Optimization
1768Enable an RTL peephole pass before sched2
1769
1770fPIC
1771Common Report Var(flag_pic,2) Negative(fPIE)
1772Generate position-independent code if possible (large mode)
1773
1774fPIE
1775Common Report Var(flag_pie,2) Negative(fpic)
1776Generate position-independent code for executables if possible (large mode)
1777
1778fpic
1779Common Report Var(flag_pic,1) Negative(fpie)
1780Generate position-independent code if possible (small mode)
1781
1782fpie
1783Common Report Var(flag_pie,1) Negative(fPIC)
1784Generate position-independent code for executables if possible (small mode)
1785
1786fplugin=
1787Common Joined RejectNegative Var(common_deferred_options) Defer
1788Specify a plugin to load
1789
1790fplugin-arg-
1791Common Joined RejectNegative Var(common_deferred_options) Defer
1792-fplugin-arg-<name>-<key>[=<value>]	Specify argument <key>=<value> for plugin <name>
1793
1794fpredictive-commoning
1795Common Report Var(flag_predictive_commoning) Optimization
1796Run predictive commoning optimization.
1797
1798fprefetch-loop-arrays
1799Common Report Var(flag_prefetch_loop_arrays) Init(-1) Optimization
1800Generate prefetch instructions, if available, for arrays in loops
1801
1802fprofile
1803Common Report Var(profile_flag)
1804Enable basic program profiling code
1805
1806fprofile-arcs
1807Common Report Var(profile_arc_flag)
1808Insert arc-based program profiling code
1809
1810fprofile-dir=
1811Common Joined RejectNegative Var(profile_data_prefix)
1812Set the top-level directory for storing the profile data.
1813The default is 'pwd'.
1814
1815fprofile-correction
1816Common Report Var(flag_profile_correction)
1817Enable correction of flow inconsistent profile data input
1818
1819fprofile-generate
1820Common
1821Enable common options for generating profile info for profile feedback directed optimizations
1822
1823fprofile-generate=
1824Common Joined RejectNegative
1825Enable common options for generating profile info for profile feedback directed optimizations, and set -fprofile-dir=
1826
1827fprofile-use
1828Common Var(flag_profile_use)
1829Enable common options for performing profile feedback directed optimizations
1830
1831fprofile-use=
1832Common Joined RejectNegative
1833Enable common options for performing profile feedback directed optimizations, and set -fprofile-dir=
1834
1835fprofile-values
1836Common Report Var(flag_profile_values)
1837Insert code to profile values of expressions
1838
1839fprofile-report
1840Common Report Var(profile_report)
1841Report on consistency of profile
1842
1843fprofile-reorder-functions
1844Common Report Var(flag_profile_reorder_functions)
1845Enable function reordering that improves code placement
1846
1847frandom-seed
1848Common Var(common_deferred_options) Defer
1849
1850frandom-seed=
1851Common Joined RejectNegative Var(common_deferred_options) Defer
1852-frandom-seed=<string>	Make compile reproducible using <string>
1853
1854; This switch causes the command line that was used to create an
1855; object file to be recorded into the object file.  The exact format
1856; of this recording is target and binary file format dependent.
1857; It is related to the -fverbose-asm switch, but that switch only
1858; records information in the assembler output file as comments, so
1859; they never reach the object file.
1860frecord-gcc-switches
1861Common Report Var(flag_record_gcc_switches)
1862Record gcc command line switches in the object file.
1863
1864freg-struct-return
1865Common Report Var(flag_pcc_struct_return,0) Optimization
1866Return small aggregates in registers
1867
1868fregmove
1869Common Ignore
1870Does nothing. Preserved for backward compatibility.
1871
1872flifetime-dse
1873Common Report Var(flag_lifetime_dse) Init(1) Optimization
1874Tell DSE that the storage for a C++ object is dead when the constructor
1875starts and when the destructor finishes.
1876
1877flive-range-shrinkage
1878Common Report Var(flag_live_range_shrinkage) Init(0) Optimization
1879Relief of register pressure through live range shrinkage
1880
1881frename-registers
1882Common Report Var(flag_rename_registers) Init(2) Optimization
1883Perform a register renaming optimization pass
1884
1885fschedule-fusion
1886Common Report Var(flag_schedule_fusion) Init(2) Optimization
1887Perform a target dependent instruction fusion optimization pass
1888
1889freorder-blocks
1890Common Report Var(flag_reorder_blocks) Optimization
1891Reorder basic blocks to improve code placement
1892
1893freorder-blocks-and-partition
1894Common Report Var(flag_reorder_blocks_and_partition) Optimization
1895Reorder basic blocks and partition into hot and cold sections
1896
1897freorder-functions
1898Common Report Var(flag_reorder_functions) Optimization
1899Reorder functions to improve code placement
1900
1901frerun-cse-after-loop
1902Common Report Var(flag_rerun_cse_after_loop) Optimization
1903Add a common subexpression elimination pass after loop optimizations
1904
1905frerun-loop-opt
1906Common Ignore
1907Does nothing.  Preserved for backward compatibility.
1908
1909frounding-math
1910Common Report Var(flag_rounding_math) Optimization SetByCombined
1911Disable optimizations that assume default FP rounding behavior
1912
1913fsched-interblock
1914Common Report Var(flag_schedule_interblock) Init(1) Optimization
1915Enable scheduling across basic blocks
1916
1917fsched-pressure
1918Common Report Var(flag_sched_pressure) Init(0) Optimization
1919Enable register pressure sensitive insn scheduling
1920
1921fsched-spec
1922Common Report Var(flag_schedule_speculative) Init(1) Optimization
1923Allow speculative motion of non-loads
1924
1925fsched-spec-load
1926Common Report Var(flag_schedule_speculative_load) Optimization
1927Allow speculative motion of some loads
1928
1929fsched-spec-load-dangerous
1930Common Report Var(flag_schedule_speculative_load_dangerous) Optimization
1931Allow speculative motion of more loads
1932
1933fsched-verbose=
1934Common RejectNegative Joined UInteger Var(sched_verbose_param)
1935-fsched-verbose=<number>	Set the verbosity level of the scheduler
1936
1937fsched2-use-superblocks
1938Common Report Var(flag_sched2_use_superblocks) Optimization
1939If scheduling post reload, do superblock scheduling
1940
1941fsched2-use-traces
1942Common Ignore
1943Does nothing.  Preserved for backward compatibility.
1944
1945fschedule-insns
1946Common Report Var(flag_schedule_insns) Optimization
1947Reschedule instructions before register allocation
1948
1949fschedule-insns2
1950Common Report Var(flag_schedule_insns_after_reload) Optimization
1951Reschedule instructions after register allocation
1952
1953; This flag should be on when a target implements non-trivial
1954; scheduling hooks, maybe saving some information for its own sake.
1955; On IA64, for example, this is used for correct bundling.
1956fselective-scheduling
1957Common Report Var(flag_selective_scheduling) Optimization
1958Schedule instructions using selective scheduling algorithm
1959
1960fselective-scheduling2
1961Common Report Var(flag_selective_scheduling2) Optimization
1962Run selective scheduling after reload
1963
1964fsel-sched-pipelining
1965Common Report Var(flag_sel_sched_pipelining) Init(0) Optimization
1966Perform software pipelining of inner loops during selective scheduling
1967
1968fsel-sched-pipelining-outer-loops
1969Common Report Var(flag_sel_sched_pipelining_outer_loops) Init(0) Optimization
1970Perform software pipelining of outer loops during selective scheduling
1971
1972fsel-sched-reschedule-pipelined
1973Common Report Var(flag_sel_sched_reschedule_pipelined) Init(0) Optimization
1974Reschedule pipelined regions without pipelining
1975
1976fsemantic-interposition
1977Common Report Var(flag_semantic_interposition) Init(1)
1978Allow interposing function (or variables) by ones with different semantics (or initializer) respectively by dynamic linker
1979
1980; sched_stalled_insns means that insns can be moved prematurely from the queue
1981; of stalled insns into the ready list.
1982fsched-stalled-insns
1983Common Report Var(flag_sched_stalled_insns) Optimization UInteger
1984Allow premature scheduling of queued insns
1985
1986fsched-stalled-insns=
1987Common RejectNegative Joined UInteger Optimization
1988-fsched-stalled-insns=<number>	Set number of queued insns that can be prematurely scheduled
1989
1990; sched_stalled_insns_dep controls how many recently scheduled cycles will
1991; be examined for a dependency on a stalled insn that is candidate for
1992; premature removal from the queue of stalled insns into the ready list (has
1993; an effect only if the flag 'sched_stalled_insns' is set).
1994fsched-stalled-insns-dep
1995Common Report Var(flag_sched_stalled_insns_dep,1) Init(1) Optimization UInteger
1996Set dependence distance checking in premature scheduling of queued insns
1997
1998fsched-stalled-insns-dep=
1999Common RejectNegative Joined UInteger Optimization
2000-fsched-stalled-insns-dep=<number>	Set dependence distance checking in premature scheduling of queued insns
2001
2002fsched-group-heuristic
2003Common Report Var(flag_sched_group_heuristic) Init(1) Optimization
2004Enable the group heuristic in the scheduler
2005
2006fsched-critical-path-heuristic
2007Common Report Var(flag_sched_critical_path_heuristic) Init(1) Optimization
2008Enable the critical path heuristic in the scheduler
2009
2010fsched-spec-insn-heuristic
2011Common Report Var(flag_sched_spec_insn_heuristic) Init(1) Optimization
2012Enable the speculative instruction heuristic in the scheduler
2013
2014fsched-rank-heuristic
2015Common Report Var(flag_sched_rank_heuristic) Init(1) Optimization
2016Enable the rank heuristic in the scheduler
2017
2018fsched-last-insn-heuristic
2019Common Report Var(flag_sched_last_insn_heuristic) Init(1) Optimization
2020Enable the last instruction heuristic in the scheduler
2021
2022fsched-dep-count-heuristic
2023Common Report Var(flag_sched_dep_count_heuristic) Init(1) Optimization
2024Enable the dependent count heuristic in the scheduler
2025
2026fsection-anchors
2027Common Report Var(flag_section_anchors) Optimization
2028Access data in the same section from shared anchor points
2029
2030fsee
2031Common Ignore
2032Does nothing.  Preserved for backward compatibility.
2033
2034fzee
2035Common Ignore
2036Does nothing.  Preserved for backward compatibility.
2037
2038free
2039Common Report Var(flag_ree) Init(0)
2040Turn on Redundant Extensions Elimination pass.
2041
2042fshow-column
2043Common Report Var(flag_show_column) Init(1)
2044Show column numbers in diagnostics, when available.  Default on
2045
2046fshrink-wrap
2047Common Report Var(flag_shrink_wrap) Optimization
2048Emit function prologues only before parts of the function that need it,
2049rather than at the top of the function.
2050
2051fsignaling-nans
2052Common Report Var(flag_signaling_nans) Optimization SetByCombined
2053Disable optimizations observable by IEEE signaling NaNs
2054
2055fsigned-zeros
2056Common Report Var(flag_signed_zeros) Init(1) Optimization SetByCombined
2057Disable floating point optimizations that ignore the IEEE signedness of zero
2058
2059fsingle-precision-constant
2060Common Report Var(flag_single_precision_constant) Optimization
2061Convert floating point constants to single precision constants
2062
2063fsplit-ivs-in-unroller
2064Common Report Var(flag_split_ivs_in_unroller) Init(1) Optimization
2065Split lifetimes of induction variables when loops are unrolled
2066
2067fsplit-stack
2068Common Report Var(flag_split_stack) Init(-1)
2069Generate discontiguous stack frames
2070
2071fsplit-wide-types
2072Common Report Var(flag_split_wide_types) Optimization
2073Split wide types into independent registers
2074
2075fssa-phiopt
2076Common Report Var(flag_ssa_phiopt) Optimization
2077Optimize conditional patterns using SSA PHI nodes
2078
2079fstdarg-opt
2080Common Report Var(flag_stdarg_opt) Init(1) Optimization
2081Optimize amount of stdarg registers saved to stack at start of function
2082
2083fvariable-expansion-in-unroller
2084Common Report Var(flag_variable_expansion_in_unroller) Optimization
2085Apply variable expansion when loops are unrolled
2086
2087fstack-check=
2088Common Report RejectNegative Joined
2089-fstack-check=[no|generic|specific]	Insert stack checking code into the program
2090
2091fstack-check
2092Common Alias(fstack-check=, specific, no)
2093Insert stack checking code into the program.  Same as -fstack-check=specific
2094
2095fstack-limit
2096Common Var(common_deferred_options) Defer
2097
2098fstack-limit-register=
2099Common RejectNegative Joined Var(common_deferred_options) Defer
2100-fstack-limit-register=<register>	Trap if the stack goes past <register>
2101
2102fstack-limit-symbol=
2103Common RejectNegative Joined Var(common_deferred_options) Defer
2104-fstack-limit-symbol=<name>	Trap if the stack goes past symbol <name>
2105
2106fstack-protector
2107Common Report Var(flag_stack_protect, 1)
2108Use propolice as a stack protection method
2109
2110fstack-protector-all
2111Common Report RejectNegative Var(flag_stack_protect, 2)
2112Use a stack protection method for every function
2113
2114fstack-protector-strong
2115Common Report RejectNegative Var(flag_stack_protect, 3)
2116Use a smart stack protection method for certain functions
2117
2118fstack-protector-explicit
2119Common Report RejectNegative Var(flag_stack_protect, 4)
2120Use stack protection method only for functions with the stack_protect attribute
2121
2122fstack-usage
2123Common RejectNegative Var(flag_stack_usage)
2124Output stack usage information on a per-function basis
2125
2126fstrength-reduce
2127Common Ignore
2128Does nothing.  Preserved for backward compatibility.
2129
2130; Nonzero if we should do (language-dependent) alias analysis.
2131; Typically, this analysis will assume that expressions of certain
2132; types do not alias expressions of certain other types.  Only used
2133; if alias analysis (in general) is enabled.
2134fstrict-aliasing
2135Common Report Var(flag_strict_aliasing) Optimization
2136Assume strict aliasing rules apply
2137
2138fstrict-overflow
2139Common Report Var(flag_strict_overflow) Optimization
2140Treat signed overflow as undefined
2141
2142fsync-libcalls
2143Common Report Var(flag_sync_libcalls) Init(1)
2144Implement __atomic operations via libcalls to legacy __sync functions
2145
2146fsyntax-only
2147Common Report Var(flag_syntax_only)
2148Check for syntax errors, then stop
2149
2150ftest-coverage
2151Common Report Var(flag_test_coverage)
2152Create data files needed by \"gcov\"
2153
2154fthread-jumps
2155Common Report Var(flag_thread_jumps) Optimization
2156Perform jump threading optimizations
2157
2158ftime-report
2159Common Report Var(time_report)
2160Report the time taken by each compiler pass
2161
2162ftls-model=
2163Common Joined RejectNegative Enum(tls_model) Var(flag_tls_default) Init(TLS_MODEL_GLOBAL_DYNAMIC)
2164-ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec]	Set the default thread-local storage code generation model
2165
2166Enum
2167Name(tls_model) Type(enum tls_model) UnknownError(unknown TLS model %qs)
2168
2169EnumValue
2170Enum(tls_model) String(global-dynamic) Value(TLS_MODEL_GLOBAL_DYNAMIC)
2171
2172EnumValue
2173Enum(tls_model) String(local-dynamic) Value(TLS_MODEL_LOCAL_DYNAMIC)
2174
2175EnumValue
2176Enum(tls_model) String(initial-exec) Value(TLS_MODEL_INITIAL_EXEC)
2177
2178EnumValue
2179Enum(tls_model) String(local-exec) Value(TLS_MODEL_LOCAL_EXEC)
2180
2181ftoplevel-reorder
2182Common Report Var(flag_toplevel_reorder) Init(2)
2183Reorder top level functions, variables, and asms
2184
2185ftracer
2186Common Report Var(flag_tracer) Optimization
2187Perform superblock formation via tail duplication
2188
2189; Zero means that floating-point math operations cannot generate a
2190; (user-visible) trap.  This is the case, for example, in nonstop
2191; IEEE 754 arithmetic.
2192ftrapping-math
2193Common Report Var(flag_trapping_math) Init(1) Optimization SetByCombined
2194Assume floating-point operations can trap
2195
2196ftrapv
2197Common Report Var(flag_trapv) Optimization
2198Trap for signed overflow in addition, subtraction and multiplication
2199
2200ftree-ccp
2201Common Report Var(flag_tree_ccp) Optimization
2202Enable SSA-CCP optimization on trees
2203
2204ftree-bit-ccp
2205Common Report Var(flag_tree_bit_ccp) Optimization
2206Enable SSA-BIT-CCP optimization on trees
2207
2208ftree-store-ccp
2209Common Ignore
2210Does nothing.  Preserved for backward compatibility.
2211
2212ftree-ch
2213Common Report Var(flag_tree_ch) Optimization
2214Enable loop header copying on trees
2215
2216ftree-coalesce-inlined-vars
2217Common Report Var(flag_ssa_coalesce_vars,1) Init(2) RejectNegative Optimization
2218Enable coalescing of copy-related user variables that are inlined
2219
2220ftree-coalesce-vars
2221Common Report Var(flag_ssa_coalesce_vars,2) Optimization
2222Enable coalescing of all copy-related user variables
2223
2224ftree-copyrename
2225Common Report Var(flag_tree_copyrename) Optimization
2226Replace SSA temporaries with better names in copies
2227
2228ftree-copy-prop
2229Common Report Var(flag_tree_copy_prop) Optimization
2230Enable copy propagation on trees
2231
2232ftree-store-copy-prop
2233Common Ignore
2234Does nothing.  Preserved for backward compatibility.
2235
2236ftree-cselim
2237Common Report Var(flag_tree_cselim) Init(2) Optimization
2238Transform condition stores into unconditional ones
2239
2240ftree-switch-conversion
2241Common Report Var(flag_tree_switch_conversion) Optimization
2242Perform conversions of switch initializations.
2243
2244ftree-dce
2245Common Report Var(flag_tree_dce) Optimization
2246Enable SSA dead code elimination optimization on trees
2247
2248ftree-dominator-opts
2249Common Report Var(flag_tree_dom) Optimization
2250Enable dominator optimizations
2251
2252ftree-tail-merge
2253Common Report Var(flag_tree_tail_merge) Optimization
2254Enable tail merging on trees
2255
2256ftree-dse
2257Common Report Var(flag_tree_dse) Optimization
2258Enable dead store elimination
2259
2260ftree-forwprop
2261Common Report Var(flag_tree_forwprop) Init(1) Optimization
2262Enable forward propagation on trees
2263
2264ftree-fre
2265Common Report Var(flag_tree_fre) Optimization
2266Enable Full Redundancy Elimination (FRE) on trees
2267
2268foptimize-strlen
2269Common Report Var(flag_optimize_strlen) Optimization
2270Enable string length optimizations on trees
2271
2272fisolate-erroneous-paths-dereference
2273Common Report Var(flag_isolate_erroneous_paths_dereference) Optimization
2274Detect paths that trigger erroneous or undefined behavior due to
2275dereferencing a null pointer.  Isolate those paths from the main control
2276flow and turn the statement with erroneous or undefined behavior into a trap.
2277
2278fisolate-erroneous-paths-attribute
2279Common Report Var(flag_isolate_erroneous_paths_attribute) Optimization
2280Detect paths that trigger erroneous or undefined behavior due a null value
2281being used in a way forbidden by a returns_nonnull or nonnull
2282attribute.  Isolate those paths from the main control flow and turn the
2283statement with erroneous or undefined behavior into a trap.
2284
2285ftree-loop-distribution
2286Common Report Var(flag_tree_loop_distribution) Optimization
2287Enable loop distribution on trees
2288
2289ftree-loop-distribute-patterns
2290Common Report Var(flag_tree_loop_distribute_patterns) Optimization
2291Enable loop distribution for patterns transformed into a library call
2292
2293ftree-loop-im
2294Common Report Var(flag_tree_loop_im) Init(1) Optimization
2295Enable loop invariant motion on trees
2296
2297ftree-loop-linear
2298Common Alias(floop-interchange)
2299Enable loop interchange transforms.  Same as -floop-interchange
2300
2301ftree-loop-ivcanon
2302Common Report Var(flag_tree_loop_ivcanon) Init(1) Optimization
2303Create canonical induction variables in loops
2304
2305ftree-loop-optimize
2306Common Report Var(flag_tree_loop_optimize) Init(1) Optimization
2307Enable loop optimizations on tree level
2308
2309ftree-parallelize-loops=
2310Common Report Joined RejectNegative UInteger Var(flag_tree_parallelize_loops) Init(1) Optimization
2311Enable automatic parallelization of loops
2312
2313ftree-phiprop
2314Common Report Var(flag_tree_phiprop) Init(1) Optimization
2315Enable hoisting loads from conditional pointers.
2316
2317ftree-pre
2318Common Report Var(flag_tree_pre) Optimization
2319Enable SSA-PRE optimization on trees
2320
2321ftree-partial-pre
2322Common Report Var(flag_tree_partial_pre) Optimization
2323In SSA-PRE optimization on trees, enable partial-partial redundancy elimination
2324
2325ftree-pta
2326Common Report Var(flag_tree_pta) Optimization
2327Perform function-local points-to analysis on trees.
2328
2329ftree-reassoc
2330Common Report Var(flag_tree_reassoc) Init(1) Optimization
2331Enable reassociation on tree level
2332
2333ftree-salias
2334Common Ignore
2335Does nothing.  Preserved for backward compatibility.
2336
2337ftree-sink
2338Common Report Var(flag_tree_sink) Optimization
2339Enable SSA code sinking on trees
2340
2341ftree-slsr
2342Common Report Var(flag_tree_slsr) Optimization
2343Perform straight-line strength reduction
2344
2345ftree-sra
2346Common Report Var(flag_tree_sra) Optimization
2347Perform scalar replacement of aggregates
2348
2349ftree-ter
2350Common Report Var(flag_tree_ter) Optimization
2351Replace temporary expressions in the SSA->normal pass
2352
2353ftree-lrs
2354Common Report Var(flag_tree_live_range_split) Optimization
2355Perform live range splitting during the SSA->normal pass
2356
2357ftree-vrp
2358Common Report Var(flag_tree_vrp) Init(0) Optimization
2359Perform Value Range Propagation on trees
2360
2361funit-at-a-time
2362Common Report Var(flag_unit_at_a_time) Init(1)
2363Compile whole compilation unit at a time
2364
2365funroll-loops
2366Common Report Var(flag_unroll_loops) Optimization
2367Perform loop unrolling when iteration count is known
2368
2369funroll-all-loops
2370Common Report Var(flag_unroll_all_loops) Optimization
2371Perform loop unrolling for all loops
2372
2373; Nonzero means that loop optimizer may assume that the induction variables
2374; that control loops do not overflow and that the loops with nontrivial
2375; exit condition are not infinite
2376funsafe-loop-optimizations
2377Common Report Var(flag_unsafe_loop_optimizations) Optimization
2378Allow loop optimizations to assume that the loops behave in normal way
2379
2380fassociative-math
2381Common Report Var(flag_associative_math) SetByCombined Optimization
2382Allow optimization for floating-point arithmetic which may change the
2383result of the operation due to rounding.
2384
2385freciprocal-math
2386Common Report Var(flag_reciprocal_math) SetByCombined Optimization
2387Same as -fassociative-math for expressions which include division.
2388
2389; Nonzero means that unsafe floating-point math optimizations are allowed
2390; for the sake of speed.  IEEE compliance is not guaranteed, and operations
2391; are allowed to assume that their arguments and results are "normal"
2392; (e.g., nonnegative for SQRT).
2393funsafe-math-optimizations
2394Common Report Var(flag_unsafe_math_optimizations) Optimization SetByCombined
2395Allow math optimizations that may violate IEEE or ISO standards
2396
2397funswitch-loops
2398Common Report Var(flag_unswitch_loops) Optimization
2399Perform loop unswitching
2400
2401funwind-tables
2402Common Report Var(flag_unwind_tables) Optimization
2403Just generate unwind tables for exception handling
2404
2405fuse-ld=bfd
2406Common Driver Negative(fuse-ld=gold)
2407Use the bfd linker instead of the default linker
2408
2409fuse-ld=gold
2410Common Driver Negative(fuse-ld=bfd)
2411Use the gold linker instead of the default linker
2412
2413fuse-linker-plugin
2414Common Undocumented Var(flag_use_linker_plugin)
2415
2416; Positive if we should track variables, negative if we should run
2417; the var-tracking pass only to discard debug annotations, zero if
2418; we're not to run it.  When flag_var_tracking == 2 (AUTODETECT_VALUE) it
2419; will be set according to optimize, debug_info_level and debug_hooks
2420; in process_options ().
2421fvar-tracking
2422Common Report Var(flag_var_tracking) Init(2) Optimization
2423Perform variable tracking
2424
2425; Positive if we should track variables at assignments, negative if
2426; we should run the var-tracking pass only to discard debug
2427; annotations.  When flag_var_tracking_assignments ==
2428; AUTODETECT_VALUE it will be set according to flag_var_tracking.
2429fvar-tracking-assignments
2430Common Report Var(flag_var_tracking_assignments) Init(2) Optimization
2431Perform variable tracking by annotating assignments
2432
2433; Nonzero if we should toggle flag_var_tracking_assignments after
2434; processing options and computing its default.  */
2435fvar-tracking-assignments-toggle
2436Common Report Var(flag_var_tracking_assignments_toggle) Optimization
2437Toggle -fvar-tracking-assignments
2438
2439; Positive if we should track uninitialized variables, negative if
2440; we should run the var-tracking pass only to discard debug
2441; annotations.  When flag_var_tracking_uninit == AUTODETECT_VALUE it
2442; will be set according to flag_var_tracking.
2443fvar-tracking-uninit
2444Common Report Var(flag_var_tracking_uninit) Optimization
2445Perform variable tracking and also tag variables that are uninitialized
2446
2447ftree-vectorize
2448Common Report Var(flag_tree_vectorize) Optimization
2449Enable vectorization on trees
2450
2451ftree-vectorizer-verbose=
2452Common Joined RejectNegative Ignore
2453Does nothing.  Preserved for backward compatibility.
2454
2455ftree-loop-vectorize
2456Common Report Var(flag_tree_loop_vectorize) Optimization
2457Enable loop vectorization on trees
2458
2459ftree-slp-vectorize
2460Common Report Var(flag_tree_slp_vectorize) Optimization
2461Enable basic block vectorization (SLP) on trees
2462
2463fvect-cost-model=
2464Common Joined RejectNegative Enum(vect_cost_model) Var(flag_vect_cost_model) Init(VECT_COST_MODEL_DEFAULT) Optimization
2465Specifies the cost model for vectorization
2466
2467fsimd-cost-model=
2468Common Joined RejectNegative Enum(vect_cost_model) Var(flag_simd_cost_model) Init(VECT_COST_MODEL_UNLIMITED) Optimization
2469Specifies the vectorization cost model for code marked with a simd directive
2470
2471Enum
2472Name(vect_cost_model) Type(enum vect_cost_model) UnknownError(unknown vectorizer cost model %qs)
2473
2474EnumValue
2475Enum(vect_cost_model) String(unlimited) Value(VECT_COST_MODEL_UNLIMITED)
2476
2477EnumValue
2478Enum(vect_cost_model) String(dynamic) Value(VECT_COST_MODEL_DYNAMIC)
2479
2480EnumValue
2481Enum(vect_cost_model) String(cheap) Value(VECT_COST_MODEL_CHEAP)
2482
2483fvect-cost-model
2484Common RejectNegative Alias(fvect-cost-model=,dynamic)
2485Enables the dynamic vectorizer cost model.  Preserved for backward compatibility.
2486
2487fno-vect-cost-model
2488Common RejectNegative Alias(fvect-cost-model=,unlimited)
2489Enables the unlimited vectorizer cost model.  Preserved for backward compatibility.
2490
2491ftree-vect-loop-version
2492Common Ignore
2493Does nothing. Preserved for backward compatibility.
2494
2495ftree-scev-cprop
2496Common Report Var(flag_tree_scev_cprop) Init(1) Optimization
2497Enable copy propagation of scalar-evolution information.
2498
2499; -fverbose-asm causes extra commentary information to be produced in
2500; the generated assembly code (to make it more readable).  This option
2501; is generally only of use to those who actually need to read the
2502; generated assembly code (perhaps while debugging the compiler itself).
2503; -fno-verbose-asm, the default, causes the extra information
2504; to not be added and is useful when comparing two assembler files.
2505fverbose-asm
2506Common Report Var(flag_verbose_asm)
2507Add extra commentary to assembler output
2508
2509fvisibility=
2510Common Joined RejectNegative Enum(symbol_visibility) Var(default_visibility) Init(VISIBILITY_DEFAULT)
2511-fvisibility=[default|internal|hidden|protected]	Set the default symbol visibility
2512
2513Enum
2514Name(symbol_visibility) Type(enum symbol_visibility) UnknownError(unrecognized visibility value %qs)
2515
2516EnumValue
2517Enum(symbol_visibility) String(default) Value(VISIBILITY_DEFAULT)
2518
2519EnumValue
2520Enum(symbol_visibility) String(internal) Value(VISIBILITY_INTERNAL)
2521
2522EnumValue
2523Enum(symbol_visibility) String(hidden) Value(VISIBILITY_HIDDEN)
2524
2525EnumValue
2526Enum(symbol_visibility) String(protected) Value(VISIBILITY_PROTECTED)
2527
2528fvtable-verify=
2529Common Joined RejectNegative Enum(vtv_priority) Var(flag_vtable_verify) Init(VTV_NO_PRIORITY)
2530Validate vtable pointers before using them.
2531
2532Enum
2533Name(vtv_priority) Type(enum vtv_priority) UnknownError(unknown vtable verify initialization priority %qs)
2534
2535EnumValue
2536Enum(vtv_priority) String(none) Value(VTV_NO_PRIORITY)
2537
2538EnumValue
2539Enum(vtv_priority) String(std) Value(VTV_STANDARD_PRIORITY)
2540
2541EnumValue
2542Enum(vtv_priority) String(preinit) Value(VTV_PREINIT_PRIORITY)
2543
2544fvtv-counts
2545Common Var(flag_vtv_counts)
2546Output vtable verification counters.
2547
2548fvtv-debug
2549Common Var(flag_vtv_debug)
2550Output vtable verification pointer sets information.
2551
2552fvpt
2553Common Report Var(flag_value_profile_transformations) Optimization
2554Use expression value profiles in optimizations
2555
2556fweb
2557Common Report Var(flag_web) Init(2) Optimization
2558Construct webs and split unrelated uses of single variable
2559
2560ftree-builtin-call-dce
2561Common Report Var(flag_tree_builtin_call_dce) Init(0) Optimization
2562Enable conditional dead code elimination for builtin calls
2563
2564fwhole-program
2565Common Report Var(flag_whole_program) Init(0)
2566Perform whole program optimizations
2567
2568fwrapv
2569Common Report Var(flag_wrapv) Optimization
2570Assume signed arithmetic overflow wraps around
2571
2572fzero-initialized-in-bss
2573Common Report Var(flag_zero_initialized_in_bss) Init(1)
2574Put zero initialized data in the bss section
2575
2576g
2577Common JoinedOrMissing
2578Generate debug information in default format
2579
2580gcoff
2581Common JoinedOrMissing Negative(gdwarf)
2582Generate debug information in COFF format
2583
2584gdwarf
2585Common JoinedOrMissing Negative(gdwarf-)
2586Generate debug information in default version of DWARF format
2587
2588gdwarf-
2589Common Joined UInteger Var(dwarf_version) Init(4) Negative(gstabs)
2590Generate debug information in DWARF v2 (or later) format
2591
2592ggdb
2593Common JoinedOrMissing
2594Generate debug information in default extended format
2595
2596gno-pubnames
2597Common Negative(gpubnames) Var(debug_generate_pub_sections, 0) Init(-1)
2598Don't generate DWARF pubnames and pubtypes sections.
2599
2600gpubnames
2601Common Negative(ggnu-pubnames) Var(debug_generate_pub_sections, 1)
2602Generate DWARF pubnames and pubtypes sections.
2603
2604ggnu-pubnames
2605Common Negative(gno-pubnames) Var(debug_generate_pub_sections, 2)
2606Generate DWARF pubnames and pubtypes sections with GNU extensions.
2607
2608gno-record-gcc-switches
2609Common RejectNegative Var(dwarf_record_gcc_switches,0) Init(1)
2610Don't record gcc command line switches in DWARF DW_AT_producer.
2611
2612grecord-gcc-switches
2613Common RejectNegative Var(dwarf_record_gcc_switches,1)
2614Record gcc command line switches in DWARF DW_AT_producer.
2615
2616gno-split-dwarf
2617Common Driver RejectNegative Var(dwarf_split_debug_info,0) Init(0)
2618Don't generate debug information in separate .dwo files
2619
2620gsplit-dwarf
2621Common Driver RejectNegative Var(dwarf_split_debug_info,1)
2622Generate debug information in separate .dwo files
2623
2624gstabs
2625Common JoinedOrMissing Negative(gstabs+)
2626Generate debug information in STABS format
2627
2628gstabs+
2629Common JoinedOrMissing Negative(gvms)
2630Generate debug information in extended STABS format
2631
2632gno-strict-dwarf
2633Common RejectNegative Var(dwarf_strict,0) Init(0)
2634Emit DWARF additions beyond selected version
2635
2636gstrict-dwarf
2637Common Report RejectNegative Var(dwarf_strict,1)
2638Don't emit DWARF additions beyond selected version
2639
2640gtoggle
2641Common Report Var(flag_gtoggle)
2642Toggle debug information generation
2643
2644gvms
2645Common JoinedOrMissing Negative(gxcoff)
2646Generate debug information in VMS format
2647
2648gxcoff
2649Common JoinedOrMissing Negative(gxcoff+)
2650Generate debug information in XCOFF format
2651
2652gxcoff+
2653Common JoinedOrMissing Negative(gcoff)
2654Generate debug information in extended XCOFF format
2655
2656Enum
2657Name(compressed_debug_sections) Type(int)
2658
2659; Since -gz= is completely handled in specs, the values aren't used and we
2660; assign arbitrary constants.
2661EnumValue
2662Enum(compressed_debug_sections) String(none) Value(0)
2663
2664EnumValue
2665Enum(compressed_debug_sections) String(zlib) Value(1)
2666
2667EnumValue
2668Enum(compressed_debug_sections) String(zlib-gnu) Value(2)
2669
2670gz
2671Common Driver
2672Generate compressed debug sections
2673
2674gz=
2675Common Driver Joined Enum(compressed_debug_sections)
2676-gz=<format>	Generate compressed debug sections in format <format>
2677
2678h
2679Driver Joined Separate
2680
2681iplugindir=
2682Common Joined Var(plugindir_string) Init(0)
2683-iplugindir=<dir>	Set <dir> to be the default plugin directory
2684
2685imultiarch
2686Common Joined Separate RejectDriver Var(imultiarch) Init(0)
2687-imultiarch <dir>	Set <dir> to be the multiarch include subdirectory
2688
2689l
2690Driver Joined Separate
2691
2692n
2693Driver
2694
2695no-canonical-prefixes
2696Driver
2697
2698nodefaultlibs
2699Driver
2700
2701nostartfiles
2702Driver
2703
2704nostdlib
2705Driver
2706
2707o
2708Common Driver Joined Separate Var(asm_file_name) MissingArgError(missing filename after %qs)
2709-o <file>	Place output into <file>
2710
2711p
2712Common Var(profile_flag)
2713Enable function profiling
2714
2715pass-exit-codes
2716Driver Var(pass_exit_codes)
2717
2718pedantic
2719Common Alias(Wpedantic)
2720
2721pedantic-errors
2722Common Var(flag_pedantic_errors)
2723Like -pedantic but issue them as errors
2724
2725pg
2726Driver
2727
2728pipe
2729Driver Var(use_pipes)
2730
2731print-file-name=
2732Driver JoinedOrMissing Var(print_file_name)
2733
2734print-libgcc-file-name
2735Driver
2736
2737print-multi-directory
2738Driver Var(print_multi_directory)
2739
2740print-multi-lib
2741Driver Var(print_multi_lib)
2742
2743print-multi-os-directory
2744Driver Var(print_multi_os_directory)
2745
2746print-multiarch
2747Driver Var(print_multiarch)
2748
2749print-prog-name=
2750Driver JoinedOrMissing Var(print_prog_name)
2751
2752print-search-dirs
2753Driver Var(print_search_dirs)
2754
2755print-sysroot
2756Driver Var(print_sysroot)
2757
2758print-sysroot-headers-suffix
2759Driver Var(print_sysroot_headers_suffix)
2760
2761quiet
2762Common Var(quiet_flag) RejectDriver
2763Do not display functions compiled or elapsed time
2764
2765r
2766Driver
2767
2768s
2769Driver
2770
2771save-temps
2772Driver
2773
2774save-temps=
2775Driver Joined
2776
2777t
2778Driver
2779
2780time
2781Driver Var(report_times)
2782
2783time=
2784Driver JoinedOrMissing
2785
2786u
2787Driver Joined Separate
2788
2789undef
2790Driver
2791; C option, but driver must not handle as "-u ndef".
2792
2793v
2794Common Driver Var(verbose_flag)
2795Enable verbose output
2796
2797version
2798Common Var(version_flag) RejectDriver
2799Display the compiler's version
2800
2801w
2802Common Var(inhibit_warnings)
2803Suppress warnings
2804
2805wrapper
2806Driver Separate Var(wrapper_string)
2807
2808x
2809Driver Joined Separate
2810
2811shared
2812Driver RejectNegative Negative(pie)
2813Create a shared library
2814
2815shared-libgcc
2816Driver
2817
2818specs
2819Driver Separate Alias(specs=)
2820
2821specs=
2822Driver Joined
2823
2824static
2825Driver
2826
2827static-libgcc
2828Driver
2829
2830static-libgfortran
2831Driver
2832; Documented for Fortran, but always accepted by driver.
2833
2834static-libstdc++
2835Driver
2836
2837static-libgo
2838Driver
2839; Documented for Go, but always accepted by driver.
2840
2841static-libasan
2842Driver
2843
2844static-libtsan
2845Driver
2846
2847static-liblsan
2848Driver
2849
2850static-libubsan
2851Driver
2852
2853symbolic
2854Driver
2855
2856pie
2857Driver RejectNegative Negative(shared)
2858Create a position independent executable
2859
2860z
2861Driver Joined Separate
2862
2863fipa-ra
2864Common Report Var(flag_ipa_ra) Optimization
2865Use caller save register across calls if possible
2866
2867; This comment is to ensure we retain the blank line above.
2868