GNU g++ compiler options Usage: g++ [options] file... Options: -pass-exit-codes Exit with highest error code from a phase. --help Display this information. --target-help Display target specific command line options (including assembler and linker options). --help={common|optimizers|params|target|warnings|[^]{joined|separate|undocumented}}[,...]. Display specific types of command line options. --version Display compiler version information. -dumpspecs Display all of the built in spec strings. -dumpversion Display the version of the compiler. -dumpmachine Display the compiler's target processor. -foffload= Specify offloading targets. -print-search-dirs Display the directories in the compiler's search path. -print-libgcc-file-name Display the name of the compiler's companion library. -print-file-name= Display the full path to library . -print-prog-name= Display the full path to compiler component . -print-multiarch Display the target's normalized GNU triplet, used as a component in the library path. -print-multi-directory Display the root directory for versions of libgcc. -print-multi-lib Display the mapping between command line options and multiple library search directories. -print-multi-os-directory Display the relative path to OS libraries. -print-sysroot Display the target libraries directory. -print-sysroot-headers-suffix Display the sysroot suffix used to find headers. -Wa, Pass comma-separated on to the assembler. -Wp, Pass comma-separated on to the preprocessor. -Wl, Pass comma-separated on to the linker. -Xassembler Pass on to the assembler. -Xpreprocessor Pass on to the preprocessor. -Xlinker Pass on to the linker. -save-temps Do not delete intermediate files. -save-temps= Do not delete intermediate files. -no-canonical-prefixes Do not canonicalize paths when building relative prefixes to other gcc components. -pipe Use pipes rather than intermediate files. -time Time the execution of each subprocess. -specs= Override built-in specs with the contents of . -std= Assume that the input sources are for . --sysroot= Use as the root directory for headers and libraries. -B Add to the compiler's search paths. -v Display the programs invoked by the compiler. -### Like -v but options quoted and commands not executed. -E Preprocess only; do not compile, assemble or link. -S Compile only; do not assemble or link. -c Compile and assemble, but do not link. -o Place the output into . -pie Create a dynamically linked position independent executable. -shared Create a shared library. -x Specify the language of the following input files. Permissible languages include: c c++ assembler none 'none' means revert to the default behavior of guessing the language based on the file's extension. Options starting with -g, -f, -m, -O, -W, or --param are automatically passed on to the various sub-processes invoked by g++. In order to pass other options on to these processes the -W options must be used. The following options are specific to just the language C: -fgimple Enable parsing GIMPLE. -lang-asm This option lacks documentation. C++ SPECIFIC The following options are specific to just the language C++: --param=lazy-modules= Maximum number of concurrently open C++ module files when lazy loading. -Mmodules Generate C++ Module dependency information. -Mno-modules This option lacks documentation. -Wplacement-new Warn for placement new expressions with undefined behavior. Same as -Wplacement-new=. -Wplacement-new=<0,2> Warn for placement new expressions with undefined behavior. -flang-info-include-translate Note #include directives translated to import declarations. -flang-info-include-translate-not Note #include directives not translated to import declarations, and not known to be textual. -flang-info-include-translate= Note a #include translation of a specific header. -flang-info-module-cmi Note Compiled Module Interface pathnames. -flang-info-module-cmi= Note Compiled Module Interface pathname of a specific module or header-unit. The following options are specific to just the language LTO: -flinker-output= Set linker output type (used internally during LTO optimization). -fltrans Run the link-time optimizer in local transformation (LTRANS) mode. -fltrans-output-list= Specify a file to which a list of files output by LTRANS is written. -fresolution= The resolution file. -fwpa Run the link-time optimizer in whole program analysis (WPA) mode. -fwpa= Whole program analysis (WPA) mode with number of parallel jobs specified. The following options are specific to just the language LTODump: -callgraph Dump the symtab callgraph. -defined-only Dump only the defined symbols. -demangle Dump the demangled output. -dump-body= This option lacks documentation. -dump-level= This option lacks documentation. -gimple-stats Dump the statistics of gimple statements. -help Dump the dump tool command line options. -list Call the dump function for variables and function in IL. -name-sort Sort the symbols alphabetically. -objects Dump the details of LTO objects. -print-value Print the initial values of the variables. -reverse-sort Display the symbols in reverse order. -size-sort Sort the symbols according to size. -symbol= This option lacks documentation. -tree-stats Dump the statistics of trees. -type-stats Dump the statistics of tree types. The following options are language-related: --all-warnings Same as -Wall. --ansi Same as -ansi. --assert Same as -A. --assert= Same as -A. --comments Same as -C. --comments-in-macros Same as -CC. --define-macro Same as -D. --define-macro= Same as -D. --dependencies Same as -M. --dump Same as -d. --dump= Same as -d. --imacros Same as -imacros. --imacros= Same as -imacros. --include Same as -include. --include-barrier Same as -I-. --include-directory Same as -I. --include-directory-after Same as -idirafter. --include-directory-after= Same as -idirafter. --include-directory= Same as -I. --include-prefix Same as -iprefix. --include-prefix= Same as -iprefix. --include-with-prefix Same as -iwithprefix. --include-with-prefix-after Same as -iwithprefix. --include-with-prefix-after= Same as -iwithprefix. --include-with-prefix-before Same as -iwithprefixbefore. --include-with-prefix-before= Same as -iwithprefixbefore. --include-with-prefix= Same as -iwithprefix. --include= Same as -include. --no-line-commands Same as -P. --no-standard-includes Same as -nostdinc. --no-standard-libraries Same as -nostdlib. --no-warnings Same as -w. --output Same as -o. --output-pch This option lacks documentation. --output= Same as -o. --pedantic Same as -Wpedantic. --preprocess This option lacks documentation. --print-missing-file-dependencies Same as -MG. --trace-includes Same as -H. --traditional-cpp Same as -traditional-cpp. --trigraphs Same as -trigraphs. --undefine-macro Same as -U. --undefine-macro= Same as -U. --user-dependencies Same as -MM. --verbose Same as -v. --write-dependencies Same as -MD. --write-user-dependencies Same as -MMD. -A= Assert the to . Putting '-' before disables the to . -C Do not discard comments. -CC Do not discard comments in macro expansions. -D[=] Define a with as its value. If just is given, is taken to be 1. -E This option lacks documentation. -F Add to the end of the main framework include path. -H Print the name of header files as they are used. -I Add to the end of the main include path. -J Put MODULE files in 'directory'. -M Generate make dependencies. -MD Generate make dependencies and compile. -MF Write dependency output to the given file. -MG Treat missing header files as generated files. -MM Like -M but ignore system header files. -MMD Like -MD but ignore system header files. -MP Generate phony targets for all headers. -MQ Add a target that may require quoting. -MT Add a target that does not require quoting. -P Do not generate #line directives. -U Undefine . -WNSObject-attribute Warn if the NSObject attribute is applied to a non-typedef. -Wabi Warn about things that will change when compiling with an ABI-compliant compiler. -Wabi-tag Warn if a subobject has an abi_tag attribute that the complete object type does not have. -Wabi= Warn about things that change between the current -fabi-version and the specified version. -Wabsolute-value Warn on suspicious calls of standard functions computing absolute values. -Waddress Warn about suspicious uses of memory addresses. -Waddress-of-packed-member Warn when the address of packed member of struct or union is taken. -Waligned-new Warn about 'new' of type with extended alignment without -faligned-new. Same as -Waligned-new=. -Waligned-new=[none|global|all] Warn even if 'new' uses a class member allocation function. -Wall Enable most warning messages. -Walloc-size-larger-than= Warn for calls to allocation functions that attempt to allocate objects larger than the specified number of bytes. -Walloc-zero Warn for calls to allocation functions that specify zero bytes. -Walloca Warn on any use of alloca. -Walloca-larger-than= Warn on unbounded uses of alloca, and on bounded uses of alloca whose bound can be larger than bytes. -Warith-conversion Warn if conversion of the result of arithmetic might change the value even though converting the operands cannot. -Warray-compare Warn about comparisons between two operands of array type. -Warray-parameter Warn about mismatched declarations of array parameters and unsafe accesses to them. Same as -Warray- parameter=. -Warray-parameter=<0,2> Warn about mismatched declarations of array parameters and unsafe accesses to them. -Wassign-intercept Warn whenever an Objective-C assignment is being intercepted by the garbage collector. -Wbad-function-cast Warn about casting functions to incompatible types. -Wbidi-chars Same as -Wbidi-chars=any (or, in negated form, -Wbidi-chars=none). -Wbidi-chars= -Wbidi-chars=[none|unpaired|any|ucn] Warn about UTF-8 bidirectional control characters. -Wbool-compare Warn about boolean expression compared with an integer value different from true/false. -Wbool-operation Warn about certain operations on boolean expressions. -Wbuiltin-declaration-mismatch Warn when a built-in function is declared with the wrong signature. -Wbuiltin-macro-redefined Warn when a built-in preprocessor macro is undefined or redefined. -Wc++-compat Warn about C constructs that are not in the common subset of C and C++. -Wc++0x-compat Same as -Wc++11-compat. -Wc++11-compat Warn about C++ constructs whose meaning differs between ISO C++ 1998 and ISO C++ 2011. -Wc++11-extensions Warn about C++11 constructs in code compiled with an older standard. -Wc++14-compat Warn about C++ constructs whose meaning differs between ISO C++ 2011 and ISO C++ 2014. -Wc++14-extensions Warn about C++14 constructs in code compiled with an older standard. -Wc++17-compat Warn about C++ constructs whose meaning differs between ISO C++ 2014 and ISO C++ 2017. -Wc++17-extensions Warn about C++17 constructs in code compiled with an older standard. -Wc++1z-compat Same as -Wc++17-compat. -Wc++20-compat Warn about C++ constructs whose meaning differs between ISO C++ 2017 and ISO C++ 2020. -Wc++20-extensions Warn about C++20 constructs in code compiled with an older standard. -Wc++23-extensions Warn about C++23 constructs in code compiled with an older standard. -Wc++2a-compat Same as -Wc++20-compat. -Wc11-c2x-compat Warn about features not present in ISO C11, but present in ISO C2X. -Wc90-c99-compat Warn about features not present in ISO C90, but present in ISO C99. -Wc99-c11-compat Warn about features not present in ISO C99, but present in ISO C11. -Wcast-function-type Warn about casts between incompatible function types. -Wcast-qual Warn about casts which discard qualifiers. -Wcatch-value Warn about catch handlers of non-reference type. Same as -Wcatch-value=. -Wcatch-value=<0,3> Warn about catch handlers of non-reference type. -Wchar-subscripts Warn about subscripts whose type is "char". -Wchkp Removed in GCC 9. This switch has no effect. -Wclass-conversion Warn when a conversion function will never be called due to the type it converts to. -Wclass-memaccess Warn for unsafe raw memory writes to objects of class types. -Wclobbered Warn about variables that might be changed by "longjmp" or "vfork". -Wcomma-subscript Warn about uses of a comma operator within a subscripting expression. -Wcomment Warn about possibly nested block comments, and C++ comments spanning more than one physical line. -Wcomments Synonym for -Wcomment. Same as -Wcomment. -Wconditionally-supported Warn for conditionally-supported constructs. -Wconversion Warn for implicit type conversions that may change a value. -Wconversion-null Warn for converting NULL from/to a non-pointer type. -Wcpp Warn when a #warning directive is encountered. -Wctad-maybe-unsupported Warn when performing class template argument deduction on a type with no deduction guides. -Wctor-dtor-privacy Warn when all constructors and destructors are private. -Wdangling-else Warn about dangling else. -Wdangling-pointer Warn for uses of pointers to auto variables whose lifetime has ended. Same as -Wdangling-pointer=. -Wdangling-pointer=<0,2> Warn for uses of pointers to auto variables whose lifetime has ended. -Wdangling-reference Warn when a reference is bound to a temporary whose lifetime has ended. -Wdate-time Warn about __TIME__, __DATE__ and __TIMESTAMP__ usage. -Wdeclaration-after-statement Warn when a declaration is found after a statement. -Wdelete-incomplete Warn when deleting a pointer to incomplete type. -Wdelete-non-virtual-dtor Warn about deleting polymorphic objects with non-virtual destructors. -Wdeprecated Warn if a deprecated compiler feature, class, method, or field is used. -Wdeprecated-copy Mark implicitly-declared copy operations as deprecated if the class has a user-provided copy operation. -Wdeprecated-copy-dtor Mark implicitly-declared copy operations as deprecated if the class has a user-provided copy operation or destructor. -Wdeprecated-enum-enum-conversion Warn about deprecated arithmetic conversions on operands of enumeration types. -Wdeprecated-enum-float-conversion Warn about deprecated arithmetic conversions on operands where one is of enumeration type and the other is of a floating-point type. -Wdesignated-init Warn about positional initialization of structs requiring designated initializers. -Wdiscarded-array-qualifiers Warn if qualifiers on arrays which are pointer targets are discarded. -Wdiscarded-qualifiers Warn if type qualifiers on pointers are discarded. -Wdiv-by-zero Warn about compile-time integer division by zero. -Wdouble-promotion Warn about implicit conversions from "float" to "double". -Wduplicate-decl-specifier Warn when a declaration has duplicate const, volatile, restrict or _Atomic specifier. -Wduplicated-branches Warn about duplicated branches in if-else statements. -Wduplicated-cond Warn about duplicated conditions in an if-else-if chain. -Weffc++ Warn about violations of Effective C++ style rules. -Wempty-body Warn about an empty body in an if or else statement. -Wendif-labels Warn about stray tokens after #else and #endif. -Wenum-compare Warn about comparison of different enum types. -Wenum-conversion Warn about implicit conversion of enum types. -Wenum-int-mismatch Warn about enum/integer type mismatches. -Werror Treat all warnings as errors. -Werror-implicit-function-declaration This switch is deprecated; use -Werror=implicit-function-declaration instead. Same as -Werror=. -Wexceptions Warn when an exception handler is shadowed by another handler. -Wexpansion-to-defined Warn if "defined" is used outside #if. -Wextra Print extra (possibly unwanted) warnings. -Wextra-semi Warn about semicolon after in-class function definition. -Wfloat-conversion Warn for implicit type conversions that cause loss of floating point precision. -Wfloat-equal Warn if testing floating point numbers for equality. -Wformat Warn about printf/scanf/strftime/strfmon format string anomalies. Same as -Wformat=. -Wformat-contains-nul Warn about format strings that contain NUL bytes. -Wformat-diag Warn about GCC format strings with strings unsuitable for diagnostics. -Wformat-extra-args Warn if passing too many arguments to a function for its format string. -Wformat-nonliteral Warn about format strings that are not literals. -Wformat-overflow<0,2> Warn about function calls with format strings that write past the end of the destination region. Same as -Wformat-overflow=1. Same as -Wformat-overflow=. -Wformat-overflow=<0,2> Warn about function calls with format strings that write past the end of the destination region. -Wformat-security Warn about possible security problems with format functions. -Wformat-signedness Warn about sign differences with format functions. -Wformat-truncation Warn about calls to snprintf and similar functions that truncate output. Same as -Wformat-truncation=1. Same as -Wformat-truncation=. -Wformat-truncation=<0,2> Warn about calls to snprintf and similar functions that truncate output. -Wformat-y2k Warn about strftime formats yielding 2-digit years. -Wformat-zero-length Warn about zero-length formats. -Wformat=<0,2> Warn about printf/scanf/strftime/strfmon format string anomalies. -Wframe-address Warn when __builtin_frame_address or __builtin_return_address is used unsafely. -Wif-not-aligned Warn when the field in a struct is not aligned. -Wignored-attributes Warn whenever attributes are ignored. -Wignored-qualifiers Warn whenever type qualifiers are ignored. -Wimplicit Warn about implicit declarations. -Wimplicit-function-declaration Warn about implicit function declarations. -Wimplicit-int Warn when a declaration does not specify a type. -Wimport This option lacks documentation. -Winaccessible-base Warn when a base is inaccessible in derived due to ambiguity. -Wincompatible-pointer-types Warn when there is a conversion between pointers that have incompatible types. -Winfinite-recursion Warn for infinitely recursive calls. -Winherited-variadic-ctor Warn about C++11 inheriting constructors when the base has a variadic constructor. -Winit-list-lifetime Warn about uses of std::initializer_list that can result in dangling pointers. -Winit-self Warn about variables which are initialized to themselves. -Wint-conversion Warn about incompatible integer to pointer and pointer to integer conversions. -Wint-in-bool-context Warn for suspicious integer expressions in boolean context. -Wint-to-pointer-cast Warn when there is a cast to a pointer from an integer of a different size. -Winterference-size Warn about nonsensical values of --param destructive-interference-size or constructive-interference-size. -Winvalid-imported-macros Warn about macros that have conflicting header units definitions. -Winvalid-offsetof Warn about invalid uses of the "offsetof" macro. -Winvalid-pch Warn about PCH files that are found but not used. -Winvalid-utf8 Warn about invalid UTF-8 characters. -Wjump-misses-init Warn when a jump misses a variable initialization. -Wliteral-suffix Warn when a string or character literal is followed by a ud-suffix which does not begin with an underscore. -Wlogical-not-parentheses Warn when logical not is used on the left hand side operand of a comparison. -Wlogical-op Warn when a logical operator is suspiciously always evaluating to true or false. -Wlong-long Do not warn about using "long long" when -pedantic. -Wmain Warn about suspicious declarations of "main". -Wmaybe-uninitialized Warn about maybe uninitialized automatic variables. -Wmemset-elt-size Warn about suspicious calls to memset where the third argument contains the number of elements not multiplied by the element size. -Wmemset-transposed-args Warn about suspicious calls to memset where the third argument is constant literal zero and the second is not. -Wmisleading-indentation Warn when the indentation of the code does not reflect the block structure. -Wmismatched-dealloc Warn for deallocation calls with arguments returned from mismatched allocation functions. -Wmismatched-new-delete Warn for mismatches between calls to operator new or delete and the corresponding call to the allocation or deallocation function. -Wmismatched-tags Warn when a class is redeclared or referenced using a mismatched class-key. -Wmissing-attributes Warn about declarations of entities that may be missing attributes that related entities have been declared with. -Wmissing-braces Warn about possibly missing braces around initializers. -Wmissing-declarations Warn about global functions without previous declarations. -Wmissing-field-initializers Warn about missing fields in struct initializers. -Wmissing-format-attribute Same as -Wsuggest-attribute=format. -Wmissing-include-dirs Warn about user-specified include directories that do not exist. -Wmissing-parameter-type Warn about function parameters declared without a type specifier in K&R-style functions. -Wmissing-prototypes Warn about global functions without prototypes. -Wmissing-requires Warn about likely missing requires keyword. -Wmissing-template-keyword Warn when the template keyword is missing after a member access token in a dependent member access expression if that member is a template. -Wmudflap This option lacks documentation. -Wmultichar Warn about use of multi-character character constants. -Wmultiple-inheritance Warn on direct multiple inheritance. -Wmultistatement-macros Warn about unsafe macros expanding to multiple statements used as a body of a clause such as if, else, while, switch, or for. -Wnamespaces Warn on namespace definition. -Wnarrowing Warn about narrowing conversions within { } that are ill-formed in C++11. -Wnested-externs Warn about "extern" declarations not at file scope. -Wno-alloc-size-larger-than Disable Walloc-size-larger-than= warning. Equivalent to Walloc-size-larger-than= or larger. Same as -Walloc-size-larger-than=. -Wno-alloca-larger-than Disable Walloca-larger-than= warning. Equivalent to Walloca-larger-than= or larger. Same as -Walloca-larger-than=. -Wno-vla-larger-than Disable Wvla-larger-than= warning. Equivalent to Wvla-larger-than= or larger. Same as -Wvla- larger-than=. -Wnoexcept Warn when a noexcept expression evaluates to false even though the expression can't actually throw. -Wnoexcept-type Warn if C++17 noexcept function type will change the mangled name of a symbol. -Wnon-template-friend Warn when non-templatized friend functions are declared within a template. -Wnon-virtual-dtor Warn about non-virtual destructors. -Wnonnull Warn about NULL being passed to argument slots marked as requiring non-NULL. -Wnonnull-compare Warn if comparing pointer parameter with nonnull attribute with NULL. -Wnormalized Same as -Wnormalized=nfc (or, in negated form, -Wnormalized=none). -Wnormalized=[none|id|nfc|nfkc] Warn about non-normalized Unicode strings. -Wobjc-root-class Warn if a class interface has no superclass. Root classes may use an attribute to suppress this warning. -Wold-style-cast Warn if a C-style cast is used in a program. -Wold-style-declaration Warn for obsolescent usage in a declaration. -Wold-style-definition Warn if an old-style parameter definition is used. -Wopenacc-parallelism Warn about potentially suboptimal choices related to OpenACC parallelism. -Wopenmp-simd Warn if a simd directive is overridden by the vectorizer cost model. -Woverlength-strings Warn if a string is longer than the maximum portable length specified by the standard. -Woverloaded-virtual Warn about overloaded virtual function names. Same as -Woverloaded-virtual=. -Woverloaded-virtual=<0,2> Warn about overloaded virtual function names. -Woverride-init Warn about overriding initializers without side effects. -Woverride-init-side-effects Warn about overriding initializers with side effects. -Wpacked-bitfield-compat Warn about packed bit-fields whose offset changed in GCC 4.4. -Wpacked-not-aligned Warn when fields in a struct with the packed attribute are misaligned. -Wparentheses Warn about possibly missing parentheses. -Wpedantic Issue warnings needed for strict compliance to the standard. -Wpessimizing-move Warn about calling std::move on a local object in a return statement preventing copy elision. -Wpmf-conversions Warn when converting the type of pointers to member functions. -Wpointer-arith Warn about function pointer arithmetic. -Wpointer-compare Warn when a pointer is compared with a zero character constant. -Wpointer-sign Warn when a pointer differs in signedness in an assignment. -Wpointer-to-int-cast Warn when a pointer is cast to an integer of a different size. -Wpragmas Warn about misuses of pragmas. -Wprio-ctor-dtor Warn if constructor or destructors with priorities from 0 to 100 are used. -Wproperty-assign-default Warn if a property for an Objective-C object has no assign semantics specified. -Wprotocol Warn if inherited methods are unimplemented. -Wpsabi This option lacks documentation. -Wrange-loop-construct Warn when a range-based for-loop is creating unnecessary copies. -Wredundant-decls Warn about multiple declarations of the same object. -Wredundant-move Warn about redundant calls to std::move. -Wredundant-tags Warn when a class or enumerated type is referenced using a redundant class-key. -Wregister Warn about uses of register storage specifier. -Wreorder Warn when the compiler reorders code. -Wrestrict Warn when an argument passed to a restrict-qualified parameter aliases with another argument. -Wreturn-type Warn whenever a function's return type defaults to "int" (C), or about inconsistent return types (C++). -Wscalar-storage-order Warn on suspicious constructs involving reverse scalar storage order. -Wselector Warn if a selector has multiple methods. -Wself-move Warn when a value is moved to itself with std::move. -Wsequence-point Warn about possible violations of sequence point rules. -Wshadow-ivar Warn if a local declaration hides an instance variable. -Wshift-count-negative Warn if shift count is negative. -Wshift-count-overflow Warn if shift count >= width of type. -Wshift-negative-value Warn if left shifting a negative value. -Wshift-overflow Warn if left shift of a signed value overflows. Same as -Wshift-overflow=. -Wshift-overflow=<0,2> Warn if left shift of a signed value overflows. -Wsign-compare Warn about signed-unsigned comparisons. -Wsign-conversion Warn for implicit type conversions between signed and unsigned integers. -Wsign-promo Warn when overload promotes from unsigned to signed. -Wsized-deallocation Warn about missing sized deallocation functions. -Wsizeof-array-argument Warn when sizeof is applied on a parameter declared as an array. -Wsizeof-array-div Warn about divisions of two sizeof operators when the first one is applied to an array and the divisor does not equal the size of the array element. -Wsizeof-pointer-div Warn about suspicious divisions of two sizeof expressions that don't work correctly with pointers. -Wsizeof-pointer-memaccess Warn about suspicious length parameters to certain string functions if the argument uses sizeof. -Wstrict-aliasing=<0,3> Warn about code which might break strict aliasing rules. -Wstrict-null-sentinel Warn about uncasted NULL used as sentinel. -Wstrict-overflow=<0,5> Warn about optimizations that assume that signed overflow is undefined. -Wstrict-prototypes Warn about unprototyped function declarations. -Wstrict-selector-match Warn if type signatures of candidate methods do not match exactly. -Wstring-compare Warn about calls to strcmp and strncmp used in equality expressions that are necessarily true or false due to the length of one and size of the other argument. -Wstringop-overflow Warn about buffer overflow in string manipulation functions like memcpy and strcpy. Same as -Wstringop- overflow=. -Wstringop-overflow=<0,4> Under the control of Object Size type, warn about buffer overflow in string manipulation functions like memcpy and strcpy. -Wstringop-overread Warn about reading past the end of a source array in string manipulation functions like memchr and memcpy. -Wstringop-truncation Warn about truncation in string manipulation functions like strncat and strncpy. -Wsubobject-linkage Warn if a class type has a base or a field whose type uses the anonymous namespace or depends on a type with no linkage. -Wsuggest-attribute=format Warn about functions which might be candidates for format attributes. -Wsuggest-override Suggest that the override keyword be used when the declaration of a virtual function overrides another. -Wswitch Warn about enumerated switches, with no default, missing a case. -Wswitch-bool Warn about switches with boolean controlling expression. -Wswitch-default Warn about enumerated switches missing a "default:" statement. -Wswitch-enum Warn about all enumerated switches missing a specific case. -Wswitch-outside-range Warn about switch values that are outside of the switch's type range. -Wsync-nand Warn when __sync_fetch_and_nand and __sync_nand_and_fetch built-in functions are used. -Wsynth Deprecated. This switch has no effect. -Wsystem-headers Do not suppress warnings from system headers. -Wtautological-compare Warn if a comparison always evaluates to true or false. -Wtemplates Warn on primary template declaration. -Wterminate Warn if a throw expression will always result in a call to terminate(). -Wtraditional Warn about features not present in traditional C. -Wtraditional-conversion Warn of prototypes causing type conversions different from what would happen in the absence of prototype. -Wtrigraphs Warn if trigraphs are encountered that might affect the meaning of the program. -Wundeclared-selector Warn about @selector()s without previously declared methods. -Wundef Warn if an undefined macro is used in an #if directive. -Wunicode Warn about invalid forms of delimited or named escape sequences. -Wuninitialized Warn about uninitialized automatic variables. -Wunknown-pragmas Warn about unrecognized pragmas. -Wunsuffixed-float-constants Warn about unsuffixed float constants. -Wunused Enable all -Wunused- warnings. -Wunused-const-variable Warn when a const variable is unused. Same as -Wunused-const-variable=. -Wunused-const-variable=<0,2> Warn when a const variable is unused. -Wunused-local-typedefs Warn when typedefs locally defined in a function are not used. -Wunused-macros Warn about macros defined in the main file that are not used. -Wunused-result Warn if a caller of a function, marked with attribute warn_unused_result, does not use its return value. -Wunused-variable Warn when a variable is unused. -Wuseless-cast Warn about useless casts. -Wvarargs Warn about questionable usage of the macros used to retrieve variable arguments. -Wvariadic-macros Warn about using variadic macros. -Wvexing-parse Warn about the most vexing parse syntactic ambiguity. -Wvirtual-inheritance Warn on direct virtual inheritance. -Wvirtual-move-assign Warn if a virtual base has a non-trivial move assignment operator. -Wvla Warn if a variable length array is used. -Wvla-larger-than= Warn on unbounded uses of variable-length arrays, and on bounded uses of variable-length arrays whose bound can be larger than bytes. -Wvla-parameter Warn about mismatched declarations of VLA parameters. -Wvolatile Warn about deprecated uses of volatile qualifier. -Wvolatile-register-var Warn when a register variable is declared volatile. -Wwrite-strings In C++, nonzero means warn about deprecated conversion from string literals to 'char *'. In C, similar warning, except that the conversion is of course not deprecated by the ISO C standard. -Wxor-used-as-pow Warn about xor operators where it appears the user meant exponentiation. -Wzero-as-null-pointer-constant Warn when a literal '0' is used as null pointer. -Wzero-length-bounds Warn about accesses to interior zero-length array members. -ansi A synonym for -std=c89 (for C) or -std=c++98 (for C++). -d Enable dumps from specific passes of the compiler. -fRTS= Select the runtime. -fabi-compat-version= The version of the C++ ABI used for -Wabi warnings and link compatibility aliases. -faccess-control Enforce class member access control semantics. -fada-spec-parent=unit Dump Ada specs as child units of given parent. -faligned-new Support C++17 allocation of over-aligned types. Same as -faligned-new=. -faligned-new= Use C++17 over-aligned type allocation for alignments greater than N. -fall-virtual This option lacks documentation. -fallow-parameterless-variadic-functions Does nothing. Preserved for backward compatibility. -falt-external-templates No longer supported. -fasm Recognize the "asm" keyword. -fbuilding-libgcc This option lacks documentation. -fbuiltin Recognize built-in functions. -fbuiltin- This option lacks documentation. -fcanonical-system-headers Where shorter, use canonicalized paths to systems headers. -fchar8_t Enable the char8_t fundamental type and use it as the type for UTF-8 string and character literals. -fcheck-pointer-bounds Removed in GCC 9. This switch has no effect. -fchkp-check-incomplete-type Removed in GCC 9. This switch has no effect. -fchkp-check-read Removed in GCC 9. This switch has no effect. -fchkp-check-write Removed in GCC 9. This switch has no effect. -fchkp-first-field-has-own-bounds Removed in GCC 9. This switch has no effect. -fchkp-flexible-struct-trailing-arrays Removed in GCC 9. This switch has no effect. -fchkp-instrument-calls Removed in GCC 9. This switch has no effect. -fchkp-instrument-marked-only Removed in GCC 9. This switch has no effect. -fchkp-narrow-bounds Removed in GCC 9. This switch has no effect. -fchkp-narrow-to-innermost-array Removed in GCC 9. This switch has no effect. -fchkp-optimize This option lacks documentation. -fchkp-store-bounds Removed in GCC 9. This switch has no effect. -fchkp-treat-zero-dynamic-size-as-infinite Removed in GCC 9. This switch has no effect. -fchkp-use-fast-string-functions Removed in GCC 9. This switch has no effect. -fchkp-use-nochk-string-functions Removed in GCC 9. This switch has no effect. -fchkp-use-static-bounds Removed in GCC 9. This switch has no effect. -fchkp-use-static-const-bounds Removed in GCC 9. This switch has no effect. -fchkp-use-wrappers Removed in GCC 9. This switch has no effect. -fchkp-zero-input-bounds-for-main Removed in GCC 9. This switch has no effect. -fcilkplus Removed in GCC 8. This switch has no effect. -fconcepts Enable support for C++ concepts. -fconcepts-diagnostics-depth= Specify maximum error replay depth during recursive diagnosis of a constraint satisfaction failure. -fconcepts-ts Enable certain features present in the Concepts TS. -fcond-mismatch Allow the arguments of the '?' operator to have different types. -fconserve-space Does nothing. Preserved for backward compatibility. -fconst-string-class= Use class for constant strings. -fconstexpr-cache-depth= Specify maximum constexpr recursion cache depth. -fconstexpr-depth= Specify maximum constexpr recursion depth. -fconstexpr-fp-except Allow IEC559 floating point exceptions in constant expressions. -fconstexpr-loop-limit= Specify maximum constexpr loop iteration count. -fconstexpr-ops-limit= Specify maximum number of constexpr operations during a single constexpr evaluation. -fcoroutines Enable C++ coroutines (experimental). -fdebug-cpp Emit debug annotations during preprocessing. -fdeclone-ctor-dtor Factor complex constructors and destructors to favor space over speed. -fdeduce-init-list Does nothing. Preserved for backward compatibility. -fdefault-inline Does nothing. Preserved for backward compatibility. -fdiagnostics-show-template-tree Print hierarchical comparisons when template types are mismatched. -fdirectives-only Preprocess directives only. -fdollars-in-identifiers Permit '$' as an identifier character. -fdump-ada-spec Write all declarations as Ada code transitively. -fdump-ada-spec-slim Write all declarations as Ada code for the given file only. -felide-constructors This option lacks documentation. -felide-type Do not elide common elements in template comparisons. -femit-struct-debug-baseonly Aggressive reduced debug info for structs. -femit-struct-debug-detailed= Detailed reduced debug info for structs. -femit-struct-debug-reduced Conservative reduced debug info for structs. -fenforce-eh-specs Generate code to check exception specifications. -fenum-int-equiv This option lacks documentation. -fexec-charset= Convert all strings and character constants to character set . -fext-numeric-literals Interpret imaginary, fixed-point, or other gnu number suffix as the corresponding number literal rather than a user-defined number literal. -fextended-identifiers Permit universal character names (\u and \U) in identifiers. -fextern-tls-init Support dynamic initialization of thread-local variables in a different translation unit. -fexternal-templates This option lacks documentation. -ffold-simple-inlines Fold calls to simple inline functions. -ffor-scope This option lacks documentation. -ffreestanding Do not assume that standard C libraries and "main" exist. -ffriend-injection This option lacks documentation. -fgnu-keywords Recognize GNU-defined keywords. -fgnu-runtime Generate code for GNU runtime environment. -fgnu89-inline Use traditional GNU semantics for inline functions. -fguiding-decls This option lacks documentation. -fhandle-exceptions Same as -fexceptions. Uses of this option are diagnosed. -fhonor-std This option lacks documentation. -fhosted Assume normal C execution environment. -fhuge-objects No longer supported. -fimplement-inlines Export functions even if they can be inlined. -fimplicit-constexpr Make inline functions constexpr by default. -fimplicit-inline-templates Emit implicit instantiations of inline templates. -fimplicit-templates Emit implicit instantiations of templates. -finput-charset= Specify the default character set for source files. -fvisibility=[private|protected|public|package] Set the default symbol visibility. -flabels-ok This option lacks documentation. -flax-vector-conversions Allow implicit conversions between vectors with differing numbers of subparts and/or differing element types. -flocal-ivars Allow access to instance variables as if they were local declarations within instance method implementations. -fmacro-prefix-map== Map one directory name to another in __FILE__, __BASE_FILE__, and __builtin_FILE(). -fmax-include-depth= fmax-include-depth= Set the maximum depth of the nested #include. -fmodule-header Enable C++ header module (experimental). -fmodule-header= This option lacks documentation. -fmodule-implicit-inline Member functions defined within their class are inline in module purview. -fmodule-lazy Enable lazy module importing. -fmodule-mapper= Mapper for module to CMI files. -fmodule-only Only emit Compiled Module Interface. -fmodule-version-ignore This option lacks documentation. -fmodules-ts Enable C++ modules-ts (experimental). -fms-extensions Don't warn about uses of Microsoft extensions. -fmudflap This option lacks documentation. -fmudflapir This option lacks documentation. -fmudflapth This option lacks documentation. -fname-mangling-version- This option lacks documentation. -fnew-abi This option lacks documentation. -fnew-inheriting-ctors Implement C++17 inheriting constructor semantics. -fnew-ttp-matching Implement resolution of DR 150 for matching of template template arguments. -fnext-runtime Generate code for NeXT (Apple Mac OS X) runtime environment. -fnil-receivers Assume that receivers of Objective-C messages may be nil. -fno-modules This option lacks documentation. -fnonansi-builtins This option lacks documentation. -fnonnull-objects This option lacks documentation. -fnothrow-opt Treat a throw() exception specification as noexcept to improve code size. -fobjc-abi-version= Specify which ABI to use for Objective-C family code and meta-data generation. -fobjc-direct-dispatch Allow fast jumps to the message dispatcher. -fobjc-exceptions Enable Objective-C exception and synchronization syntax. -fobjc-gc Enable garbage collection (GC) in Objective-C/Objective-C++ programs. -fobjc-nilcheck Enable inline checks for nil receivers with the NeXT runtime and ABI version 2. -fobjc-sjlj-exceptions Enable Objective-C setjmp exception handling runtime. -fobjc-std=objc1 Conform to the Objective-C 1.0 language as implemented in GCC 4.0. -fopenacc Enable OpenACC. -fopenacc-dim= Specify default OpenACC compute dimensions. -fopenmp Enable OpenMP (implies -frecursive in Fortran). -fopenmp-simd Enable OpenMP's SIMD directives. -foperator-names Recognize C++ keywords like "compl" and "xor". -foptional-diags Does nothing. Preserved for backward compatibility. -fpch-deps This option lacks documentation. -fpch-preprocess Look for and use PCH files even when preprocessing. -fpermissive Downgrade conformance errors to warnings. -fplan9-extensions Enable Plan 9 language extensions. -fpreprocessed Treat the input file as already preprocessed. -fpretty-templates Do not pretty-print template specializations as the template signature followed by the arguments. -fprintf-return-value Treat known sprintf return values as constants. -freplace-objc-classes Used in Fix-and-Continue mode to indicate that object files may be swapped in at runtime. -frepo Removed in GCC 10. This switch has no effect. -frtti Generate run time type descriptor information. -fshort-enums Use the narrowest integer type possible for enumeration types. -fshort-wchar Force the underlying type for "wchar_t" to be "unsigned short". -fsigned-bitfields When "signed" or "unsigned" is not given make the bitfield signed. -fsigned-char Make "char" signed by default. -fsized-deallocation Enable C++14 sized deallocation support. -fsquangle This option lacks documentation. -fsso-struct=[big-endian|little-endian|native] Set the default scalar storage order. -fstats Display statistics accumulated during compilation. -fstrict-enums Assume that values of enumeration type are always within the minimum range of that type. -fstrict-flex-arrays Same as -fstrict-flex-arrays=3 (or, in negated form, -fstrict-flex-arrays=0). -fstrict-flex-arrays=<0,3> -fstrict-flex-arrays= Control when to treat the trailing array of a structure as a flexible array member for the purposes of accessing the elements of such an array. The default is treating all trailing arrays of structures as flexible array members. -fstrict-prototype This option lacks documentation. -fstrong-eval-order Follow the C++17 evaluation order requirements for assignment expressions, shift, member function calls, etc. Same as -fstrong-eval-order=. -fstrong-eval-order= Follow the C++17 evaluation order requirements for assignment expressions, shift, member function calls, etc. -ftemplate-backtrace-limit= Set the maximum number of template instantiation notes for a single warning or error. -ftemplate-depth- Same as -ftemplate-depth=. -ftemplate-depth= Specify maximum template instantiation depth. -fthis-is-variable This option lacks documentation. -fno-threadsafe-statics Do not generate thread-safe code for initializing local statics. -ftrack-macro-expansion This option lacks documentation. -ftrack-macro-expansion=<0|1|2> Track locations of tokens coming from macro expansion and display them in error messages. -funsigned-bitfields When "signed" or "unsigned" is not given make the bitfield unsigned. -funsigned-char Make "char" unsigned by default. -fuse-cxa-atexit Use __cxa_atexit to register destructors. -fuse-cxa-get-exception-ptr Use __cxa_get_exception_ptr in exception handling. -fvisibility-inlines-hidden Marks all inlined functions and methods as having hidden visibility. -fvisibility-ms-compat Changes visibility to match Microsoft Visual Studio by default. -fvtable-gc No longer supported. -fvtable-thunks No longer supported. -fweak Emit common-like symbols as weak symbols. -fwide-exec-charset= Convert all wide strings and character constants to character set . -fworking-directory Generate a #line directive pointing at the current working directory. -fxref No longer supported. -fzero-link Generate lazy class lookup (via objc_getClass()) for use in Zero-Link mode. -gant Catch typos. -gen-decls Dump declarations to a .decl file. -gnat Specify options to GNAT. -gnatO Set name of output ALI file (internal switch). -idirafter Add to the end of the system include path. -imacros Accept definition of macros in . -imultilib Set to be the multilib include subdirectory. -include Include the contents of before other files. -iprefix Specify as a prefix for next two options. -iquote Add to the end of the quote include path. -isysroot Set to be the system root directory. -isystem Add to the start of the system include path. -iwithprefix Add to the end of the system include path. -iwithprefixbefore Add to the end of the main include path. -nostdinc Do not search standard system include directories (those specified with -isystem will still be used). -nostdinc++ Do not search standard system include directories for C++. -nostdlib Do not look for object files in standard path. -o Place output into . -pedantic Same as -Wpedantic. -print-objc-runtime-info Generate C header of platform-specific features. -remap Remap file names when including files. -std=c++03 Conform to the ISO 1998 C++ standard revised by the 2003 technical corrigendum. Same as -std=c++98. -std=c++0x Deprecated in favor of -std=c++11. Same as -std=c++11. -std=c++11 Conform to the ISO 2011 C++ standard. -std=c++14 Conform to the ISO 2014 C++ standard. -std=c++17 Conform to the ISO 2017 C++ standard. -std=c++1y Deprecated in favor of -std=c++14. Same as -std=c++14. -std=c++1z Deprecated in favor of -std=c++17. Same as -std=c++17. -std=c++20 Conform to the ISO 2020 C++ standard (experimental and incomplete support). -std=c++23 Conform to the ISO 2023 C++ draft standard (experimental and incomplete support). -std=c++2a Conform to the ISO 2020 C++ standard (experimental and incomplete support). Same as -std=c++20. -std=c++2b Conform to the ISO 2023 C++ draft standard (experimental and incomplete support). Same as -std=c++23. -std=c++98 Conform to the ISO 1998 C++ standard revised by the 2003 technical corrigendum. -std=c11 Conform to the ISO 2011 C standard. -std=c17 Conform to the ISO 2017 C standard (published in 2018). -std=c18 Conform to the ISO 2017 C standard (published in 2018). Same as -std=c17. -std=c1x Deprecated in favor of -std=c11. Same as -std=c11. -std=c2x Conform to the ISO 202X C standard draft (experimental and incomplete support). -std=c89 Conform to the ISO 1990 C standard. Same as -std=c90. -std=c90 Conform to the ISO 1990 C standard. -std=c99 Conform to the ISO 1999 C standard. -std=c9x Deprecated in favor of -std=c99. Same as -std=c99. -std=gnu++03 Conform to the ISO 1998 C++ standard revised by the 2003 technical corrigendum with GNU extensions. Same as -std=gnu++98. -std=gnu++0x Deprecated in favor of -std=gnu++11. Same as -std=gnu++11. -std=gnu++11 Conform to the ISO 2011 C++ standard with GNU extensions. -std=gnu++14 Conform to the ISO 2014 C++ standard with GNU extensions. -std=gnu++17 Conform to the ISO 2017 C++ standard with GNU extensions. -std=gnu++1y Deprecated in favor of -std=gnu++14. Same as -std=gnu++14. -std=gnu++1z Deprecated in favor of -std=gnu++17. Same as -std=gnu++17. -std=gnu++20 Conform to the ISO 2020 C++ standard with GNU extensions (experimental and incomplete support). -std=gnu++23 Conform to the ISO 2023 C++ draft standard with GNU extensions (experimental and incomplete support). -std=gnu++2a Conform to the ISO 2020 C++ standard with GNU extensions (experimental and incomplete support). Same as -std=gnu++20. -std=gnu++2b Conform to the ISO 2023 C++ draft standard with GNU extensions (experimental and incomplete support). Same as -std=gnu++23. -std=gnu++98 Conform to the ISO 1998 C++ standard revised by the 2003 technical corrigendum with GNU extensions. -std=gnu11 Conform to the ISO 2011 C standard with GNU extensions. -std=gnu17 Conform to the ISO 2017 C standard (published in 2018) with GNU extensions. -std=gnu18 Conform to the ISO 2017 C standard (published in 2018) with GNU extensions. Same as -std=gnu17. -std=gnu1x Deprecated in favor of -std=gnu11. Same as -std=gnu11. -std=gnu2x Conform to the ISO 202X C standard draft with GNU extensions (experimental and incomplete support). -std=gnu89 Conform to the ISO 1990 C standard with GNU extensions. Same as -std=gnu90. -std=gnu90 Conform to the ISO 1990 C standard with GNU extensions. -std=gnu99 Conform to the ISO 1999 C standard with GNU extensions. -std=gnu9x Deprecated in favor of -std=gnu99. Same as -std=gnu99. -std=iso9899:1990 Conform to the ISO 1990 C standard. Same as -std=c90. -std=iso9899:199409 Conform to the ISO 1990 C standard as amended in 1994. -std=iso9899:1999 Conform to the ISO 1999 C standard. Same as -std=c99. -std=iso9899:199x Deprecated in favor of -std=iso9899:1999. Same as -std=c99. -std=iso9899:2011 Conform to the ISO 2011 C standard. Same as -std=c11. -std=iso9899:2017 Conform to the ISO 2017 C standard (published in 2018). Same as -std=c17. -std=iso9899:2018 Conform to the ISO 2017 C standard (published in 2018). Same as -std=c17. -traditional-cpp Enable traditional preprocessing. -trigraphs Support ISO C trigraphs. -undef Do not predefine system-specific and GCC-specific macros. -v Enable verbose output. -w Suppress warnings. CONTROL PARAMETERS The following options control parameters: --param=align-loop-iterations= Loops iterating at least selected number of iterations will get loop alignment. --param=align-threshold=<1,65536> Select fraction of the maximal frequency of executions of basic block in function given basic block get alignment. --param=analyzer-bb-explosion-factor= The maximum number of 'after supernode' exploded nodes within the analyzer per supernode, before terminating analysis. --param=analyzer-max-constraints= The maximum number of constraints per state. --param=analyzer-max-enodes-for-full-dump= The maximum depth of exploded nodes that should appear in a dot dump before switching to a less verbose format. --param=analyzer-max-enodes-per-program-point= The maximum number of exploded nodes per program point within the analyzer, before terminating analysis of that point. --param=analyzer-max-infeasible-edges= The maximum number of infeasible edges to reject before declaring a diagnostic as infeasible. --param=analyzer-max-recursion-depth= The maximum number of times a callsite can appear in a call stack within the analyzer, before terminating analysis of a call that would recurse deeper. --param=analyzer-max-svalue-depth= The maximum depth of a symbolic value, before approximating the value as unknown. --param=analyzer-min-snodes-for-call-summary= The minimum number of supernodes within a function for the analyzer to consider summarizing its effects at call sites. --param=asan-globals=<0,1> Enable asan globals protection. --param=asan-instrument-allocas=<0,1> Enable asan allocas/VLAs protection. --param=asan-instrument-reads=<0,1> Enable asan load operations protection. --param=asan-instrument-writes=<0,1> Enable asan store operations protection. --param=asan-instrumentation-with-call-threshold= Use callbacks instead of inline code if number of accesses in function becomes greater or equal to this number. --param=asan-memintrin=<0,1> Enable asan builtin functions protection. --param=asan-stack=<0,1> Enable asan stack protection. --param=asan-use-after-return=<0,1> Enable asan detection of use-after-return bugs. --param=avg-loop-niter=<1,65536> Average number of iterations of a loop. --param=avoid-fma-max-bits=<0,512> Maximum number of bits for which we avoid creating FMAs. --param=builtin-expect-probability=<0,100> Set the estimated probability in percentage for builtin expect. The default value is 90% probability. --param=builtin-string-cmp-inline-length=<0,100> The maximum length of a constant string for a builtin string cmp call eligible for inlining. The default value is 3. --param=case-values-threshold= The smallest number of different values for which it is best to use a jump-table instead of a tree of conditional branches, if 0, use the default for the machine. --param=comdat-sharing-probability= Probability that COMDAT function will be shared with different compilation unit. --param=constructive-interference-size= The maximum recommended size of contiguous memory occupied by two objects accessed with temporal locality by concurrent threads. Typically the L1 cache line size, but can be smaller to accommodate a variety of target processors with different cache line sizes. --param=cxx-max-namespaces-for-diagnostic-help= Maximum number of namespaces to search for alternatives when name lookup fails. --param=destructive-interference-size= The minimum recommended offset between two concurrently-accessed objects to avoid additional performance degradation due to contention introduced by the implementation. Typically the L1 cache line size, but can be larger to accommodate a variety of target processors with different cache line sizes. C++17 code might use this value in structure layout, but is strongly discouraged from doing so in public ABIs. --param=dse-max-alias-queries-per-store= Maximum number of queries into the alias oracle per store. --param=dse-max-object-size= Maximum size (in bytes) of objects tracked bytewise by dead store elimination. --param=early-inlining-insns= Maximal estimated growth of function body caused by early inlining of single call. --param=evrp-sparse-threshold= Maximum number of basic blocks before EVRP uses a sparse cache. --param=evrp-switch-limit= Maximum number of outgoing edges in a switch before EVRP will not process it. --param=fsm-scale-path-blocks=<1,10> Scale factor to apply to the number of blocks in a threading path when comparing to the number of (scaled) statements. --param=fsm-scale-path-stmts=<1,10> Scale factor to apply to the number of statements in a threading path when comparing to the number of (scaled) blocks. --param=gcse-after-reload-critical-fraction= The threshold ratio of critical edges execution count that permit performing redundancy elimination after reload. --param=gcse-after-reload-partial-fraction= The threshold ratio for performing partial redundancy elimination after reload. --param=gcse-cost-distance-ratio= Scaling factor in calculation of maximum distance an expression can be moved by GCSE optimizations. --param=gcse-unrestricted-cost= Cost at which GCSE optimizations will not constraint the distance an expression can travel. --param=ggc-min-expand= Minimum heap expansion to trigger garbage collection, as a percentage of the total size of the heap. --param=ggc-min-heapsize= Minimum heap size before we start collecting garbage, in kilobytes. --param=gimple-fe-computed-hot-bb-threshold= The number of executions of a basic block which is considered hot. The parameter is used only in GIMPLE FE. --param=graphite-allow-codegen-errors=<0,1> Whether codegen errors should be ICEs when -fchecking. --param=graphite-max-arrays-per-scop= Maximum number of arrays per SCoP. --param=graphite-max-nb-scop-params= Maximum number of parameters in a SCoP. --param=hash-table-verification-limit= The number of elements for which hash table verification is done for each searched element. --param=hot-bb-count-fraction= The denominator n of fraction 1/n of the maximal execution count of a basic block in the entire program that a basic block needs to at least have in order to be considered hot (used in non-LTO mode). --param=hot-bb-count-ws-permille=<0,1000> The number of most executed permilles of the profiled execution of the entire program to which the execution count of a basic block must be part of in order to be considered hot (used in LTO mode). --param=hot-bb-frequency-fraction= The denominator n of fraction 1/n of the execution frequency of the entry block of a function that a basic block of this function needs to at least have in order to be considered hot. --param=hwasan-instrument-allocas=<0,1> Enable hwasan instrumentation of allocas/VLAs. --param=hwasan-instrument-mem-intrinsics=<0,1> Enable hwasan instrumentation of builtin functions. --param=hwasan-instrument-reads=<0,1> Enable hwasan instrumentation of load operations. --param=hwasan-instrument-stack=<0,1> Enable hwasan instrumentation of statically sized stack-allocated variables. --param=hwasan-instrument-writes=<0,1> Enable hwasan instrumentation of store operations. --param=hwasan-random-frame-tag=<0,1> Use random base tag for each frame, as opposed to base always zero. --param=inline-heuristics-hint-percent=<100,1000000> The scale (in percents) applied to inline-insns-single and auto limits when heuristics hints that inlining is very profitable. --param=inline-min-speedup=<0,100> The minimal estimated speedup allowing inliner to ignore inline-insns-single and inline-insns-auto. --param=inline-unit-growth= How much can given compilation unit grow because of the inlining (in percent). --param=integer-share-limit=<2,65536> The upper bound for sharing integer constants. --param=ipa-cp-eval-threshold= Threshold ipa-cp opportunity evaluation that is still considered beneficial to clone. --param=ipa-cp-large-unit-insns= The size of translation unit that IPA-CP pass considers large. --param=ipa-cp-loop-hint-bonus= Compile-time bonus IPA-CP assigns to candidates which make loop bounds or strides known. --param=ipa-cp-max-recursive-depth= Maximum depth of recursive cloning for self-recursive function. --param=ipa-cp-min-recursive-probability= Recursive cloning only when the probability of call being executed exceeds the parameter. --param=ipa-cp-profile-count-base=<0,100> When using profile feedback, use the edge at this percentage position in frequncy histogram as the bases for IPA-CP heuristics. --param=ipa-cp-recursion-penalty=<0,100> Percentage penalty the recursive functions will receive when they are evaluated for cloning. --param=ipa-cp-recursive-freq-factor= When propagating IPA-CP effect estimates, multiply frequencies of recursive edges that bring back an unchanged value by this factor. --param=ipa-cp-single-call-penalty=<0,100> Percentage penalty functions containing a single call to another function will receive when they are evaluated for cloning. --param=ipa-cp-unit-growth= How much can given compilation unit grow because of the interprocedural constant propagation (in percent). --param=ipa-cp-value-list-size= Maximum size of a list of values associated with each parameter for interprocedural constant propagation. --param=ipa-jump-function-lookups= Maximum number of statements visited during jump function offset discovery. --param=ipa-max-aa-steps= Maximum number of statements that will be visited by IPA formal parameter analysis based on alias analysis in any given function. --param=ipa-max-agg-items= Maximum number of aggregate content items for a parameter in jump functions and lattices. --param=ipa-max-loop-predicates= Maximum number of different predicates used to track properties of loops in IPA analysis. --param=ipa-max-param-expr-ops= Maximum number of operations in a parameter expression that can be handled by IPA analysis. --param=ipa-max-switch-predicate-bounds= Maximal number of boundary endpoints of case ranges of switch statement used during IPA function summary generation. --param=ipa-sra-max-replacements=<0,16> Maximum pieces that IPA-SRA tracks per formal parameter, as a consequence, also the maximum number of replacements of a formal parameter. --param=ipa-sra-ptr-growth-factor= Maximum allowed growth of number and total size of new parameters that ipa-sra replaces a pointer to an aggregate with. --param=ira-consider-dup-in-all-alts=<0,1> Control ira to consider matching constraint (duplicated operand number) heavily in all available alternatives for preferred register class. If it is set as zero, it means ira only respects the matching constraint when it's in the only available alternative with an appropriate register class. Otherwise, it means ira will check all available alternatives for preferred register class even if it has found some choice with an appropriate register class and respect the found qualified matching constraint. --param=ira-loop-reserved-regs= The number of registers in each class kept unused by loop invariant motion. --param=ira-max-conflict-table-size= Max size of conflict table in MB. --param=ira-max-loops-num= Max loops number for regional RA. --param=iv-always-prune-cand-set-bound= If number of candidates in the set is smaller, we always try to remove unused ivs during its optimization. --param=iv-consider-all-candidates-bound= Bound on number of candidates below that all candidates are considered in iv optimizations. --param=iv-max-considered-uses= Bound on number of iv uses in loop optimized in iv optimizations. --param=jump-table-max-growth-ratio-for-size= The maximum code size growth ratio when expanding into a jump table (in percent). The parameter is used when optimizing for size. --param=jump-table-max-growth-ratio-for-speed= The maximum code size growth ratio when expanding into a jump table (in percent). The parameter is used when optimizing for speed. --param=l1-cache-line-size= The size of L1 cache line. --param=l1-cache-size= The size of L1 cache. --param=l2-cache-size= The size of L2 cache. --param=large-function-growth= Maximal growth due to inlining of large function (in percent). --param=large-function-insns= The size of function body to be considered large. --param=large-stack-frame-growth= Maximal stack frame growth due to inlining (in percent). --param=large-stack-frame= The size of stack frame to be considered large. --param=large-unit-insns= The size of translation unit to be considered large. --param=lim-expensive= The minimum cost of an expensive expression in the loop invariant motion. --param=logical-op-non-short-circuit=<0,1> True if a non-short-circuit operation is optimal. --param=loop-block-tile-size= Size of tiles for loop blocking. --param=loop-interchange-max-num-stmts= The maximum number of stmts in loop nest for loop interchange. --param=loop-interchange-stride-ratio= The minimum stride ratio for loop interchange to be profitable. --param=loop-invariant-max-bbs-in-loop= Max basic blocks number in loop for loop invariant motion. --param=loop-max-datarefs-for-datadeps= Maximum number of datarefs in loop for building loop data dependencies. --param=loop-versioning-max-inner-insns= The maximum number of instructions in an inner loop that is being considered for versioning. --param=loop-versioning-max-outer-insns= The maximum number of instructions in an outer loop that is being considered for versioning, on top of the instructions in inner loops. --param=lra-inheritance-ebb-probability-cutoff=<0,100> Minimal fall-through edge probability in percentage used to add BB to inheritance EBB in LRA. --param=lra-max-considered-reload-pseudos= The max number of reload pseudos which are considered during spilling a non-reload pseudo. --param=lto-max-partition= Maximal size of a partition for LTO (in estimated instructions). --param=lto-max-streaming-parallelism=<1,65536> maximal number of LTO partitions streamed in parallel. --param=lto-min-partition= Minimal size of a partition for LTO (in estimated instructions). --param=lto-partitions=<1,65536> Number of partitions the program should be split to. --param=max-average-unrolled-insns= The maximum number of instructions to consider to unroll in a loop on average. --param=max-combine-insns=<2,4> The maximum number of insns combine tries to combine. --param=max-completely-peel-loop-nest-depth= The maximum depth of a loop nest we completely peel. --param=max-completely-peel-times= The maximum number of peelings of a single loop that is peeled completely. --param=max-completely-peeled-insns= The maximum number of insns of a completely peeled loop. --param=max-crossjump-edges= The maximum number of incoming edges to consider for crossjumping. --param=max-cse-insns= The maximum instructions CSE process before flushing. --param=max-cse-path-length=<1,65536> The maximum length of path considered in cse. --param=max-cselib-memory-locations= The maximum memory locations recorded by cselib. --param=max-debug-marker-count= Max. count of debug markers to expand or inline. --param=max-delay-slot-insn-search= The maximum number of instructions to consider to fill a delay slot. --param=max-delay-slot-live-search= The maximum number of instructions to consider to find accurate live register information. --param=max-dse-active-local-stores= Maximum number of active local stores in RTL dead store elimination. --param=max-early-inliner-iterations= The maximum number of nested indirect inlining performed by early inliner. --param=max-fields-for-field-sensitive= Maximum number of fields in a structure before pointer analysis treats the structure as a single variable. --param=max-find-base-term-values= Maximum number of VALUEs handled during a single find_base_term call. --param=max-fsm-thread-path-insns=<1,999999> Maximum number of instructions to copy when duplicating blocks on a finite state automaton jump thread path. --param=max-gcse-insertion-ratio= The maximum ratio of insertions to deletions of expressions in GCSE. --param=max-gcse-memory= The maximum amount of memory to be allocated by GCSE, in kilobytes. --param=max-goto-duplication-insns= The maximum number of insns to duplicate when unfactoring computed gotos. --param=max-grow-copy-bb-insns= The maximum expansion factor when copying basic blocks. --param=max-hoist-depth= Maximum depth of search in the dominator tree for expressions to hoist. --param=max-inline-functions-called-once-insns= Maximum combined size of caller and callee which is inlined if callee is called once. --param=max-inline-functions-called-once-loop-depth= Maximum loop depth of a call which is considered for inlining functions called once. --param=max-inline-insns-auto= The maximum number of instructions when automatically inlining. --param=max-inline-insns-recursive-auto= The maximum number of instructions non-inline function can grow to via recursive inlining. --param=max-inline-insns-recursive= The maximum number of instructions inline function can grow to via recursive inlining. --param=max-inline-insns-single= The maximum number of instructions in a single function eligible for inlining. --param=max-inline-insns-size= The maximum number of instructions when inlining for size. --param=max-inline-insns-small= The maximum number of instructions when automatically inlining small functions. --param=max-inline-recursive-depth-auto= The maximum depth of recursive inlining for non-inline functions. --param=max-inline-recursive-depth= The maximum depth of recursive inlining for inline functions. --param=max-isl-operations= Maximum number of isl operations, 0 means unlimited. --param=max-iterations-computation-cost= Bound on the cost of an expression to compute the number of iterations. --param=max-iterations-to-track= Bound on the number of iterations the brute force # of iterations analysis algorithm evaluates. --param=max-jump-thread-duplication-stmts= Maximum number of statements allowed in a block that needs to be duplicated when threading jumps. --param=max-jump-thread-paths=<1,65536> Search space limit for the backwards jump threader. --param=max-last-value-rtl= The maximum number of RTL nodes that can be recorded as combiner's last value. --param=max-loop-header-insns= The maximum number of insns in loop header duplicated by the copy loop headers pass. --param=max-modulo-backtrack-attempts= The maximum number of backtrack attempts the scheduler should make when modulo scheduling a loop. --param=max-partial-antic-length= Maximum length of partial antic set when performing tree pre optimization. --param=max-peel-branches= The maximum number of branches on the path through the peeled sequence. --param=max-peel-times= The maximum number of peelings of a single loop. --param=max-peeled-insns= The maximum number of insns of a peeled loop. --param=max-pending-list-length= The maximum length of scheduling's pending operations list. --param=max-pipeline-region-blocks= The maximum number of blocks in a region to be considered for interblock scheduling. --param=max-pipeline-region-insns= The maximum number of insns in a region to be considered for interblock scheduling. --param=max-pow-sqrt-depth=<1,32> Maximum depth of sqrt chains to use when synthesizing exponentiation by a real constant. --param=max-predicted-iterations=<0,65536> The maximum number of loop iterations we predict statically. --param=max-reload-search-insns= The maximum number of instructions to search backward when looking for equivalent reload. --param=max-rtl-if-conversion-insns=<0,99> Maximum number of insns in a basic block to consider for RTL if-conversion. --param=max-rtl-if-conversion-predictable-cost=<0,200> Maximum permissible cost for the sequence that would be generated by the RTL if-conversion pass for a branch that is considered predictable. --param=max-rtl-if-conversion-unpredictable-cost=<0,200> Maximum permissible cost for the sequence that would be generated by the RTL if-conversion pass for a branch that is considered unpredictable. --param=max-sched-extend-regions-iters= The maximum number of iterations through CFG to extend regions. --param=max-sched-insn-conflict-delay=<1,10> The maximum conflict delay for an insn to be considered for speculative motion. --param=max-sched-ready-insns=<1,65536> The maximum number of instructions ready to be issued to be considered by the scheduler during the first scheduling pass. --param=max-sched-region-blocks= The maximum number of blocks in a region to be considered for interblock scheduling. --param=max-sched-region-insns= The maximum number of insns in a region to be considered for interblock scheduling. --param=max-slsr-cand-scan=<1,999999> Maximum length of candidate scans for straight-line strength reduction. --param=max-speculative-devirt-maydefs= Maximum number of may-defs visited when devirtualizing speculatively. --param=max-ssa-name-query-depth=<1,10> Maximum recursion depth allowed when querying a property of an SSA name. --param=max-store-chains-to-track=<1,65536> Maximum number of store chains to track at the same time in the store merging pass. --param=max-stores-to-merge=<2,65536> Maximum number of constant stores to merge in the store merging pass. --param=max-stores-to-sink= Maximum number of conditional store pairs that can be sunk. --param=max-stores-to-track=<2,1048576> Maximum number of store chains to track at the same time in the store merging pass. --param=max-tail-merge-comparisons= Maximum amount of similar bbs to compare a bb with. --param=max-tail-merge-iterations= Maximum amount of iterations of the pass over a function. --param=max-tracked-strlens= Maximum number of strings for which strlen optimization pass will track string lengths. --param=max-tree-if-conversion-phi-args=<2,65536> Maximum number of arguments in a PHI supported by TREE if-conversion unless the loop is marked with simd pragma. --param=max-unroll-times= The maximum number of unrollings of a single loop. --param=max-unrolled-insns= The maximum number of instructions to consider to unroll in a loop. --param=max-unswitch-insns= The maximum number of insns of an unswitched loop. --param=max-variable-expansions-in-unroller= If -fvariable-expansion-in-unroller is used, the maximum number of times that an individual variable will be expanded during loop unrolling. --param=max-vartrack-expr-depth= Max. recursion depth for expanding var tracking expressions. --param=max-vartrack-reverse-op-size= Max. size of loc list for which reverse ops should be added. --param=max-vartrack-size= Max. size of var tracking hash tables. --param=max-vrp-switch-assertions= Maximum number of assertions to add along the default edge of a switch statement during VRP. --param=min-crossjump-insns=<1,65536> The minimum number of matching instructions to consider for crossjumping. --param=min-inline-recursive-probability= Inline recursively only when the probability of call being executed exceeds the parameter. --param=min-insn-to-prefetch-ratio= Min. ratio of insns to prefetches to enable prefetching for a loop with an unknown trip count. --param=min-loop-cond-split-prob=<0,100> The minimum threshold for probability of semi-invariant condition statement to trigger loop split. --param=min-nondebug-insn-uid= The minimum UID to be used for a nondebug insn. --param=min-pagesize= Minimum page size for warning purposes. --param=min-size-for-stack-sharing= The minimum size of variables taking part in stack slot sharing when not optimizing. --param=min-spec-prob= The minimum probability of reaching a source block for interblock speculative scheduling. --param=min-vect-loop-bound= If -ftree-vectorize is used, the minimal loop bound of a loop to be considered for vectorization. --param=modref-max-accesses= Maximum number of accesses stored in each modref reference. --param=modref-max-adjustments=<0,254> Maximum number of times a given range is adjusted during the dataflow. --param=modref-max-bases= Maximum number of bases stored in each modref tree. --param=modref-max-depth=<1,65536> Maximum depth of DFS walk used by modref escape analysis. --param=modref-max-escape-points= Maximum number of escape points tracked by modref per SSA-name. --param=modref-max-refs= Maximum number of references stored in each modref base. --param=modref-max-tests= Maximum number of tests performed by modref query. --param=openacc-kernels=[decompose|parloops] Specify mode of OpenACC 'kernels' constructs handling. --param=openacc-privatization=[quiet|noisy] Specify mode of OpenACC privatization diagnostics. --param=parloops-chunk-size= Chunk size of omp schedule for loops parallelized by parloops. --param=parloops-min-per-thread=<2,65536> Minimum number of iterations per thread of an innermost parallelized loop. --param=parloops-schedule=[static|dynamic|guided|auto|runtime] Schedule type of omp schedule for loops parallelized by parloops. --param=partial-inlining-entry-probability=<0,100> Maximum probability of the entry BB of split region (in percent relative to entry BB of the function) to make partial inlining happen. --param=predictable-branch-outcome=<0,50> Maximal estimated outcome of branch considered predictable. --param=prefetch-dynamic-strides=<0,1> Whether software prefetch hints should be issued for non-constant strides. --param=prefetch-latency= The number of insns executed before prefetch is completed. --param=prefetch-min-insn-to-mem-ratio= Min. ratio of insns to mem ops to enable prefetching in a loop. --param=prefetch-minimum-stride= The minimum constant stride beyond which we should use prefetch hints for. --param=profile-func-internal-id=<0,1> Use internal function id in profile lookup. --param=ranger-debug= --param=ranger-debug=[none|trace|gori|cache|tracegori|all] Specifies the output mode for debugging ranger. --param=ranger-logical-depth=<1,999> Maximum depth of logical expression evaluation ranger will look through when evaluating outgoing edge ranges. --param=relation-block-limit=<0,9999> Maximum number of relations the oracle will register in a basic block. --param=rpo-vn-max-loop-depth=<2,65536> Maximum depth of a loop nest to fully value-number optimistically. --param=sccvn-max-alias-queries-per-access= Maximum number of disambiguations to perform per memory access. --param=scev-max-expr-complexity= Bound on the complexity of the expressions in the scalar evolutions analyzer. --param=scev-max-expr-size= Bound on size of expressions used in the scalar evolutions analyzer. --param=sched-autopref-queue-depth= Hardware autoprefetcher scheduler model control flag. Number of lookahead cycles the model looks into, at '0' only enable instruction sorting heuristic. Disabled by default. --param=sched-mem-true-dep-cost= Minimal distance between possibly conflicting store and load. --param=sched-pressure-algorithm=<1,2> Which -fsched-pressure algorithm to apply. --param=sched-spec-prob-cutoff=<0,100> The minimal probability of speculation success (in percents), so that speculative insn will be scheduled. --param=sched-state-edge-prob-cutoff=<0,100> The minimum probability an edge must have for the scheduler to save its state across it. --param=selsched-insns-to-rename= Maximum number of instructions in the ready list that are considered eligible for renaming. --param=selsched-max-lookahead= The maximum size of the lookahead window of selective scheduling. --param=selsched-max-sched-times=<1,65536> Maximum number of times that an insn could be scheduled. --param=simultaneous-prefetches= The number of prefetches that can run at the same time. --param=sink-frequency-threshold=<0,100> Target block's relative execution frequency (as a percentage) required to sink a statement. --param=sms-dfa-history=<0,16> The number of cycles the swing modulo scheduler considers when checking conflicts using DFA. --param=sms-loop-average-count-threshold= A threshold on the average loop count considered by the swing modulo scheduler. --param=sms-max-ii-factor=<1,16> A factor for tuning the upper bound that swing modulo scheduler uses for scheduling a loop. --param=sms-min-sc=<1,2> The minimum value of stage count that swing modulo scheduler will generate. --param=sra-max-propagations= Maximum number of artificial accesses to enable forward propagation that Scalar Replacement of Aggregates will keep for one local variable. --param=sra-max-scalarization-size-Osize= Maximum size, in storage units, of an aggregate which should be considered for scalarization when compiling for size. --param=sra-max-scalarization-size-Ospeed= Maximum size, in storage units, of an aggregate which should be considered for scalarization when compiling for speed. --param=ssa-name-def-chain-limit= The maximum number of SSA_NAME assignments to follow in determining a value. --param=ssp-buffer-size=<1,65536> The lower bound for a buffer to be considered for stack smashing protection. --param=stack-clash-protection-guard-size=<12,30> Size of the stack guard expressed as a power of two in bytes. --param=stack-clash-protection-probe-interval=<10,16> Interval in which to probe the stack expressed as a power of two in bytes. --param=store-merging-allow-unaligned=<0,1> Allow the store merging pass to introduce unaligned stores if it is legal to do so. --param=store-merging-max-size=<1,65536> Maximum size of a single store merging region in bytes. --param=switch-conversion-max-branch-ratio=<1,65536> The maximum ratio between array size and switch branches for a switch conversion to take place. --param=threader-debug= --param=threader-debug=[none|all] Enables verbose dumping of the threader solver. --param=tm-max-aggregate-size= Size in bytes after which thread-local aggregates should be instrumented with the logging functions instead of save/restore pairs. --param=tracer-dynamic-coverage-feedback=<0,100> The percentage of function, weighted by execution frequency, that must be covered by trace formation. Used when profile feedback is available. --param=tracer-dynamic-coverage=<0,100> The percentage of function, weighted by execution frequency, that must be covered by trace formation. Used when profile feedback is not available. --param=tracer-max-code-growth= Maximal code growth caused by tail duplication (in percent). --param=tracer-min-branch-probability-feedback=<0,100> Stop forward growth if the probability of best edge is less than this threshold (in percent). Used when profile feedback is available. --param=tracer-min-branch-probability=<0,100> Stop forward growth if the probability of best edge is less than this threshold (in percent). Used when profile feedback is not available. --param=tracer-min-branch-ratio=<0,100> Stop reverse growth if the reverse probability of best edge is less than this threshold (in percent). --param=tree-reassoc-width= Set the maximum number of instructions executed in parallel in reassociated tree. If 0, use the target dependent heuristic. --param=tsan-distinguish-volatile=<0,1> Emit special instrumentation for accesses to volatiles. --param=tsan-instrument-func-entry-exit=<0,1> Emit instrumentation calls to __tsan_func_entry() and __tsan_func_exit(). --param=uninit-control-dep-attempts=<1,65536> Maximum number of nested calls to search for control dependencies during uninitialized variable analysis. --param=uninlined-function-insns=<0,1000000> Instruction accounted for function prologue, epilogue and other overhead. --param=uninlined-function-time=<0,1000000> Time accounted for function prologue, epilogue and other overhead. --param=uninlined-thunk-insns=<0,1000000> Instruction accounted for function thunk overhead. --param=uninlined-thunk-time=<0,1000000> Time accounted for function thunk overhead. --param=unlikely-bb-count-fraction= The denominator n of fraction 1/n of the number of profiled runs of the entire program below which the execution count of a basic block must be in order for the basic block to be considered unlikely. --param=unroll-jam-max-unroll= Maximum unroll factor for the unroll-and-jam transformation. --param=unroll-jam-min-percent=<0,100> Minimum percentage of memrefs that must go away for unroll-and-jam to be considered profitable. --param=use-after-scope-direct-emission-threshold= Use direct poisoning/unpoisoning instructions for variables smaller or equal to this number. --param=use-canonical-types=<0,1> Whether to use canonical types. --param=vect-epilogues-nomask=<0,1> Enable loop epilogue vectorization using smaller vector size. --param=vect-induction-float= Enable loop vectorization of floating point inductions. --param=vect-inner-loop-cost-factor=<1,10000> The maximum factor which the loop vectorizer applies to the cost of statements in an inner loop relative to the loop being vectorized. --param=vect-max-layout-candidates= Maximum number of possible vector layouts (such as permutations) to consider when optimizing to- be-vectorized code. --param=vect-max-peeling-for-alignment=<0,64> Maximum number of loop peels to enhance alignment of data references in a loop. --param=vect-max-version-for-alias-checks= Bound on number of runtime checks inserted by the vectorizer's loop versioning for alias check. --param=vect-max-version-for-alignment-checks= Bound on number of runtime checks inserted by the vectorizer's loop versioning for alignment check. --param=vect-partial-vector-usage=<0,2> Controls how loop vectorizer uses partial vectors. 0 means never, 1 means only for loops whose need to iterate can be removed, 2 means for all loops. The default value is 2. --param=vrp1-mode= --param=vrp1-mode=[vrp|ranger] Specifies the mode VRP1 should operate in. --param=vrp2-mode= --param=vrp2-mode=[vrp|ranger] Specifies the mode VRP2 should operate in. --param=x86-stlf-window-ninsns= Instructions number above which STFL stall penalty can be compensated. WARNINGS The following options control compiler warning messages: --extra-warnings Same as -Wextra. -W This switch is deprecated; use -Wextra instead. Same as -Wextra. -Waggregate-return Warn about returning structures, unions or arrays. -Waggressive-loop-optimizations Warn if a loop with constant number of iterations triggers undefined behavior. -Wanalyzer-allocation-size Warn about code paths in which a pointer to a buffer is assigned to an incompatible type. -Wanalyzer-double-fclose Warn about code paths in which a stdio FILE can be closed more than once. -Wanalyzer-double-free Warn about code paths in which a pointer can be freed more than once. -Wanalyzer-exposure-through-output-file Warn about code paths in which sensitive data is written to a file. -Wanalyzer-exposure-through-uninit-copy Warn about code paths in which sensitive data is copied across a security boundary. -Wanalyzer-fd-access-mode-mismatch Warn about code paths in which read on a write-only file descriptor is attempted, or vice versa. -Wanalyzer-fd-double-close Warn about code paths in which a file descriptor can be closed more than once. -Wanalyzer-fd-leak Warn about code paths in which a file descriptor is not closed. -Wanalyzer-fd-use-after-close Warn about code paths in which a read or write is performed on a closed file descriptor. -Wanalyzer-fd-use-without-check Warn about code paths in which a file descriptor is used without being checked for validity. -Wanalyzer-file-leak Warn about code paths in which a stdio FILE is not closed. -Wanalyzer-free-of-non-heap Warn about code paths in which a non-heap pointer is freed. -Wanalyzer-imprecise-fp-arithmetic Warn about code paths in which floating-point arithmetic is used in locations where precise computation is needed. -Wanalyzer-jump-through-null Warn about code paths in which a NULL function pointer is called. -Wanalyzer-malloc-leak Warn about code paths in which a heap-allocated pointer leaks. -Wanalyzer-mismatching-deallocation Warn about code paths in which the wrong deallocation function is called. -Wanalyzer-null-argument Warn about code paths in which NULL is passed to a must-not-be-NULL function argument. -Wanalyzer-null-dereference Warn about code paths in which a NULL pointer is dereferenced. -Wanalyzer-out-of-bounds Warn about code paths in which a write or read to a buffer is out-of-bounds. -Wanalyzer-possible-null-argument Warn about code paths in which a possibly-NULL value is passed to a must-not-be-NULL function argument. -Wanalyzer-possible-null-dereference Warn about code paths in which a possibly-NULL pointer is dereferenced. -Wanalyzer-putenv-of-auto-var Warn about code paths in which an on-stack buffer is passed to putenv. -Wanalyzer-shift-count-negative Warn about code paths in which a shift with negative count is attempted. -Wanalyzer-shift-count-overflow Warn about code paths in which a shift with count >= width of type is attempted. -Wanalyzer-stale-setjmp-buffer Warn about code paths in which a longjmp rewinds to a jmp_buf saved in a stack frame that has returned. -Wanalyzer-tainted-allocation-size Warn about code paths in which an unsanitized value is used as an allocation size. -Wanalyzer-tainted-array-index Warn about code paths in which an unsanitized value is used as an array index. -Wanalyzer-tainted-divisor Warn about code paths in which an unsanitized value is used as a divisor. -Wanalyzer-tainted-offset Warn about code paths in which an unsanitized value is used as a pointer offset. -Wanalyzer-tainted-size Warn about code paths in which an unsanitized value is used as a size. -Wanalyzer-too-complex Warn if the code is too complicated for the analyzer to fully explore. -Wanalyzer-unsafe-call-within-signal-handler Warn about code paths in which an async-signal-unsafe function is called from a signal handler. -Wanalyzer-use-after-free Warn about code paths in which a freed value is used. -Wanalyzer-use-of-pointer-in-stale-stack-frame Warn about code paths in which a pointer to a stale stack frame is used. -Wanalyzer-use-of-uninitialized-value Warn about code paths in which an uninitialized value is used. -Wanalyzer-va-arg-type-mismatch Warn about code paths in which va_arg uses the wrong type. -Wanalyzer-va-list-exhausted Warn about code paths in which va_arg is used too many times on a va_list. -Wanalyzer-va-list-leak Warn about code paths in which va_start or va_copy is used without a corresponding va_end. -Wanalyzer-va-list-use-after-va-end Warn about code paths in which a va_list is used after va_end. -Wanalyzer-write-to-const Warn about code paths which attempt to write to a const object. -Wanalyzer-write-to-string-literal Warn about code paths which attempt to write to a string literal. -Warray-bounds Warn if an array is accessed out of bounds. -Warray-bounds=<0,2> Warn if an array is accessed out of bounds. -Wattribute-alias Warn about type safety and similar errors and mismatches in declarations with alias attributes. Same as -Wattribute-alias=. -Wattribute-alias=<0,2> Warn about type safety and similar errors and mismatches in declarations with alias attributes. -Wattribute-warning Warn about uses of __attribute__((warning)) declarations. -Wattributes Warn about inappropriate attribute usage. -Wcannot-profile Warn when profiling instrumentation was requested, but could not be applied to a certain function. -Wcast-align Warn about pointer casts which increase alignment. -Wcast-align=strict Warn about pointer casts which increase alignment. -Wcoverage-invalid-line-number Warn in case a function ends earlier than it begins due to an invalid linenum macros. -Wcoverage-mismatch Warn in case profiles in -fprofile-use do not match. -Wdeprecated-declarations Warn about uses of __attribute__((deprecated)) declarations. -Wdisabled-optimization Warn when an optimization pass is disabled. -Wframe-larger-than= Warn if a function's stack frame requires in excess of . -Wfree-nonheap-object Warn when attempting to free a non-heap object. -Whsa Does nothing. Preserved for backward compatibility. -Wimplicit-fallthrough Same as -Wimplicit-fallthrough=3 (or, in negated form, -Wimplicit-fallthrough=0). -Wimplicit-fallthrough=<0,5> Warn when a switch case falls through. -Winline Warn when an inlined function cannot be inlined. -Winvalid-memory-model Warn when an atomic memory model parameter is known to be outside the valid range. -Wlarger-than- Same as -Wlarger-than=. -Wlarger-than= Warn if an object's size exceeds . -Wlto-type-mismatch During link time optimization warn about mismatched types of global declarations. -Wmissing-noreturn Same as -Wsuggest-attribute=noreturn. -Wmissing-profile Warn in case profiles in -fprofile-use do not exist. -Wno-frame-larger-than Disable -Wframe-larger-than= warning. Equivalent to -Wframe-larger-than= or larger. Same as -Wframe-larger-than=. -Wno-larger-than Disable -Wlarger-than= warning. Equivalent to -Wlarger-than= or larger. Same as -Wlarger- than=. -Wno-stack-usage Disable Wstack-usage= warning. Equivalent to Wstack-usage= or larger. Same as -Wstack-usage=. -Wnull-dereference Warn if dereferencing a NULL pointer may lead to erroneous or undefined behavior. -Wodr Warn about some C++ One Definition Rule violations during link time optimization. -Woverflow Warn about overflow in arithmetic expressions. -Wpacked Warn when the packed attribute has no effect on struct layout. -Wpadded Warn when padding is required to align structure members. -Wreturn-local-addr Warn about returning a pointer/reference to a local or temporary variable. -Wshadow Warn when one variable shadows another. Same as -Wshadow=global. -Wshadow-compatible-local Same as -Wshadow=compatible-local. -Wshadow-local Same as -Wshadow=local. -Wshadow=compatible-local Warn when one local variable shadows another local variable or parameter of compatible type. -Wshadow=global Warn when one variable shadows another (globally). Same as -Wshadow. -Wshadow=local Warn when one local variable shadows another local variable or parameter. -Wstack-protector Warn when not issuing stack smashing protection for some reason. -Wstack-usage= Warn if stack usage might exceed . -Wstrict-aliasing Warn about code which might break strict aliasing rules. -Wstrict-overflow Warn about optimizations that assume that signed overflow is undefined. -Wsuggest-attribute=cold Warn about functions which might be candidates for __attribute__((cold)). -Wsuggest-attribute=const Warn about functions which might be candidates for __attribute__((const)). -Wsuggest-attribute=malloc Warn about functions which might be candidates for __attribute__((malloc)). -Wsuggest-attribute=noreturn Warn about functions which might be candidates for __attribute__((noreturn)). -Wsuggest-attribute=pure Warn about functions which might be candidates for __attribute__((pure)). -Wsuggest-final-methods Warn about C++ virtual methods where adding final keyword would improve code quality. -Wsuggest-final-types Warn about C++ polymorphic types where adding final keyword would improve code quality. -Wswitch-unreachable Warn about statements between switch's controlling expression and the first case. -Wtrampolines Warn whenever a trampoline is generated. -Wtrivial-auto-var-init Warn about cases where -ftrivial-auto-var-init cannot initialize an auto variable. -Wtsan Warn about unsupported features in ThreadSanitizer. -Wtype-limits Warn if a comparison is always true or always false due to the limited range of the data type. -Wunreachable-code Does nothing. Preserved for backward compatibility. -Wunsafe-loop-optimizations Does nothing. Preserved for backward compatibility. -Wunused-but-set-parameter Warn when a function parameter is only set, otherwise unused. -Wunused-but-set-variable Warn when a variable is only set, otherwise unused. -Wunused-function Warn when a function is unused. -Wunused-label Warn when a label is unused. -Wunused-parameter Warn when a function parameter is unused. -Wunused-value Warn when an expression value is unused. -Wuse-after-free Warn for uses of pointers to deallocated storage. -Wuse-after-free=<0,3> Warn for uses of pointers to deallocated storage. -Wvector-operation-performance Warn when a vector operation is compiled outside the SIMD. OPTIMIZATIONS The following options control optimizations: -O Set optimization level to . -Ofast Optimize for speed disregarding exact standards compliance. -Og Optimize for debugging experience rather than speed or size. -Os Optimize for space rather than speed. -Oz Optimize for space aggressively rather than speed. -faggressive-loop-optimizations Aggressively optimize loops using language constraints. -falign-functions Align the start of functions. -falign-functions= This option lacks documentation. -falign-jumps Align labels which are only reached by jumping. -falign-jumps= This option lacks documentation. -falign-labels Align all labels. -falign-labels= This option lacks documentation. -falign-loops Align the start of loops. -falign-loops= This option lacks documentation. -fallocation-dce Tell DCE to remove unused C++ allocations. -fallow-store-data-races Allow the compiler to introduce new data races on stores. -fassociative-math Allow optimization for floating-point arithmetic which may change the result of the operation due to rounding. -fasynchronous-unwind-tables Generate unwind tables that are exact at each instruction boundary. -fauto-inc-dec Generate auto-inc/dec instructions. -fbit-tests Use bit tests for sufficiently large switch statements. -fbranch-count-reg Replace add, compare, branch with branch on count register. -fbranch-probabilities Use profiling information for branch probabilities. -fcaller-saves Save registers around function calls. -fcode-hoisting Enable code hoisting. -fcombine-stack-adjustments Looks for opportunities to reduce stack adjustments and stack references. -fcompare-elim Perform comparison elimination after register allocation has finished. -fconserve-stack Do not perform optimizations increasing noticeably stack usage. -fcprop-registers Perform a register copy-propagation optimization pass. -fcrossjumping Perform cross-jumping optimization. -fcse-follow-jumps When running CSE, follow jumps to their targets. -fcx-fortran-rules Complex multiplication and division follow Fortran rules. -fcx-limited-range Omit range reduction step when performing complex division. -fdce Use the RTL dead code elimination pass. -fdefer-pop Defer popping functions args from stack until later. -fdelayed-branch Attempt to fill delay slots of branch instructions. -fdelete-dead-exceptions Delete dead instructions that may throw exceptions. -fdelete-null-pointer-checks Delete useless null pointer checks. -fdevirtualize Try to convert virtual calls to direct ones. -fdevirtualize-speculatively Perform speculative devirtualization. -fdse Use the RTL dead store elimination pass. -fearly-inlining Perform early inlining. -fexceptions Enable exception handling. -fexcess-precision=[fast|standard|16] Specify handling of excess floating-point precision. -fexpensive-optimizations Perform a number of minor, expensive optimizations. -ffast-math This option lacks documentation. -ffinite-loops Assume that loops with an exit will terminate and not loop indefinitely. -ffinite-math-only Assume no NaNs or infinities are generated. -ffloat-store Don't allocate floats and doubles in extended-precision registers. -fforward-propagate Perform a forward propagation pass on RTL. -ffp-contract=[off|on|fast] Perform floating-point expression contraction. -ffp-int-builtin-inexact Allow built-in functions ceil, floor, round, trunc to raise "inexact" exceptions. -ffunction-cse Allow function addresses to be held in registers. -fgcse Perform global common subexpression elimination. -fgcse-after-reload Perform global common subexpression elimination after register allocation has finished. -fgcse-las Perform redundant load after store elimination in global common subexpression elimination. -fgcse-lm Perform enhanced load motion during global common subexpression elimination. -fgcse-sm Perform store motion after global common subexpression elimination. -fgraphite Enable in and out of Graphite representation. -fgraphite-identity Enable Graphite Identity transformation. -fguess-branch-probability Enable guessing of branch probabilities. -fharden-compares Harden conditionals not used in branches, checking reversed conditions. -fharden-conditional-branches Harden conditional branches by checking reversed conditions. -fhoist-adjacent-loads Enable hoisting adjacent loads to encourage generating conditional move instructions. -fif-conversion Perform conversion of conditional jumps to branchless equivalents. -fif-conversion2 Perform conversion of conditional jumps to conditional execution. -findirect-inlining Perform indirect inlining. -finline Enable inlining of function declared "inline", disabling disables all inlining. -finline-atomics Inline __atomic operations when a lock free instruction sequence is available. -finline-functions Integrate functions not declared "inline" into their callers when profitable. -finline-functions-called-once Integrate functions only required by their single caller. -finline-small-functions Integrate functions into their callers when code size is known not to grow. -fipa-bit-cp Perform interprocedural bitwise constant propagation. -fipa-cp Perform interprocedural constant propagation. -fipa-cp-clone Perform cloning to make Interprocedural constant propagation stronger. -fipa-icf Perform Identical Code Folding for functions and read-only variables. -fipa-icf-functions Perform Identical Code Folding for functions. -fipa-icf-variables Perform Identical Code Folding for variables. -fipa-modref Perform interprocedural modref analysis. -fipa-profile Perform interprocedural profile propagation. -fipa-pta Perform interprocedural points-to analysis. -fipa-pure-const Discover pure and const functions. -fipa-ra Use caller save register across calls if possible. -fipa-reference Discover read-only and non addressable static variables. -fipa-reference-addressable Discover read-only, write-only and non-addressable static variables. -fipa-sra Perform interprocedural reduction of aggregates. -fipa-stack-alignment Reduce stack alignment on call sites if possible. -fipa-strict-aliasing Assume strict aliasing rules apply across (uninlined) function boundaries. -fipa-vrp Perform IPA Value Range Propagation. -fira-algorithm=[CB|priority] Set the used IRA algorithm. -fira-hoist-pressure Use IRA based register pressure calculation in RTL hoist optimizations. -fira-loop-pressure Use IRA based register pressure calculation in RTL loop optimizations. -fira-region=[one|all|mixed] Set regions for IRA. -fira-share-save-slots Share slots for saving different hard registers. -fira-share-spill-slots Share stack slots for spilled pseudo-registers. -fisolate-erroneous-paths-attribute Detect paths that trigger erroneous or undefined behavior due to a null value being used in a way forbidden by a returns_nonnull or nonnull attribute. Isolate those paths from the main control flow and turn the statement with erroneous or undefined behavior into a trap. -fisolate-erroneous-paths-dereference Detect paths that trigger erroneous or undefined behavior due to dereferencing a null pointer. Isolate those paths from the main control flow and turn the statement with erroneous or undefined behavior into a trap. -fivopts Optimize induction variables on trees. -fjump-tables Use jump tables for sufficiently large switch statements. -fkeep-gc-roots-live This option lacks documentation. -flifetime-dse Tell DSE that the storage for a C++ object is dead when the constructor starts and when the destructor finishes. -flifetime-dse=<0,2> This option lacks documentation. -flimit-function-alignment This option lacks documentation. -flive-patching Same as -flive-patching=inline-clone. -flive-patching=[inline-only-static|inline-clone] Control IPA optimizations to provide a safe compilation for live-patching. At the same time, provides multiple-level control on the enabled IPA optimizations. -flive-range-shrinkage Relief of register pressure through live range shrinkage. -floop-interchange Enable loop interchange on trees. -floop-nest-optimize Enable the loop nest optimizer. -floop-parallelize-all Mark all loops as parallel. -floop-unroll-and-jam Perform unroll-and-jam on loops. -flra-remat Do CFG-sensitive rematerialization in LRA. -fmath-errno Set errno after built-in math functions. -fmodulo-sched Perform SMS based modulo scheduling before the first scheduling pass. -fmodulo-sched-allow-regmoves Perform SMS based modulo scheduling with register moves allowed. -fmove-loop-invariants Move loop invariant computations out of loops. -fmove-loop-stores Move stores out of loops. -fnon-call-exceptions Support synchronous non-call exceptions. -fomit-frame-pointer When possible do not generate stack frames. -fopt-info Enable all optimization info dumps on stderr. -foptimize-sibling-calls Optimize sibling and tail recursive calls. -foptimize-strlen Enable string length optimizations on trees. -fpack-struct Pack structure members together without holes. -fpack-struct= Set initial maximum structure member alignment. -fpartial-inlining Perform partial inlining. -fpatchable-function-entry= Insert NOP instructions at each function entry. -fpeel-loops Perform loop peeling. -fpeephole Enable machine specific peephole optimizations. -fpeephole2 Enable an RTL peephole pass before sched2. -fplt Use PLT for PIC calls (-fno-plt: load the address from GOT at call site). -fpredictive-commoning Run predictive commoning optimization. -fprefetch-loop-arrays Generate prefetch instructions, if available, for arrays in loops. -fprofile-partial-training Do not assume that functions never executed during the train run are cold. -fprofile-reorder-functions Enable function reordering that improves code placement. -freciprocal-math Same as -fassociative-math for expressions which include division. -free Turn on Redundant Extensions Elimination pass. -freg-struct-return Return small aggregates in registers. -frename-registers Perform a register renaming optimization pass. -freorder-blocks Reorder basic blocks to improve code placement. -freorder-blocks-algorithm=[simple|stc] Set the used basic block reordering algorithm. -freorder-blocks-and-partition Reorder basic blocks and partition into hot and cold sections. -freorder-functions Reorder functions to improve code placement. -frerun-cse-after-loop Add a common subexpression elimination pass after loop optimizations. -freschedule-modulo-scheduled-loops Enable/Disable the traditional scheduling in loops that already passed modulo scheduling. -frounding-math Disable optimizations that assume default FP rounding behavior. -fsave-optimization-record Write a SRCFILE.opt-record.json file detailing what optimizations were performed. -fsched-critical-path-heuristic Enable the critical path heuristic in the scheduler. -fsched-dep-count-heuristic Enable the dependent count heuristic in the scheduler. -fsched-group-heuristic Enable the group heuristic in the scheduler. -fsched-interblock Enable scheduling across basic blocks. -fsched-last-insn-heuristic Enable the last instruction heuristic in the scheduler. -fsched-pressure Enable register pressure sensitive insn scheduling. -fsched-rank-heuristic Enable the rank heuristic in the scheduler. -fsched-spec Allow speculative motion of non-loads. -fsched-spec-insn-heuristic Enable the speculative instruction heuristic in the scheduler. -fsched-spec-load Allow speculative motion of some loads. -fsched-spec-load-dangerous Allow speculative motion of more loads. -fsched-stalled-insns Allow premature scheduling of queued insns. -fsched-stalled-insns-dep Set dependence distance checking in premature scheduling of queued insns. -fsched-stalled-insns-dep= Set dependence distance checking in premature scheduling of queued insns. -fsched-stalled-insns= Set number of queued insns that can be prematurely scheduled. -fsched2-use-superblocks If scheduling post reload, do superblock scheduling. -fschedule-fusion Perform a target dependent instruction fusion optimization pass. -fschedule-insns Reschedule instructions before register allocation. -fschedule-insns2 Reschedule instructions after register allocation. -fsection-anchors Access data in the same section from shared anchor points. -fsel-sched-pipelining Perform software pipelining of inner loops during selective scheduling. -fsel-sched-pipelining-outer-loops Perform software pipelining of outer loops during selective scheduling. -fsel-sched-reschedule-pipelined Reschedule pipelined regions without pipelining. -fselective-scheduling Schedule instructions using selective scheduling algorithm. -fselective-scheduling2 Run selective scheduling after reload. -fsemantic-interposition Allow interposing function (or variables) by ones with different semantics (or initializer) respectively by dynamic linker. -fshrink-wrap Emit function prologues only before parts of the function that need it, rather than at the top of the function. -fshrink-wrap-separate Shrink-wrap parts of the prologue and epilogue separately. -fsignaling-nans Disable optimizations observable by IEEE signaling NaNs. -fsigned-zeros Disable floating point optimizations that ignore the IEEE signedness of zero. -fsimd-cost-model=[unlimited|dynamic|cheap|very-cheap] Specifies the vectorization cost model for code marked with a simd directive. -fsingle-precision-constant Convert floating point constants to single precision constants. -fsplit-ivs-in-unroller Split lifetimes of induction variables when loops are unrolled. -fsplit-loops Perform loop splitting. -fsplit-paths Split paths leading to loop backedges. -fsplit-wide-types Split wide types into independent registers. -fsplit-wide-types-early Split wide types into independent registers earlier. -fssa-backprop Enable backward propagation of use properties at the SSA level. -fssa-phiopt Optimize conditional patterns using SSA PHI nodes. -fstack-check=[no|generic|specific] Insert stack checking code into the program. -fstack-clash-protection Insert code to probe each page of stack space as it is allocated to protect from stack-clash style attacks. -fstack-protector Use propolice as a stack protection method. -fstack-protector-all Use a stack protection method for every function. -fstack-protector-explicit Use stack protection method only for functions with the stack_protect attribute. -fstack-protector-strong Use a smart stack protection method for certain functions. -fstack-reuse=[all|named_vars|none] Set stack reuse level for local variables. -fstdarg-opt Optimize amount of stdarg registers saved to stack at start of function. -fstore-merging Merge adjacent stores. -fstrict-aliasing Assume strict aliasing rules apply. -fstrict-volatile-bitfields Force bitfield accesses to match their type width. -fthread-jumps Perform jump threading optimizations. -ftoplevel-reorder Reorder top level functions, variables, and asms. -ftracer Perform superblock formation via tail duplication. -ftrapping-math Assume floating-point operations can trap. -ftrapv Trap for signed overflow in addition, subtraction and multiplication. -ftree-bit-ccp Enable SSA-BIT-CCP optimization on trees. -ftree-builtin-call-dce Enable conditional dead code elimination for builtin calls. -ftree-ccp Enable SSA-CCP optimization on trees. -ftree-ch Enable loop header copying on trees. -ftree-coalesce-vars Enable SSA coalescing of user variables. -ftree-copy-prop Enable copy propagation on trees. -ftree-cselim Transform condition stores into unconditional ones. -ftree-dce Enable SSA dead code elimination optimization on trees. -ftree-dominator-opts Enable dominator optimizations. -ftree-dse Enable dead store elimination. -ftree-forwprop Enable forward propagation on trees. -ftree-fre Enable Full Redundancy Elimination (FRE) on trees. -ftree-loop-distribute-patterns Enable loop distribution for patterns transformed into a library call. -ftree-loop-distribution Enable loop distribution on trees. -ftree-loop-if-convert Convert conditional jumps in innermost loops to branchless equivalents. -ftree-loop-im Enable loop invariant motion on trees. -ftree-loop-ivcanon Create canonical induction variables in loops. -ftree-loop-optimize Enable loop optimizations on tree level. -ftree-loop-vectorize Enable loop vectorization on trees. -ftree-lrs Perform live range splitting during the SSA->normal pass. -ftree-parallelize-loops= Enable automatic parallelization of loops. -ftree-partial-pre In SSA-PRE optimization on trees, enable partial-partial redundancy elimination. -ftree-phiprop Enable hoisting loads from conditional pointers. -ftree-pre Enable SSA-PRE optimization on trees. -ftree-pta Perform function-local points-to analysis on trees. -ftree-reassoc Enable reassociation on tree level. -ftree-scev-cprop Enable copy propagation of scalar-evolution information. -ftree-sink Enable SSA code sinking on trees. -ftree-slp-vectorize Enable basic block vectorization (SLP) on trees. -ftree-slsr Perform straight-line strength reduction. -ftree-sra Perform scalar replacement of aggregates. -ftree-switch-conversion Perform conversions of switch initializations. -ftree-tail-merge Enable tail merging on trees. -ftree-ter Replace temporary expressions in the SSA->normal pass. -ftree-vectorize Enable vectorization on trees. -ftree-vrp Perform Value Range Propagation on trees. -ftrivial-auto-var-init=[uninitialized|pattern|zero] Add initializations to automatic variables. -funconstrained-commons Assume common declarations may be overridden with ones with a larger trailing array. -funreachable-traps Trap on __builtin_unreachable instead of using it for optimization. -funroll-all-loops Perform loop unrolling for all loops. -funroll-completely-grow-size This option lacks documentation. -funroll-loops Perform loop unrolling when iteration count is known. -funsafe-math-optimizations Allow math optimizations that may violate IEEE or ISO standards. -funswitch-loops Perform loop unswitching. -funwind-tables Just generate unwind tables for exception handling. -fvar-tracking Perform variable tracking. -fvar-tracking-assignments Perform variable tracking by annotating assignments. -fvar-tracking-assignments-toggle Toggle -fvar-tracking-assignments. -fvar-tracking-uninit Perform variable tracking and also tag variables that are uninitialized. -fvariable-expansion-in-unroller Apply variable expansion when loops are unrolled. -fvect-cost-model=[unlimited|dynamic|cheap|very-cheap] Specifies the cost model for vectorization. -fversion-loops-for-strides Version loops based on whether indices have a stride of one. -fvpt Use expression value profiles in optimizations. -fweb Construct webs and split unrelated uses of single variable. -fwrapv Assume signed arithmetic overflow wraps around. -fwrapv-pointer Assume pointer overflow wraps around. -gstatement-frontiers Emit progressive recommended breakpoint locations. TARGET SPECIFIC The following options are target specific: -m128bit-long-double sizeof(long double) is 16. -m16 Generate 16bit i386 code. -m32 Generate 32bit i386 code. -m3dnow Support 3DNow! built-in functions. -m3dnowa Support Athlon 3Dnow! built-in functions. -m64 Generate 64bit x86-64 code. -m80387 Use hardware fp. -m8bit-idiv Expand 32bit/64bit integer divide into 8bit unsigned integer divide with run-time check. -m96bit-long-double sizeof(long double) is 12. -mabi= Generate code that conforms to the given ABI. -mabm Support code generation of Advanced Bit Manipulation (ABM) instructions. -maccumulate-outgoing-args Reserve space for outgoing arguments in the function prologue. -maddress-mode= Use given address mode. -madx Support flag-preserving add-carry instructions. -maes Support AES built-in functions and code generation. -malign-data= Use the given data alignment. -malign-double Align some doubles on dword boundary. -malign-functions= Function starts are aligned to this power of 2. -malign-jumps= Jump targets are aligned to this power of 2. -malign-loops= Loop code aligned to this power of 2. -malign-stringops Align destination of the string operations. -mamx-bf16 Support AMX-BF16 built-in functions and code generation. -mamx-fp16 Support AMX-FP16 built-in functions and code generation. -mamx-int8 Support AMX-INT8 built-in functions and code generation. -mamx-tile Support AMX-TILE built-in functions and code generation. -mandroid Generate code for the Android platform. -march= Generate code for given CPU. -masm= Use given assembler dialect. -mavx Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2 and AVX built-in functions and code generation. -mavx2 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and AVX2 built-in functions and code generation. -mavx256-split-unaligned-load Split 32-byte AVX unaligned load. -mavx256-split-unaligned-store Split 32-byte AVX unaligned store. -mavx5124fmaps Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX5124FMAPS built-in functions and code generation. -mavx5124vnniw Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX5124VNNIW built-in functions and code generation. -mavx512bf16 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512BF16 built-in functions and code generation. -mavx512bitalg Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512BITALG built-in functions and code generation. -mavx512bw Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512BW built-in functions and code generation. -mavx512cd Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512CD built-in functions and code generation. -mavx512dq Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512DQ built-in functions and code generation. -mavx512er Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512ER built-in functions and code generation. -mavx512f Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F built-in functions and code generation. -mavx512fp16 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512FP16 built-in functions and code generation. -mavx512ifma Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512IFMA built-in functions and code generation. -mavx512pf Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512PF built-in functions and code generation. -mavx512vbmi Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512VBMI built-in functions and code generation. -mavx512vbmi2 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512VBMI2 built-in functions and code generation. -mavx512vl Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512VL built-in functions and code generation. -mavx512vnni Support AVX512VNNI built-in functions and code generation. -mavx512vp2intersect Support AVX512VP2INTERSECT built-in functions and code generation. -mavx512vpopcntdq Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512VPOPCNTDQ built-in functions and code generation. -mavxifma Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, and AVXIFMA built-in functions and code generation. -mavxneconvert Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, and AVXNECONVERT build-in functions and code generation. -mavxvnni Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, and AVXVNNI built-in functions and code generation. -mavxvnniint8 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVXVNNIINT8 built-in functions and code generation. -mbionic Use Bionic C library. -mbmi Support BMI built-in functions and code generation. -mbmi2 Support BMI2 built-in functions and code generation. -mbranch-cost=<0,5> Branches are this expensive (arbitrary units). -mcall-ms2sysv-xlogues Use libgcc stubs to save and restore registers clobbered by 64-bit Microsoft to System V ABI calls. -mcet-switch Turn on CET instrumentation for switch statements that use a jump table and an indirect jump. -mcld Generate cld instruction in the function prologue. -mcldemote Support CLDEMOTE built-in functions and code generation. -mclflushopt Support CLFLUSHOPT instructions. -mclwb Support CLWB instruction. -mclzero Support CLZERO built-in functions and code generation. -mcmodel= Use given x86-64 code model. -mcmpccxadd Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, and CMPCCXADD build-in functions and code generation. -mcpu= Same as -mtune=. Uses of this option are diagnosed. -mcrc32 Support code generation of crc32 instruction. -mcx16 Support code generation of cmpxchg16b instruction. -mdirect-extern-access Do not use GOT to access external symbols. -mdispatch-scheduler Do dispatch scheduling if processor is bdver1, bdver2, bdver3, bdver4 or znver1 and Haifa scheduling is selected. -mdump-tune-features This option lacks documentation. -menqcmd Support ENQCMD built-in functions and code generation. -mf16c Support F16C built-in functions and code generation. -mfancy-math-387 Generate sin, cos, sqrt for FPU. -mfentry Emit profiling counter call at function entry before prologue. -mfentry-name= Set name of __fentry__ symbol called at function entry. -mfentry-section= Set name of section to record mrecord-mcount calls. -mfma Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and FMA built-in functions and code generation. -mfma4 Support FMA4 built-in functions and code generation. -mforce-drap Always use Dynamic Realigned Argument Pointer (DRAP) to realign stack. -mforce-indirect-call Make all function calls indirect. -mfp-ret-in-387 Return values of functions in FPU registers. -mfpmath= Generate floating point mathematics using given instruction set. -mfsgsbase Support FSGSBASE built-in functions and code generation. -mfunction-return= Convert function return to call and return thunk. -mfused-madd Same as -ffp-contract=fast (or, in negated form, -ffp-contract=off). Uses of this option are diagnosed. -mfxsr Support FXSAVE and FXRSTOR instructions. -mgeneral-regs-only Generate code which uses only the general registers. -mgfni Support GFNI built-in functions and code generation. -mglibc Use GNU C library. -mhard-float Use hardware fp. -mharden-sls= Generate code to mitigate against straight line speculation. -mhle Support Hardware Lock Elision prefixes. -mhreset Support HRESET built-in functions and code generation. -miamcu Generate code that conforms to Intel MCU psABI. -mieee-fp Use IEEE math for fp comparisons. -mincoming-stack-boundary= Assume incoming stack aligned to this power of 2. -mindirect-branch-cs-prefix Add CS prefix to call and jmp to indirect thunk with branch target in r8-r15 registers. -mindirect-branch-register Force indirect call and jump via register. -mindirect-branch= Convert indirect call and jump to call and return thunks. -minline-all-stringops Inline all known string operations. -minline-stringops-dynamically Inline memset/memcpy string operations, but perform inline version only for small blocks. -minstrument-return= Instrument function exit in instrumented functions with __fentry__. -mintel-syntax Same as -masm=intel (or, in negated form, -masm=att). Uses of this option are diagnosed. -mkl Support KL built-in functions and code generation. -mlarge-data-threshold= Data greater than given threshold will go into .ldata section in x86-64 medium model. -mlong-double-128 Use 128-bit long double. -mlong-double-64 Use 64-bit long double. -mlong-double-80 Use 80-bit long double. -mlwp Support LWP built-in functions and code generation. -mlzcnt Support LZCNT built-in function and code generation. -mmanual-endbr Insert ENDBR instruction at function entry only via cf_check attribute for CET instrumentation. -mmemcpy-strategy= Specify memcpy expansion strategy when expected size is known. -mmemset-strategy= Specify memset expansion strategy when expected size is known. -mmitigate-rop This option lacks documentation. -mmmx Support MMX built-in functions. -mmovbe Support code generation of movbe instruction. -mmovdir64b Support MOVDIR64B built-in functions and code generation. -mmovdiri Support MOVDIRI built-in functions and code generation. -mmove-max= Maximum number of bits that can be moved from memory to memory efficiently. -mmpx Removed in GCC 9. This switch has no effect. -mms-bitfields Use native (MS) bitfield layout. -mmusl Use musl C library. -mmwait Support MWAIT and MONITOR built-in functions and code generation. -mmwaitx Support MWAITX and MONITORX built-in functions and code generation. -mneeded Emit GNU_PROPERTY_X86_ISA_1_NEEDED GNU property. -mno-align-stringops This option lacks documentation. -mno-default Clear all tune features. -mno-fancy-math-387 This option lacks documentation. -mno-push-args This option lacks documentation. -mno-red-zone This option lacks documentation. -mno-sse4 Do not support SSE4.1 and SSE4.2 built-in functions and code generation. -mnop-mcount Generate mcount/__fentry__ calls as nops. To activate they need to be patched in. -momit-leaf-frame-pointer Omit the frame pointer in leaf functions. -mpc32 Set 80387 floating-point precision to 32-bit. -mpc64 Set 80387 floating-point precision to 64-bit. -mpc80 Set 80387 floating-point precision to 80-bit. -mpclmul Support PCLMUL built-in functions and code generation. -mpcommit This option lacks documentation. -mpconfig Support PCONFIG built-in functions and code generation. -mpku Support PKU built-in functions and code generation. -mpopcnt Support code generation of popcnt instruction. -mprefer-avx128 Use 128-bit AVX instructions instead of 256-bit AVX instructions in the auto-vectorizer. Same as -mprefer-vector-width=. -mprefer-vector-width= Use given register vector width instructions instead of maximum register width in the auto-vectorizer. -mpreferred-stack-boundary= Attempt to keep stack aligned to this power of 2. -mprefetchwt1 Support PREFETCHWT1 built-in functions and code generation. -mprfchw Support PREFETCHW instruction. -mptwrite Support PTWRITE built-in functions and code generation. -mpush-args Use push instructions to save outgoing arguments. -mrdpid Support RDPID built-in functions and code generation. -mrdrnd Support RDRND built-in functions and code generation. -mrdseed Support RDSEED instruction. -mrecip Generate reciprocals instead of divss and sqrtss. -mrecip= Control generation of reciprocal estimates. -mrecord-mcount Generate __mcount_loc section with all mcount or __fentry__ calls. -mrecord-return Generate a __return_loc section pointing to all return instrumentation code. -mred-zone Use red-zone in the x86-64 code. -mregparm= Number of registers used to pass integer arguments. -mrelax-cmpxchg-loop Relax cmpxchg loop for atomic_fetch_{or,xor,and,nand} by adding load and cmp before cmpxchg, execute pause and loop back to load and compare if load value is not expected. -mrtd Alternate calling convention. -mrtm Support RTM built-in functions and code generation. -msahf Support code generation of sahf instruction in 64bit x86-64 code. -mserialize Support SERIALIZE built-in functions and code generation. -msgx Support SGX built-in functions and code generation. -msha Support SHA1 and SHA256 built-in functions and code generation. -mshstk Enable shadow stack built-in functions from Control-flow Enforcement Technology (CET). -mskip-rax-setup Skip setting up RAX register when passing variable arguments. -msoft-float Do not use hardware fp. -msse Support MMX and SSE built-in functions and code generation. -msse2 Support MMX, SSE and SSE2 built-in functions and code generation. -msse2avx Encode SSE instructions with VEX prefix. -msse3 Support MMX, SSE, SSE2 and SSE3 built-in functions and code generation. -msse4 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2 built-in functions and code generation. -msse4.1 Support MMX, SSE, SSE2, SSE3, SSSE3 and SSE4.1 built-in functions and code generation. -msse4.2 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2 built-in functions and code generation. -msse4a Support MMX, SSE, SSE2, SSE3 and SSE4A built-in functions and code generation. -msse5 Same as -mavx. Uses of this option are diagnosed. -msseregparm Use SSE register passing conventions for SF and DF mode. -mssse3 Support MMX, SSE, SSE2, SSE3 and SSSE3 built-in functions and code generation. -mstack-arg-probe Enable stack probing. -mstack-protector-guard-offset= Use the given offset for addressing the stack-protector guard. -mstack-protector-guard-reg= Use the given base register for addressing the stack-protector guard. -mstack-protector-guard-symbol= Use the given symbol for addressing the stack-protector guard. -mstack-protector-guard= Use given stack-protector guard. -mstackrealign Realign stack in prologue. -mstore-max= Maximum number of bits that can be stored to memory efficiently. -mstringop-strategy= Chose strategy to generate stringop using. -mstv Disable Scalar to Vector optimization pass transforming 64-bit integer computations into a vector ones. -mtbm Support TBM built-in functions and code generation. -mtls-dialect= Use given thread-local storage dialect. -mtls-direct-seg-refs Use direct references against %gs when accessing tls data. -mtsxldtrk Support TSXLDTRK built-in functions and code generation. -mtune-ctrl= Fine grain control of tune features. -mtune= Schedule code for given CPU. -muclibc Use uClibc C library. -muintr Support UINTR built-in functions and code generation. -mvaes Support VAES built-in functions and code generation. -mveclibabi= Vector library ABI to use. -mvect8-ret-in-mem Return 8-byte vectors in memory. -mvpclmulqdq Support VPCLMULQDQ built-in functions and code generation. -mvzeroupper Generate vzeroupper instruction before a transfer of control flow out of the function. -mwaitpkg Support WAITPKG built-in functions and code generation. -mwbnoinvd Support WBNOINVD built-in functions and code generation. -mwidekl Support WIDEKL built-in functions and code generation. -mx32 Generate 32bit x86-64 code. -mxop Support XOP built-in functions and code generation. -mxsave Support XSAVE and XRSTOR instructions. -mxsavec Support XSAVEC instructions. -mxsaveopt Support XSAVEOPT instruction. -mxsaves Support XSAVES and XRSTORS instructions. Known assembler dialects (for use with the -masm= option): att intel Known ABIs (for use with the -mabi= option): ms sysv Known code models (for use with the -mcmodel= option): 32 kernel large medium small Valid arguments to -mfpmath=: 387 387+sse 387,sse both sse sse+387 sse,387 Known choices for mitigation against straight line speculation with -mharden-sls=: all indirect-jmp none return Known indirect branch choices (for use with the -mindirect-branch=/-mfunction-return= options): keep thunk thunk-extern thunk-inline Known choices for return instrumentation with -minstrument-return=: call none nop5 Known data alignment choices (for use with the -malign-data= option): abi cacheline compat Known vectorization library ABIs (for use with the -mveclibabi= option): acml svml Known address mode (for use with the -maddress-mode= option): long short Known preferred register vector length (to use with the -mprefer-vector-width= option): 128 256 512 none Known stack protector guard (for use with the -mstack-protector-guard= option): global tls Valid arguments to -mstringop-strategy=: byte_loop libcall loop rep_4byte rep_8byte rep_byte unrolled_loop vector_loop Known TLS dialects (for use with the -mtls-dialect= option): gnu gnu2 Known valid arguments for -march= option: i386 i486 i586 pentium lakemont pentium-mmx winchip-c6 winchip2 c3 samuel-2 c3-2 nehemiah c7 esther i686 pentiumpro pentium2 pentium3 pentium3m pentium-m pentium4 pentium4m prescott nocona core2 nehalem corei7 westmere sandybridge corei7-avx ivybridge core-avx-i haswell core-avx2 broadwell skylake skylake-avx512 cannonlake icelake-client rocketlake icelake-server cascadelake tigerlake cooperlake sapphirerapids alderlake raptorlake meteorlake bonnell atom silvermont slm goldmont goldmont-plus tremont sierraforest knl knm intel geode k6 k6-2 k6-3 athlon athlon-tbird athlon-4 athlon-xp athlon-mp x86-64 x86-64-v2 x86-64-v3 x86-64-v4 eden-x2 nano nano-1000 nano-2000 nano-3000 nano-x2 eden-x4 nano-x4 lujiazui k8 k8-sse3 opteron opteron-sse3 athlon64 athlon64-sse3 athlon-fx amdfam10 barcelona bdver1 bdver2 bdver3 bdver4 znver1 znver2 znver3 znver4 btver1 btver2 generic native Known valid arguments for -mtune= option: generic i386 i486 pentium lakemont pentiumpro pentium4 nocona core2 nehalem sandybridge haswell bonnell silvermont goldmont goldmont-plus tremont sierraforest knl knm skylake skylake-avx512 cannonlake icelake-client icelake-server cascadelake tigerlake cooperlake sapphirerapids alderlake rocketlake intel lujiazui geode k6 athlon k8 amdfam10 bdver1 bdver2 bdver3 bdver4 btver1 btver2 znver1 znver2 znver3 znver4 LANGUAGE INDEPENDENT OPTIONS The following options are language-independent: --completion= Provide bash completion for options starting with provided string. --debug Same as -g. --dumpbase Same as -dumpbase. --dumpbase-ext Same as -dumpbase-ext. --dumpdir Same as -dumpdir. --help Display this information. --help= Display descriptions of a specific class of options. is one or more of optimizers, target, warnings, undocumented, params. --optimize Same as -O. --pedantic-errors Same as -pedantic-errors. --profile Same as -p. --target-help Display target specific command line options (including assembler and linker options). --version This option lacks documentation. -Wattributes= Do not warn about specified attributes. -Werror= Treat specified warning as error. -Wfatal-errors Exit on the first error occurred. -aux-info Emit declaration information into . -aux-info= Same as -aux-info. -dumpbase Set the file basename to be used for dumps. -dumpbase-ext -dumpbase-ext . Drop a trailing . from the dump basename to name auxiliary output files. -dumpdir Set the directory name to be used for dumps. -fPIC Generate position-independent code if possible (large mode). -fPIE Generate position-independent code for executables if possible (large mode). -fabi-version= The version of the C++ ABI in use. -fanalyzer Enable static analysis pass. -fanalyzer-call-summaries Approximate the effect of function calls to simplify analysis. -fanalyzer-checker= Restrict the analyzer to run just the named checker. -fanalyzer-feasibility Verify that paths are feasible when emitting diagnostics. -fanalyzer-fine-grained Avoid combining multiple statements into one exploded edge. -fanalyzer-show-duplicate-count Issue a note when diagnostics are deduplicated. -fanalyzer-state-merge Merge similar-enough states during analysis. -fanalyzer-state-purge Purge unneeded state during analysis. -fanalyzer-transitivity Enable transitivity of constraints during analysis. -fanalyzer-undo-inlining Try to reconstruct function calls and returns after inlining. -fanalyzer-verbose-edges Emit more verbose descriptions of control flow in diagnostics. -fanalyzer-verbose-state-changes Emit more verbose descriptions of state changes in diagnostics. -fanalyzer-verbosity= Control which events are displayed in diagnostic paths. -fargument-alias Does nothing. Preserved for backward compatibility. -fargument-noalias Does nothing. Preserved for backward compatibility. -fargument-noalias-anything Does nothing. Preserved for backward compatibility. -fargument-noalias-global Does nothing. Preserved for backward compatibility. -fasan-shadow-offset= Use custom shadow memory offset. -fauto-profile Use sample profile information for call graph node weights. The default profile file is fbdata.afdo in 'pwd'. -fauto-profile= Use sample profile information for call graph node weights. The profile file is specified in the argument. -fbranch-target-load-optimize Does nothing. Preserved for backward compatibility. -fbranch-target-load-optimize2 Does nothing. Preserved for backward compatibility. -fbtr-bb-exclusive Does nothing. Preserved for backward compatibility. -fcall-saved- Mark as being preserved across functions. -fcall-used- Mark as being corrupted by function calls. -fcallgraph-info Output callgraph information on a per-file basis. -fcallgraph-info= Output callgraph information on a per-file basis with decorations. -fcf-protection Same as -fcf-protection=full. -fcf-protection=[full|branch|return|none|check] Instrument functions with checks to verify jump/call/return control-flow transfer instructions have valid targets. -fcheck-data-deps This switch is deprecated; do not use. -fcheck-new Check the return value of new in C++. -fchecking Perform internal consistency checkings. -fchecking= Perform internal consistency checkings. -fcommon Put uninitialized globals in the common section. -fcompare-debug-second Run only the second compilation of -fcompare-debug. -fcompare-debug[=] Compile with and without e.g. -gtoggle, and compare the final-insns dump. -fcse-skip-blocks Does nothing. Preserved for backward compatibility. -fdata-sections Place data items into their own section. -fdbg-cnt-list List all available debugging counters with their limits and counts. -fdbg-cnt=[:-][:-:...][,:...] Set the debug counter limit. -fdebug-prefix-map== Map one directory name to another in debug information. -fdebug-types-section Output .debug_types section when using DWARF v4 debuginfo. -fdevirtualize-at-ltrans Stream extra data to support more aggressive devirtualization in LTO local transformation mode. -fdiagnostics-color Same as -fdiagnostics-color=always (or, in negated form, -fdiagnostics-color=never). -fdiagnostics-color=[never|always|auto] Colorize diagnostics. -fdiagnostics-column-origin= Set the number of the first column. The default is 1-based as per GNU style, but some utilities may expect 0-based, for example. -fdiagnostics-column-unit=[display|byte] Select whether column numbers are output as display columns (default) or raw bytes. -fdiagnostics-escape-format=[unicode|bytes] Select how to escape non-printable-ASCII bytes in the source for diagnostics that suggest it. -fdiagnostics-format=[text|sarif-stderr|sarif-file|json|json-stderr|json-file] Select output format. -fdiagnostics-generate-patch Print fix-it hints to stderr in unified diff format. -fdiagnostics-minimum-margin-width= Set minimum width of left margin of source code when showing source. -fdiagnostics-parseable-fixits Print fix-it hints in machine-readable form. -fdiagnostics-path-format= Specify how to print any control-flow path associated with a diagnostic. -fdiagnostics-plain-output Turn off any diagnostics features that complicate the output, such as line numbers, color, and warning URLs. -fdiagnostics-show-caret Show the source line with a caret indicating the column. -fdiagnostics-show-cwe Print CWE identifiers for diagnostic messages, where available. -fdiagnostics-show-labels Show labels annotating ranges of source code when showing source. -fdiagnostics-show-line-numbers Show line numbers in the left margin when showing source. -fdiagnostics-show-location=[once|every-line] How often to emit source location at the beginning of line-wrapped diagnostics. -fdiagnostics-show-option Amend appropriate diagnostic messages with the command line option that controls them. -fdiagnostics-show-path-depths Show stack depths of events in paths. -fdiagnostics-show-rules Print any rules associated with diagnostic messages. -fdiagnostics-urls=[never|always|auto] Embed URLs in diagnostics. -fdisable-[tree|rtl|ipa]-=range1+range2 Disable an optimization pass. -fdump- Dump various compiler internals to a file. -fdump-analyzer Dump various analyzer internals to SRCFILE.analyzer.txt. -fdump-analyzer-callgraph Dump analyzer-specific call graph information to a SRCFILE.callgraph.dot file. -fdump-analyzer-exploded-graph Dump the analyzer exploded graph to a SRCFILE.eg.dot file. -fdump-analyzer-exploded-nodes Emit diagnostics showing the location of nodes in the exploded graph. -fdump-analyzer-exploded-nodes-2 Dump a textual representation of the exploded graph to SRCFILE.eg.txt. -fdump-analyzer-exploded-nodes-3 Dump a textual representation of the exploded graph to SRCFILE.eg-ID.txt. -fdump-analyzer-exploded-paths Dump a textual representation of each diagnostic's exploded path to SRCFILE.IDX.KIND.epath.txt. -fdump-analyzer-feasibility Dump various analyzer internals to SRCFILE.*.fg.dot and SRCFILE.*.tg.dot. -fdump-analyzer-json Dump analyzer-specific data to a SRCFILE.analyzer.json.gz file. -fdump-analyzer-state-purge Dump state-purging information to a SRCFILE.state-purge.dot file. -fdump-analyzer-stderr Dump various analyzer internals to stderr. -fdump-analyzer-supergraph Dump the analyzer supergraph to a SRCFILE.supergraph.dot file. -fdump-analyzer-untracked Emit custom warnings with internal details intended for analyzer developers. -fdump-final-insns=filename Dump to filename the insns at the end of translation. -fdump-go-spec=filename Write all declarations to file as Go code. -fdump-internal-locations Dump detailed information on GCC's internal representation of source code locations. -fdump-noaddr Suppress output of addresses in debugging dumps. -fdump-passes Dump optimization passes. -fdump-unnumbered Suppress output of instruction numbers, line number notes and addresses in debugging dumps. -fdump-unnumbered-links Suppress output of previous and next insn numbers in debugging dumps. -fdwarf2-cfi-asm Enable CFI tables via GAS assembler directives. -feliminate-dwarf2-dups Does nothing. Preserved for backward compatibility. -feliminate-unused-debug-symbols Perform unused symbol elimination in debug info. -feliminate-unused-debug-types Perform unused type elimination in debug info. -femit-class-debug-always Do not suppress C++ class debug information. -fenable-[tree|rtl|ipa]-=range1+range2 Enable an optimization pass. -ffat-lto-objects Output lto objects containing both the intermediate language and binary output. -ffile-prefix-map== Map one directory name to another in compilation result. -ffixed- Mark as being unavailable to the compiler. -fforce-addr Does nothing. Preserved for backward compatibility. -ffunction-sections Place each function into its own section. -fgnat-encodings=[all|gdb|minimal] Select the balance between GNAT encodings and standard DWARF emitted in the debug information. -fgnu-tm Enable support for GNU transactional memory. -fgnu-unique Use STB_GNU_UNIQUE if supported by the assembler. -fhelp Same as --help. -fhelp= Same as --help=. -fident Process #ident directives. -finhibit-size-directive Do not generate .size directives. -finline-limit- Same as -finline-limit=. -finline-limit= Limit the size of inlined functions to . -finstrument-functions Instrument function entry and exit with profiling calls. -finstrument-functions-exclude-file-list=filename,... Do not instrument functions listed in files. -finstrument-functions-exclude-function-list=name,... Do not instrument listed functions. -finstrument-functions-once Instrument function entry and exit with profiling calls invoked once. -fipa-cp-alignment Does nothing. Preserved for backward compatibility. -fipa-matrix-reorg Does nothing. Preserved for backward compatibility. -fipa-struct-reorg Does nothing. Preserved for backward compatibility. -fira-verbose= Control IRA's level of diagnostic messages. -fkeep-inline-functions Generate code for functions even if they are fully inlined. -fkeep-static-consts Emit static const variables even if they are not used. -fkeep-static-functions Generate code for static functions even if they are never called. -flarge-source-files Improve GCC's ability to track column numbers in large source files, at the expense of slower compilation. -fleading-underscore Give external symbols a leading underscore. -floop-block Enable loop nest transforms. Same as -floop-nest-optimize. Same as -floop-nest-optimize. -floop-flatten Does nothing. Preserved for backward compatibility. -floop-optimize Does nothing. Preserved for backward compatibility. -floop-strip-mine Enable loop nest transforms. Same as -floop-nest-optimize. Same as -floop-nest-optimize. -flto Enable link-time optimization. -flto-compression-level=<0,19> Use zlib/zstd compression level for IL. -flto-odr-type-merging Does nothing. Preserved for backward compatibility. -flto-partition= Specify the algorithm to partition symbols and vars at linktime. -flto-report Report various link-time optimization statistics. -flto-report-wpa Report various link-time optimization statistics for WPA only. -flto= Link-time optimization with number of parallel jobs or jobserver. -fmax-errors= Maximum number of errors to report. -fmem-report Report on permanent memory allocation. -fmem-report-wpa Report on permanent memory allocation in WPA only. -fmerge-all-constants Attempt to merge identical constants and constant variables. -fmerge-constants Attempt to merge identical constants across compilation units. -fmerge-debug-strings Attempt to merge identical debug strings across compilation units. -fmessage-length= Limit diagnostics to characters per line. 0 suppresses line-wrapping. -foffload-abi=[lp64|ilp32] Set the ABI to use in an offload compiler. -foffload-options== Specify options for the offloading targets. -fopt-info[-=filename] Dump compiler optimization details. -foptimize-register-move Does nothing. Preserved for backward compatibility. -fpcc-struct-return Return small aggregates in memory, not registers. -fpermitted-flt-eval-methods=[c11|ts-18661] Specify which values of FLT_EVAL_METHOD are permitted. -fpic Generate position-independent code if possible (small mode). -fpie Generate position-independent code for executables if possible (small mode). -fplugin-arg--[=] Specify argument = for plugin . -fplugin= Specify a plugin to load. -fpost-ipa-mem-report Report on memory allocation before interprocedural optimization. -fpre-ipa-mem-report Report on memory allocation before interprocedural optimization. -fprofile Enable basic program profiling code. -fprofile-abs-path Generate absolute source path names for gcov. -fprofile-arcs Insert arc-based program profiling code. -fprofile-correction Enable correction of flow inconsistent profile data input. -fprofile-dir= Set the top-level directory for storing the profile data. The default is 'pwd'. -fprofile-exclude-files= Instrument only functions from files whose name does not match any of the regular expressions (separated by semi-colons). -fprofile-filter-files= Instrument only functions from files whose name matches any of the regular expressions (separated by semi- colons). -fprofile-generate Enable common options for generating profile info for profile feedback directed optimizations. -fprofile-generate= Enable common options for generating profile info for profile feedback directed optimizations, and set -fprofile-dir=. -fprofile-info-section Register the profile information in the .gcov_info section instead of using a constructor/destructor. -fprofile-info-section= Register the profile information in the specified section instead of using a constructor/destructor. -fprofile-note= Select the name for storing the profile note file. -fprofile-prefix-map== Map one directory name to another in GCOV coverage result. -fprofile-prefix-path= Remove prefix from absolute path before mangling name for -fprofile-generate= and -fprofile-use=. -fprofile-report Report on consistency of profile. -fprofile-reproducible=[serial|parallel-runs|multithreaded] Control level of reproducibility of profile gathered by -fprofile- generate. -fprofile-update=[single|atomic|prefer-atomic] Set the profile update method. -fprofile-use Enable common options for performing profile feedback directed optimizations. -fprofile-use= Enable common options for performing profile feedback directed optimizations, and set -fprofile-dir=. -fprofile-values Insert code to profile values of expressions. -frandom-seed This option lacks documentation. -frandom-seed= Make compile reproducible using . -frecord-gcc-switches Record gcc command line switches in the object file. -fregmove Does nothing. Preserved for backward compatibility. -freport-bug Collect and dump debug information into temporary file if ICE in C/C++ compiler occurred. -frerun-loop-opt Does nothing. Preserved for backward compatibility. -fsanitize-address-use-after-scope This option lacks documentation. -fsanitize-coverage= Select type of coverage sanitization. -fsanitize-recover This switch is deprecated; use -fsanitize-recover= instead. -fsanitize-recover= After diagnosing undefined behavior attempt to continue execution. -fsanitize-sections= Sanitize global variables in user-defined sections. -fsanitize-trap This option lacks documentation. -fsanitize-trap= Use traps instead of diagnostics of undefined behavior sanitizers. -fsanitize-undefined-trap-on-error This switch is deprecated; use -fsanitize-trap= instead. -fsanitize= Select what to sanitize. -fsched-verbose= Set the verbosity level of the scheduler. -fsched2-use-traces Does nothing. Preserved for backward compatibility. -fsee Does nothing. Preserved for backward compatibility. -fself-test= Run self-tests, using the given path to locate test files. -fshow-column Show column numbers in diagnostics, when available. Default on. -fsplit-stack Generate discontiguous stack frames. -fstack-check Insert stack checking code into the program. Same as -fstack-check=specific. Same as -fstack-check=. -fstack-limit This option lacks documentation. -fstack-limit-register= Trap if the stack goes past . -fstack-limit-symbol= Trap if the stack goes past symbol . -fstack-usage Output stack usage information on a per-function basis. -fstrength-reduce Does nothing. Preserved for backward compatibility. -fstrict-overflow Treat signed overflow as undefined. Negated as -fwrapv -fwrapv-pointer. -fsync-libcalls Implement __atomic operations via libcalls to legacy __sync functions. -fsyntax-only Check for syntax errors, then stop. -ftabstop= -ftabstop= Distance between tab stops for column reporting. -ftarget-help Same as --target-help. -ftest-coverage Create data files needed by "gcov". -ftime-report Report the time taken by each compiler pass. -ftime-report-details Record times taken by sub-phases separately. -ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec] Set the default thread-local storage code generation model. -ftrampolines For targets that normally need trampolines for nested functions, always generate them instead of using descriptors. -ftree-coalesce-inlined-vars Does nothing. Preserved for backward compatibility. -ftree-copyrename Does nothing. Preserved for backward compatibility. -ftree-loop-if-convert-stores Does nothing. Preserved for backward compatibility. -ftree-loop-linear Enable loop nest transforms. Same as -floop-nest-optimize. Same as -floop-nest-optimize. -ftree-salias Does nothing. Preserved for backward compatibility. -ftree-store-ccp Does nothing. Preserved for backward compatibility. -ftree-store-copy-prop Does nothing. Preserved for backward compatibility. -ftree-vect-loop-version Does nothing. Preserved for backward compatibility. -ftree-vectorizer-verbose= Does nothing. Preserved for backward compatibility. -funit-at-a-time Compile whole compilation unit at a time. -funsafe-loop-optimizations Does nothing. Preserved for backward compatibility. -fuse-ld=bfd Use the bfd linker instead of the default linker. -fuse-ld=gold Use the gold linker instead of the default linker. -fuse-ld=lld Use the lld LLVM linker instead of the default linker. -fuse-ld=mold Use the Modern linker (MOLD) linker instead of the default linker. -fuse-linker-plugin This option lacks documentation. -fvect-cost-model Enables the dynamic vectorizer cost model. Preserved for backward compatibility. Same as -fvect-cost- model=. -fverbose-asm Add extra commentary to assembler output. -fversion This option lacks documentation. -fvisibility=[default|internal|hidden|protected] Set the default symbol visibility. -fvtable-verify= Validate vtable pointers before using them. -fvtv-counts Output vtable verification counters. -fvtv-debug Output vtable verification pointer sets information. -fwhole-program Perform whole program optimizations. -fzee Does nothing. Preserved for backward compatibility. -fzero-call-used-regs= Clear call-used registers upon function return. -fzero-initialized-in-bss Put zero initialized data in the bss section. -g Generate debug information in default format. -gas-loc-support Assume assembler support for (DWARF2+) .loc directives. -gas-locview-support Assume assembler support for view in (DWARF2+) .loc directives. -gbtf Generate BTF debug information at default level. -gcoff Does nothing. Preserved for backward compatibility. -gcoff1 Does nothing. Preserved for backward compatibility. -gcoff2 Does nothing. Preserved for backward compatibility. -gcoff3 Does nothing. Preserved for backward compatibility. -gcolumn-info Record DW_AT_decl_column and DW_AT_call_column in DWARF. -gctf Generate CTF debug information at default level. -gdescribe-dies Add description attributes to some DWARF DIEs that have no name attribute. -gdwarf Generate debug information in default version of DWARF format. -gdwarf- Generate debug information in DWARF v2 (or later) format. -gdwarf32 Use 32-bit DWARF format when emitting DWARF debug information. -gdwarf64 Use 64-bit DWARF format when emitting DWARF debug information. -ggdb Generate debug information in default extended format. -ggnu-pubnames Generate DWARF pubnames and pubtypes sections with GNU extensions. -ginline-points Generate extended entry point information for inlined functions. -ginternal-reset-location-views Compute locview reset points based on insn length estimates. -gno-pubnames Don't generate DWARF pubnames and pubtypes sections. -gpubnames Generate DWARF pubnames and pubtypes sections. -grecord-gcc-switches Record gcc command line switches in DWARF DW_AT_producer. -gsplit-dwarf Generate debug information in separate .dwo files. -gstabs Does nothing. Preserved for backward compatibility. -gstabs+ Does nothing. Preserved for backward compatibility. -gstrict-dwarf Don't emit DWARF additions beyond selected version. -gtoggle Toggle debug information generation. -gvariable-location-views Augment variable location lists with progressive views. -gvariable-location-views=incompat5 This option lacks documentation. -gvms Generate debug information in VMS format. -gxcoff Does nothing. Preserved for backward compatibility. -gxcoff+ Does nothing. Preserved for backward compatibility. -gz Generate compressed debug sections. -gz= Generate compressed debug sections in format . -imultiarch Set to be the multiarch include subdirectory. -iplugindir= Set to be the default plugin directory. -p Enable function profiling. -pedantic-errors Like -pedantic but issue them as errors. -quiet Do not display functions compiled or elapsed time. -version Display the compiler's version. Usage: as [option...] [asmfile...] Options: -a[sub-option...] turn on listings Sub-options [default hls]: c omit false conditionals d omit debugging directives g include general info h include high-level source l include assembly m include macro expansions n omit forms processing s include symbols =FILE list to FILE (must be last sub-option) --alternate initially turn on alternate macro syntax --compress-debug-sections[={none|zlib|zlib-gnu|zlib-gabi}] compress DWARF debug sections using zlib --nocompress-debug-sections don't compress DWARF debug sections [default] -D produce assembler debugging messages --debug-prefix-map OLD=NEW map OLD to NEW in debug information --defsym SYM=VAL define symbol SYM to given value --execstack require executable stack for this object --noexecstack don't require executable stack for this object --size-check=[error|warning] ELF .size directive check (default --size-check=error) --elf-stt-common=[no|yes] (default: no) generate ELF common symbols with STT_COMMON type --sectname-subst enable section name substitution sequences --generate-missing-build-notes=[no|yes] (default: no) generate GNU Build notes if none are present in the input -f skip whitespace and comment preprocessing -g --gen-debug generate debugging information --gstabs generate STABS debugging information --gstabs+ generate STABS debug info with GNU extensions --gdwarf- generate DWARF debugging information. 2 <= <= 5 --gdwarf-sections generate per-function section names for DWARF line information --target-help show target specific options -I DIR add DIR to search list for .include directives -J don't warn about signed overflow -K warn when differences altered for long displacements -L,--keep-locals keep local symbols (e.g. starting with `L') -M,--mri assemble in MRI compatibility mode --MD FILE write dependency information in FILE (default none) -nocpp ignored -no-pad-sections do not pad the end of sections to alignment boundaries -o OBJFILE name the object-file output OBJFILE (default a.out) -R fold data section into text section --statistics print various measured statistics from execution --strip-local-absolute strip local absolute symbols --traditional-format Use same format as native assembler when possible --version print assembler version number and exit -W --no-warn suppress warnings --warn don't suppress warnings --fatal-warnings treat warnings as errors -w ignored -X ignored -Z generate object file even after errors --listing-lhs-width set the width in words of the output data column of the listing --listing-lhs-width2 set the width in words of the continuation lines of the output data column; ignored if smaller than the width of the first line --listing-rhs-width set the max width in characters of the lines from the source file --listing-cont-lines set the maximum number of continuation lines used for the output data column of the listing @FILE read options from FILE -Qy, -Qn ignored -V print assembler version number -k ignored -n Do not optimize code alignment -q quieten some warnings -s ignored --32/--64/--x32 generate 32bit/64bit/x32 object --divide ignored -march=CPU[,+EXTENSION...] generate code for CPU and EXTENSION, CPU is one of: default, push, pop, generic32, generic64, i386, i486, i586, i686, pentium, pentiumpro, pentiumii, pentiumiii, pentium4, prescott, nocona, core, core2, corei7, iamcu, k6, k6_2, athlon, opteron, k8, amdfam10, bdver1, bdver2, bdver3, bdver4, znver1, znver2, znver3, btver1, btver2 EXTENSION is combination of (possibly "no"-prefixed): 8087, 287, 387, 687, cmov, fxsr, mmx, sse, sse2, sse3, sse4a, ssse3, sse4.1, sse4.2, sse4, avx, avx2, avx512f, avx512cd, avx512er, avx512pf, avx512dq, avx512bw, avx512vl, vmx, vmfunc, smx, xsave, xsaveopt, xsavec, xsaves, aes, pclmul, fsgsbase, rdrnd, f16c, bmi2, fma, fma4, xop, lwp, movbe, cx16, ept, lzcnt, popcnt, hle, rtm, invpcid, clflush, nop, syscall, rdtscp, 3dnow, 3dnowa, padlock, svme, sse4a, abm, bmi, tbm, adx, rdseed, prfchw, smap, mpx, sha, clflushopt, prefetchwt1, se1, clwb, avx512ifma, avx512vbmi, avx512_4fmaps, avx512_4vnniw, avx512_vpopcntdq, avx512_vbmi2, avx512_vnni, avx512_bitalg, avx_vnni, clzero, mwaitx, ospke, rdpid, ptwrite, ibt, shstk, gfni, vaes, vpclmulqdq, wbnoinvd, pconfig, waitpkg, cldemote, amx_int8, amx_bf16, amx_tile, movdiri, movdir64b, avx512_bf16, avx512_vp2intersect, tdx, enqcmd, serialize, rdpru, mcommit, sev_es, tsxldtrk, kl, widekl, uintr, hreset, avx512_fp16, no87 -mtune=CPU optimize for CPU, CPU is one of: generic32, generic64, i8086, i186, i286, i386, i486, i586, i686, pentium, pentiumpro, pentiumii, pentiumiii, pentium4, prescott, nocona, core, core2, corei7, iamcu, k6, k6_2, athlon, opteron, k8, amdfam10, bdver1, bdver2, bdver3, bdver4, znver1, znver2, znver3, btver1, btver2 -msse2avx encode SSE instructions with VEX prefix -muse-unaligned-vector-move encode aligned vector move as unaligned vector move -msse-check=[none|error|warning] (default: warning) check SSE instructions -moperand-check=[none|error|warning] (default: warning) check operand combinations for validity -mavxscalar=[128|256] (default: 128) encode scalar AVX instructions with specific vector length -mvexwig=[0|1] (default: 0) encode VEX instructions with specific VEX.W value for VEX.W bit ignored instructions -mevexlig=[128|256|512] (default: 128) encode scalar EVEX instructions with specific vector length -mevexwig=[0|1] (default: 0) encode EVEX instructions with specific EVEX.W value for EVEX.W bit ignored instructions -mevexrcig=[rne|rd|ru|rz] (default: rne) encode EVEX instructions with specific EVEX.RC value for SAE-only ignored instructions -mmnemonic=[att|intel] (default: att) use AT&T/Intel mnemonic -msyntax=[att|intel] (default: att) use AT&T/Intel syntax -mindex-reg support pseudo index registers -mnaked-reg don't require `%' prefix for registers -madd-bnd-prefix add BND prefix for all valid branches -mshared disable branch optimization for shared code -mx86-used-note=[no|yes] (default: no) generate x86 used ISA and feature properties -momit-lock-prefix=[no|yes] (default: no) strip all lock prefixes -mfence-as-lock-add=[no|yes] (default: no) encode lfence, mfence and sfence as lock addl $0x0, (%{re}sp) -mrelax-relocations=[no|yes] (default: yes) generate relax relocations -malign-branch-boundary=NUM (default: 0) align branches within NUM byte boundary -malign-branch=TYPE[+TYPE...] (default: jcc+fused+jmp) TYPE is combination of jcc, fused, jmp, call, ret, indirect specify types of branches to align -malign-branch-prefix-size=NUM (default: 5) align branches with NUM prefixes per instruction -mbranches-within-32B-boundaries align branches within 32 byte boundary -mlfence-after-load=[no|yes] (default: no) generate lfence after load -mlfence-before-indirect-branch=[none|all|register|memory] (default: none) generate lfence before indirect near branch -mlfence-before-ret=[none|or|not|shl|yes] (default: none) generate lfence before ret -mamd64 accept only AMD64 ISA [default] -mintel64 accept only Intel64 ISA Report bugs to Usage: collect2 [options] Wrap linker and generate constructor code if needed. Options: -debug Enable debug output --help Display this information -v, --version Display this program's version number Overview: https://gcc.gnu.org/onlinedocs/gccint/Collect2.html Report bugs: Usage: /usr/bin/ld [options] file... Options: -a KEYWORD Shared library control for HP/UX compatibility -A ARCH, --architecture ARCH Set architecture -b TARGET, --format TARGET Specify target for following input files -c FILE, --mri-script FILE Read MRI format linker script -d, -dc, -dp Force common symbols to be defined --dependency-file FILE Write dependency file --force-group-allocation Force group members out of groups -e ADDRESS, --entry ADDRESS Set start address -E, --export-dynamic Export all dynamic symbols --no-export-dynamic Undo the effect of --export-dynamic --enable-non-contiguous-regions Enable support of non-contiguous memory regions --enable-non-contiguous-regions-warnings Enable warnings when --enable-non-contiguous-regions may cause unexpected behaviour -EB Link big-endian objects -EL Link little-endian objects -f SHLIB, --auxiliary SHLIB Auxiliary filter for shared object symbol table -F SHLIB, --filter SHLIB Filter for shared object symbol table -g Ignored -G SIZE, --gpsize SIZE Small data size (if no size, same as --shared) -h FILENAME, -soname FILENAME Set internal name of shared library -I PROGRAM, --dynamic-linker PROGRAM Set PROGRAM as the dynamic linker to use --no-dynamic-linker Produce an executable with no program interpreter header -l LIBNAME, --library LIBNAME Search for library LIBNAME -L DIRECTORY, --library-path DIRECTORY Add DIRECTORY to library search path --sysroot= Override the default sysroot location -m EMULATION Set emulation -M, --print-map Print map file on standard output -n, --nmagic Do not page align data -N, --omagic Do not page align data, do not make text readonly --no-omagic Page align data, make text readonly -o FILE, --output FILE Set output file name -O Optimize output file --out-implib FILE Generate import library -plugin PLUGIN Load named plugin -plugin-opt ARG Send arg to last-loaded plugin -flto Ignored for GCC LTO option compatibility -flto-partition= Ignored for GCC LTO option compatibility -fuse-ld= Ignored for GCC linker option compatibility --map-whole-files Ignored for gold option compatibility --no-map-whole-files Ignored for gold option compatibility -Qy Ignored for SVR4 compatibility -q, --emit-relocs Generate relocations in final output -r, -i, --relocatable Generate relocatable output -R FILE, --just-symbols FILE Just link symbols (if directory, same as --rpath) -s, --strip-all Strip all symbols -S, --strip-debug Strip debugging symbols --strip-discarded Strip symbols in discarded sections --no-strip-discarded Do not strip symbols in discarded sections -t, --trace Trace file opens -T FILE, --script FILE Read linker script --default-script FILE, -dT Read default linker script -u SYMBOL, --undefined SYMBOL Start with undefined reference to SYMBOL --require-defined SYMBOL Require SYMBOL be defined in the final output --unique [=SECTION] Don't merge input [SECTION | orphan] sections -Ur Build global constructor/destructor tables -v, --version Print version information -V Print version and emulation information -x, --discard-all Discard all local symbols -X, --discard-locals Discard temporary local symbols (default) --discard-none Don't discard any local symbols -y SYMBOL, --trace-symbol SYMBOL Trace mentions of SYMBOL -Y PATH Default search path for Solaris compatibility -(, --start-group Start a group -), --end-group End a group --accept-unknown-input-arch Accept input files whose architecture cannot be determined --no-accept-unknown-input-arch Reject input files whose architecture is unknown --as-needed Only set DT_NEEDED for following dynamic libs if used --no-as-needed Always set DT_NEEDED for dynamic libraries mentioned on the command line -assert KEYWORD Ignored for SunOS compatibility -Bdynamic, -dy, -call_shared Link against shared libraries -Bstatic, -dn, -non_shared, -static Do not link against shared libraries -Bno-symbolic Don't bind global references locally -Bsymbolic Bind global references locally -Bsymbolic-functions Bind global function references locally --check-sections Check section addresses for overlaps (default) --no-check-sections Do not check section addresses for overlaps --copy-dt-needed-entries Copy DT_NEEDED links mentioned inside DSOs that follow --no-copy-dt-needed-entries Do not copy DT_NEEDED links mentioned inside DSOs that follow --cref Output cross reference table --defsym SYMBOL=EXPRESSION Define a symbol --demangle [=STYLE] Demangle symbol names [using STYLE] --disable-multiple-abs-defs Do not allow multiple definitions with symbols included in filename invoked by -R or --just-symbols --embedded-relocs Generate embedded relocs --fatal-warnings Treat warnings as errors --no-fatal-warnings Do not treat warnings as errors (default) -fini SYMBOL Call SYMBOL at unload-time --force-exe-suffix Force generation of file with .exe suffix --gc-sections Remove unused sections (on some targets) --no-gc-sections Don't remove unused sections (default) --print-gc-sections List removed unused sections on stderr --no-print-gc-sections Do not list removed unused sections --gc-keep-exported Keep exported symbols when removing unused sections --hash-size= Set default hash table size close to --help Print option help -init SYMBOL Call SYMBOL at load-time -Map FILE/DIR Write a linker map to FILE or DIR/.map --no-define-common Do not define Common storage --no-demangle Do not demangle symbol names --no-keep-memory Use less memory and more disk I/O --no-undefined Do not allow unresolved references in object files --allow-shlib-undefined Allow unresolved references in shared libraries --no-allow-shlib-undefined Do not allow unresolved references in shared libs --allow-multiple-definition Allow multiple definitions --error-handling-script SCRIPT Provide a script to help with undefined symbol errors --no-undefined-version Disallow undefined version --default-symver Create default symbol version --default-imported-symver Create default symbol version for imported symbols --no-warn-mismatch Don't warn about mismatched input files --no-warn-search-mismatch Don't warn on finding an incompatible library --no-whole-archive Turn off --whole-archive --noinhibit-exec Create an output file even if errors occur -nostdlib Only use library directories specified on the command line --oformat TARGET Specify target of output file --print-output-format Print default output format --print-sysroot Print current sysroot -qmagic Ignored for Linux compatibility --reduce-memory-overheads Reduce memory overheads, possibly taking much longer --max-cache-size=SIZE Set the maximum cache size to SIZE bytes --relax Reduce code size by using target specific optimizations --no-relax Do not use relaxation techniques to reduce code size --retain-symbols-file FILE Keep only symbols listed in FILE -rpath PATH Set runtime shared library search path -rpath-link PATH Set link time shared library search path -shared, -Bshareable Create a shared library -pie, --pic-executable Create a position independent executable -no-pie Create a position dependent executable (default) --sort-common [=ascending|descending] Sort common symbols by alignment [in specified order] --sort-section name|alignment Sort sections by name or maximum alignment --spare-dynamic-tags COUNT How many tags to reserve in .dynamic section --split-by-file [=SIZE] Split output sections every SIZE octets --split-by-reloc [=COUNT] Split output sections every COUNT relocs --stats Print memory usage statistics --target-help Display target specific options --task-link SYMBOL Do task level linking --traditional-format Use same format as native linker --section-start SECTION=ADDRESS Set address of named section -Tbss ADDRESS Set address of .bss section -Tdata ADDRESS Set address of .data section -Ttext ADDRESS Set address of .text section -Ttext-segment ADDRESS Set address of text segment -Trodata-segment ADDRESS Set address of rodata segment -Tldata-segment ADDRESS Set address of ldata segment --unresolved-symbols= How to handle unresolved symbols. is: ignore-all, report-all, ignore-in-object-files, ignore-in-shared-libs --verbose [=NUMBER] Output lots of information during link --version-script FILE Read version information script --version-exports-section SYMBOL Take export symbols list from .exports, using SYMBOL as the version. --dynamic-list-data Add data symbols to dynamic list --dynamic-list-cpp-new Use C++ operator new/delete dynamic list --dynamic-list-cpp-typeinfo Use C++ typeinfo dynamic list --dynamic-list FILE Read dynamic list --export-dynamic-symbol SYMBOL Export the specified symbol --export-dynamic-symbol-list FILE Read export dynamic symbol list --warn-common Warn about duplicate common symbols --warn-constructors Warn if global constructors/destructors are seen --warn-execstack Warn when creating an executable stack --no-warn-execstack Do not warn when creating an executable stack --warn-rwx-segments Warn when creating executable segments --no-warn-rwx-segments Do not warn when creating executable segments --warn-multiple-gp Warn if the multiple GP values are used --warn-once Warn only once per undefined symbol --warn-section-align Warn if start of section changes due to alignment --warn-textrel Warn if output has DT_TEXTREL (default) --warn-alternate-em Warn if an object has alternate ELF machine code --warn-unresolved-symbols Report unresolved symbols as warnings --error-unresolved-symbols Report unresolved symbols as errors --whole-archive Include all objects from following archives --wrap SYMBOL Use wrapper functions for SYMBOL --ignore-unresolved-symbol SYMBOL Unresolved SYMBOL will not cause an error or warning --push-state Push state of flags governing input file handling --pop-state Pop state of flags governing input file handling --print-memory-usage Report target memory usage --orphan-handling =MODE Control how orphan sections are handled. --print-map-discarded Show discarded sections in map file output (default) --no-print-map-discarded Do not show discarded sections in map file output --ctf-variables Emit names and types of static variables in CTF --no-ctf-variables Do not emit names and types of static variables in CTF --ctf-share-types= How to share CTF types between translation units. is: share-unconflicted (default), share-duplicated @FILE Read options from FILE /usr/bin/ld: supported targets: elf64-x86-64 elf32-i386 elf32-iamcu elf32-x86-64 pei-i386 pe-x86-64 pei-x86-64 elf64-little elf64-big elf32-little elf32-big pe-bigobj-x86-64 pe-i386 srec symbolsrec verilog tekhex binary ihex plugin /usr/bin/ld: supported emulations: elf_x86_64 elf32_x86_64 elf_i386 elf_iamcu i386pep i386pe /usr/bin/ld: emulation specific options: ELF emulations: --ld-generated-unwind-info Generate exception handling info for PLT --no-ld-generated-unwind-info Don't generate exception handling info for PLT --build-id[=STYLE] Generate build ID note --package-metadata[=JSON] Generate package metadata note --compress-debug-sections=[none|zlib|zlib-gnu|zlib-gabi] Compress DWARF debug sections using zlib Default: none -z common-page-size=SIZE Set common page size to SIZE -z max-page-size=SIZE Set maximum page size to SIZE -z defs Report unresolved symbols in object files -z undefs Ignore unresolved symbols in object files -z muldefs Allow multiple definitions -z stack-size=SIZE Set size of stack segment -z execstack Mark executable as requiring executable stack -z noexecstack Mark executable as not requiring executable stack --warn-execstack Generate a warning if the stack is executable --no-warn-execstack Do not generate a warning if the stack is executable --warn-rwx-segments Generate a warning if a LOAD segment has RWX permissions (default) --no-warn-rwx-segments Do not generate a warning if a LOAD segments has RWX permissions -z unique-symbol Avoid duplicated local symbol names -z nounique-symbol Keep duplicated local symbol names (default) -z globalaudit Mark executable requiring global auditing -z start-stop-gc Enable garbage collection on __start/__stop -z nostart-stop-gc Don't garbage collect __start/__stop (default) -z start-stop-visibility=V Set visibility of built-in __start/__stop symbols to DEFAULT, PROTECTED, HIDDEN or INTERNAL --audit=AUDITLIB Specify a library to use for auditing -Bgroup Selects group name lookup rules for DSO --disable-new-dtags Disable new dynamic tags --enable-new-dtags Enable new dynamic tags --eh-frame-hdr Create .eh_frame_hdr section --no-eh-frame-hdr Do not create .eh_frame_hdr section --exclude-libs=LIBS Make all symbols in LIBS hidden --hash-style=STYLE Set hash style to sysv/gnu/both. Default: both -P AUDITLIB, --depaudit=AUDITLIB Specify a library to use for auditing dependencies -z combreloc Merge dynamic relocs into one section and sort -z nocombreloc Don't merge dynamic relocs into one section -z global Make symbols in DSO available for subsequently loaded objects -z initfirst Mark DSO to be initialized first at runtime -z interpose Mark object to interpose all DSOs but executable -z unique Mark DSO to be loaded at most once by default, and only in the main namespace -z nounique Don't mark DSO as a loadable at most once -z lazy Mark object lazy runtime binding (default) -z loadfltr Mark object requiring immediate process -z nocopyreloc Don't create copy relocs -z nodefaultlib Mark object not to use default search paths -z nodelete Mark DSO non-deletable at runtime -z nodlopen Mark DSO not available to dlopen -z nodump Mark DSO not available to dldump -z now Mark object non-lazy runtime binding -z origin Mark object requiring immediate $ORIGIN processing at runtime -z relro Create RELRO program header (default) -z norelro Don't create RELRO program header -z separate-code Create separate code program header (default) -z noseparate-code Don't create separate code program header -z common Generate common symbols with STT_COMMON type -z nocommon Generate common symbols with STT_OBJECT type -z text Treat DT_TEXTREL in output as error -z notext Don't treat DT_TEXTREL in output as error -z textoff Don't treat DT_TEXTREL in output as error elf_x86_64: -z noextern-protected-data Do not treat protected data symbol as external -z indirect-extern-access Enable indirect external access -z noindirect-extern-access Disable indirect external access (default) -z dynamic-undefined-weak Make undefined weak symbols dynamic -z nodynamic-undefined-weak Do not make undefined weak symbols dynamic -z noreloc-overflow Disable relocation overflow check -z call-nop=PADDING Use PADDING as 1-byte NOP for branch -z ibtplt Generate IBT-enabled PLT entries -z ibt Generate GNU_PROPERTY_X86_FEATURE_1_IBT -z shstk Generate GNU_PROPERTY_X86_FEATURE_1_SHSTK -z cet-report=[none|warning|error] (default: none) Report missing IBT and SHSTK properties -z report-relative-reloc Report relative relocations -z x86-64-{baseline|v[234]} Mark x86-64-{baseline|v[234]} ISA level as needed -z lam-u48 Generate GNU_PROPERTY_X86_FEATURE_1_LAM_U48 -z lam-u48-report=[none|warning|error] (default: none) Report missing LAM_U48 property -z lam-u57 Generate GNU_PROPERTY_X86_FEATURE_1_LAM_U57 -z lam-u57-report=[none|warning|error] (default: none) Report missing LAM_U57 property -z lam-report=[none|warning|error] (default: none) Report missing LAM_U48 and LAM_U57 properties -z pack-relative-relocs Pack relative relocations -z nopack-relative-relocs Do not pack relative relocations (default) -z bndplt Always generate BND prefix in PLT entries elf32_x86_64: -z noextern-protected-data Do not treat protected data symbol as external -z indirect-extern-access Enable indirect external access -z noindirect-extern-access Disable indirect external access (default) -z dynamic-undefined-weak Make undefined weak symbols dynamic -z nodynamic-undefined-weak Do not make undefined weak symbols dynamic -z noreloc-overflow Disable relocation overflow check -z call-nop=PADDING Use PADDING as 1-byte NOP for branch -z ibtplt Generate IBT-enabled PLT entries -z ibt Generate GNU_PROPERTY_X86_FEATURE_1_IBT -z shstk Generate GNU_PROPERTY_X86_FEATURE_1_SHSTK -z cet-report=[none|warning|error] (default: none) Report missing IBT and SHSTK properties -z report-relative-reloc Report relative relocations -z x86-64-{baseline|v[234]} Mark x86-64-{baseline|v[234]} ISA level as needed -z pack-relative-relocs Pack relative relocations -z nopack-relative-relocs Do not pack relative relocations (default) elf_i386: -z noextern-protected-data Do not treat protected data symbol as external -z indirect-extern-access Enable indirect external access -z noindirect-extern-access Disable indirect external access (default) -z dynamic-undefined-weak Make undefined weak symbols dynamic -z nodynamic-undefined-weak Do not make undefined weak symbols dynamic -z call-nop=PADDING Use PADDING as 1-byte NOP for branch -z ibtplt Generate IBT-enabled PLT entries -z ibt Generate GNU_PROPERTY_X86_FEATURE_1_IBT -z shstk Generate GNU_PROPERTY_X86_FEATURE_1_SHSTK -z cet-report=[none|warning|error] (default: none) Report missing IBT and SHSTK properties -z report-relative-reloc Report relative relocations -z x86-64-{baseline|v[234]} Mark x86-64-{baseline|v[234]} ISA level as needed -z pack-relative-relocs Pack relative relocations -z nopack-relative-relocs Do not pack relative relocations (default) elf_iamcu: -z noextern-protected-data Do not treat protected data symbol as external -z indirect-extern-access Enable indirect external access -z noindirect-extern-access Disable indirect external access (default) -z dynamic-undefined-weak Make undefined weak symbols dynamic -z nodynamic-undefined-weak Do not make undefined weak symbols dynamic -z call-nop=PADDING Use PADDING as 1-byte NOP for branch i386pep: --base_file Generate a base file for relocatable DLLs --dll Set image base to the default for DLLs --file-alignment Set file alignment --heap Set initial size of the heap --image-base
Set start address of the executable --major-image-version Set version number of the executable --major-os-version Set minimum required OS version --major-subsystem-version Set minimum required OS subsystem version --minor-image-version Set revision number of the executable --minor-os-version Set minimum required OS revision --minor-subsystem-version Set minimum required OS subsystem revision --section-alignment Set section alignment --stack Set size of the initial stack --subsystem [:] Set required OS subsystem [& version] --support-old-code Support interworking with old code --[no-]leading-underscore Set explicit symbol underscore prefix mode --[no-]insert-timestamp Use a real timestamp rather than zero (default) This makes binaries non-deterministic --add-stdcall-alias Export symbols with and without @nn --disable-stdcall-fixup Don't link _sym to _sym@nn --enable-stdcall-fixup Link _sym to _sym@nn without warnings --exclude-symbols sym,sym,... Exclude symbols from automatic export --exclude-all-symbols Exclude all symbols from automatic export --exclude-libs lib,lib,... Exclude libraries from automatic export --exclude-modules-for-implib mod,mod,... Exclude objects, archive members from auto export, place into import library instead --export-all-symbols Automatically export all globals to DLL --kill-at Remove @nn from exported symbols --output-def Generate a .DEF file for the built DLL --warn-duplicate-exports Warn about duplicate exports --compat-implib Create backward compatible import libs; create __imp_ as well --enable-auto-image-base Automatically choose image base for DLLs unless user specifies one --disable-auto-image-base Do not auto-choose image base (default) --dll-search-prefix= When linking dynamically to a dll without an importlib, use .dll in preference to lib.dll --enable-auto-import Do sophisticated linking of _sym to __imp_sym for DATA references --disable-auto-import Do not auto-import DATA items from DLLs --enable-runtime-pseudo-reloc Work around auto-import limitations by adding pseudo-relocations resolved at runtime --disable-runtime-pseudo-reloc Do not add runtime pseudo-relocations for auto-imported DATA --enable-extra-pep-debug Enable verbose debug output when building or linking to DLLs (esp. auto-import) --enable-long-section-names Use long COFF section names even in executable image files --disable-long-section-names Never use long COFF section names, even in object files --[disable-]high-entropy-va Image is compatible with 64-bit address space layout randomization (ASLR) --[disable-]dynamicbase Image base address may be relocated using address space layout randomization (ASLR) --enable-reloc-section Create the base relocation table --disable-reloc-section Do not create the base relocation table --[disable-]forceinteg Code integrity checks are enforced --[disable-]nxcompat Image is compatible with data execution prevention --[disable-]no-isolation Image understands isolation but do not isolate the image --[disable-]no-seh Image does not use SEH; no SE handler may be called in this image --[disable-]no-bind Do not bind this image --[disable-]wdmdriver Driver uses the WDM model --[disable-]tsaware Image is Terminal Server aware --build-id[=STYLE] Generate build ID i386pe: --base_file Generate a base file for relocatable DLLs --dll Set image base to the default for DLLs --file-alignment Set file alignment --heap Set initial size of the heap --image-base
Set start address of the executable --major-image-version Set version number of the executable --major-os-version Set minimum required OS version --major-subsystem-version Set minimum required OS subsystem version --minor-image-version Set revision number of the executable --minor-os-version Set minimum required OS revision --minor-subsystem-version Set minimum required OS subsystem revision --section-alignment Set section alignment --stack Set size of the initial stack --subsystem [:] Set required OS subsystem [& version] --support-old-code Support interworking with old code --[no-]leading-underscore Set explicit symbol underscore prefix mode --thumb-entry= Set the entry point to be Thumb --[no-]insert-timestamp Use a real timestamp rather than zero (default). This makes binaries non-deterministic --add-stdcall-alias Export symbols with and without @nn --disable-stdcall-fixup Don't link _sym to _sym@nn --enable-stdcall-fixup Link _sym to _sym@nn without warnings --exclude-symbols sym,sym,... Exclude symbols from automatic export --exclude-all-symbols Exclude all symbols from automatic export --exclude-libs lib,lib,... Exclude libraries from automatic export --exclude-modules-for-implib mod,mod,... Exclude objects, archive members from auto export, place into import library instead. --export-all-symbols Automatically export all globals to DLL --kill-at Remove @nn from exported symbols --output-def Generate a .DEF file for the built DLL --warn-duplicate-exports Warn about duplicate exports --compat-implib Create backward compatible import libs; create __imp_ as well. --enable-auto-image-base[=
] Automatically choose image base for DLLs (optionally starting with address) unless specifically set with --image-base --disable-auto-image-base Do not auto-choose image base. (default) --dll-search-prefix= When linking dynamically to a dll without an importlib, use .dll in preference to lib.dll --enable-auto-import Do sophisticated linking of _sym to __imp_sym for DATA references --disable-auto-import Do not auto-import DATA items from DLLs --enable-runtime-pseudo-reloc Work around auto-import limitations by adding pseudo-relocations resolved at runtime. --disable-runtime-pseudo-reloc Do not add runtime pseudo-relocations for auto-imported DATA. --enable-extra-pe-debug Enable verbose debug output when building or linking to DLLs (esp. auto-import) --large-address-aware Executable supports virtual addresses greater than 2 gigabytes --disable-large-address-aware Executable does not support virtual addresses greater than 2 gigabytes --enable-long-section-names Use long COFF section names even in executable image files --disable-long-section-names Never use long COFF section names, even in object files --[disable-]dynamicbase Image base address may be relocated using address space layout randomization (ASLR) --enable-reloc-section Create the base relocation table --disable-reloc-section Do not create the base relocation table --[disable-]forceinteg Code integrity checks are enforced --[disable-]nxcompat Image is compatible with data execution prevention --[disable-]no-isolation Image understands isolation but do not isolate the image --[disable-]no-seh Image does not use SEH. No SE handler may be called in this image --[disable-]no-bind Do not bind this image --[disable-]wdmdriver Driver uses the WDM model --[disable-]tsaware Image is Terminal Server aware --build-id[=STYLE] Generate build ID Report bugs to https://sourceware.org/bugzilla