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