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 prefix to another in debug information 1051 1052fdebug-regex-map= 1053Common Joined RejectNegative Var(common_deferred_options) Defer 1054Map one directory name to another in debug information using regular expression matching 1055 1056fdebug-types-section 1057Common Report Var(flag_debug_types_section) Init(0) 1058Output .debug_types section when using DWARF v4 debuginfo. 1059 1060; Nonzero for -fdefer-pop: don't pop args after each function call 1061; instead save them up to pop many calls' args with one insns. 1062fdefer-pop 1063Common Report Var(flag_defer_pop) Optimization 1064Defer popping functions args from stack until later 1065 1066fdelayed-branch 1067Common Report Var(flag_delayed_branch) Optimization 1068Attempt to fill delay slots of branch instructions 1069 1070fdelete-dead-exceptions 1071Common Report Var(flag_delete_dead_exceptions) Init(0) Optimization 1072Delete dead instructions that may throw exceptions 1073 1074fdelete-null-pointer-checks 1075Common Report Var(flag_delete_null_pointer_checks) Init(0) Optimization 1076Delete useless null pointer checks 1077 1078fdevirtualize-at-ltrans 1079Common Report Var(flag_ltrans_devirtualize) 1080Stream extra data to support more aggressive devirtualization in LTO local transformation mode 1081 1082fdevirtualize-speculatively 1083Common Report Var(flag_devirtualize_speculatively) Optimization 1084Perform speculative devirtualization 1085 1086fdevirtualize 1087Common Report Var(flag_devirtualize) Optimization 1088Try to convert virtual calls to direct ones. 1089 1090fdiagnostics-show-location= 1091Common Joined RejectNegative Enum(diagnostic_prefixing_rule) 1092-fdiagnostics-show-location=[once|every-line] How often to emit source location at the beginning of line-wrapped diagnostics 1093 1094; Required for these enum values. 1095SourceInclude 1096pretty-print.h 1097 1098Enum 1099Name(diagnostic_prefixing_rule) Type(int) 1100 1101EnumValue 1102Enum(diagnostic_prefixing_rule) String(once) Value(DIAGNOSTICS_SHOW_PREFIX_ONCE) 1103 1104EnumValue 1105Enum(diagnostic_prefixing_rule) String(every-line) Value(DIAGNOSTICS_SHOW_PREFIX_EVERY_LINE) 1106 1107fdiagnostics-show-caret 1108Common Var(flag_diagnostics_show_caret) Init(1) 1109Show the source line with a caret indicating the column 1110 1111fdiagnostics-color 1112Common Alias(fdiagnostics-color=,always,never) 1113; 1114 1115fdiagnostics-color= 1116Driver Common Joined RejectNegative Var(flag_diagnostics_show_color) Enum(diagnostic_color_rule) Init(DIAGNOSTICS_COLOR_NO) 1117-fdiagnostics-color=[never|always|auto] Colorize diagnostics 1118 1119; Required for these enum values. 1120SourceInclude 1121diagnostic-color.h 1122 1123Enum 1124Name(diagnostic_color_rule) Type(int) 1125 1126EnumValue 1127Enum(diagnostic_color_rule) String(never) Value(DIAGNOSTICS_COLOR_NO) 1128 1129EnumValue 1130Enum(diagnostic_color_rule) String(always) Value(DIAGNOSTICS_COLOR_YES) 1131 1132EnumValue 1133Enum(diagnostic_color_rule) String(auto) Value(DIAGNOSTICS_COLOR_AUTO) 1134 1135fdiagnostics-show-option 1136Common Var(flag_diagnostics_show_option) Init(1) 1137Amend appropriate diagnostic messages with the command line option that controls them 1138 1139fdisable- 1140Common Joined RejectNegative Var(common_deferred_options) Defer 1141-fdisable-[tree|rtl|ipa]-<pass>=range1+range2 disables an optimization pass 1142 1143fenable- 1144Common Joined RejectNegative Var(common_deferred_options) Defer 1145-fenable-[tree|rtl|ipa]-<pass>=range1+range2 enables an optimization pass 1146 1147fdump- 1148Common Joined RejectNegative Var(common_deferred_options) Defer 1149-fdump-<type> Dump various compiler internals to a file 1150 1151fdump-final-insns 1152Driver RejectNegative 1153 1154fdump-final-insns= 1155Common RejectNegative Joined Var(flag_dump_final_insns) 1156-fdump-final-insns=filename Dump to filename the insns at the end of translation 1157 1158fdump-go-spec= 1159Common RejectNegative Joined Var(flag_dump_go_spec) 1160-fdump-go-spec=filename Write all declarations to file as Go code 1161 1162fdump-noaddr 1163Common Report Var(flag_dump_noaddr) 1164Suppress output of addresses in debugging dumps 1165 1166freport-bug 1167Common Driver Var(flag_report_bug) 1168Collect and dump debug information into temporary file if ICE in C/C++ 1169compiler occured. 1170 1171fdump-passes 1172Common Var(flag_dump_passes) Init(0) 1173Dump optimization passes 1174 1175fdump-unnumbered 1176Common Report Var(flag_dump_unnumbered) 1177Suppress output of instruction numbers, line number notes and addresses in debugging dumps 1178 1179fdump-unnumbered-links 1180Common Report Var(flag_dump_unnumbered_links) 1181Suppress output of previous and next insn numbers in debugging dumps 1182 1183fdwarf2-cfi-asm 1184Common Report Var(flag_dwarf2_cfi_asm) Init(HAVE_GAS_CFI_DIRECTIVE) 1185Enable CFI tables via GAS assembler directives. 1186 1187fearly-inlining 1188Common Report Var(flag_early_inlining) Init(1) Optimization 1189Perform early inlining 1190 1191feliminate-dwarf2-dups 1192Common Report Var(flag_eliminate_dwarf2_dups) 1193Perform DWARF2 duplicate elimination 1194 1195fipa-sra 1196Common Report Var(flag_ipa_sra) Init(0) Optimization 1197Perform interprocedural reduction of aggregates 1198 1199feliminate-unused-debug-symbols 1200Common Report Var(flag_debug_only_used_symbols) 1201Perform unused symbol elimination in debug info 1202 1203feliminate-unused-debug-types 1204Common Report Var(flag_eliminate_unused_debug_types) Init(1) 1205Perform unused type elimination in debug info 1206 1207femit-class-debug-always 1208Common Report Var(flag_emit_class_debug_always) Init(0) 1209Do not suppress C++ class debug information. 1210 1211fexceptions 1212Common Report Var(flag_exceptions) Optimization 1213Enable exception handling 1214 1215fexpensive-optimizations 1216Common Report Var(flag_expensive_optimizations) Optimization 1217Perform a number of minor, expensive optimizations 1218 1219fexcess-precision= 1220Common Joined RejectNegative Enum(excess_precision) Var(flag_excess_precision_cmdline) Init(EXCESS_PRECISION_DEFAULT) 1221-fexcess-precision=[fast|standard] Specify handling of excess floating-point precision 1222 1223Enum 1224Name(excess_precision) Type(enum excess_precision) UnknownError(unknown excess precision style %qs) 1225 1226EnumValue 1227Enum(excess_precision) String(fast) Value(EXCESS_PRECISION_FAST) 1228 1229EnumValue 1230Enum(excess_precision) String(standard) Value(EXCESS_PRECISION_STANDARD) 1231 1232ffast-math 1233Common 1234 1235ffat-lto-objects 1236Common Var(flag_fat_lto_objects) 1237Output lto objects containing both the intermediate language and binary output. 1238 1239ffinite-math-only 1240Common Report Var(flag_finite_math_only) Optimization SetByCombined 1241Assume no NaNs or infinities are generated 1242 1243ffixed- 1244Common Joined RejectNegative Var(common_deferred_options) Defer 1245-ffixed-<register> Mark <register> as being unavailable to the compiler 1246 1247ffloat-store 1248Common Report Var(flag_float_store) Optimization 1249Don't allocate floats and doubles in extended-precision registers 1250 1251fforce-addr 1252Common Ignore 1253Does nothing. Preserved for backward compatibility. 1254 1255fforward-propagate 1256Common Report Var(flag_forward_propagate) Optimization 1257Perform a forward propagation pass on RTL 1258 1259ffp-contract= 1260Common Joined RejectNegative Enum(fp_contract_mode) Var(flag_fp_contract_mode) Init(FP_CONTRACT_FAST) Optimization 1261-ffp-contract=[off|on|fast] Perform floating-point expression contraction. 1262 1263Enum 1264Name(fp_contract_mode) Type(enum fp_contract_mode) UnknownError(unknown floating point contraction style %qs) 1265 1266EnumValue 1267Enum(fp_contract_mode) String(off) Value(FP_CONTRACT_OFF) 1268 1269; Not implemented, fall back to conservative FP_CONTRACT_OFF. 1270EnumValue 1271Enum(fp_contract_mode) String(on) Value(FP_CONTRACT_OFF) 1272 1273EnumValue 1274Enum(fp_contract_mode) String(fast) Value(FP_CONTRACT_FAST) 1275 1276; Nonzero means don't put addresses of constant functions in registers. 1277; Used for compiling the Unix kernel, where strange substitutions are 1278; done on the assembly output. 1279ffunction-cse 1280Common Report Var(flag_no_function_cse,0) Optimization 1281Allow function addresses to be held in registers 1282 1283ffunction-sections 1284Common Report Var(flag_function_sections) 1285Place each function into its own section 1286 1287fgcse 1288Common Report Var(flag_gcse) Optimization 1289Perform global common subexpression elimination 1290 1291fgcse-lm 1292Common Report Var(flag_gcse_lm) Init(1) Optimization 1293Perform enhanced load motion during global common subexpression elimination 1294 1295fgcse-sm 1296Common Report Var(flag_gcse_sm) Init(0) Optimization 1297Perform store motion after global common subexpression elimination 1298 1299fgcse-las 1300Common Report Var(flag_gcse_las) Init(0) Optimization 1301Perform redundant load after store elimination in global common subexpression 1302elimination 1303 1304fgcse-after-reload 1305Common Report Var(flag_gcse_after_reload) Optimization 1306Perform global common subexpression elimination after register allocation 1307has finished 1308 1309; This option is not documented yet as its semantics will change. 1310fgraphite 1311Common Report Var(flag_graphite) Optimization 1312Enable in and out of Graphite representation 1313 1314fgraphite-identity 1315Common Report Var(flag_graphite_identity) Optimization 1316Enable Graphite Identity transformation 1317 1318fhoist-adjacent-loads 1319Common Report Var(flag_hoist_adjacent_loads) Optimization 1320Enable hoisting adjacent loads to encourage generating conditional move 1321instructions 1322 1323floop-parallelize-all 1324Common Report Var(flag_loop_parallelize_all) Optimization 1325Mark all loops as parallel 1326 1327floop-strip-mine 1328Common Report Var(flag_loop_strip_mine) Optimization 1329Enable Loop Strip Mining transformation 1330 1331floop-interchange 1332Common Report Var(flag_loop_interchange) Optimization 1333Enable Loop Interchange transformation 1334 1335floop-block 1336Common Report Var(flag_loop_block) Optimization 1337Enable Loop Blocking transformation 1338 1339floop-unroll-and-jam 1340Common Report Var(flag_loop_unroll_jam) Optimization 1341Enable Loop Unroll Jam transformation 1342 1343fgnu-tm 1344Common Report Var(flag_tm) 1345Enable support for GNU transactional memory 1346 1347fgnu-unique 1348Common Report Var(flag_gnu_unique) Init(1) 1349Use STB_GNU_UNIQUE if supported by the assembler 1350 1351floop-flatten 1352Common Ignore 1353Does nothing. Preserved for backward compatibility. 1354 1355floop-nest-optimize 1356Common Report Var(flag_loop_optimize_isl) Optimization 1357Enable the ISL based loop nest optimizer 1358 1359fstrict-volatile-bitfields 1360Common Report Var(flag_strict_volatile_bitfields) Init(-1) Optimization 1361Force bitfield accesses to match their type width 1362 1363fguess-branch-probability 1364Common Report Var(flag_guess_branch_prob) Optimization 1365Enable guessing of branch probabilities 1366 1367; Nonzero means ignore `#ident' directives. 0 means handle them. 1368; Generate position-independent code for executables if possible 1369; On SVR4 targets, it also controls whether or not to emit a 1370; string identifying the compiler. 1371fident 1372Common Report Var(flag_no_ident,0) 1373Process #ident directives 1374 1375fif-conversion 1376Common Report Var(flag_if_conversion) Optimization 1377Perform conversion of conditional jumps to branchless equivalents 1378 1379fif-conversion2 1380Common Report Var(flag_if_conversion2) Optimization 1381Perform conversion of conditional jumps to conditional execution 1382 1383fstack-reuse= 1384Common Joined RejectNegative Enum(stack_reuse_level) Var(flag_stack_reuse) Init(SR_ALL) Optimization 1385-fstack-reuse=[all|named_vars|none] Set stack reuse level for local variables. 1386 1387Enum 1388Name(stack_reuse_level) Type(enum stack_reuse_level) UnknownError(unknown Stack Reuse Level %qs) 1389 1390EnumValue 1391Enum(stack_reuse_level) String(all) Value(SR_ALL) 1392 1393EnumValue 1394Enum(stack_reuse_level) String(named_vars) Value(SR_NAMED_VARS) 1395 1396EnumValue 1397Enum(stack_reuse_level) String(none) Value(SR_NONE) 1398 1399ftree-loop-if-convert 1400Common Report Var(flag_tree_loop_if_convert) Init(-1) Optimization 1401Convert conditional jumps in innermost loops to branchless equivalents 1402 1403ftree-loop-if-convert-stores 1404Common Report Var(flag_tree_loop_if_convert_stores) Optimization 1405Also if-convert conditional jumps containing memory writes 1406 1407; -finhibit-size-directive inhibits output of .size for ELF. 1408; This is used only for compiling crtstuff.c, 1409; and it may be extended to other effects 1410; needed for crtstuff.c on other systems. 1411finhibit-size-directive 1412Common Report Var(flag_inhibit_size_directive) 1413Do not generate .size directives 1414 1415findirect-inlining 1416Common Report Var(flag_indirect_inlining) Optimization 1417Perform indirect inlining 1418 1419; General flag to enable inlining. Specifying -fno-inline will disable 1420; all inlining apart from always-inline functions. 1421finline 1422Common Report Var(flag_no_inline,0) Init(0) Optimization 1423Enable inlining of function declared \"inline\", disabling disables all inlining 1424 1425finline-small-functions 1426Common Report Var(flag_inline_small_functions) Optimization 1427Integrate functions into their callers when code size is known not to grow 1428 1429finline-functions 1430Common Report Var(flag_inline_functions) Optimization 1431Integrate functions not declared \"inline\" into their callers when profitable 1432 1433finline-functions-called-once 1434Common Report Var(flag_inline_functions_called_once) Optimization 1435Integrate functions only required by their single caller 1436 1437finline-limit- 1438Common RejectNegative Joined Alias(finline-limit=) 1439 1440finline-limit= 1441Common RejectNegative Joined UInteger 1442-finline-limit=<number> Limit the size of inlined functions to <number> 1443 1444finline-atomics 1445Common Report Var(flag_inline_atomics) Init(1) Optimization 1446Inline __atomic operations when a lock free instruction sequence is available. 1447 1448finstrument-functions 1449Common Report Var(flag_instrument_function_entry_exit) 1450Instrument function entry and exit with profiling calls 1451 1452finstrument-functions-exclude-function-list= 1453Common RejectNegative Joined 1454-finstrument-functions-exclude-function-list=name,... Do not instrument listed functions 1455 1456finstrument-functions-exclude-file-list= 1457Common RejectNegative Joined 1458-finstrument-functions-exclude-file-list=filename,... Do not instrument functions listed in files 1459 1460fipa-cp 1461Common Report Var(flag_ipa_cp) Optimization 1462Perform interprocedural constant propagation 1463 1464fipa-cp-clone 1465Common Report Var(flag_ipa_cp_clone) Optimization 1466Perform cloning to make Interprocedural constant propagation stronger 1467 1468fipa-cp-alignment 1469Common Report Var(flag_ipa_cp_alignment) Optimization 1470Perform alignment discovery and propagation to make Interprocedural constant propagation stronger 1471 1472fipa-profile 1473Common Report Var(flag_ipa_profile) Init(0) Optimization 1474Perform interprocedural profile propagation 1475 1476fipa-pta 1477Common Report Var(flag_ipa_pta) Init(0) Optimization 1478Perform interprocedural points-to analysis 1479 1480fipa-pure-const 1481Common Report Var(flag_ipa_pure_const) Init(0) Optimization 1482Discover pure and const functions 1483 1484fipa-icf 1485Common Report Var(flag_ipa_icf) Optimization 1486Perform Identical Code Folding for functions and read-only variables 1487 1488fipa-icf-functions 1489Common Report Var(flag_ipa_icf_functions) Optimization 1490Perform Identical Code Folding for functions 1491 1492fipa-icf-variables 1493Common Report Var(flag_ipa_icf_variables) 1494Perform Identical Code Folding for variables 1495 1496fipa-reference 1497Common Report Var(flag_ipa_reference) Init(0) Optimization 1498Discover readonly and non addressable static variables 1499 1500fipa-matrix-reorg 1501Common Ignore 1502Does nothing. Preserved for backward compatibility. 1503 1504fipa-struct-reorg 1505Common Ignore 1506Does nothing. Preserved for backward compatibility. 1507 1508fira-algorithm= 1509Common Joined RejectNegative Enum(ira_algorithm) Var(flag_ira_algorithm) Init(IRA_ALGORITHM_CB) Optimization 1510-fira-algorithm=[CB|priority] Set the used IRA algorithm 1511 1512Enum 1513Name(ira_algorithm) Type(enum ira_algorithm) UnknownError(unknown IRA algorithm %qs) 1514 1515EnumValue 1516Enum(ira_algorithm) String(CB) Value(IRA_ALGORITHM_CB) 1517 1518EnumValue 1519Enum(ira_algorithm) String(priority) Value(IRA_ALGORITHM_PRIORITY) 1520 1521fira-region= 1522Common Joined RejectNegative Enum(ira_region) Var(flag_ira_region) Init(IRA_REGION_AUTODETECT) Optimization 1523-fira-region=[one|all|mixed] Set regions for IRA 1524 1525Enum 1526Name(ira_region) Type(enum ira_region) UnknownError(unknown IRA region %qs) 1527 1528EnumValue 1529Enum(ira_region) String(one) Value(IRA_REGION_ONE) 1530 1531EnumValue 1532Enum(ira_region) String(all) Value(IRA_REGION_ALL) 1533 1534EnumValue 1535Enum(ira_region) String(mixed) Value(IRA_REGION_MIXED) 1536 1537fira-hoist-pressure 1538Common Report Var(flag_ira_hoist_pressure) Init(1) Optimization 1539Use IRA based register pressure calculation 1540in RTL hoist optimizations. 1541 1542fira-loop-pressure 1543Common Report Var(flag_ira_loop_pressure) Optimization 1544Use IRA based register pressure calculation 1545in RTL loop optimizations. 1546 1547fira-share-save-slots 1548Common Report Var(flag_ira_share_save_slots) Init(1) Optimization 1549Share slots for saving different hard registers. 1550 1551fira-share-spill-slots 1552Common Report Var(flag_ira_share_spill_slots) Init(1) Optimization 1553Share stack slots for spilled pseudo-registers. 1554 1555fira-verbose= 1556Common RejectNegative Joined UInteger Var(flag_ira_verbose) Init(5) 1557-fira-verbose=<number> Control IRA's level of diagnostic messages. 1558 1559fivopts 1560Common Report Var(flag_ivopts) Init(1) Optimization 1561Optimize induction variables on trees 1562 1563fjump-tables 1564Common Var(flag_jump_tables) Init(1) Optimization 1565Use jump tables for sufficiently large switch statements 1566 1567fkeep-inline-functions 1568Common Report Var(flag_keep_inline_functions) 1569Generate code for functions even if they are fully inlined 1570 1571fkeep-static-consts 1572Common Report Var(flag_keep_static_consts) Init(1) 1573Emit static const variables even if they are not used 1574 1575fleading-underscore 1576Common Report Var(flag_leading_underscore) Init(-1) 1577Give external symbols a leading underscore 1578 1579floop-optimize 1580Common Ignore 1581Does nothing. Preserved for backward compatibility. 1582 1583flra-remat 1584Common Report Var(flag_lra_remat) Optimization 1585Do CFG-sensitive rematerialization in LRA 1586 1587flto 1588Common 1589Enable link-time optimization. 1590 1591flto= 1592Common RejectNegative Joined Var(flag_lto) 1593Link-time optimization with number of parallel jobs or jobserver. 1594 1595Enum 1596Name(lto_partition_model) Type(enum lto_partition_model) UnknownError(unknown LTO partitioning model %qs) 1597 1598EnumValue 1599Enum(lto_partition_model) String(none) Value(LTO_PARTITION_NONE) 1600 1601EnumValue 1602Enum(lto_partition_model) String(one) Value(LTO_PARTITION_ONE) 1603 1604EnumValue 1605Enum(lto_partition_model) String(balanced) Value(LTO_PARTITION_BALANCED) 1606 1607EnumValue 1608Enum(lto_partition_model) String(1to1) Value(LTO_PARTITION_1TO1) 1609 1610EnumValue 1611Enum(lto_partition_model) String(max) Value(LTO_PARTITION_MAX) 1612 1613flto-partition= 1614Common Joined RejectNegative Enum(lto_partition_model) Var(flag_lto_partition) Init(LTO_PARTITION_BALANCED) 1615Specify the algorithm to partition symbols and vars at linktime 1616 1617; The initial value of -1 comes from Z_DEFAULT_COMPRESSION in zlib.h. 1618flto-compression-level= 1619Common Joined RejectNegative UInteger Var(flag_lto_compression_level) Init(-1) 1620-flto-compression-level=<number> Use zlib compression level <number> for IL 1621 1622flto-odr-type-merging 1623Common Report Var(flag_lto_odr_type_mering) Init(1) 1624Merge C++ types using One Definition Rule 1625 1626flto-report 1627Common Report Var(flag_lto_report) Init(0) 1628Report various link-time optimization statistics 1629 1630flto-report-wpa 1631Common Report Var(flag_lto_report_wpa) Init(0) 1632Report various link-time optimization statistics for WPA only 1633 1634fmath-errno 1635Common Report Var(flag_errno_math) Init(1) Optimization SetByCombined 1636Set errno after built-in math functions 1637 1638fmax-errors= 1639Common Joined RejectNegative UInteger Var(flag_max_errors) 1640-fmax-errors=<number> Maximum number of errors to report 1641 1642fmem-report 1643Common Report Var(mem_report) 1644Report on permanent memory allocation 1645 1646fmem-report-wpa 1647Common Report Var(mem_report_wpa) 1648Report on permanent memory allocation in WPA only 1649 1650; This will attempt to merge constant section constants, if 1 only 1651; string constants and constants from constant pool, if 2 also constant 1652; variables. 1653fmerge-all-constants 1654Common Report Var(flag_merge_constants,2) Init(1) 1655Attempt to merge identical constants and constant variables 1656 1657fmerge-constants 1658Common Report Var(flag_merge_constants,1) 1659Attempt to merge identical constants across compilation units 1660 1661fmerge-debug-strings 1662Common Report Var(flag_merge_debug_strings) Init(1) 1663Attempt to merge identical debug strings across compilation units 1664 1665fmessage-length= 1666Common RejectNegative Joined UInteger 1667-fmessage-length=<number> Limit diagnostics to <number> characters per line. 0 suppresses line-wrapping 1668 1669fmodulo-sched 1670Common Report Var(flag_modulo_sched) Optimization 1671Perform SMS based modulo scheduling before the first scheduling pass 1672 1673fmodulo-sched-allow-regmoves 1674Common Report Var(flag_modulo_sched_allow_regmoves) Optimization 1675Perform SMS based modulo scheduling with register moves allowed 1676 1677fmove-loop-invariants 1678Common Report Var(flag_move_loop_invariants) Optimization 1679Move loop invariant computations out of loops 1680 1681fdce 1682Common Var(flag_dce) Init(1) Optimization 1683Use the RTL dead code elimination pass 1684 1685fdse 1686Common Var(flag_dse) Init(1) Optimization 1687Use the RTL dead store elimination pass 1688 1689freschedule-modulo-scheduled-loops 1690Common Report Var(flag_resched_modulo_sched) Optimization 1691Enable/Disable the traditional scheduling in loops that already passed modulo scheduling 1692 1693fnon-call-exceptions 1694Common Report Var(flag_non_call_exceptions) Optimization 1695Support synchronous non-call exceptions 1696 1697foffload= 1698Common Driver Joined MissingArgError(options or targets missing after %qs) 1699-foffload=<targets>=<options> Specify offloading targets and options for them 1700 1701foffload-abi= 1702Common Joined RejectNegative Enum(offload_abi) Var(flag_offload_abi) Init(OFFLOAD_ABI_UNSET) 1703-foffload-abi=[lp64|ilp32] Set the ABI to use in an offload compiler 1704 1705Enum 1706Name(offload_abi) Type(enum offload_abi) UnknownError(unknown offload ABI %qs) 1707 1708EnumValue 1709Enum(offload_abi) String(ilp32) Value(OFFLOAD_ABI_ILP32) 1710 1711EnumValue 1712Enum(offload_abi) String(lp64) Value(OFFLOAD_ABI_LP64) 1713 1714fomit-frame-pointer 1715Common Report Var(flag_omit_frame_pointer) Optimization 1716When possible do not generate stack frames 1717 1718fopt-info 1719Common Report Var(flag_opt_info) Optimization 1720Enable all optimization info dumps on stderr 1721 1722fopt-info- 1723Common Joined RejectNegative Var(common_deferred_options) Defer 1724-fopt-info[-<type>=filename] Dump compiler optimization details 1725 1726foptimize-register-move 1727Common Ignore 1728Does nothing. Preserved for backward compatibility. 1729 1730foptimize-sibling-calls 1731Common Report Var(flag_optimize_sibling_calls) Optimization 1732Optimize sibling and tail recursive calls 1733 1734fpartial-inlining 1735Common Report Var(flag_partial_inlining) Optimization 1736Perform partial inlining 1737 1738fpre-ipa-mem-report 1739Common Report Var(pre_ipa_mem_report) 1740Report on memory allocation before interprocedural optimization 1741 1742fpost-ipa-mem-report 1743Common Report Var(post_ipa_mem_report) 1744Report on memory allocation before interprocedural optimization 1745 1746fpack-struct 1747Common Report Var(flag_pack_struct) Optimization 1748Pack structure members together without holes 1749 1750fpack-struct= 1751Common RejectNegative Joined UInteger Optimization 1752-fpack-struct=<number> Set initial maximum structure member alignment 1753 1754fpcc-struct-return 1755Common Report Var(flag_pcc_struct_return,1) Init(DEFAULT_PCC_STRUCT_RETURN) 1756Return small aggregates in memory, not registers 1757 1758fpeel-loops 1759Common Report Var(flag_peel_loops) Optimization 1760Perform loop peeling 1761 1762fpeephole 1763Common Report Var(flag_no_peephole,0) Optimization 1764Enable machine specific peephole optimizations 1765 1766fpeephole2 1767Common Report Var(flag_peephole2) Optimization 1768Enable an RTL peephole pass before sched2 1769 1770fPIC 1771Common Report Var(flag_pic,2) Negative(fPIE) 1772Generate position-independent code if possible (large mode) 1773 1774fPIE 1775Common Report Var(flag_pie,2) Negative(fpic) 1776Generate position-independent code for executables if possible (large mode) 1777 1778fpic 1779Common Report Var(flag_pic,1) Negative(fpie) 1780Generate position-independent code if possible (small mode) 1781 1782fpie 1783Common Report Var(flag_pie,1) Negative(fPIC) 1784Generate position-independent code for executables if possible (small mode) 1785 1786fplugin= 1787Common Joined RejectNegative Var(common_deferred_options) Defer 1788Specify a plugin to load 1789 1790fplugin-arg- 1791Common Joined RejectNegative Var(common_deferred_options) Defer 1792-fplugin-arg-<name>-<key>[=<value>] Specify argument <key>=<value> for plugin <name> 1793 1794fpredictive-commoning 1795Common Report Var(flag_predictive_commoning) Optimization 1796Run predictive commoning optimization. 1797 1798fprefetch-loop-arrays 1799Common Report Var(flag_prefetch_loop_arrays) Init(-1) Optimization 1800Generate prefetch instructions, if available, for arrays in loops 1801 1802fprofile 1803Common Report Var(profile_flag) 1804Enable basic program profiling code 1805 1806fprofile-arcs 1807Common Report Var(profile_arc_flag) 1808Insert arc-based program profiling code 1809 1810fprofile-dir= 1811Common Joined RejectNegative Var(profile_data_prefix) 1812Set the top-level directory for storing the profile data. 1813The default is 'pwd'. 1814 1815fprofile-correction 1816Common Report Var(flag_profile_correction) 1817Enable correction of flow inconsistent profile data input 1818 1819fprofile-generate 1820Common 1821Enable common options for generating profile info for profile feedback directed optimizations 1822 1823fprofile-generate= 1824Common Joined RejectNegative 1825Enable common options for generating profile info for profile feedback directed optimizations, and set -fprofile-dir= 1826 1827fprofile-use 1828Common Var(flag_profile_use) 1829Enable common options for performing profile feedback directed optimizations 1830 1831fprofile-use= 1832Common Joined RejectNegative 1833Enable common options for performing profile feedback directed optimizations, and set -fprofile-dir= 1834 1835fprofile-values 1836Common Report Var(flag_profile_values) 1837Insert code to profile values of expressions 1838 1839fprofile-report 1840Common Report Var(profile_report) 1841Report on consistency of profile 1842 1843fprofile-reorder-functions 1844Common Report Var(flag_profile_reorder_functions) 1845Enable function reordering that improves code placement 1846 1847frandom-seed 1848Common Var(common_deferred_options) Defer 1849 1850frandom-seed= 1851Common Joined RejectNegative Var(common_deferred_options) Defer 1852-frandom-seed=<string> Make compile reproducible using <string> 1853 1854; This switch causes the command line that was used to create an 1855; object file to be recorded into the object file. The exact format 1856; of this recording is target and binary file format dependent. 1857; It is related to the -fverbose-asm switch, but that switch only 1858; records information in the assembler output file as comments, so 1859; they never reach the object file. 1860frecord-gcc-switches 1861Common Report Var(flag_record_gcc_switches) 1862Record gcc command line switches in the object file. 1863 1864freg-struct-return 1865Common Report Var(flag_pcc_struct_return,0) Optimization 1866Return small aggregates in registers 1867 1868fregmove 1869Common Ignore 1870Does nothing. Preserved for backward compatibility. 1871 1872flifetime-dse 1873Common Report Var(flag_lifetime_dse) Init(1) Optimization 1874Tell DSE that the storage for a C++ object is dead when the constructor 1875starts and when the destructor finishes. 1876 1877flive-range-shrinkage 1878Common Report Var(flag_live_range_shrinkage) Init(0) Optimization 1879Relief of register pressure through live range shrinkage 1880 1881frename-registers 1882Common Report Var(flag_rename_registers) Init(2) Optimization 1883Perform a register renaming optimization pass 1884 1885fschedule-fusion 1886Common Report Var(flag_schedule_fusion) Init(2) Optimization 1887Perform a target dependent instruction fusion optimization pass 1888 1889freorder-blocks 1890Common Report Var(flag_reorder_blocks) Optimization 1891Reorder basic blocks to improve code placement 1892 1893freorder-blocks-and-partition 1894Common Report Var(flag_reorder_blocks_and_partition) Optimization 1895Reorder basic blocks and partition into hot and cold sections 1896 1897freorder-functions 1898Common Report Var(flag_reorder_functions) Optimization 1899Reorder functions to improve code placement 1900 1901frerun-cse-after-loop 1902Common Report Var(flag_rerun_cse_after_loop) Optimization 1903Add a common subexpression elimination pass after loop optimizations 1904 1905frerun-loop-opt 1906Common Ignore 1907Does nothing. Preserved for backward compatibility. 1908 1909frounding-math 1910Common Report Var(flag_rounding_math) Optimization SetByCombined 1911Disable optimizations that assume default FP rounding behavior 1912 1913fsched-interblock 1914Common Report Var(flag_schedule_interblock) Init(1) Optimization 1915Enable scheduling across basic blocks 1916 1917fsched-pressure 1918Common Report Var(flag_sched_pressure) Init(0) Optimization 1919Enable register pressure sensitive insn scheduling 1920 1921fsched-spec 1922Common Report Var(flag_schedule_speculative) Init(1) Optimization 1923Allow speculative motion of non-loads 1924 1925fsched-spec-load 1926Common Report Var(flag_schedule_speculative_load) Optimization 1927Allow speculative motion of some loads 1928 1929fsched-spec-load-dangerous 1930Common Report Var(flag_schedule_speculative_load_dangerous) Optimization 1931Allow speculative motion of more loads 1932 1933fsched-verbose= 1934Common RejectNegative Joined UInteger Var(sched_verbose_param) 1935-fsched-verbose=<number> Set the verbosity level of the scheduler 1936 1937fsched2-use-superblocks 1938Common Report Var(flag_sched2_use_superblocks) Optimization 1939If scheduling post reload, do superblock scheduling 1940 1941fsched2-use-traces 1942Common Ignore 1943Does nothing. Preserved for backward compatibility. 1944 1945fschedule-insns 1946Common Report Var(flag_schedule_insns) Optimization 1947Reschedule instructions before register allocation 1948 1949fschedule-insns2 1950Common Report Var(flag_schedule_insns_after_reload) Optimization 1951Reschedule instructions after register allocation 1952 1953; This flag should be on when a target implements non-trivial 1954; scheduling hooks, maybe saving some information for its own sake. 1955; On IA64, for example, this is used for correct bundling. 1956fselective-scheduling 1957Common Report Var(flag_selective_scheduling) Optimization 1958Schedule instructions using selective scheduling algorithm 1959 1960fselective-scheduling2 1961Common Report Var(flag_selective_scheduling2) Optimization 1962Run selective scheduling after reload 1963 1964fsel-sched-pipelining 1965Common Report Var(flag_sel_sched_pipelining) Init(0) Optimization 1966Perform software pipelining of inner loops during selective scheduling 1967 1968fsel-sched-pipelining-outer-loops 1969Common Report Var(flag_sel_sched_pipelining_outer_loops) Init(0) Optimization 1970Perform software pipelining of outer loops during selective scheduling 1971 1972fsel-sched-reschedule-pipelined 1973Common Report Var(flag_sel_sched_reschedule_pipelined) Init(0) Optimization 1974Reschedule pipelined regions without pipelining 1975 1976fsemantic-interposition 1977Common Report Var(flag_semantic_interposition) Init(1) 1978Allow interposing function (or variables) by ones with different semantics (or initializer) respectively by dynamic linker 1979 1980; sched_stalled_insns means that insns can be moved prematurely from the queue 1981; of stalled insns into the ready list. 1982fsched-stalled-insns 1983Common Report Var(flag_sched_stalled_insns) Optimization UInteger 1984Allow premature scheduling of queued insns 1985 1986fsched-stalled-insns= 1987Common RejectNegative Joined UInteger Optimization 1988-fsched-stalled-insns=<number> Set number of queued insns that can be prematurely scheduled 1989 1990; sched_stalled_insns_dep controls how many recently scheduled cycles will 1991; be examined for a dependency on a stalled insn that is candidate for 1992; premature removal from the queue of stalled insns into the ready list (has 1993; an effect only if the flag 'sched_stalled_insns' is set). 1994fsched-stalled-insns-dep 1995Common Report Var(flag_sched_stalled_insns_dep,1) Init(1) Optimization UInteger 1996Set dependence distance checking in premature scheduling of queued insns 1997 1998fsched-stalled-insns-dep= 1999Common RejectNegative Joined UInteger Optimization 2000-fsched-stalled-insns-dep=<number> Set dependence distance checking in premature scheduling of queued insns 2001 2002fsched-group-heuristic 2003Common Report Var(flag_sched_group_heuristic) Init(1) Optimization 2004Enable the group heuristic in the scheduler 2005 2006fsched-critical-path-heuristic 2007Common Report Var(flag_sched_critical_path_heuristic) Init(1) Optimization 2008Enable the critical path heuristic in the scheduler 2009 2010fsched-spec-insn-heuristic 2011Common Report Var(flag_sched_spec_insn_heuristic) Init(1) Optimization 2012Enable the speculative instruction heuristic in the scheduler 2013 2014fsched-rank-heuristic 2015Common Report Var(flag_sched_rank_heuristic) Init(1) Optimization 2016Enable the rank heuristic in the scheduler 2017 2018fsched-last-insn-heuristic 2019Common Report Var(flag_sched_last_insn_heuristic) Init(1) Optimization 2020Enable the last instruction heuristic in the scheduler 2021 2022fsched-dep-count-heuristic 2023Common Report Var(flag_sched_dep_count_heuristic) Init(1) Optimization 2024Enable the dependent count heuristic in the scheduler 2025 2026fsection-anchors 2027Common Report Var(flag_section_anchors) Optimization 2028Access data in the same section from shared anchor points 2029 2030fsee 2031Common Ignore 2032Does nothing. Preserved for backward compatibility. 2033 2034fzee 2035Common Ignore 2036Does nothing. Preserved for backward compatibility. 2037 2038free 2039Common Report Var(flag_ree) Init(0) 2040Turn on Redundant Extensions Elimination pass. 2041 2042fshow-column 2043Common Report Var(flag_show_column) Init(1) 2044Show column numbers in diagnostics, when available. Default on 2045 2046fshrink-wrap 2047Common Report Var(flag_shrink_wrap) Optimization 2048Emit function prologues only before parts of the function that need it, 2049rather than at the top of the function. 2050 2051fsignaling-nans 2052Common Report Var(flag_signaling_nans) Optimization SetByCombined 2053Disable optimizations observable by IEEE signaling NaNs 2054 2055fsigned-zeros 2056Common Report Var(flag_signed_zeros) Init(1) Optimization SetByCombined 2057Disable floating point optimizations that ignore the IEEE signedness of zero 2058 2059fsingle-precision-constant 2060Common Report Var(flag_single_precision_constant) Optimization 2061Convert floating point constants to single precision constants 2062 2063fsplit-ivs-in-unroller 2064Common Report Var(flag_split_ivs_in_unroller) Init(1) Optimization 2065Split lifetimes of induction variables when loops are unrolled 2066 2067fsplit-stack 2068Common Report Var(flag_split_stack) Init(-1) 2069Generate discontiguous stack frames 2070 2071fsplit-wide-types 2072Common Report Var(flag_split_wide_types) Optimization 2073Split wide types into independent registers 2074 2075fssa-phiopt 2076Common Report Var(flag_ssa_phiopt) Optimization 2077Optimize conditional patterns using SSA PHI nodes 2078 2079fstdarg-opt 2080Common Report Var(flag_stdarg_opt) Init(1) Optimization 2081Optimize amount of stdarg registers saved to stack at start of function 2082 2083fvariable-expansion-in-unroller 2084Common Report Var(flag_variable_expansion_in_unroller) Optimization 2085Apply variable expansion when loops are unrolled 2086 2087fstack-check= 2088Common Report RejectNegative Joined 2089-fstack-check=[no|generic|specific] Insert stack checking code into the program 2090 2091fstack-check 2092Common Alias(fstack-check=, specific, no) 2093Insert stack checking code into the program. Same as -fstack-check=specific 2094 2095fstack-limit 2096Common Var(common_deferred_options) Defer 2097 2098fstack-limit-register= 2099Common RejectNegative Joined Var(common_deferred_options) Defer 2100-fstack-limit-register=<register> Trap if the stack goes past <register> 2101 2102fstack-limit-symbol= 2103Common RejectNegative Joined Var(common_deferred_options) Defer 2104-fstack-limit-symbol=<name> Trap if the stack goes past symbol <name> 2105 2106fstack-protector 2107Common Report Var(flag_stack_protect, 1) 2108Use propolice as a stack protection method 2109 2110fstack-protector-all 2111Common Report RejectNegative Var(flag_stack_protect, 2) 2112Use a stack protection method for every function 2113 2114fstack-protector-strong 2115Common Report RejectNegative Var(flag_stack_protect, 3) 2116Use a smart stack protection method for certain functions 2117 2118fstack-protector-explicit 2119Common Report RejectNegative Var(flag_stack_protect, 4) 2120Use stack protection method only for functions with the stack_protect attribute 2121 2122fstack-usage 2123Common RejectNegative Var(flag_stack_usage) 2124Output stack usage information on a per-function basis 2125 2126fstrength-reduce 2127Common Ignore 2128Does nothing. Preserved for backward compatibility. 2129 2130; Nonzero if we should do (language-dependent) alias analysis. 2131; Typically, this analysis will assume that expressions of certain 2132; types do not alias expressions of certain other types. Only used 2133; if alias analysis (in general) is enabled. 2134fstrict-aliasing 2135Common Report Var(flag_strict_aliasing) Optimization 2136Assume strict aliasing rules apply 2137 2138fstrict-overflow 2139Common Report Var(flag_strict_overflow) Optimization 2140Treat signed overflow as undefined 2141 2142fsync-libcalls 2143Common Report Var(flag_sync_libcalls) Init(1) 2144Implement __atomic operations via libcalls to legacy __sync functions 2145 2146fsyntax-only 2147Common Report Var(flag_syntax_only) 2148Check for syntax errors, then stop 2149 2150ftest-coverage 2151Common Report Var(flag_test_coverage) 2152Create data files needed by \"gcov\" 2153 2154fthread-jumps 2155Common Report Var(flag_thread_jumps) Optimization 2156Perform jump threading optimizations 2157 2158ftime-report 2159Common Report Var(time_report) 2160Report the time taken by each compiler pass 2161 2162ftls-model= 2163Common Joined RejectNegative Enum(tls_model) Var(flag_tls_default) Init(TLS_MODEL_GLOBAL_DYNAMIC) 2164-ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec] Set the default thread-local storage code generation model 2165 2166Enum 2167Name(tls_model) Type(enum tls_model) UnknownError(unknown TLS model %qs) 2168 2169EnumValue 2170Enum(tls_model) String(global-dynamic) Value(TLS_MODEL_GLOBAL_DYNAMIC) 2171 2172EnumValue 2173Enum(tls_model) String(local-dynamic) Value(TLS_MODEL_LOCAL_DYNAMIC) 2174 2175EnumValue 2176Enum(tls_model) String(initial-exec) Value(TLS_MODEL_INITIAL_EXEC) 2177 2178EnumValue 2179Enum(tls_model) String(local-exec) Value(TLS_MODEL_LOCAL_EXEC) 2180 2181ftoplevel-reorder 2182Common Report Var(flag_toplevel_reorder) Init(2) 2183Reorder top level functions, variables, and asms 2184 2185ftracer 2186Common Report Var(flag_tracer) Optimization 2187Perform superblock formation via tail duplication 2188 2189; Zero means that floating-point math operations cannot generate a 2190; (user-visible) trap. This is the case, for example, in nonstop 2191; IEEE 754 arithmetic. 2192ftrapping-math 2193Common Report Var(flag_trapping_math) Init(1) Optimization SetByCombined 2194Assume floating-point operations can trap 2195 2196ftrapv 2197Common Report Var(flag_trapv) Optimization 2198Trap for signed overflow in addition, subtraction and multiplication 2199 2200ftree-ccp 2201Common Report Var(flag_tree_ccp) Optimization 2202Enable SSA-CCP optimization on trees 2203 2204ftree-bit-ccp 2205Common Report Var(flag_tree_bit_ccp) Optimization 2206Enable SSA-BIT-CCP optimization on trees 2207 2208ftree-store-ccp 2209Common Ignore 2210Does nothing. Preserved for backward compatibility. 2211 2212ftree-ch 2213Common Report Var(flag_tree_ch) Optimization 2214Enable loop header copying on trees 2215 2216ftree-coalesce-inlined-vars 2217Common Report Var(flag_ssa_coalesce_vars,1) Init(2) RejectNegative Optimization 2218Enable coalescing of copy-related user variables that are inlined 2219 2220ftree-coalesce-vars 2221Common Report Var(flag_ssa_coalesce_vars,2) Optimization 2222Enable coalescing of all copy-related user variables 2223 2224ftree-copyrename 2225Common Report Var(flag_tree_copyrename) Optimization 2226Replace SSA temporaries with better names in copies 2227 2228ftree-copy-prop 2229Common Report Var(flag_tree_copy_prop) Optimization 2230Enable copy propagation on trees 2231 2232ftree-store-copy-prop 2233Common Ignore 2234Does nothing. Preserved for backward compatibility. 2235 2236ftree-cselim 2237Common Report Var(flag_tree_cselim) Init(2) Optimization 2238Transform condition stores into unconditional ones 2239 2240ftree-switch-conversion 2241Common Report Var(flag_tree_switch_conversion) Optimization 2242Perform conversions of switch initializations. 2243 2244ftree-dce 2245Common Report Var(flag_tree_dce) Optimization 2246Enable SSA dead code elimination optimization on trees 2247 2248ftree-dominator-opts 2249Common Report Var(flag_tree_dom) Optimization 2250Enable dominator optimizations 2251 2252ftree-tail-merge 2253Common Report Var(flag_tree_tail_merge) Optimization 2254Enable tail merging on trees 2255 2256ftree-dse 2257Common Report Var(flag_tree_dse) Optimization 2258Enable dead store elimination 2259 2260ftree-forwprop 2261Common Report Var(flag_tree_forwprop) Init(1) Optimization 2262Enable forward propagation on trees 2263 2264ftree-fre 2265Common Report Var(flag_tree_fre) Optimization 2266Enable Full Redundancy Elimination (FRE) on trees 2267 2268foptimize-strlen 2269Common Report Var(flag_optimize_strlen) Optimization 2270Enable string length optimizations on trees 2271 2272fisolate-erroneous-paths-dereference 2273Common Report Var(flag_isolate_erroneous_paths_dereference) Optimization 2274Detect paths that trigger erroneous or undefined behavior due to 2275dereferencing a null pointer. Isolate those paths from the main control 2276flow and turn the statement with erroneous or undefined behavior into a trap. 2277 2278fisolate-erroneous-paths-attribute 2279Common Report Var(flag_isolate_erroneous_paths_attribute) Optimization 2280Detect paths that trigger erroneous or undefined behavior due a null value 2281being used in a way forbidden by a returns_nonnull or nonnull 2282attribute. Isolate those paths from the main control flow and turn the 2283statement with erroneous or undefined behavior into a trap. 2284 2285ftree-loop-distribution 2286Common Report Var(flag_tree_loop_distribution) Optimization 2287Enable loop distribution on trees 2288 2289ftree-loop-distribute-patterns 2290Common Report Var(flag_tree_loop_distribute_patterns) Optimization 2291Enable loop distribution for patterns transformed into a library call 2292 2293ftree-loop-im 2294Common Report Var(flag_tree_loop_im) Init(1) Optimization 2295Enable loop invariant motion on trees 2296 2297ftree-loop-linear 2298Common Alias(floop-interchange) 2299Enable loop interchange transforms. Same as -floop-interchange 2300 2301ftree-loop-ivcanon 2302Common Report Var(flag_tree_loop_ivcanon) Init(1) Optimization 2303Create canonical induction variables in loops 2304 2305ftree-loop-optimize 2306Common Report Var(flag_tree_loop_optimize) Init(1) Optimization 2307Enable loop optimizations on tree level 2308 2309ftree-parallelize-loops= 2310Common Report Joined RejectNegative UInteger Var(flag_tree_parallelize_loops) Init(1) Optimization 2311Enable automatic parallelization of loops 2312 2313ftree-phiprop 2314Common Report Var(flag_tree_phiprop) Init(1) Optimization 2315Enable hoisting loads from conditional pointers. 2316 2317ftree-pre 2318Common Report Var(flag_tree_pre) Optimization 2319Enable SSA-PRE optimization on trees 2320 2321ftree-partial-pre 2322Common Report Var(flag_tree_partial_pre) Optimization 2323In SSA-PRE optimization on trees, enable partial-partial redundancy elimination 2324 2325ftree-pta 2326Common Report Var(flag_tree_pta) Optimization 2327Perform function-local points-to analysis on trees. 2328 2329ftree-reassoc 2330Common Report Var(flag_tree_reassoc) Init(1) Optimization 2331Enable reassociation on tree level 2332 2333ftree-salias 2334Common Ignore 2335Does nothing. Preserved for backward compatibility. 2336 2337ftree-sink 2338Common Report Var(flag_tree_sink) Optimization 2339Enable SSA code sinking on trees 2340 2341ftree-slsr 2342Common Report Var(flag_tree_slsr) Optimization 2343Perform straight-line strength reduction 2344 2345ftree-sra 2346Common Report Var(flag_tree_sra) Optimization 2347Perform scalar replacement of aggregates 2348 2349ftree-ter 2350Common Report Var(flag_tree_ter) Optimization 2351Replace temporary expressions in the SSA->normal pass 2352 2353ftree-lrs 2354Common Report Var(flag_tree_live_range_split) Optimization 2355Perform live range splitting during the SSA->normal pass 2356 2357ftree-vrp 2358Common Report Var(flag_tree_vrp) Init(0) Optimization 2359Perform Value Range Propagation on trees 2360 2361funit-at-a-time 2362Common Report Var(flag_unit_at_a_time) Init(1) 2363Compile whole compilation unit at a time 2364 2365funroll-loops 2366Common Report Var(flag_unroll_loops) Optimization 2367Perform loop unrolling when iteration count is known 2368 2369funroll-all-loops 2370Common Report Var(flag_unroll_all_loops) Optimization 2371Perform loop unrolling for all loops 2372 2373; Nonzero means that loop optimizer may assume that the induction variables 2374; that control loops do not overflow and that the loops with nontrivial 2375; exit condition are not infinite 2376funsafe-loop-optimizations 2377Common Report Var(flag_unsafe_loop_optimizations) Optimization 2378Allow loop optimizations to assume that the loops behave in normal way 2379 2380fassociative-math 2381Common Report Var(flag_associative_math) SetByCombined Optimization 2382Allow optimization for floating-point arithmetic which may change the 2383result of the operation due to rounding. 2384 2385freciprocal-math 2386Common Report Var(flag_reciprocal_math) SetByCombined Optimization 2387Same as -fassociative-math for expressions which include division. 2388 2389; Nonzero means that unsafe floating-point math optimizations are allowed 2390; for the sake of speed. IEEE compliance is not guaranteed, and operations 2391; are allowed to assume that their arguments and results are "normal" 2392; (e.g., nonnegative for SQRT). 2393funsafe-math-optimizations 2394Common Report Var(flag_unsafe_math_optimizations) Optimization SetByCombined 2395Allow math optimizations that may violate IEEE or ISO standards 2396 2397funswitch-loops 2398Common Report Var(flag_unswitch_loops) Optimization 2399Perform loop unswitching 2400 2401funwind-tables 2402Common Report Var(flag_unwind_tables) Optimization 2403Just generate unwind tables for exception handling 2404 2405fuse-ld=bfd 2406Common Driver Negative(fuse-ld=gold) 2407Use the bfd linker instead of the default linker 2408 2409fuse-ld=gold 2410Common Driver Negative(fuse-ld=bfd) 2411Use the gold linker instead of the default linker 2412 2413fuse-linker-plugin 2414Common Undocumented Var(flag_use_linker_plugin) 2415 2416; Positive if we should track variables, negative if we should run 2417; the var-tracking pass only to discard debug annotations, zero if 2418; we're not to run it. When flag_var_tracking == 2 (AUTODETECT_VALUE) it 2419; will be set according to optimize, debug_info_level and debug_hooks 2420; in process_options (). 2421fvar-tracking 2422Common Report Var(flag_var_tracking) Init(2) Optimization 2423Perform variable tracking 2424 2425; Positive if we should track variables at assignments, negative if 2426; we should run the var-tracking pass only to discard debug 2427; annotations. When flag_var_tracking_assignments == 2428; AUTODETECT_VALUE it will be set according to flag_var_tracking. 2429fvar-tracking-assignments 2430Common Report Var(flag_var_tracking_assignments) Init(2) Optimization 2431Perform variable tracking by annotating assignments 2432 2433; Nonzero if we should toggle flag_var_tracking_assignments after 2434; processing options and computing its default. */ 2435fvar-tracking-assignments-toggle 2436Common Report Var(flag_var_tracking_assignments_toggle) Optimization 2437Toggle -fvar-tracking-assignments 2438 2439; Positive if we should track uninitialized variables, negative if 2440; we should run the var-tracking pass only to discard debug 2441; annotations. When flag_var_tracking_uninit == AUTODETECT_VALUE it 2442; will be set according to flag_var_tracking. 2443fvar-tracking-uninit 2444Common Report Var(flag_var_tracking_uninit) Optimization 2445Perform variable tracking and also tag variables that are uninitialized 2446 2447ftree-vectorize 2448Common Report Var(flag_tree_vectorize) Optimization 2449Enable vectorization on trees 2450 2451ftree-vectorizer-verbose= 2452Common Joined RejectNegative Ignore 2453Does nothing. Preserved for backward compatibility. 2454 2455ftree-loop-vectorize 2456Common Report Var(flag_tree_loop_vectorize) Optimization 2457Enable loop vectorization on trees 2458 2459ftree-slp-vectorize 2460Common Report Var(flag_tree_slp_vectorize) Optimization 2461Enable basic block vectorization (SLP) on trees 2462 2463fvect-cost-model= 2464Common Joined RejectNegative Enum(vect_cost_model) Var(flag_vect_cost_model) Init(VECT_COST_MODEL_DEFAULT) Optimization 2465Specifies the cost model for vectorization 2466 2467fsimd-cost-model= 2468Common Joined RejectNegative Enum(vect_cost_model) Var(flag_simd_cost_model) Init(VECT_COST_MODEL_UNLIMITED) Optimization 2469Specifies the vectorization cost model for code marked with a simd directive 2470 2471Enum 2472Name(vect_cost_model) Type(enum vect_cost_model) UnknownError(unknown vectorizer cost model %qs) 2473 2474EnumValue 2475Enum(vect_cost_model) String(unlimited) Value(VECT_COST_MODEL_UNLIMITED) 2476 2477EnumValue 2478Enum(vect_cost_model) String(dynamic) Value(VECT_COST_MODEL_DYNAMIC) 2479 2480EnumValue 2481Enum(vect_cost_model) String(cheap) Value(VECT_COST_MODEL_CHEAP) 2482 2483fvect-cost-model 2484Common RejectNegative Alias(fvect-cost-model=,dynamic) 2485Enables the dynamic vectorizer cost model. Preserved for backward compatibility. 2486 2487fno-vect-cost-model 2488Common RejectNegative Alias(fvect-cost-model=,unlimited) 2489Enables the unlimited vectorizer cost model. Preserved for backward compatibility. 2490 2491ftree-vect-loop-version 2492Common Ignore 2493Does nothing. Preserved for backward compatibility. 2494 2495ftree-scev-cprop 2496Common Report Var(flag_tree_scev_cprop) Init(1) Optimization 2497Enable copy propagation of scalar-evolution information. 2498 2499; -fverbose-asm causes extra commentary information to be produced in 2500; the generated assembly code (to make it more readable). This option 2501; is generally only of use to those who actually need to read the 2502; generated assembly code (perhaps while debugging the compiler itself). 2503; -fno-verbose-asm, the default, causes the extra information 2504; to not be added and is useful when comparing two assembler files. 2505fverbose-asm 2506Common Report Var(flag_verbose_asm) 2507Add extra commentary to assembler output 2508 2509fvisibility= 2510Common Joined RejectNegative Enum(symbol_visibility) Var(default_visibility) Init(VISIBILITY_DEFAULT) 2511-fvisibility=[default|internal|hidden|protected] Set the default symbol visibility 2512 2513Enum 2514Name(symbol_visibility) Type(enum symbol_visibility) UnknownError(unrecognized visibility value %qs) 2515 2516EnumValue 2517Enum(symbol_visibility) String(default) Value(VISIBILITY_DEFAULT) 2518 2519EnumValue 2520Enum(symbol_visibility) String(internal) Value(VISIBILITY_INTERNAL) 2521 2522EnumValue 2523Enum(symbol_visibility) String(hidden) Value(VISIBILITY_HIDDEN) 2524 2525EnumValue 2526Enum(symbol_visibility) String(protected) Value(VISIBILITY_PROTECTED) 2527 2528fvtable-verify= 2529Common Joined RejectNegative Enum(vtv_priority) Var(flag_vtable_verify) Init(VTV_NO_PRIORITY) 2530Validate vtable pointers before using them. 2531 2532Enum 2533Name(vtv_priority) Type(enum vtv_priority) UnknownError(unknown vtable verify initialization priority %qs) 2534 2535EnumValue 2536Enum(vtv_priority) String(none) Value(VTV_NO_PRIORITY) 2537 2538EnumValue 2539Enum(vtv_priority) String(std) Value(VTV_STANDARD_PRIORITY) 2540 2541EnumValue 2542Enum(vtv_priority) String(preinit) Value(VTV_PREINIT_PRIORITY) 2543 2544fvtv-counts 2545Common Var(flag_vtv_counts) 2546Output vtable verification counters. 2547 2548fvtv-debug 2549Common Var(flag_vtv_debug) 2550Output vtable verification pointer sets information. 2551 2552fvpt 2553Common Report Var(flag_value_profile_transformations) Optimization 2554Use expression value profiles in optimizations 2555 2556fweb 2557Common Report Var(flag_web) Init(2) Optimization 2558Construct webs and split unrelated uses of single variable 2559 2560ftree-builtin-call-dce 2561Common Report Var(flag_tree_builtin_call_dce) Init(0) Optimization 2562Enable conditional dead code elimination for builtin calls 2563 2564fwhole-program 2565Common Report Var(flag_whole_program) Init(0) 2566Perform whole program optimizations 2567 2568fwrapv 2569Common Report Var(flag_wrapv) Optimization 2570Assume signed arithmetic overflow wraps around 2571 2572fzero-initialized-in-bss 2573Common Report Var(flag_zero_initialized_in_bss) Init(1) 2574Put zero initialized data in the bss section 2575 2576g 2577Common JoinedOrMissing 2578Generate debug information in default format 2579 2580gcoff 2581Common JoinedOrMissing Negative(gdwarf) 2582Generate debug information in COFF format 2583 2584gdwarf 2585Common JoinedOrMissing Negative(gdwarf-) 2586Generate debug information in default version of DWARF format 2587 2588gdwarf- 2589Common Joined UInteger Var(dwarf_version) Init(4) Negative(gstabs) 2590Generate debug information in DWARF v2 (or later) format 2591 2592ggdb 2593Common JoinedOrMissing 2594Generate debug information in default extended format 2595 2596gno-pubnames 2597Common Negative(gpubnames) Var(debug_generate_pub_sections, 0) Init(-1) 2598Don't generate DWARF pubnames and pubtypes sections. 2599 2600gpubnames 2601Common Negative(ggnu-pubnames) Var(debug_generate_pub_sections, 1) 2602Generate DWARF pubnames and pubtypes sections. 2603 2604ggnu-pubnames 2605Common Negative(gno-pubnames) Var(debug_generate_pub_sections, 2) 2606Generate DWARF pubnames and pubtypes sections with GNU extensions. 2607 2608gno-record-gcc-switches 2609Common RejectNegative Var(dwarf_record_gcc_switches,0) Init(1) 2610Don't record gcc command line switches in DWARF DW_AT_producer. 2611 2612grecord-gcc-switches 2613Common RejectNegative Var(dwarf_record_gcc_switches,1) 2614Record gcc command line switches in DWARF DW_AT_producer. 2615 2616gno-split-dwarf 2617Common Driver RejectNegative Var(dwarf_split_debug_info,0) Init(0) 2618Don't generate debug information in separate .dwo files 2619 2620gsplit-dwarf 2621Common Driver RejectNegative Var(dwarf_split_debug_info,1) 2622Generate debug information in separate .dwo files 2623 2624gstabs 2625Common JoinedOrMissing Negative(gstabs+) 2626Generate debug information in STABS format 2627 2628gstabs+ 2629Common JoinedOrMissing Negative(gvms) 2630Generate debug information in extended STABS format 2631 2632gno-strict-dwarf 2633Common RejectNegative Var(dwarf_strict,0) Init(0) 2634Emit DWARF additions beyond selected version 2635 2636gstrict-dwarf 2637Common Report RejectNegative Var(dwarf_strict,1) 2638Don't emit DWARF additions beyond selected version 2639 2640gtoggle 2641Common Report Var(flag_gtoggle) 2642Toggle debug information generation 2643 2644gvms 2645Common JoinedOrMissing Negative(gxcoff) 2646Generate debug information in VMS format 2647 2648gxcoff 2649Common JoinedOrMissing Negative(gxcoff+) 2650Generate debug information in XCOFF format 2651 2652gxcoff+ 2653Common JoinedOrMissing Negative(gcoff) 2654Generate debug information in extended XCOFF format 2655 2656Enum 2657Name(compressed_debug_sections) Type(int) 2658 2659; Since -gz= is completely handled in specs, the values aren't used and we 2660; assign arbitrary constants. 2661EnumValue 2662Enum(compressed_debug_sections) String(none) Value(0) 2663 2664EnumValue 2665Enum(compressed_debug_sections) String(zlib) Value(1) 2666 2667EnumValue 2668Enum(compressed_debug_sections) String(zlib-gnu) Value(2) 2669 2670gz 2671Common Driver 2672Generate compressed debug sections 2673 2674gz= 2675Common Driver Joined Enum(compressed_debug_sections) 2676-gz=<format> Generate compressed debug sections in format <format> 2677 2678h 2679Driver Joined Separate 2680 2681iplugindir= 2682Common Joined Var(plugindir_string) Init(0) 2683-iplugindir=<dir> Set <dir> to be the default plugin directory 2684 2685imultiarch 2686Common Joined Separate RejectDriver Var(imultiarch) Init(0) 2687-imultiarch <dir> Set <dir> to be the multiarch include subdirectory 2688 2689l 2690Driver Joined Separate 2691 2692n 2693Driver 2694 2695no-canonical-prefixes 2696Driver 2697 2698nodefaultlibs 2699Driver 2700 2701nostartfiles 2702Driver 2703 2704nostdlib 2705Driver 2706 2707o 2708Common Driver Joined Separate Var(asm_file_name) MissingArgError(missing filename after %qs) 2709-o <file> Place output into <file> 2710 2711p 2712Common Var(profile_flag) 2713Enable function profiling 2714 2715pass-exit-codes 2716Driver Var(pass_exit_codes) 2717 2718pedantic 2719Common Alias(Wpedantic) 2720 2721pedantic-errors 2722Common Var(flag_pedantic_errors) 2723Like -pedantic but issue them as errors 2724 2725pg 2726Driver 2727 2728pipe 2729Driver Var(use_pipes) 2730 2731print-file-name= 2732Driver JoinedOrMissing Var(print_file_name) 2733 2734print-libgcc-file-name 2735Driver 2736 2737print-multi-directory 2738Driver Var(print_multi_directory) 2739 2740print-multi-lib 2741Driver Var(print_multi_lib) 2742 2743print-multi-os-directory 2744Driver Var(print_multi_os_directory) 2745 2746print-multiarch 2747Driver Var(print_multiarch) 2748 2749print-prog-name= 2750Driver JoinedOrMissing Var(print_prog_name) 2751 2752print-search-dirs 2753Driver Var(print_search_dirs) 2754 2755print-sysroot 2756Driver Var(print_sysroot) 2757 2758print-sysroot-headers-suffix 2759Driver Var(print_sysroot_headers_suffix) 2760 2761quiet 2762Common Var(quiet_flag) RejectDriver 2763Do not display functions compiled or elapsed time 2764 2765r 2766Driver 2767 2768s 2769Driver 2770 2771save-temps 2772Driver 2773 2774save-temps= 2775Driver Joined 2776 2777t 2778Driver 2779 2780time 2781Driver Var(report_times) 2782 2783time= 2784Driver JoinedOrMissing 2785 2786u 2787Driver Joined Separate 2788 2789undef 2790Driver 2791; C option, but driver must not handle as "-u ndef". 2792 2793v 2794Common Driver Var(verbose_flag) 2795Enable verbose output 2796 2797version 2798Common Var(version_flag) RejectDriver 2799Display the compiler's version 2800 2801w 2802Common Var(inhibit_warnings) 2803Suppress warnings 2804 2805wrapper 2806Driver Separate Var(wrapper_string) 2807 2808x 2809Driver Joined Separate 2810 2811shared 2812Driver RejectNegative Negative(pie) 2813Create a shared library 2814 2815shared-libgcc 2816Driver 2817 2818specs 2819Driver Separate Alias(specs=) 2820 2821specs= 2822Driver Joined 2823 2824static 2825Driver 2826 2827static-libgcc 2828Driver 2829 2830static-libgfortran 2831Driver 2832; Documented for Fortran, but always accepted by driver. 2833 2834static-libstdc++ 2835Driver 2836 2837static-libgo 2838Driver 2839; Documented for Go, but always accepted by driver. 2840 2841static-libasan 2842Driver 2843 2844static-libtsan 2845Driver 2846 2847static-liblsan 2848Driver 2849 2850static-libubsan 2851Driver 2852 2853symbolic 2854Driver 2855 2856pie 2857Driver RejectNegative Negative(shared) 2858Create a position independent executable 2859 2860z 2861Driver Joined Separate 2862 2863fipa-ra 2864Common Report Var(flag_ipa_ra) Optimization 2865Use caller save register across calls if possible 2866 2867; This comment is to ensure we retain the blank line above. 2868