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 to another in debug information
1051
1052fdebug-types-section
1053Common Report Var(flag_debug_types_section) Init(0)
1054Output .debug_types section when using DWARF v4 debuginfo.
1055
1056; Nonzero for -fdefer-pop: don't pop args after each function call
1057; instead save them up to pop many calls' args with one insns.
1058fdefer-pop
1059Common Report Var(flag_defer_pop) Optimization
1060Defer popping functions args from stack until later
1061
1062fdelayed-branch
1063Common Report Var(flag_delayed_branch) Optimization
1064Attempt to fill delay slots of branch instructions
1065
1066fdelete-dead-exceptions
1067Common Report Var(flag_delete_dead_exceptions) Init(0) Optimization
1068Delete dead instructions that may throw exceptions
1069
1070fdelete-null-pointer-checks
1071Common Report Var(flag_delete_null_pointer_checks) Init(1) Optimization
1072Delete useless null pointer checks
1073
1074fdevirtualize-at-ltrans
1075Common Report Var(flag_ltrans_devirtualize)
1076Stream extra data to support more aggressive devirtualization in LTO local transformation mode
1077
1078fdevirtualize-speculatively
1079Common Report Var(flag_devirtualize_speculatively) Optimization
1080Perform speculative devirtualization
1081
1082fdevirtualize
1083Common Report Var(flag_devirtualize) Optimization
1084Try to convert virtual calls to direct ones.
1085
1086fdiagnostics-show-location=
1087Common Joined RejectNegative Enum(diagnostic_prefixing_rule)
1088-fdiagnostics-show-location=[once|every-line]	How often to emit source location at the beginning of line-wrapped diagnostics
1089
1090; Required for these enum values.
1091SourceInclude
1092pretty-print.h
1093
1094Enum
1095Name(diagnostic_prefixing_rule) Type(int)
1096
1097EnumValue
1098Enum(diagnostic_prefixing_rule) String(once) Value(DIAGNOSTICS_SHOW_PREFIX_ONCE)
1099
1100EnumValue
1101Enum(diagnostic_prefixing_rule) String(every-line) Value(DIAGNOSTICS_SHOW_PREFIX_EVERY_LINE)
1102
1103fdiagnostics-show-caret
1104Common Var(flag_diagnostics_show_caret) Init(1)
1105Show the source line with a caret indicating the column
1106
1107fdiagnostics-color
1108Common Alias(fdiagnostics-color=,always,never)
1109;
1110
1111fdiagnostics-color=
1112Driver Common Joined RejectNegative Var(flag_diagnostics_show_color) Enum(diagnostic_color_rule) Init(DIAGNOSTICS_COLOR_NO)
1113-fdiagnostics-color=[never|always|auto]	Colorize diagnostics
1114
1115; Required for these enum values.
1116SourceInclude
1117diagnostic-color.h
1118
1119Enum
1120Name(diagnostic_color_rule) Type(int)
1121
1122EnumValue
1123Enum(diagnostic_color_rule) String(never) Value(DIAGNOSTICS_COLOR_NO)
1124
1125EnumValue
1126Enum(diagnostic_color_rule) String(always) Value(DIAGNOSTICS_COLOR_YES)
1127
1128EnumValue
1129Enum(diagnostic_color_rule) String(auto) Value(DIAGNOSTICS_COLOR_AUTO)
1130
1131fdiagnostics-show-option
1132Common Var(flag_diagnostics_show_option) Init(1)
1133Amend appropriate diagnostic messages with the command line option that controls them
1134
1135fdisable-
1136Common Joined RejectNegative Var(common_deferred_options) Defer
1137-fdisable-[tree|rtl|ipa]-<pass>=range1+range2 disables an optimization pass
1138
1139fenable-
1140Common Joined RejectNegative Var(common_deferred_options) Defer
1141-fenable-[tree|rtl|ipa]-<pass>=range1+range2 enables an optimization pass
1142
1143fdump-
1144Common Joined RejectNegative Var(common_deferred_options) Defer
1145-fdump-<type>	Dump various compiler internals to a file
1146
1147fdump-final-insns
1148Driver RejectNegative
1149
1150fdump-final-insns=
1151Common RejectNegative Joined Var(flag_dump_final_insns)
1152-fdump-final-insns=filename	Dump to filename the insns at the end of translation
1153
1154fdump-go-spec=
1155Common RejectNegative Joined Var(flag_dump_go_spec)
1156-fdump-go-spec=filename	Write all declarations to file as Go code
1157
1158fdump-noaddr
1159Common Report Var(flag_dump_noaddr)
1160Suppress output of addresses in debugging dumps
1161
1162freport-bug
1163Common Driver Var(flag_report_bug)
1164Collect and dump debug information into temporary file if ICE in C/C++
1165compiler occured.
1166
1167fdump-passes
1168Common Var(flag_dump_passes) Init(0)
1169Dump optimization passes
1170
1171fdump-unnumbered
1172Common Report Var(flag_dump_unnumbered)
1173Suppress output of instruction numbers, line number notes and addresses in debugging dumps
1174
1175fdump-unnumbered-links
1176Common Report Var(flag_dump_unnumbered_links)
1177Suppress output of previous and next insn numbers in debugging dumps
1178
1179fdwarf2-cfi-asm
1180Common Report Var(flag_dwarf2_cfi_asm) Init(HAVE_GAS_CFI_DIRECTIVE)
1181Enable CFI tables via GAS assembler directives.
1182
1183fearly-inlining
1184Common Report Var(flag_early_inlining) Init(1) Optimization
1185Perform early inlining
1186
1187feliminate-dwarf2-dups
1188Common Report Var(flag_eliminate_dwarf2_dups)
1189Perform DWARF2 duplicate elimination
1190
1191fipa-sra
1192Common Report Var(flag_ipa_sra) Init(0) Optimization
1193Perform interprocedural reduction of aggregates
1194
1195feliminate-unused-debug-symbols
1196Common Report Var(flag_debug_only_used_symbols)
1197Perform unused symbol elimination in debug info
1198
1199feliminate-unused-debug-types
1200Common Report Var(flag_eliminate_unused_debug_types) Init(1)
1201Perform unused type elimination in debug info
1202
1203femit-class-debug-always
1204Common Report Var(flag_emit_class_debug_always) Init(0)
1205Do not suppress C++ class debug information.
1206
1207fexceptions
1208Common Report Var(flag_exceptions) Optimization
1209Enable exception handling
1210
1211fexpensive-optimizations
1212Common Report Var(flag_expensive_optimizations) Optimization
1213Perform a number of minor, expensive optimizations
1214
1215fexcess-precision=
1216Common Joined RejectNegative Enum(excess_precision) Var(flag_excess_precision_cmdline) Init(EXCESS_PRECISION_DEFAULT)
1217-fexcess-precision=[fast|standard]	Specify handling of excess floating-point precision
1218
1219Enum
1220Name(excess_precision) Type(enum excess_precision) UnknownError(unknown excess precision style %qs)
1221
1222EnumValue
1223Enum(excess_precision) String(fast) Value(EXCESS_PRECISION_FAST)
1224
1225EnumValue
1226Enum(excess_precision) String(standard) Value(EXCESS_PRECISION_STANDARD)
1227
1228ffast-math
1229Common
1230
1231ffat-lto-objects
1232Common Var(flag_fat_lto_objects)
1233Output lto objects containing both the intermediate language and binary output.
1234
1235ffinite-math-only
1236Common Report Var(flag_finite_math_only) Optimization SetByCombined
1237Assume no NaNs or infinities are generated
1238
1239ffixed-
1240Common Joined RejectNegative Var(common_deferred_options) Defer
1241-ffixed-<register>	Mark <register> as being unavailable to the compiler
1242
1243ffloat-store
1244Common Report Var(flag_float_store) Optimization
1245Don't allocate floats and doubles in extended-precision registers
1246
1247fforce-addr
1248Common Ignore
1249Does nothing.  Preserved for backward compatibility.
1250
1251fforward-propagate
1252Common Report Var(flag_forward_propagate) Optimization
1253Perform a forward propagation pass on RTL
1254
1255ffp-contract=
1256Common Joined RejectNegative Enum(fp_contract_mode) Var(flag_fp_contract_mode) Init(FP_CONTRACT_FAST) Optimization
1257-ffp-contract=[off|on|fast] Perform floating-point expression contraction.
1258
1259Enum
1260Name(fp_contract_mode) Type(enum fp_contract_mode) UnknownError(unknown floating point contraction style %qs)
1261
1262EnumValue
1263Enum(fp_contract_mode) String(off) Value(FP_CONTRACT_OFF)
1264
1265; Not implemented, fall back to conservative FP_CONTRACT_OFF.
1266EnumValue
1267Enum(fp_contract_mode) String(on) Value(FP_CONTRACT_OFF)
1268
1269EnumValue
1270Enum(fp_contract_mode) String(fast) Value(FP_CONTRACT_FAST)
1271
1272; Nonzero means don't put addresses of constant functions in registers.
1273; Used for compiling the Unix kernel, where strange substitutions are
1274; done on the assembly output.
1275ffunction-cse
1276Common Report Var(flag_no_function_cse,0) Optimization
1277Allow function addresses to be held in registers
1278
1279ffunction-sections
1280Common Report Var(flag_function_sections)
1281Place each function into its own section
1282
1283fgcse
1284Common Report Var(flag_gcse) Optimization
1285Perform global common subexpression elimination
1286
1287fgcse-lm
1288Common Report Var(flag_gcse_lm) Init(1) Optimization
1289Perform enhanced load motion during global common subexpression elimination
1290
1291fgcse-sm
1292Common Report Var(flag_gcse_sm) Init(0) Optimization
1293Perform store motion after global common subexpression elimination
1294
1295fgcse-las
1296Common Report Var(flag_gcse_las) Init(0) Optimization
1297Perform redundant load after store elimination in global common subexpression
1298elimination
1299
1300fgcse-after-reload
1301Common Report Var(flag_gcse_after_reload) Optimization
1302Perform global common subexpression elimination after register allocation
1303has finished
1304
1305; This option is not documented yet as its semantics will change.
1306fgraphite
1307Common Report Var(flag_graphite) Optimization
1308Enable in and out of Graphite representation
1309
1310fgraphite-identity
1311Common Report Var(flag_graphite_identity) Optimization
1312Enable Graphite Identity transformation
1313
1314fhoist-adjacent-loads
1315Common Report Var(flag_hoist_adjacent_loads) Optimization
1316Enable hoisting adjacent loads to encourage generating conditional move
1317instructions
1318
1319floop-parallelize-all
1320Common Report Var(flag_loop_parallelize_all) Optimization
1321Mark all loops as parallel
1322
1323floop-strip-mine
1324Common Report Var(flag_loop_strip_mine) Optimization
1325Enable Loop Strip Mining transformation
1326
1327floop-interchange
1328Common Report Var(flag_loop_interchange) Optimization
1329Enable Loop Interchange transformation
1330
1331floop-block
1332Common Report Var(flag_loop_block) Optimization
1333Enable Loop Blocking transformation
1334
1335floop-unroll-and-jam
1336Common Report Var(flag_loop_unroll_jam) Optimization
1337Enable Loop Unroll Jam transformation
1338 
1339fgnu-tm
1340Common Report Var(flag_tm)
1341Enable support for GNU transactional memory
1342
1343fgnu-unique
1344Common Report Var(flag_gnu_unique) Init(1)
1345Use STB_GNU_UNIQUE if supported by the assembler
1346
1347floop-flatten
1348Common Ignore
1349Does nothing. Preserved for backward compatibility.
1350
1351floop-nest-optimize
1352Common Report Var(flag_loop_optimize_isl) Optimization
1353Enable the ISL based loop nest optimizer
1354
1355fstrict-volatile-bitfields
1356Common Report Var(flag_strict_volatile_bitfields) Init(-1) Optimization
1357Force bitfield accesses to match their type width
1358
1359fguess-branch-probability
1360Common Report Var(flag_guess_branch_prob) Optimization
1361Enable guessing of branch probabilities
1362
1363; Nonzero means ignore `#ident' directives.  0 means handle them.
1364; Generate position-independent code for executables if possible
1365; On SVR4 targets, it also controls whether or not to emit a
1366; string identifying the compiler.
1367fident
1368Common Report Var(flag_no_ident,0)
1369Process #ident directives
1370
1371fif-conversion
1372Common Report Var(flag_if_conversion) Optimization
1373Perform conversion of conditional jumps to branchless equivalents
1374
1375fif-conversion2
1376Common Report Var(flag_if_conversion2) Optimization
1377Perform conversion of conditional jumps to conditional execution
1378
1379fstack-reuse=
1380Common Joined RejectNegative Enum(stack_reuse_level) Var(flag_stack_reuse) Init(SR_ALL) Optimization
1381-fstack-reuse=[all|named_vars|none] Set stack reuse level for local variables.
1382
1383Enum
1384Name(stack_reuse_level) Type(enum stack_reuse_level) UnknownError(unknown Stack Reuse Level %qs)
1385
1386EnumValue
1387Enum(stack_reuse_level) String(all) Value(SR_ALL)
1388
1389EnumValue
1390Enum(stack_reuse_level) String(named_vars) Value(SR_NAMED_VARS)
1391
1392EnumValue
1393Enum(stack_reuse_level) String(none) Value(SR_NONE)
1394
1395ftree-loop-if-convert
1396Common Report Var(flag_tree_loop_if_convert) Init(-1) Optimization
1397Convert conditional jumps in innermost loops to branchless equivalents
1398
1399ftree-loop-if-convert-stores
1400Common Report Var(flag_tree_loop_if_convert_stores) Optimization
1401Also if-convert conditional jumps containing memory writes
1402
1403; -finhibit-size-directive inhibits output of .size for ELF.
1404; This is used only for compiling crtstuff.c,
1405; and it may be extended to other effects
1406; needed for crtstuff.c on other systems.
1407finhibit-size-directive
1408Common Report Var(flag_inhibit_size_directive)
1409Do not generate .size directives
1410
1411findirect-inlining
1412Common Report Var(flag_indirect_inlining) Optimization
1413Perform indirect inlining
1414
1415; General flag to enable inlining.  Specifying -fno-inline will disable
1416; all inlining apart from always-inline functions.
1417finline
1418Common Report Var(flag_no_inline,0) Init(0) Optimization
1419Enable inlining of function declared \"inline\", disabling disables all inlining
1420
1421finline-small-functions
1422Common Report Var(flag_inline_small_functions) Optimization
1423Integrate functions into their callers when code size is known not to grow
1424
1425finline-functions
1426Common Report Var(flag_inline_functions) Optimization
1427Integrate functions not declared \"inline\" into their callers when profitable
1428
1429finline-functions-called-once
1430Common Report Var(flag_inline_functions_called_once) Optimization
1431Integrate functions only required by their single caller
1432
1433finline-limit-
1434Common RejectNegative Joined Alias(finline-limit=)
1435
1436finline-limit=
1437Common RejectNegative Joined UInteger
1438-finline-limit=<number>	Limit the size of inlined functions to <number>
1439
1440finline-atomics
1441Common Report Var(flag_inline_atomics) Init(1) Optimization
1442Inline __atomic operations when a lock free instruction sequence is available.
1443
1444finstrument-functions
1445Common Report Var(flag_instrument_function_entry_exit)
1446Instrument function entry and exit with profiling calls
1447
1448finstrument-functions-exclude-function-list=
1449Common RejectNegative Joined
1450-finstrument-functions-exclude-function-list=name,...  Do not instrument listed functions
1451
1452finstrument-functions-exclude-file-list=
1453Common RejectNegative Joined
1454-finstrument-functions-exclude-file-list=filename,...  Do not instrument functions listed in files
1455
1456fipa-cp
1457Common Report Var(flag_ipa_cp) Optimization
1458Perform interprocedural constant propagation
1459
1460fipa-cp-clone
1461Common Report Var(flag_ipa_cp_clone) Optimization
1462Perform cloning to make Interprocedural constant propagation stronger
1463
1464fipa-cp-alignment
1465Common Report Var(flag_ipa_cp_alignment) Optimization
1466Perform alignment discovery and propagation to make Interprocedural constant propagation stronger
1467
1468fipa-profile
1469Common Report Var(flag_ipa_profile) Init(0) Optimization
1470Perform interprocedural profile propagation
1471
1472fipa-pta
1473Common Report Var(flag_ipa_pta) Init(0) Optimization
1474Perform interprocedural points-to analysis
1475
1476fipa-pure-const
1477Common Report Var(flag_ipa_pure_const) Init(0) Optimization
1478Discover pure and const functions
1479
1480fipa-icf
1481Common Report Var(flag_ipa_icf) Optimization
1482Perform Identical Code Folding for functions and read-only variables
1483
1484fipa-icf-functions
1485Common Report Var(flag_ipa_icf_functions) Optimization
1486Perform Identical Code Folding for functions
1487
1488fipa-icf-variables
1489Common Report Var(flag_ipa_icf_variables)
1490Perform Identical Code Folding for variables
1491
1492fipa-reference
1493Common Report Var(flag_ipa_reference) Init(0) Optimization
1494Discover readonly and non addressable static variables
1495
1496fipa-matrix-reorg
1497Common Ignore
1498Does nothing. Preserved for backward compatibility.
1499
1500fipa-struct-reorg
1501Common Ignore
1502Does nothing. Preserved for backward compatibility.
1503
1504fira-algorithm=
1505Common Joined RejectNegative Enum(ira_algorithm) Var(flag_ira_algorithm) Init(IRA_ALGORITHM_CB) Optimization
1506-fira-algorithm=[CB|priority] Set the used IRA algorithm
1507
1508Enum
1509Name(ira_algorithm) Type(enum ira_algorithm) UnknownError(unknown IRA algorithm %qs)
1510
1511EnumValue
1512Enum(ira_algorithm) String(CB) Value(IRA_ALGORITHM_CB)
1513
1514EnumValue
1515Enum(ira_algorithm) String(priority) Value(IRA_ALGORITHM_PRIORITY)
1516
1517fira-region=
1518Common Joined RejectNegative Enum(ira_region) Var(flag_ira_region) Init(IRA_REGION_AUTODETECT) Optimization
1519-fira-region=[one|all|mixed] Set regions for IRA
1520
1521Enum
1522Name(ira_region) Type(enum ira_region) UnknownError(unknown IRA region %qs)
1523
1524EnumValue
1525Enum(ira_region) String(one) Value(IRA_REGION_ONE)
1526
1527EnumValue
1528Enum(ira_region) String(all) Value(IRA_REGION_ALL)
1529
1530EnumValue
1531Enum(ira_region) String(mixed) Value(IRA_REGION_MIXED)
1532
1533fira-hoist-pressure
1534Common Report Var(flag_ira_hoist_pressure) Init(1) Optimization
1535Use IRA based register pressure calculation
1536in RTL hoist optimizations.
1537
1538fira-loop-pressure
1539Common Report Var(flag_ira_loop_pressure) Optimization
1540Use IRA based register pressure calculation
1541in RTL loop optimizations.
1542
1543fira-share-save-slots
1544Common Report Var(flag_ira_share_save_slots) Init(1) Optimization
1545Share slots for saving different hard registers.
1546
1547fira-share-spill-slots
1548Common Report Var(flag_ira_share_spill_slots) Init(1) Optimization
1549Share stack slots for spilled pseudo-registers.
1550
1551fira-verbose=
1552Common RejectNegative Joined UInteger Var(flag_ira_verbose) Init(5)
1553-fira-verbose=<number>	Control IRA's level of diagnostic messages.
1554
1555fivopts
1556Common Report Var(flag_ivopts) Init(1) Optimization
1557Optimize induction variables on trees
1558
1559fjump-tables
1560Common Var(flag_jump_tables) Init(1) Optimization
1561Use jump tables for sufficiently large switch statements
1562
1563fkeep-inline-functions
1564Common Report Var(flag_keep_inline_functions)
1565Generate code for functions even if they are fully inlined
1566
1567fkeep-static-consts
1568Common Report Var(flag_keep_static_consts) Init(1)
1569Emit static const variables even if they are not used
1570
1571fleading-underscore
1572Common Report Var(flag_leading_underscore) Init(-1)
1573Give external symbols a leading underscore
1574
1575floop-optimize
1576Common Ignore
1577Does nothing.  Preserved for backward compatibility.
1578
1579flra-remat
1580Common Report Var(flag_lra_remat) Optimization
1581Do CFG-sensitive rematerialization in LRA
1582
1583flto
1584Common
1585Enable link-time optimization.
1586
1587flto=
1588Common RejectNegative Joined Var(flag_lto)
1589Link-time optimization with number of parallel jobs or jobserver.
1590
1591Enum
1592Name(lto_partition_model) Type(enum lto_partition_model) UnknownError(unknown LTO partitioning model %qs)
1593
1594EnumValue
1595Enum(lto_partition_model) String(none) Value(LTO_PARTITION_NONE)
1596
1597EnumValue
1598Enum(lto_partition_model) String(one) Value(LTO_PARTITION_ONE)
1599
1600EnumValue
1601Enum(lto_partition_model) String(balanced) Value(LTO_PARTITION_BALANCED)
1602
1603EnumValue
1604Enum(lto_partition_model) String(1to1) Value(LTO_PARTITION_1TO1)
1605
1606EnumValue
1607Enum(lto_partition_model) String(max) Value(LTO_PARTITION_MAX)
1608
1609flto-partition=
1610Common Joined RejectNegative Enum(lto_partition_model) Var(flag_lto_partition) Init(LTO_PARTITION_BALANCED)
1611Specify the algorithm to partition symbols and vars at linktime
1612
1613; The initial value of -1 comes from Z_DEFAULT_COMPRESSION in zlib.h.
1614flto-compression-level=
1615Common Joined RejectNegative UInteger Var(flag_lto_compression_level) Init(-1)
1616-flto-compression-level=<number>	Use zlib compression level <number> for IL
1617
1618flto-odr-type-merging
1619Common Report Var(flag_lto_odr_type_mering) Init(1)
1620Merge C++ types using One Definition Rule
1621
1622flto-report
1623Common Report Var(flag_lto_report) Init(0)
1624Report various link-time optimization statistics
1625
1626flto-report-wpa
1627Common Report Var(flag_lto_report_wpa) Init(0)
1628Report various link-time optimization statistics for WPA only
1629
1630fmath-errno
1631Common Report Var(flag_errno_math) Init(1) Optimization SetByCombined
1632Set errno after built-in math functions
1633
1634fmax-errors=
1635Common Joined RejectNegative UInteger Var(flag_max_errors)
1636-fmax-errors=<number>	Maximum number of errors to report
1637
1638fmem-report
1639Common Report Var(mem_report)
1640Report on permanent memory allocation
1641
1642fmem-report-wpa
1643Common Report Var(mem_report_wpa)
1644Report on permanent memory allocation in WPA only
1645
1646; This will attempt to merge constant section constants, if 1 only
1647; string constants and constants from constant pool, if 2 also constant
1648; variables.
1649fmerge-all-constants
1650Common Report Var(flag_merge_constants,2) Init(1)
1651Attempt to merge identical constants and constant variables
1652
1653fmerge-constants
1654Common Report Var(flag_merge_constants,1)
1655Attempt to merge identical constants across compilation units
1656
1657fmerge-debug-strings
1658Common Report Var(flag_merge_debug_strings) Init(1)
1659Attempt to merge identical debug strings across compilation units
1660
1661fmessage-length=
1662Common RejectNegative Joined UInteger
1663-fmessage-length=<number>	Limit diagnostics to <number> characters per line.  0 suppresses line-wrapping
1664
1665fmodulo-sched
1666Common Report Var(flag_modulo_sched) Optimization
1667Perform SMS based modulo scheduling before the first scheduling pass
1668
1669fmodulo-sched-allow-regmoves
1670Common Report Var(flag_modulo_sched_allow_regmoves) Optimization
1671Perform SMS based modulo scheduling with register moves allowed
1672
1673fmove-loop-invariants
1674Common Report Var(flag_move_loop_invariants) Optimization
1675Move loop invariant computations out of loops
1676
1677fdce
1678Common Var(flag_dce) Init(1) Optimization
1679Use the RTL dead code elimination pass
1680
1681fdse
1682Common Var(flag_dse) Init(1) Optimization
1683Use the RTL dead store elimination pass
1684
1685freschedule-modulo-scheduled-loops
1686Common Report Var(flag_resched_modulo_sched) Optimization
1687Enable/Disable the traditional scheduling in loops that already passed modulo scheduling
1688
1689fnon-call-exceptions
1690Common Report Var(flag_non_call_exceptions) Optimization
1691Support synchronous non-call exceptions
1692
1693foffload=
1694Common Driver Joined MissingArgError(options or targets missing after %qs)
1695-foffload=<targets>=<options>  Specify offloading targets and options for them
1696
1697foffload-abi=
1698Common Joined RejectNegative Enum(offload_abi) Var(flag_offload_abi) Init(OFFLOAD_ABI_UNSET)
1699-foffload-abi=[lp64|ilp32]     Set the ABI to use in an offload compiler
1700
1701Enum
1702Name(offload_abi) Type(enum offload_abi) UnknownError(unknown offload ABI %qs)
1703
1704EnumValue
1705Enum(offload_abi) String(ilp32) Value(OFFLOAD_ABI_ILP32)
1706
1707EnumValue
1708Enum(offload_abi) String(lp64) Value(OFFLOAD_ABI_LP64)
1709
1710fomit-frame-pointer
1711Common Report Var(flag_omit_frame_pointer) Optimization
1712When possible do not generate stack frames
1713
1714fopt-info
1715Common Report Var(flag_opt_info) Optimization
1716Enable all optimization info dumps on stderr
1717
1718fopt-info-
1719Common Joined RejectNegative Var(common_deferred_options) Defer
1720-fopt-info[-<type>=filename]	Dump compiler optimization details
1721
1722foptimize-register-move
1723Common Ignore
1724Does nothing. Preserved for backward compatibility.
1725
1726foptimize-sibling-calls
1727Common Report Var(flag_optimize_sibling_calls) Optimization
1728Optimize sibling and tail recursive calls
1729
1730fpartial-inlining
1731Common Report Var(flag_partial_inlining) Optimization
1732Perform partial inlining
1733
1734fpre-ipa-mem-report
1735Common Report Var(pre_ipa_mem_report)
1736Report on memory allocation before interprocedural optimization
1737
1738fpost-ipa-mem-report
1739Common Report Var(post_ipa_mem_report)
1740Report on memory allocation before interprocedural optimization
1741
1742fpack-struct
1743Common Report Var(flag_pack_struct) Optimization
1744Pack structure members together without holes
1745
1746fpack-struct=
1747Common RejectNegative Joined UInteger Optimization
1748-fpack-struct=<number>	Set initial maximum structure member alignment
1749
1750fpcc-struct-return
1751Common Report Var(flag_pcc_struct_return,1) Init(DEFAULT_PCC_STRUCT_RETURN)
1752Return small aggregates in memory, not registers
1753
1754fpeel-loops
1755Common Report Var(flag_peel_loops) Optimization
1756Perform loop peeling
1757
1758fpeephole
1759Common Report Var(flag_no_peephole,0) Optimization
1760Enable machine specific peephole optimizations
1761
1762fpeephole2
1763Common Report Var(flag_peephole2) Optimization
1764Enable an RTL peephole pass before sched2
1765
1766fPIC
1767Common Report Var(flag_pic,2) Negative(fPIE)
1768Generate position-independent code if possible (large mode)
1769
1770fPIE
1771Common Report Var(flag_pie,2) Negative(fpic)
1772Generate position-independent code for executables if possible (large mode)
1773
1774fpic
1775Common Report Var(flag_pic,1) Negative(fpie)
1776Generate position-independent code if possible (small mode)
1777
1778fpie
1779Common Report Var(flag_pie,1) Negative(fPIC)
1780Generate position-independent code for executables if possible (small mode)
1781
1782fplugin=
1783Common Joined RejectNegative Var(common_deferred_options) Defer
1784Specify a plugin to load
1785
1786fplugin-arg-
1787Common Joined RejectNegative Var(common_deferred_options) Defer
1788-fplugin-arg-<name>-<key>[=<value>]	Specify argument <key>=<value> for plugin <name>
1789
1790fpredictive-commoning
1791Common Report Var(flag_predictive_commoning) Optimization
1792Run predictive commoning optimization.
1793
1794fprefetch-loop-arrays
1795Common Report Var(flag_prefetch_loop_arrays) Init(-1) Optimization
1796Generate prefetch instructions, if available, for arrays in loops
1797
1798fprofile
1799Common Report Var(profile_flag)
1800Enable basic program profiling code
1801
1802fprofile-arcs
1803Common Report Var(profile_arc_flag)
1804Insert arc-based program profiling code
1805
1806fprofile-dir=
1807Common Joined RejectNegative Var(profile_data_prefix)
1808Set the top-level directory for storing the profile data.
1809The default is 'pwd'.
1810
1811fprofile-correction
1812Common Report Var(flag_profile_correction)
1813Enable correction of flow inconsistent profile data input
1814
1815fprofile-generate
1816Common
1817Enable common options for generating profile info for profile feedback directed optimizations
1818
1819fprofile-generate=
1820Common Joined RejectNegative
1821Enable common options for generating profile info for profile feedback directed optimizations, and set -fprofile-dir=
1822
1823fprofile-use
1824Common Var(flag_profile_use)
1825Enable common options for performing profile feedback directed optimizations
1826
1827fprofile-use=
1828Common Joined RejectNegative
1829Enable common options for performing profile feedback directed optimizations, and set -fprofile-dir=
1830
1831fprofile-values
1832Common Report Var(flag_profile_values)
1833Insert code to profile values of expressions
1834
1835fprofile-report
1836Common Report Var(profile_report)
1837Report on consistency of profile
1838
1839fprofile-reorder-functions
1840Common Report Var(flag_profile_reorder_functions)
1841Enable function reordering that improves code placement
1842
1843frandom-seed
1844Common Var(common_deferred_options) Defer
1845
1846frandom-seed=
1847Common Joined RejectNegative Var(common_deferred_options) Defer
1848-frandom-seed=<string>	Make compile reproducible using <string>
1849
1850; This switch causes the command line that was used to create an
1851; object file to be recorded into the object file.  The exact format
1852; of this recording is target and binary file format dependent.
1853; It is related to the -fverbose-asm switch, but that switch only
1854; records information in the assembler output file as comments, so
1855; they never reach the object file.
1856frecord-gcc-switches
1857Common Report Var(flag_record_gcc_switches)
1858Record gcc command line switches in the object file.
1859
1860freg-struct-return
1861Common Report Var(flag_pcc_struct_return,0) Optimization
1862Return small aggregates in registers
1863
1864fregmove
1865Common Ignore
1866Does nothing. Preserved for backward compatibility.
1867
1868flifetime-dse
1869Common Report Var(flag_lifetime_dse) Init(1) Optimization
1870Tell DSE that the storage for a C++ object is dead when the constructor
1871starts and when the destructor finishes.
1872
1873flive-range-shrinkage
1874Common Report Var(flag_live_range_shrinkage) Init(0) Optimization
1875Relief of register pressure through live range shrinkage
1876
1877frename-registers
1878Common Report Var(flag_rename_registers) Init(2) Optimization
1879Perform a register renaming optimization pass
1880
1881fschedule-fusion
1882Common Report Var(flag_schedule_fusion) Init(2) Optimization
1883Perform a target dependent instruction fusion optimization pass
1884
1885freorder-blocks
1886Common Report Var(flag_reorder_blocks) Optimization
1887Reorder basic blocks to improve code placement
1888
1889freorder-blocks-and-partition
1890Common Report Var(flag_reorder_blocks_and_partition) Optimization
1891Reorder basic blocks and partition into hot and cold sections
1892
1893freorder-functions
1894Common Report Var(flag_reorder_functions) Optimization
1895Reorder functions to improve code placement
1896
1897frerun-cse-after-loop
1898Common Report Var(flag_rerun_cse_after_loop) Optimization
1899Add a common subexpression elimination pass after loop optimizations
1900
1901frerun-loop-opt
1902Common Ignore
1903Does nothing.  Preserved for backward compatibility.
1904
1905frounding-math
1906Common Report Var(flag_rounding_math) Optimization SetByCombined
1907Disable optimizations that assume default FP rounding behavior
1908
1909fsched-interblock
1910Common Report Var(flag_schedule_interblock) Init(1) Optimization
1911Enable scheduling across basic blocks
1912
1913fsched-pressure
1914Common Report Var(flag_sched_pressure) Init(0) Optimization
1915Enable register pressure sensitive insn scheduling
1916
1917fsched-spec
1918Common Report Var(flag_schedule_speculative) Init(1) Optimization
1919Allow speculative motion of non-loads
1920
1921fsched-spec-load
1922Common Report Var(flag_schedule_speculative_load) Optimization
1923Allow speculative motion of some loads
1924
1925fsched-spec-load-dangerous
1926Common Report Var(flag_schedule_speculative_load_dangerous) Optimization
1927Allow speculative motion of more loads
1928
1929fsched-verbose=
1930Common RejectNegative Joined UInteger Var(sched_verbose_param)
1931-fsched-verbose=<number>	Set the verbosity level of the scheduler
1932
1933fsched2-use-superblocks
1934Common Report Var(flag_sched2_use_superblocks) Optimization
1935If scheduling post reload, do superblock scheduling
1936
1937fsched2-use-traces
1938Common Ignore
1939Does nothing.  Preserved for backward compatibility.
1940
1941fschedule-insns
1942Common Report Var(flag_schedule_insns) Optimization
1943Reschedule instructions before register allocation
1944
1945fschedule-insns2
1946Common Report Var(flag_schedule_insns_after_reload) Optimization
1947Reschedule instructions after register allocation
1948
1949; This flag should be on when a target implements non-trivial
1950; scheduling hooks, maybe saving some information for its own sake.
1951; On IA64, for example, this is used for correct bundling. 
1952fselective-scheduling
1953Common Report Var(flag_selective_scheduling) Optimization
1954Schedule instructions using selective scheduling algorithm
1955
1956fselective-scheduling2
1957Common Report Var(flag_selective_scheduling2) Optimization 
1958Run selective scheduling after reload
1959
1960fsel-sched-pipelining
1961Common Report Var(flag_sel_sched_pipelining) Init(0) Optimization
1962Perform software pipelining of inner loops during selective scheduling
1963
1964fsel-sched-pipelining-outer-loops
1965Common Report Var(flag_sel_sched_pipelining_outer_loops) Init(0) Optimization
1966Perform software pipelining of outer loops during selective scheduling
1967
1968fsel-sched-reschedule-pipelined
1969Common Report Var(flag_sel_sched_reschedule_pipelined) Init(0) Optimization
1970Reschedule pipelined regions without pipelining
1971
1972fsemantic-interposition
1973Common Report Var(flag_semantic_interposition) Init(1)
1974Allow interposing function (or variables) by ones with different semantics (or initializer) respectively by dynamic linker
1975
1976; sched_stalled_insns means that insns can be moved prematurely from the queue
1977; of stalled insns into the ready list.
1978fsched-stalled-insns
1979Common Report Var(flag_sched_stalled_insns) Optimization UInteger
1980Allow premature scheduling of queued insns
1981
1982fsched-stalled-insns=
1983Common RejectNegative Joined UInteger Optimization
1984-fsched-stalled-insns=<number>	Set number of queued insns that can be prematurely scheduled
1985
1986; sched_stalled_insns_dep controls how many recently scheduled cycles will
1987; be examined for a dependency on a stalled insn that is candidate for
1988; premature removal from the queue of stalled insns into the ready list (has
1989; an effect only if the flag 'sched_stalled_insns' is set).
1990fsched-stalled-insns-dep
1991Common Report Var(flag_sched_stalled_insns_dep,1) Init(1) Optimization UInteger
1992Set dependence distance checking in premature scheduling of queued insns
1993
1994fsched-stalled-insns-dep=
1995Common RejectNegative Joined UInteger Optimization
1996-fsched-stalled-insns-dep=<number>	Set dependence distance checking in premature scheduling of queued insns
1997
1998fsched-group-heuristic
1999Common Report Var(flag_sched_group_heuristic) Init(1) Optimization
2000Enable the group heuristic in the scheduler
2001
2002fsched-critical-path-heuristic
2003Common Report Var(flag_sched_critical_path_heuristic) Init(1) Optimization
2004Enable the critical path heuristic in the scheduler
2005
2006fsched-spec-insn-heuristic
2007Common Report Var(flag_sched_spec_insn_heuristic) Init(1) Optimization
2008Enable the speculative instruction heuristic in the scheduler
2009
2010fsched-rank-heuristic
2011Common Report Var(flag_sched_rank_heuristic) Init(1) Optimization
2012Enable the rank heuristic in the scheduler
2013
2014fsched-last-insn-heuristic
2015Common Report Var(flag_sched_last_insn_heuristic) Init(1) Optimization
2016Enable the last instruction heuristic in the scheduler
2017
2018fsched-dep-count-heuristic
2019Common Report Var(flag_sched_dep_count_heuristic) Init(1) Optimization
2020Enable the dependent count heuristic in the scheduler
2021
2022fsection-anchors
2023Common Report Var(flag_section_anchors) Optimization
2024Access data in the same section from shared anchor points
2025
2026fsee
2027Common Ignore
2028Does nothing.  Preserved for backward compatibility.
2029
2030fzee
2031Common Ignore
2032Does nothing.  Preserved for backward compatibility.
2033
2034free
2035Common Report Var(flag_ree) Init(0)
2036Turn on Redundant Extensions Elimination pass.
2037
2038fshow-column
2039Common Report Var(flag_show_column) Init(1)
2040Show column numbers in diagnostics, when available.  Default on
2041
2042fshrink-wrap
2043Common Report Var(flag_shrink_wrap) Optimization
2044Emit function prologues only before parts of the function that need it,
2045rather than at the top of the function.
2046
2047fsignaling-nans
2048Common Report Var(flag_signaling_nans) Optimization SetByCombined
2049Disable optimizations observable by IEEE signaling NaNs
2050
2051fsigned-zeros
2052Common Report Var(flag_signed_zeros) Init(1) Optimization SetByCombined
2053Disable floating point optimizations that ignore the IEEE signedness of zero
2054
2055fsingle-precision-constant
2056Common Report Var(flag_single_precision_constant) Optimization
2057Convert floating point constants to single precision constants
2058
2059fsplit-ivs-in-unroller
2060Common Report Var(flag_split_ivs_in_unroller) Init(1) Optimization
2061Split lifetimes of induction variables when loops are unrolled
2062
2063fsplit-stack
2064Common Report Var(flag_split_stack) Init(-1)
2065Generate discontiguous stack frames
2066
2067fsplit-wide-types
2068Common Report Var(flag_split_wide_types) Optimization
2069Split wide types into independent registers
2070
2071fssa-phiopt
2072Common Report Var(flag_ssa_phiopt) Optimization
2073Optimize conditional patterns using SSA PHI nodes
2074
2075fstdarg-opt
2076Common Report Var(flag_stdarg_opt) Init(1) Optimization
2077Optimize amount of stdarg registers saved to stack at start of function
2078
2079fvariable-expansion-in-unroller
2080Common Report Var(flag_variable_expansion_in_unroller) Optimization
2081Apply variable expansion when loops are unrolled
2082
2083fstack-check=
2084Common Report RejectNegative Joined
2085-fstack-check=[no|generic|specific]	Insert stack checking code into the program
2086
2087fstack-check
2088Common Alias(fstack-check=, specific, no)
2089Insert stack checking code into the program.  Same as -fstack-check=specific
2090
2091fstack-limit
2092Common Var(common_deferred_options) Defer
2093
2094fstack-limit-register=
2095Common RejectNegative Joined Var(common_deferred_options) Defer
2096-fstack-limit-register=<register>	Trap if the stack goes past <register>
2097
2098fstack-limit-symbol=
2099Common RejectNegative Joined Var(common_deferred_options) Defer
2100-fstack-limit-symbol=<name>	Trap if the stack goes past symbol <name>
2101
2102fstack-protector
2103Common Report Var(flag_stack_protect, 1)
2104Use propolice as a stack protection method
2105
2106fstack-protector-all
2107Common Report RejectNegative Var(flag_stack_protect, 2)
2108Use a stack protection method for every function
2109
2110fstack-protector-strong
2111Common Report RejectNegative Var(flag_stack_protect, 3)
2112Use a smart stack protection method for certain functions
2113
2114fstack-protector-explicit
2115Common Report RejectNegative Var(flag_stack_protect, 4)
2116Use stack protection method only for functions with the stack_protect attribute
2117
2118fstack-usage
2119Common RejectNegative Var(flag_stack_usage)
2120Output stack usage information on a per-function basis
2121
2122fstrength-reduce
2123Common Ignore
2124Does nothing.  Preserved for backward compatibility.
2125
2126; Nonzero if we should do (language-dependent) alias analysis.
2127; Typically, this analysis will assume that expressions of certain
2128; types do not alias expressions of certain other types.  Only used
2129; if alias analysis (in general) is enabled.
2130fstrict-aliasing
2131Common Report Var(flag_strict_aliasing) Optimization
2132Assume strict aliasing rules apply
2133
2134fstrict-overflow
2135Common Report Var(flag_strict_overflow) Optimization
2136Treat signed overflow as undefined
2137
2138fsync-libcalls
2139Common Report Var(flag_sync_libcalls) Init(1)
2140Implement __atomic operations via libcalls to legacy __sync functions
2141
2142fsyntax-only
2143Common Report Var(flag_syntax_only)
2144Check for syntax errors, then stop
2145
2146ftest-coverage
2147Common Report Var(flag_test_coverage)
2148Create data files needed by \"gcov\"
2149
2150fthread-jumps
2151Common Report Var(flag_thread_jumps) Optimization
2152Perform jump threading optimizations
2153
2154ftime-report
2155Common Report Var(time_report)
2156Report the time taken by each compiler pass
2157
2158ftls-model=
2159Common Joined RejectNegative Enum(tls_model) Var(flag_tls_default) Init(TLS_MODEL_GLOBAL_DYNAMIC)
2160-ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec]	Set the default thread-local storage code generation model
2161
2162Enum
2163Name(tls_model) Type(enum tls_model) UnknownError(unknown TLS model %qs)
2164
2165EnumValue
2166Enum(tls_model) String(global-dynamic) Value(TLS_MODEL_GLOBAL_DYNAMIC)
2167
2168EnumValue
2169Enum(tls_model) String(local-dynamic) Value(TLS_MODEL_LOCAL_DYNAMIC)
2170
2171EnumValue
2172Enum(tls_model) String(initial-exec) Value(TLS_MODEL_INITIAL_EXEC)
2173
2174EnumValue
2175Enum(tls_model) String(local-exec) Value(TLS_MODEL_LOCAL_EXEC)
2176
2177ftoplevel-reorder
2178Common Report Var(flag_toplevel_reorder) Init(2)
2179Reorder top level functions, variables, and asms
2180
2181ftracer
2182Common Report Var(flag_tracer) Optimization
2183Perform superblock formation via tail duplication
2184
2185; Zero means that floating-point math operations cannot generate a
2186; (user-visible) trap.  This is the case, for example, in nonstop
2187; IEEE 754 arithmetic.
2188ftrapping-math
2189Common Report Var(flag_trapping_math) Init(1) Optimization SetByCombined
2190Assume floating-point operations can trap
2191
2192ftrapv
2193Common Report Var(flag_trapv) Optimization
2194Trap for signed overflow in addition, subtraction and multiplication
2195
2196ftree-ccp
2197Common Report Var(flag_tree_ccp) Optimization
2198Enable SSA-CCP optimization on trees
2199
2200ftree-bit-ccp
2201Common Report Var(flag_tree_bit_ccp) Optimization
2202Enable SSA-BIT-CCP optimization on trees
2203
2204ftree-store-ccp
2205Common Ignore
2206Does nothing.  Preserved for backward compatibility.
2207
2208ftree-ch
2209Common Report Var(flag_tree_ch) Optimization
2210Enable loop header copying on trees
2211
2212ftree-coalesce-inlined-vars
2213Common Report Var(flag_ssa_coalesce_vars,1) Init(2) RejectNegative Optimization
2214Enable coalescing of copy-related user variables that are inlined
2215
2216ftree-coalesce-vars
2217Common Report Var(flag_ssa_coalesce_vars,2) Optimization
2218Enable coalescing of all copy-related user variables
2219
2220ftree-copyrename
2221Common Report Var(flag_tree_copyrename) Optimization
2222Replace SSA temporaries with better names in copies
2223
2224ftree-copy-prop
2225Common Report Var(flag_tree_copy_prop) Optimization
2226Enable copy propagation on trees
2227
2228ftree-store-copy-prop
2229Common Ignore
2230Does nothing.  Preserved for backward compatibility.
2231
2232ftree-cselim
2233Common Report Var(flag_tree_cselim) Init(2) Optimization
2234Transform condition stores into unconditional ones
2235
2236ftree-switch-conversion
2237Common Report Var(flag_tree_switch_conversion) Optimization
2238Perform conversions of switch initializations.
2239
2240ftree-dce
2241Common Report Var(flag_tree_dce) Optimization
2242Enable SSA dead code elimination optimization on trees
2243
2244ftree-dominator-opts
2245Common Report Var(flag_tree_dom) Optimization
2246Enable dominator optimizations
2247
2248ftree-tail-merge
2249Common Report Var(flag_tree_tail_merge) Optimization
2250Enable tail merging on trees
2251
2252ftree-dse
2253Common Report Var(flag_tree_dse) Optimization
2254Enable dead store elimination
2255
2256ftree-forwprop
2257Common Report Var(flag_tree_forwprop) Init(1) Optimization
2258Enable forward propagation on trees
2259
2260ftree-fre
2261Common Report Var(flag_tree_fre) Optimization
2262Enable Full Redundancy Elimination (FRE) on trees
2263
2264foptimize-strlen
2265Common Report Var(flag_optimize_strlen) Optimization
2266Enable string length optimizations on trees
2267
2268fisolate-erroneous-paths-dereference
2269Common Report Var(flag_isolate_erroneous_paths_dereference) Optimization
2270Detect paths that trigger erroneous or undefined behavior due to
2271dereferencing a null pointer.  Isolate those paths from the main control
2272flow and turn the statement with erroneous or undefined behavior into a trap.
2273
2274fisolate-erroneous-paths-attribute
2275Common Report Var(flag_isolate_erroneous_paths_attribute) Optimization
2276Detect paths that trigger erroneous or undefined behavior due a null value
2277being used in a way forbidden by a returns_nonnull or nonnull
2278attribute.  Isolate those paths from the main control flow and turn the
2279statement with erroneous or undefined behavior into a trap. 
2280
2281ftree-loop-distribution
2282Common Report Var(flag_tree_loop_distribution) Optimization
2283Enable loop distribution on trees
2284
2285ftree-loop-distribute-patterns
2286Common Report Var(flag_tree_loop_distribute_patterns) Optimization
2287Enable loop distribution for patterns transformed into a library call
2288
2289ftree-loop-im
2290Common Report Var(flag_tree_loop_im) Init(1) Optimization
2291Enable loop invariant motion on trees
2292
2293ftree-loop-linear
2294Common Alias(floop-interchange)
2295Enable loop interchange transforms.  Same as -floop-interchange
2296
2297ftree-loop-ivcanon
2298Common Report Var(flag_tree_loop_ivcanon) Init(1) Optimization
2299Create canonical induction variables in loops
2300
2301ftree-loop-optimize
2302Common Report Var(flag_tree_loop_optimize) Init(1) Optimization
2303Enable loop optimizations on tree level
2304
2305ftree-parallelize-loops=
2306Common Report Joined RejectNegative UInteger Var(flag_tree_parallelize_loops) Init(1) Optimization
2307Enable automatic parallelization of loops
2308
2309ftree-phiprop
2310Common Report Var(flag_tree_phiprop) Init(1) Optimization
2311Enable hoisting loads from conditional pointers.
2312
2313ftree-pre
2314Common Report Var(flag_tree_pre) Optimization
2315Enable SSA-PRE optimization on trees
2316
2317ftree-partial-pre
2318Common Report Var(flag_tree_partial_pre) Optimization
2319In SSA-PRE optimization on trees, enable partial-partial redundancy elimination
2320
2321ftree-pta
2322Common Report Var(flag_tree_pta) Optimization
2323Perform function-local points-to analysis on trees.
2324
2325ftree-reassoc
2326Common Report Var(flag_tree_reassoc) Init(1) Optimization
2327Enable reassociation on tree level
2328
2329ftree-salias
2330Common Ignore
2331Does nothing.  Preserved for backward compatibility.
2332
2333ftree-sink
2334Common Report Var(flag_tree_sink) Optimization
2335Enable SSA code sinking on trees
2336
2337ftree-slsr
2338Common Report Var(flag_tree_slsr) Optimization
2339Perform straight-line strength reduction
2340
2341ftree-sra
2342Common Report Var(flag_tree_sra) Optimization
2343Perform scalar replacement of aggregates
2344
2345ftree-ter
2346Common Report Var(flag_tree_ter) Optimization
2347Replace temporary expressions in the SSA->normal pass
2348
2349ftree-lrs
2350Common Report Var(flag_tree_live_range_split) Optimization
2351Perform live range splitting during the SSA->normal pass
2352
2353ftree-vrp
2354Common Report Var(flag_tree_vrp) Init(0) Optimization
2355Perform Value Range Propagation on trees
2356
2357funit-at-a-time
2358Common Report Var(flag_unit_at_a_time) Init(1)
2359Compile whole compilation unit at a time
2360
2361funroll-loops
2362Common Report Var(flag_unroll_loops) Optimization
2363Perform loop unrolling when iteration count is known
2364
2365funroll-all-loops
2366Common Report Var(flag_unroll_all_loops) Optimization
2367Perform loop unrolling for all loops
2368
2369; Nonzero means that loop optimizer may assume that the induction variables
2370; that control loops do not overflow and that the loops with nontrivial
2371; exit condition are not infinite
2372funsafe-loop-optimizations
2373Common Report Var(flag_unsafe_loop_optimizations) Optimization
2374Allow loop optimizations to assume that the loops behave in normal way
2375
2376fassociative-math
2377Common Report Var(flag_associative_math) SetByCombined Optimization
2378Allow optimization for floating-point arithmetic which may change the
2379result of the operation due to rounding.
2380
2381freciprocal-math
2382Common Report Var(flag_reciprocal_math) SetByCombined Optimization
2383Same as -fassociative-math for expressions which include division.
2384
2385; Nonzero means that unsafe floating-point math optimizations are allowed
2386; for the sake of speed.  IEEE compliance is not guaranteed, and operations
2387; are allowed to assume that their arguments and results are "normal"
2388; (e.g., nonnegative for SQRT).
2389funsafe-math-optimizations
2390Common Report Var(flag_unsafe_math_optimizations) Optimization SetByCombined
2391Allow math optimizations that may violate IEEE or ISO standards
2392
2393funswitch-loops
2394Common Report Var(flag_unswitch_loops) Optimization
2395Perform loop unswitching
2396
2397funwind-tables
2398Common Report Var(flag_unwind_tables) Optimization
2399Just generate unwind tables for exception handling
2400
2401fuse-ld=bfd
2402Common Driver Negative(fuse-ld=gold)
2403Use the bfd linker instead of the default linker
2404
2405fuse-ld=gold
2406Common Driver Negative(fuse-ld=bfd)
2407Use the gold linker instead of the default linker
2408
2409fuse-linker-plugin
2410Common Undocumented Var(flag_use_linker_plugin)
2411
2412; Positive if we should track variables, negative if we should run
2413; the var-tracking pass only to discard debug annotations, zero if
2414; we're not to run it.  When flag_var_tracking == 2 (AUTODETECT_VALUE) it
2415; will be set according to optimize, debug_info_level and debug_hooks
2416; in process_options ().
2417fvar-tracking
2418Common Report Var(flag_var_tracking) Init(2) Optimization
2419Perform variable tracking
2420
2421; Positive if we should track variables at assignments, negative if
2422; we should run the var-tracking pass only to discard debug
2423; annotations.  When flag_var_tracking_assignments ==
2424; AUTODETECT_VALUE it will be set according to flag_var_tracking.
2425fvar-tracking-assignments
2426Common Report Var(flag_var_tracking_assignments) Init(2) Optimization
2427Perform variable tracking by annotating assignments
2428
2429; Nonzero if we should toggle flag_var_tracking_assignments after
2430; processing options and computing its default.  */
2431fvar-tracking-assignments-toggle
2432Common Report Var(flag_var_tracking_assignments_toggle) Optimization
2433Toggle -fvar-tracking-assignments
2434
2435; Positive if we should track uninitialized variables, negative if
2436; we should run the var-tracking pass only to discard debug
2437; annotations.  When flag_var_tracking_uninit == AUTODETECT_VALUE it
2438; will be set according to flag_var_tracking.
2439fvar-tracking-uninit
2440Common Report Var(flag_var_tracking_uninit) Optimization
2441Perform variable tracking and also tag variables that are uninitialized
2442
2443ftree-vectorize
2444Common Report Var(flag_tree_vectorize) Optimization
2445Enable vectorization on trees
2446
2447ftree-vectorizer-verbose=
2448Common Joined RejectNegative Ignore
2449Does nothing.  Preserved for backward compatibility.
2450
2451ftree-loop-vectorize
2452Common Report Var(flag_tree_loop_vectorize) Optimization
2453Enable loop vectorization on trees
2454
2455ftree-slp-vectorize
2456Common Report Var(flag_tree_slp_vectorize) Optimization
2457Enable basic block vectorization (SLP) on trees
2458
2459fvect-cost-model=
2460Common Joined RejectNegative Enum(vect_cost_model) Var(flag_vect_cost_model) Init(VECT_COST_MODEL_DEFAULT) Optimization
2461Specifies the cost model for vectorization
2462 
2463fsimd-cost-model=
2464Common Joined RejectNegative Enum(vect_cost_model) Var(flag_simd_cost_model) Init(VECT_COST_MODEL_UNLIMITED) Optimization
2465Specifies the vectorization cost model for code marked with a simd directive
2466
2467Enum
2468Name(vect_cost_model) Type(enum vect_cost_model) UnknownError(unknown vectorizer cost model %qs)
2469
2470EnumValue
2471Enum(vect_cost_model) String(unlimited) Value(VECT_COST_MODEL_UNLIMITED)
2472
2473EnumValue
2474Enum(vect_cost_model) String(dynamic) Value(VECT_COST_MODEL_DYNAMIC)
2475
2476EnumValue
2477Enum(vect_cost_model) String(cheap) Value(VECT_COST_MODEL_CHEAP)
2478
2479fvect-cost-model
2480Common RejectNegative Alias(fvect-cost-model=,dynamic)
2481Enables the dynamic vectorizer cost model.  Preserved for backward compatibility.
2482
2483fno-vect-cost-model
2484Common RejectNegative Alias(fvect-cost-model=,unlimited)
2485Enables the unlimited vectorizer cost model.  Preserved for backward compatibility.
2486
2487ftree-vect-loop-version
2488Common Ignore
2489Does nothing. Preserved for backward compatibility.
2490
2491ftree-scev-cprop
2492Common Report Var(flag_tree_scev_cprop) Init(1) Optimization
2493Enable copy propagation of scalar-evolution information.
2494
2495; -fverbose-asm causes extra commentary information to be produced in
2496; the generated assembly code (to make it more readable).  This option
2497; is generally only of use to those who actually need to read the
2498; generated assembly code (perhaps while debugging the compiler itself).
2499; -fno-verbose-asm, the default, causes the extra information
2500; to not be added and is useful when comparing two assembler files.
2501fverbose-asm
2502Common Report Var(flag_verbose_asm)
2503Add extra commentary to assembler output
2504
2505fvisibility=
2506Common Joined RejectNegative Enum(symbol_visibility) Var(default_visibility) Init(VISIBILITY_DEFAULT)
2507-fvisibility=[default|internal|hidden|protected]	Set the default symbol visibility
2508
2509Enum
2510Name(symbol_visibility) Type(enum symbol_visibility) UnknownError(unrecognized visibility value %qs)
2511
2512EnumValue
2513Enum(symbol_visibility) String(default) Value(VISIBILITY_DEFAULT)
2514
2515EnumValue
2516Enum(symbol_visibility) String(internal) Value(VISIBILITY_INTERNAL)
2517
2518EnumValue
2519Enum(symbol_visibility) String(hidden) Value(VISIBILITY_HIDDEN)
2520
2521EnumValue
2522Enum(symbol_visibility) String(protected) Value(VISIBILITY_PROTECTED)
2523
2524fvtable-verify=
2525Common Joined RejectNegative Enum(vtv_priority) Var(flag_vtable_verify) Init(VTV_NO_PRIORITY)
2526Validate vtable pointers before using them.
2527
2528Enum
2529Name(vtv_priority) Type(enum vtv_priority) UnknownError(unknown vtable verify initialization priority %qs)
2530
2531EnumValue
2532Enum(vtv_priority) String(none) Value(VTV_NO_PRIORITY)
2533
2534EnumValue
2535Enum(vtv_priority) String(std) Value(VTV_STANDARD_PRIORITY)
2536
2537EnumValue
2538Enum(vtv_priority) String(preinit) Value(VTV_PREINIT_PRIORITY)
2539
2540fvtv-counts
2541Common Var(flag_vtv_counts)
2542Output vtable verification counters.
2543
2544fvtv-debug
2545Common Var(flag_vtv_debug)
2546Output vtable verification pointer sets information.
2547
2548fvpt
2549Common Report Var(flag_value_profile_transformations) Optimization
2550Use expression value profiles in optimizations
2551
2552fweb
2553Common Report Var(flag_web) Init(2) Optimization
2554Construct webs and split unrelated uses of single variable
2555
2556ftree-builtin-call-dce
2557Common Report Var(flag_tree_builtin_call_dce) Init(0) Optimization
2558Enable conditional dead code elimination for builtin calls
2559
2560fwhole-program
2561Common Report Var(flag_whole_program) Init(0)
2562Perform whole program optimizations
2563
2564fwrapv
2565Common Report Var(flag_wrapv) Optimization
2566Assume signed arithmetic overflow wraps around
2567
2568fzero-initialized-in-bss
2569Common Report Var(flag_zero_initialized_in_bss) Init(1)
2570Put zero initialized data in the bss section
2571
2572g
2573Common JoinedOrMissing
2574Generate debug information in default format
2575
2576gcoff
2577Common JoinedOrMissing Negative(gdwarf)
2578Generate debug information in COFF format
2579
2580gdwarf
2581Common JoinedOrMissing Negative(gdwarf-)
2582Generate debug information in default version of DWARF format
2583
2584gdwarf-
2585Common Joined UInteger Var(dwarf_version) Init(4) Negative(gstabs)
2586Generate debug information in DWARF v2 (or later) format
2587
2588ggdb
2589Common JoinedOrMissing
2590Generate debug information in default extended format
2591
2592gno-pubnames
2593Common Negative(gpubnames) Var(debug_generate_pub_sections, 0) Init(-1)
2594Don't generate DWARF pubnames and pubtypes sections.
2595
2596gpubnames
2597Common Negative(ggnu-pubnames) Var(debug_generate_pub_sections, 1)
2598Generate DWARF pubnames and pubtypes sections.
2599
2600ggnu-pubnames
2601Common Negative(gno-pubnames) Var(debug_generate_pub_sections, 2)
2602Generate DWARF pubnames and pubtypes sections with GNU extensions.
2603
2604gno-record-gcc-switches
2605Common RejectNegative Var(dwarf_record_gcc_switches,0) Init(1)
2606Don't record gcc command line switches in DWARF DW_AT_producer.
2607
2608grecord-gcc-switches
2609Common RejectNegative Var(dwarf_record_gcc_switches,1)
2610Record gcc command line switches in DWARF DW_AT_producer.
2611
2612gno-split-dwarf
2613Common Driver RejectNegative Var(dwarf_split_debug_info,0) Init(0)
2614Don't generate debug information in separate .dwo files
2615
2616gsplit-dwarf
2617Common Driver RejectNegative Var(dwarf_split_debug_info,1)
2618Generate debug information in separate .dwo files
2619
2620gstabs
2621Common JoinedOrMissing Negative(gstabs+)
2622Generate debug information in STABS format
2623
2624gstabs+
2625Common JoinedOrMissing Negative(gvms)
2626Generate debug information in extended STABS format
2627
2628gno-strict-dwarf
2629Common RejectNegative Var(dwarf_strict,0) Init(0)
2630Emit DWARF additions beyond selected version
2631
2632gstrict-dwarf
2633Common Report RejectNegative Var(dwarf_strict,1)
2634Don't emit DWARF additions beyond selected version
2635
2636gtoggle
2637Common Report Var(flag_gtoggle)
2638Toggle debug information generation
2639
2640gvms
2641Common JoinedOrMissing Negative(gxcoff)
2642Generate debug information in VMS format
2643
2644gxcoff
2645Common JoinedOrMissing Negative(gxcoff+)
2646Generate debug information in XCOFF format
2647
2648gxcoff+
2649Common JoinedOrMissing Negative(gcoff)
2650Generate debug information in extended XCOFF format
2651
2652Enum
2653Name(compressed_debug_sections) Type(int)
2654
2655; Since -gz= is completely handled in specs, the values aren't used and we
2656; assign arbitrary constants.
2657EnumValue
2658Enum(compressed_debug_sections) String(none) Value(0)
2659
2660EnumValue
2661Enum(compressed_debug_sections) String(zlib) Value(1)
2662
2663EnumValue
2664Enum(compressed_debug_sections) String(zlib-gnu) Value(2)
2665
2666gz
2667Common Driver
2668Generate compressed debug sections
2669
2670gz=
2671Common Driver Joined Enum(compressed_debug_sections)
2672-gz=<format>	Generate compressed debug sections in format <format>
2673
2674h
2675Driver Joined Separate
2676
2677iplugindir=
2678Common Joined Var(plugindir_string) Init(0)
2679-iplugindir=<dir>	Set <dir> to be the default plugin directory
2680
2681imultiarch
2682Common Joined Separate RejectDriver Var(imultiarch) Init(0)
2683-imultiarch <dir>	Set <dir> to be the multiarch include subdirectory
2684
2685l
2686Driver Joined Separate
2687
2688n
2689Driver
2690
2691no-canonical-prefixes
2692Driver
2693
2694nodefaultlibs
2695Driver
2696
2697nostartfiles
2698Driver
2699
2700nostdlib
2701Driver
2702
2703o
2704Common Driver Joined Separate Var(asm_file_name) MissingArgError(missing filename after %qs)
2705-o <file>	Place output into <file>
2706
2707p
2708Common Var(profile_flag)
2709Enable function profiling
2710
2711pass-exit-codes
2712Driver Var(pass_exit_codes)
2713
2714pedantic
2715Common Alias(Wpedantic)
2716
2717pedantic-errors
2718Common Var(flag_pedantic_errors)
2719Like -pedantic but issue them as errors
2720
2721pg
2722Driver
2723
2724pipe
2725Driver Var(use_pipes)
2726
2727print-file-name=
2728Driver JoinedOrMissing Var(print_file_name)
2729
2730print-libgcc-file-name
2731Driver
2732
2733print-multi-directory
2734Driver Var(print_multi_directory)
2735
2736print-multi-lib
2737Driver Var(print_multi_lib)
2738
2739print-multi-os-directory
2740Driver Var(print_multi_os_directory)
2741 
2742print-multiarch
2743Driver Var(print_multiarch)
2744
2745print-prog-name=
2746Driver JoinedOrMissing Var(print_prog_name)
2747
2748print-search-dirs
2749Driver Var(print_search_dirs)
2750
2751print-sysroot
2752Driver Var(print_sysroot)
2753
2754print-sysroot-headers-suffix
2755Driver Var(print_sysroot_headers_suffix)
2756
2757quiet
2758Common Var(quiet_flag) RejectDriver
2759Do not display functions compiled or elapsed time
2760
2761r
2762Driver
2763
2764s
2765Driver
2766
2767save-temps
2768Driver
2769
2770save-temps=
2771Driver Joined
2772
2773t
2774Driver
2775
2776time
2777Driver Var(report_times)
2778
2779time=
2780Driver JoinedOrMissing
2781
2782u
2783Driver Joined Separate
2784
2785undef
2786Driver
2787; C option, but driver must not handle as "-u ndef".
2788
2789v
2790Common Driver Var(verbose_flag)
2791Enable verbose output
2792
2793version
2794Common Var(version_flag) RejectDriver
2795Display the compiler's version
2796
2797w
2798Common Var(inhibit_warnings)
2799Suppress warnings
2800
2801wrapper
2802Driver Separate Var(wrapper_string)
2803
2804x
2805Driver Joined Separate
2806
2807shared
2808Driver RejectNegative Negative(pie)
2809Create a shared library
2810
2811shared-libgcc
2812Driver
2813
2814specs
2815Driver Separate Alias(specs=)
2816
2817specs=
2818Driver Joined
2819
2820static
2821Driver
2822
2823static-libgcc
2824Driver
2825
2826static-libgfortran
2827Driver
2828; Documented for Fortran, but always accepted by driver.
2829
2830static-libstdc++
2831Driver
2832
2833static-libgo
2834Driver
2835; Documented for Go, but always accepted by driver.
2836
2837static-libasan
2838Driver
2839
2840static-libtsan
2841Driver
2842
2843static-liblsan
2844Driver
2845
2846static-libubsan
2847Driver
2848
2849symbolic
2850Driver
2851
2852pie
2853Driver RejectNegative Negative(shared)
2854Create a position independent executable
2855
2856z
2857Driver Joined Separate
2858
2859fipa-ra
2860Common Report Var(flag_ipa_ra) Optimization
2861Use caller save register across calls if possible
2862
2863; This comment is to ensure we retain the blank line above.
2864