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