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