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