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