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