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