OS Manuals

/usr/bin/g++

the GNU compiler collection

From gcc 16.2.0-r3 (os), captured 2026-11-10 by running g++ --help (exit 0). permalink

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.
  (Use '-v --help' to display command line options of sub-processes).
  --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=<targets>      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=<lib>   Display the full path to library <lib>.
  -print-prog-name=<prog>  Display the full path to compiler component <prog>.
  -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,<options>            Pass comma-separated <options> on to the assembler.
  -Wp,<options>            Pass comma-separated <options> on to the preprocessor.
  -Wl,<options>            Pass comma-separated <options> on to the linker.
  -Xassembler <arg>        Pass <arg> on to the assembler.
  -Xpreprocessor <arg>     Pass <arg> on to the preprocessor.
  -Xlinker <arg>           Pass <arg> on to the linker.
  -save-temps              Do not delete intermediate files.
  -save-temps=<arg>        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=<file>            Override built-in specs with the contents of <file>.
  -std=<standard>          Assume that the input sources are for <standard>.
  --sysroot=<directory>    Use <directory> as the root directory for headers
                           and libraries.
  -B <directory>           Add <directory> 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 <file>                Place the output into <file>.
  -pie                     Create a dynamically linked position independent
                           executable.
  -shared                  Create a shared library.
  -x <language>            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<letter> options must be used.

For bug reporting instructions, please see:
<https://gcc.gnu.org/bugs/>.
Options (624)
OptionDescriptionSource
-pass-exit-codesExit with highest error code from a phase.help + man
--helpPrint (on the standard output) a description of the command-line options understood by gcc.help + man
--target-helpPrint (on the standard output) a description of target-specific command-line options for each tool.help + man
--versionDisplay the version number and copyrights of the invoked GCC.help + man
-dumpspecsDisplay all of the built in spec strings.help
-dumpversionDisplay the version of the compiler.help
-dumpmachineDisplay the compiler's target processor.help
-foffload targetsDiagnostic Message Formatting Optionshelp + man
-print-search-dirsDisplay the directories in the compiler's search path.help
-print-libgcc-file-nameDisplay the name of the compiler's companion library.help
-print-file-name libDisplay the full path to library <lib>.help
-print-prog-name progDisplay the full path to compiler component <prog>.help
-print-multiarchDisplay the target's normalized GNU triplet, used as a component in the library path.help
-print-multi-directoryDisplay the root directory for versions of libgcc.help
-print-multi-libDisplay the mapping between command line options and multiple library search directories.help
-print-sysrootDisplay the target libraries directory.help
-WaPass comma-separated <options> on to the assembler.help + man
-WpPass comma-separated <options> on to the preprocessor.help
-WlPass comma-separated <options> on to the linker.help
-Xassembler argPass <arg> on to the assembler.help
-Xpreprocessor argPass <arg> on to the preprocessor.help
-Xlinker argPass <arg> on to the linker.help
-save-tempsDo not delete intermediate files.help
-no-canonical-prefixesDo not canonicalize paths when building relative prefixes to other gcc components.help
-pipeUse pipes rather than intermediate files.help + man
-timeTime the execution of each subprocess.help
-specs fileOverride built-in specs with the contents of <file>.help
-std standardAssume that the input sources are for <standard>.help + man
--sysroot directoryUse <directory> as the root directory for headers and libraries.help
-B directoryAdd <directory> to the compiler's search paths.help
-vDisplay the programs invoked by the compiler.help + man
-###Like -v except the commands are not executed and arguments are quoted unless they contain only alphanumeric characters or "./-_".help + man
-EPreprocess only;help + man
-SCompile only;help + man
-cCompile and assemble, but do not link.help + man
-o filePlace the output into <file>.help + man
-pieCreate a dynamically linked position independent executable.help
-sharedCreate a shared library.help
-x languageSpecify the language of the following input files.help + man
--language language (in the manual page but not in --help)man
--compileCompile or assemble the source files, but do not link. (in the manual page but not in --help)man
--assembleStop after the stage of compilation proper; (in the manual page but not in --help)man
--preprocessStop after the preprocessing stage; (in the manual page but not in --help)man
--output file (in the manual page but not in --help)man
-dumpbase dumpbase (in the manual page but not in --help)man
--dumpbase dumpbaseThis option sets the base name for auxiliary and dump output files. (in the manual page but not in --help)man
-dumpbase-ext auxdropsuf (in the manual page but not in --help)man
--dumpbase-ext auxdropsufWhen forming the name of an auxiliary (but not a dump) output file, drop trailing auxdropsuf from dumpbase before appending any suffixes. (in the manual page but not in --help)man
-dumpdir dumppfx (in the manual page but not in --help)man
--dumpdir dumppfxWhen forming the name of an auxiliary or dump output file, use dumppfx as a prefix: (in the manual page but not in --help)man
--verbosePrint (on standard error output) the commands executed to run the stages of compilation. (in the manual page but not in --help)man
--pass-exit-codesNormally the gcc program exits with the code of 1 if any phase of the compiler returns a non-success return code. (in the manual page but not in --help)man
--pipeUse pipes rather than temporary files for communication between the various stages of compilation. (in the manual page but not in --help)man
-wrapperInvoke all subcommands under a wrapper program. (in the manual page but not in --help)man
-ffile-prefix-map old=newWhen compiling files residing in directory old, record any references to them in the result of the compilation as if the files resided in directory new instead. (in the manual page but not in --help)man
-fcanon-prefix-mapFor the -f-prefix-map options normally comparison of old prefix against the filename that would be normally referenced in the result of the compilation is done using textual comparison of the… (in the manual page but not in --help)man
-fplugin name.soLoad the plugin code in file name.so, assumed to be a shared object to be dlopen'd by the compiler. (in the manual page but not in --help)man
-fplugin-arg-name-key valueDefine an argument called key with a value of value for the plugin called name. (in the manual page but not in --help)man
-fada-spec-parent unitIn conjunction with -fdump-ada-spec[-slim] above, generate Ada specs as child units of parent unit. (in the manual page but not in --help)man
-fdump-go-spec fileFor input files in any language, generate corresponding Go declarations in file. (in the manual page but not in --help)man
-ansi (in the manual page but not in --help)man
--ansiIn C mode, this is equivalent to -std=c90. (in the manual page but not in --help)man
-aux-info filenameOutput to the given filename prototyped declarations for all functions declared and/or defined in a translation unit, including those in header files. (in the manual page but not in --help)man
-fno-asmDo not recognize "asm", "inline" or "typeof" as a keyword, so that code can use these words as identifiers. (in the manual page but not in --help)man
-fno-builtin (in the manual page but not in --help)man
-fno-builtin-functionDon't recognize built-in functions that do not begin with __builtin_ as prefix. (in the manual page but not in --help)man
-fcond-mismatchAllow conditional expressions with mismatched types in the second and third arguments. (in the manual page but not in --help)man
-ffreestandingAssert that compilation targets a freestanding environment. (in the manual page but not in --help)man
-fgimpleEnable parsing of function definitions marked with "__GIMPLE". (in the manual page but not in --help)man
-fgnu-tmWhen the option -fgnu-tm is specified, the compiler generates code for the Linux variant of Intel's current Transactional Memory ABI specification document (Revision 1.1, May 6 2009). (in the manual page but not in --help)man
-fgnu89-inlineThe option -fgnu89-inline tells GCC to use the traditional GNU semantics for "inline" functions when in C99 mode. (in the manual page but not in --help)man
-fhostedAssert that compilation targets a hosted environment. (in the manual page but not in --help)man
-flax-vector-conversionsAllow implicit conversions between vectors with differing numbers of elements and/or incompatible element types. (in the manual page but not in --help)man
-fms-extensionsAccept some non-standard constructs used in Microsoft header files. (in the manual page but not in --help)man
-fpermitted-flt-eval-methods styleISO/IEC TS 18661-3 defines new permissible values for "FLT_EVAL_METHOD" that indicate that operations and constants with a semantic type that is an interchange or extended format should be evaluated… (in the manual page but not in --help)man
-fdeps-file fileWhere to write structured dependency information. (in the manual page but not in --help)man
-fdeps-format formatThe format to use for structured dependency information. (in the manual page but not in --help)man
-fdeps-target fileAnalogous to -MT but for structured dependency information. (in the manual page but not in --help)man
-fplan9-extensionsAccept some non-standard constructs used in Plan 9 code. (in the manual page but not in --help)man
-fsigned-bitfields (in the manual page but not in --help)man
-funsigned-bitfields (in the manual page but not in --help)man
-fno-signed-bitfields (in the manual page but not in --help)man
-fno-unsigned-bitfieldsThese options control whether a bit-field is signed or unsigned, when the declaration does not use either "signed" or "unsigned". (in the manual page but not in --help)man
-fsigned-char (in the manual page but not in --help)man
-funsigned-char (in the manual page but not in --help)man
-fstrict-flex-arrays (C (in the manual page but not in --help)man
-fsso-struct endiannessSet the default scalar storage order of structures and unions to the specified endianness. (in the manual page but not in --help)man
--compile-std-moduleBuild the compiled module interfaces for the <bits/stdc++.h> header unit and the std and std.compat modules before compiling any source files explicitly specified on the command line. (in the manual page but not in --help)man
-fabi-version nUse version n of the C++ ABI. (in the manual page but not in --help)man
-fabi-compat-version nOn targets that support strong aliases, G++ works around mangling changes by creating an alias with the correct mangled name when defining a symbol with an incorrect mangled name. (in the manual page but not in --help)man
-fno-access-controlTurn off all access checking. (in the manual page but not in --help)man
-faligned-new (in the manual page but not in --help)man
-fno-assume-sane-operators-newThe C++ standard allows replacing the global "new", "new[]", "delete" and "delete[]" operators, though a lot of C++ programs don't replace them and just use the implementation provided version. (in the manual page but not in --help)man
-fchar8_t (in the manual page but not in --help)man
-fno-char8_tEnable support for "char8_t" as adopted for C++20. (in the manual page but not in --help)man
-fcheck-newCheck that the pointer returned by "operator new" is non-null before attempting to modify the storage allocated. (in the manual page but not in --help)man
-fconceptsEnable support for the C++ Concepts feature for constraining template arguments. (in the manual page but not in --help)man
-fconcepts-diagnostics-depth nSpecify maximum error replay depth during recursive diagnosis of a constraint satisfaction failure. (in the manual page but not in --help)man
-fconstexpr-depth nSet the maximum nested evaluation depth for C++11 constexpr functions to n. (in the manual page but not in --help)man
-fconstexpr-cache-depth nSet the maximum level of nested evaluation depth for C++11 constexpr functions that will be cached to n. (in the manual page but not in --help)man
-fconstexpr-fp-exceptAnnex F of the C standard specifies that IEC559 floating point exceptions encountered at compile time should not stop compilation. (in the manual page but not in --help)man
-fconstexpr-loop-limit nSet the maximum number of iterations for a loop in C++14 constexpr functions to n. (in the manual page but not in --help)man
-fconstexpr-ops-limit nSet the maximum number of operations during a single constexpr evaluation. (in the manual page but not in --help)man
-fcontractsEnable support for the C++ Contracts feature, as specified in the C++26 working draft (N5003). (in the manual page but not in --help)man
-fcontract-evaluation-semantic semanticSet the semantic with which contracts will be evaluated to semantic. (in the manual page but not in --help)man
-fcontracts-conservative-ipaThis prevents inter-procedural analysis from taking action when the body of an inline function is visible in a given TU. (in the manual page but not in --help)man
-fcontract-checks-outlinedBy default, contract checks for "pre" and "post" condition checks are expanded in-line into function bodies. (in the manual page but not in --help)man
-fcontract-disable-optimized-checksWhen "pre" and "post" condition checks are outlined (using -fcontract-checks-outlined), this option disables the optimisation steps for those functions which can avoid unwanted elision of checking… (in the manual page but not in --help)man
-fcontracts-client-check modeThis option enables insertion of checks at call sites (caller-side checking). (in the manual page but not in --help)man
-fcontracts-definition-check modeThis option introduces the ability to disable callee/definition-side checks, which are otherwise enabled by default when the contracts feature is active. (in the manual page but not in --help)man
-fcoroutinesEnable support for the C++ coroutines extension. (in the manual page but not in --help)man
-fdiagnostics-all-candidatesPermit the C++ front end to note all candidates during overload resolution failure, including when a deleted function is selected. (in the manual page but not in --help)man
-fdump-lang- (in the manual page but not in --help)man
-fdump-lang-switch (in the manual page but not in --help)man
-fdump-lang-switch-options (in the manual page but not in --help)man
-fno-elide-constructorsThe C++ standard allows an implementation to omit creating a temporary that is only used to initialize another object of the same type. (in the manual page but not in --help)man
-fno-enforce-eh-specsDon't generate code to check for violation of exception specifications at run time. (in the manual page but not in --help)man
-fextern-tls-init (in the manual page but not in --help)man
-fno-extern-tls-initThe C++11 and OpenMP standards allow "thread_local" and "threadprivate" variables to have dynamic (runtime) initialization. (in the manual page but not in --help)man
-ffold-simple-inlines (in the manual page but not in --help)man
-fno-fold-simple-inlinesPermit the C++ frontend to fold calls to "std::move", "std::forward", "std::addressof", "std::to_underlying" and "std::as_const". (in the manual page but not in --help)man
-fno-gnu-keywordsDo not recognize "typeof" as a keyword, so that code can use this word as an identifier. (in the manual page but not in --help)man
-fno-immediate-escalationDo not enable immediate function escalation whereby certain functions can be promoted to consteval, as specified in P2564R3. (in the manual page but not in --help)man
-fimplicit-constexprMake inline functions implicitly constexpr, if they satisfy the requirements for a constexpr function. (in the manual page but not in --help)man
-fno-implicit-templatesNever emit code for non-inline templates that are instantiated implicitly (i.e. by use); (in the manual page but not in --help)man
-fno-implicit-inline-templatesDon't emit code for implicit instantiations of inline templates, either. (in the manual page but not in --help)man
-fno-implement-inlinesTo save space, do not emit out-of-line copies of inline functions controlled by "#pragma implementation". (in the manual page but not in --help)man
-fmodules (in the manual page but not in --help)man
-fno-modulesEnable support for C++20 modules. (in the manual page but not in --help)man
-fmodule-header (in the manual page but not in --help)man
-fmodule-implicit-inlineMember functions defined in their class definitions are not implicitly inline for modular code. (in the manual page but not in --help)man
-fno-module-lazyDisable lazy module importing and module mapper creation. (in the manual page but not in --help)man
-fmodule-onlyOnly emit the Compiled Module Interface, inhibiting any object file. (in the manual page but not in --help)man
-fnew-inheriting-ctorsEnable the P0136 adjustment to the semantics of C++11 constructor inheritance. (in the manual page but not in --help)man
-fnew-ttp-matchingEnable the P0522 resolution to Core issue 150, template template parameters and default arguments: this allows a template with default template arguments as an argument for a template template… (in the manual page but not in --help)man
-fno-nonansi-builtinsDisable built-in declarations of functions that are not mandated by ANSI/ISO C. (in the manual page but not in --help)man
-fnothrow-optTreat a throw() exception specification as if it were a "noexcept" specification to reduce or eliminate the text size overhead relative to a function with no exception specification. (in the manual page but not in --help)man
-fno-operator-namesDo not treat the operator name keywords "and", "bitand", "bitor", "compl", "not", "or" and "xor" as synonyms as keywords. (in the manual page but not in --help)man
-fno-optional-diagsDisable diagnostics that the standard says a compiler does not need to issue. (in the manual page but not in --help)man
-fno-pretty-templatesWhen an error message refers to a specialization of a function template, the compiler normally prints the signature of the template followed by the template arguments and any typedefs or typenames in… (in the manual page but not in --help)man
-frange-for-ext-tempsEnable lifetime extension of C++ range based for temporaries. (in the manual page but not in --help)man
-freflectionEnable experimental C++26 Reflection. (in the manual page but not in --help)man
-fno-rttiDisable generation of information about every class with virtual functions for use by the C++ run-time type identification features ("dynamic_cast" and "typeid"). (in the manual page but not in --help)man
-fsized-deallocationEnable the built-in global declarations (in the manual page but not in --help)man
-fstrict-enumsAllow the compiler to optimize using the assumption that a value of enumerated type can only be one of the values of the enumeration (as defined in the C++ standard; (in the manual page but not in --help)man
-fstrong-eval-order (in the manual page but not in --help)man
-ftemplate-backtrace-limit nSet the maximum number of template instantiation notes for a single warning or error to n. (in the manual page but not in --help)man
-ftemplate-depth nSet the maximum instantiation depth for template classes to n. (in the manual page but not in --help)man
-fno-threadsafe-staticsDo not emit the extra code to use the routines specified in the C++ ABI for thread-safe initialization of local statics. (in the manual page but not in --help)man
-fuse-cxa-atexitRegister destructors for objects with static storage duration with the "__cxa_atexit" function rather than the "atexit" function. (in the manual page but not in --help)man
-fno-use-cxa-get-exception-ptrDon't use the "__cxa_get_exception_ptr" runtime routine. (in the manual page but not in --help)man
-fvisibility-inlines-hiddenThis switch declares that the user does not attempt to compare pointers to inline functions or methods where the addresses of the two functions are taken in different shared objects. (in the manual page but not in --help)man
-fvisibility-ms-compatThis flag attempts to use visibility settings to make GCC's C++ linkage model compatible with that of Microsoft Visual Studio. (in the manual page but not in --help)man
-fno-weakDo not use weak symbol support, even if it is provided by the linker. (in the manual page but not in --help)man
-fext-numeric-literals (C++Accept imaginary, fixed-point, or machine-defined literal number suffixes as GNU extensions. (in the manual page but not in --help)man
-nostdinc++Do not search for header files in the standard directories specific to C++, but do still search the other standard directories. (in the manual page but not in --help)man
-flang-info-include-translate (in the manual page but not in --help)man
-flang-info-include-translate-not (in the manual page but not in --help)man
-flang-info-module-cmi (in the manual page but not in --help)man
-stdlib libstdc++When G++ is configured to support this option, it allows specification of alternate C++ runtime libraries. (in the manual page but not in --help)man
-Wabi-tag (C++Warn when a type with an ABI tag is used in a context that does not have that ABI tag. (in the manual page but not in --help)man
-Wno-abbreviated-auto-in-template-argDisable the error for an "auto" placeholder type used within a template argument list to declare a C++20 abbreviated function template, e.g. (in the manual page but not in --help)man
-Wcomma-subscript (C++Warn about uses of a comma expression within a subscripting expression. (in the manual page but not in --help)man
-Wctad-maybe-unsupported (C++Warn when performing class template argument deduction (CTAD) on a type with no explicitly written deduction guides. (in the manual page but not in --help)man
-Wctor-dtor-privacy (C++Warn when a class seems unusable because all the constructors or destructors in that class are private, and it has neither friends nor public static member functions. (in the manual page but not in --help)man
-Wdangling-reference (C++Warn when a reference is bound to a temporary whose lifetime has ended. (in the manual page but not in --help)man
-Wdelete-non-virtual-dtor (C++Warn when "delete" is used to destroy an instance of a class that has virtual functions and non-virtual destructor. (in the manual page but not in --help)man
-Wdeprecated-copy (C++Warn that the implicit declaration of a copy constructor or copy assignment operator is deprecated if the class has a user-provided copy constructor or copy assignment operator, in C++11 and up. (in the manual page but not in --help)man
-Wdeprecated-copy-dtor (C++Similar to -Wdeprecated-copy, but also deprecate if the class has a user-provided destructor. (in the manual page but not in --help)man
-Wno-deprecated-enum-enum-conversion (C++Disable the warning about the case when the usual arithmetic conversions are applied on operands where one is of enumeration type and the other is of a different enumeration type. (in the manual page but not in --help)man
-Wno-deprecated-enum-float-conversion (C++Disable the warning about the case when the usual arithmetic conversions are applied on operands where one is of enumeration type and the other is of a floating-point type. (in the manual page but not in --help)man
-Wdeprecated-literal-operator (C++Warn that the declaration of a user-defined literal operator with a space before the suffix is deprecated. (in the manual page but not in --help)man
-Wdeprecated-variadic-comma-omission (C++Warn that omitting a comma before the varargs "..." at the end of a function parameter list is deprecated. (in the manual page but not in --help)man
-Wno-elaborated-enum-baseFor C++11 and above, warn if an (invalid) additional enum-base is used in an elaborated-type-specifier. (in the manual page but not in --help)man
-Wno-init-list-lifetime (C++Do not warn about uses of "std::initializer_list" that are likely to result in dangling pointers. (in the manual page but not in --help)man
-Winvalid-constexprWarn when a function never produces a constant expression. (in the manual page but not in --help)man
-Winvalid-imported-macrosVerify all imported macro definitions are valid at the end of compilation. (in the manual page but not in --help)man
-Wno-literal-suffix (C++Do not warn when a string or character literal is followed by a ud-suffix which does not begin with an underscore. (in the manual page but not in --help)man
-Wno-narrowing (C++For C++11 and later standards, narrowing conversions are diagnosed by default, as required by the standard. (in the manual page but not in --help)man
-Wnoexcept (C++Warn when a noexcept-expression evaluates to false because of a call to a function that does not have a non-throwing exception specification (i.e. throw() or "noexcept") but is known by the compiler… (in the manual page but not in --help)man
-Wnoexcept-type (C++Warn if the C++17 feature making "noexcept" part of a function type changes the mangled name of a symbol relative to C++14. (in the manual page but not in --help)man
-Wclass-memaccess (C++Warn when the destination of a call to a raw memory function such as "memset" or "memcpy" is an object of class type, and when writing into such an object might bypass the class non-trivial or… (in the manual page but not in --help)man
-Wnon-virtual-dtor (C++Warn when a class has virtual functions and an accessible non-virtual destructor itself or in an accessible polymorphic base class, in which case it is possible but unsafe to delete an instance of a… (in the manual page but not in --help)man
-Wregister (C++Warn on uses of the "register" storage class specifier, except when it is part of the GNU Explicit Register Variables extension. (in the manual page but not in --help)man
-Wreorder (C++Warn when the order of member initializers given in the code does not match the order in which they must be executed. (in the manual page but not in --help)man
-Wno-pessimizing-move (C++This warning warns when a call to "std::move" prevents copy elision. (in the manual page but not in --help)man
-Wno-redundant-move (C++This warning warns about redundant calls to "std::move"; (in the manual page but not in --help)man
-Wrange-loop-construct (C++This warning warns when a C++ range-based for-loop is creating an unnecessary copy. (in the manual page but not in --help)man
-Wredundant-tags (C++Warn about redundant class-key and enum-key in references to class types and enumerated types in contexts where the key can be eliminated without causing an ambiguity. (in the manual page but not in --help)man
-Wno-subobject-linkage (C++Do not 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. (in the manual page but not in --help)man
-Weffc++ (C++Warn about violations of the following style guidelines from Scott Meyers' Effective C++ series of books: (in the manual page but not in --help)man
-Wno-exceptions (C++Disable the warning about the case when an exception handler is shadowed by another handler, which can point out a wrong ordering of exception handlers. (in the manual page but not in --help)man
-Wsfinae-incomplete (C++Warn about a class that is found to be incomplete, or a function with auto return type that has not yet been deduced, in a context where that causes substitution failure rather than an error, and… (in the manual page but not in --help)man
-Wstrict-null-sentinel (C++Warn about the use of an uncasted "NULL" as sentinel. (in the manual page but not in --help)man
-Wno-non-c-typedef-for-linkage (C++Disable pedwarn for unnamed classes with a typedef name for linkage purposes containing C++ specific members, base classes, default member initializers or lambda expressions, including those on… (in the manual page but not in --help)man
-Wno-non-template-friend (C++Disable warnings when non-template friend functions are declared within a template. (in the manual page but not in --help)man
-Wold-style-cast (C++Warn if an old-style (C-style) cast to a non-void type is used within a C++ program. (in the manual page but not in --help)man
-Woverloaded-virtual (C++ (in the manual page but not in --help)man
-Wno-pmf-conversions (C++Disable the diagnostic for converting a bound pointer to member function to a plain pointer. (in the manual page but not in --help)man
-Wsign-promo (C++Warn when overload resolution chooses a promotion from unsigned or enumerated type to a signed type, over a conversion to an unsigned type of the same size. (in the manual page but not in --help)man
-Wtemplates (C++Warn when a primary template declaration is encountered. (in the manual page but not in --help)man
-Wmismatched-new-delete (C++Warn for mismatches between calls to "operator new" or "operator delete" and the corresponding call to the allocation or deallocation function. (in the manual page but not in --help)man
-Wmismatched-tags (C++Warn for declarations of structs, classes, and class templates and their specializations with a class-key that does not match either the definition or the first declaration if no definition is… (in the manual page but not in --help)man
-Wmultiple-inheritance (C++Warn when a class is defined with multiple direct base classes. (in the manual page but not in --help)man
-Wvirtual-inheritanceWarn when a class is defined with a virtual direct base class. (in the manual page but not in --help)man
-Wno-virtual-move-assignSuppress warnings about inheriting from a virtual base with a non-trivial C++11 move assignment operator. (in the manual page but not in --help)man
-WnamespacesWarn when a namespace definition is opened. (in the manual page but not in --help)man
-Wno-template-body (C++Disable diagnosing errors when parsing a template, and instead issue an error only upon instantiation of the template. (in the manual page but not in --help)man
-Wno-template-id-cdtor (C++Disable the warning about the use of simple-template-id as the declarator-id of a constructor or destructor, which became invalid in C++20 via DR 2237. (in the manual page but not in --help)man
-Wtemplate-id-cdtor is (in the manual page but not in --help)man
-Wtemplate-names-tu-localWarn when a template body hides an exposure of a translation-unit-local entity. (in the manual page but not in --help)man
-Wno-expose-global-module-tu-localAn exposure of a translation-unit-local entity from a module interface is invalid, as this may cause ODR violations and manifest in link errors or other unexpected behaviour. (in the manual page but not in --help)man
-Wno-external-tu-localWarn when naming a TU-local entity outside of the translation unit it was declared in. (in the manual page but not in --help)man
-Wno-terminate (C++Disable the warning about a throw-expression that will immediately result in a call to "terminate". (in the manual page but not in --help)man
-Wno-vexing-parse (C++Warn about the most vexing parse syntactic ambiguity. (in the manual page but not in --help)man
-Wno-class-conversion (C++Do not warn when a conversion function converts an object to the same type, to a base class of that type, or to void; (in the manual page but not in --help)man
-Wvolatile (C++Warn about deprecated uses of the "volatile" qualifier. (in the manual page but not in --help)man
-Waligned-new[-Waligned-new=[none|global|all]](#Waligned~2) (in the manual page but not in --help)man
-Wno-placement-new (in the manual page but not in --help)man
-Wplacement-new nWarn about placement new expressions with undefined behavior, such as constructing an object in a buffer that is smaller than the type of the object. (in the manual page but not in --help)man
-Wcatch-value (in the manual page but not in --help)man
-Wconditionally-supported (C++Warn for conditionally-supported (C++11 [intro.defs]) constructs. (in the manual page but not in --help)man
-Wno-defaulted-function-deleted (C++Warn when an explicitly defaulted function is deleted by the compiler. (in the manual page but not in --help)man
-Wno-delete-incomplete (C++Do not warn when deleting a pointer to incomplete type, which may cause undefined behavior at runtime. (in the manual page but not in --help)man
-Wextra-semi (C++Warn about redundant semicolons. (in the manual page but not in --help)man
-Wno-global-module (C++Disable the diagnostic for when the global module fragment of a module unit does not consist only of preprocessor directives. (in the manual page but not in --help)man
-Wno-inaccessible-base (C++This option controls warnings when a base class is inaccessible in a class derived from it due to ambiguity. (in the manual page but not in --help)man
-Wno-inherited-variadic-ctorSuppress warnings about use of C++11 inheriting constructors when the base class inherited from has a C variadic constructor; (in the manual page but not in --help)man
-Wno-invalid-offsetof (C++Suppress warnings from applying the "offsetof" macro to a non-POD type. (in the manual page but not in --help)man
-Wsized-deallocation (C++Warn about a definition of an unsized deallocation function (in the manual page but not in --help)man
-Wsuggest-final-typesWarn about types with virtual methods where code quality would be improved if the type were declared with the C++11 "final" specifier, or, if possible, declared in an anonymous namespace. (in the manual page but not in --help)man
-Wsuggest-final-methodsWarn about virtual methods where code quality would be improved if the method were declared with the C++11 "final" specifier, or, if possible, its type were declared in an anonymous namespace or with… (in the manual page but not in --help)man
-Wsuggest-overrideWarn about overriding virtual functions that are not marked with the "override" keyword. (in the manual page but not in --help)man
-Wno-conversion-null (C++Do not warn for conversions between "NULL" and non-pointer types. (in the manual page but not in --help)man
-fconstant-string-class class-nameUse class-name as the name of the class to instantiate for each literal string specified with the syntax "@"..."". (in the manual page but not in --help)man
-fgnu-runtimeGenerate object code compatible with the standard GNU Objective-C runtime. (in the manual page but not in --help)man
-fnext-runtimeGenerate output compatible with the NeXT runtime. (in the manual page but not in --help)man
-fno-nil-receiversAssume that all Objective-C message dispatches ("[receiver message:arg]") in this translation unit ensure that the receiver is not "nil". (in the manual page but not in --help)man
-fobjc-abi-version nUse version n of the Objective-C ABI for the selected runtime. (in the manual page but not in --help)man
-fobjc-call-cxx-cdtorsFor each Objective-C class, check if any of its instance variables is a C++ object with a non-trivial default constructor. (in the manual page but not in --help)man
-fobjc-direct-dispatchAllow fast jumps to the message dispatcher. (in the manual page but not in --help)man
-fobjc-exceptionsEnable syntactic support for structured exception handling in Objective-C, similar to what is offered by C++. (in the manual page but not in --help)man
-fobjc-gcEnable garbage collection (GC) in Objective-C and Objective-C++ programs. (in the manual page but not in --help)man
-fobjc-nilcheckFor the NeXT runtime with version 2 of the ABI, check for a nil receiver in method invocations before doing the actual method call. (in the manual page but not in --help)man
-fobjc-std objc1Conform to the language syntax of Objective-C 1.0, the language recognized by GCC 4.0. (in the manual page but not in --help)man
-freplace-objc-classesEmit a special marker instructing ld(1) not to statically link in the resulting object file, and allow dyld(1) to load it in at run time instead. (in the manual page but not in --help)man
-fzero-linkWhen compiling for the NeXT runtime, the compiler ordinarily replaces calls to objc_getClass("...") (when the name of the class is known at compile time) with static class references that get… (in the manual page but not in --help)man
-fno-local-ivarsBy default instance variables in Objective-C can be accessed as if they were local variables from within the methods of the class they're declared in. (in the manual page but not in --help)man
-gen-declsDump interface declarations for all classes seen in the source file to a file named sourcename.decl. (in the manual page but not in --help)man
-Wassign-intercept (Objective-CWarn whenever an Objective-C assignment is being intercepted by the garbage collector. (in the manual page but not in --help)man
-Wno-property-assign-default (Objective-CDo not warn if a property for an Objective-C object has no assign semantics specified. (in the manual page but not in --help)man
-Wno-protocol (Objective-CIf a class is declared to implement a protocol, a warning is issued for every method in the protocol that is not implemented by the class. (in the manual page but not in --help)man
-Wobjc-root-class (Objective-CWarn if a class interface lacks a superclass. (in the manual page but not in --help)man
-Wselector (Objective-CWarn if multiple methods of different types for the same selector are found during compilation. (in the manual page but not in --help)man
-Wstrict-selector-match (Objective-CWarn if multiple methods with differing argument and/or return types are found for a given selector when attempting to send a message using this selector to a receiver of type "id" or "Class". (in the manual page but not in --help)man
-Wundeclared-selector (Objective-CWarn if a @selector(...) expression referring to an undeclared selector is found. (in the manual page but not in --help)man
-print-objc-runtime-infoGenerate C header describing the largest structure that is passed by value, if any. (in the manual page but not in --help)man
-foffload-options options (in the manual page but not in --help)man
-fopenaccEnable handling of OpenACC directives #pragma acc in C/C++ and !$acc in free-form Fortran and !$acc, c$acc and $acc in fixed-form Fortran. (in the manual page but not in --help)man
-fopenacc-dim geomSpecify default compute dimensions for parallel offload regions that do not explicitly specify them. (in the manual page but not in --help)man
-fopenmpEnable handling of OpenMP directives #pragma omp, [[omp::decl(...)]], [[omp::directive(...)]], and [[omp::sequence(...)]] in C/C++. (in the manual page but not in --help)man
-fopenmp-simdEnable handling of OpenMP's "simd", "declare simd", "declare reduction", "assume", "ordered", "scan" and "loop" directive, and of combined or composite directives with "simd" as constituent with… (in the manual page but not in --help)man
-fopenmp-target-simd-clone (in the manual page but not in --help)man
-fmessage-length nTry to format error messages so that they fit on lines of about n characters. (in the manual page but not in --help)man
-fdiagnostics-plain-outputThis option requests that diagnostic output look as plain as possible, which may be useful when running dejagnu or other utilities that need to parse diagnostics output and prefer that it remain more… (in the manual page but not in --help)man
-fdiagnostics-show-location onceOnly meaningful in line-wrapping mode. (in the manual page but not in --help)man
-fno-diagnostics-colorUse color in diagnostics. (in the manual page but not in --help)man
-fno-diagnostics-show-optionBy default, each diagnostic emitted includes text indicating the command-line option that directly controls the diagnostic (if such an option is known to the diagnostic machinery). (in the manual page but not in --help)man
-fno-diagnostics-show-caretBy default, each diagnostic emitted includes the original source line and a caret ^ indicating the column. (in the manual page but not in --help)man
-fno-diagnostics-show-labelsBy default, when printing source code (via -fdiagnostics-show-caret), diagnostics can label ranges of source code with pertinent information, such as the types of expressions: (in the manual page but not in --help)man
-fno-diagnostics-show-event-linksBy default, when printing execution paths (via -fdiagnostics-path-format=inline-events), GCC will print lines connecting related events, such as the line connecting events 1 and 2 in: (in the manual page but not in --help)man
-fno-diagnostics-show-cweDiagnostic messages can optionally have an associated CWE ("https://cwe.mitre.org/index.html") identifier. (in the manual page but not in --help)man
-fno-diagnostics-show-rulesDiagnostic messages can optionally have rules associated with them, such as from a coding standard, or a specification. (in the manual page but not in --help)man
-fno-diagnostics-show-highlight-colorsGCC can use color for emphasis and contrast when printing diagnostic messages and quoting the user's source. (in the manual page but not in --help)man
-fno-diagnostics-show-line-numbersBy default, when printing source code (via -fdiagnostics-show-caret), a left margin is printed, showing line numbers. (in the manual page but not in --help)man
-fdiagnostics-minimum-margin-width widthThis option controls the minimum width of the left margin printed by -fdiagnostics-show-line-numbers. (in the manual page but not in --help)man
-fno-diagnostics-show-contextWith this option, the compiler might print the interesting control flow chain that guards the basic block of the statement which has the warning. (in the manual page but not in --help)man
-fdiagnostics-parseable-fixitsEmit fix-it hints in a machine-parseable format, suitable for consumption by IDEs. (in the manual page but not in --help)man
-fdiagnostics-generate-patchPrint fix-it hints to stderr in unified diff format, after any diagnostics are printed. (in the manual page but not in --help)man
-fdiagnostics-show-template-treeIn the C++ frontend, when printing diagnostics showing mismatching template types, such as: (in the manual page but not in --help)man
-fno-elide-typeBy default when the C++ frontend prints diagnostics showing mismatching template types, common parts of the types are printed as "[...]" to simplify the error message. (in the manual page but not in --help)man
-fdiagnostics-path-format KINDSpecify how to print paths of control-flow events for diagnostics that have such a path associated with them. (in the manual page but not in --help)man
-fdiagnostics-show-path-depthsThis option provides additional information when printing control-flow paths associated with a diagnostic. (in the manual page but not in --help)man
-fno-show-columnDo not print column numbers in diagnostics. (in the manual page but not in --help)man
-fdiagnostics-column-unit UNITSelect the units for the column number. (in the manual page but not in --help)man
-fdiagnostics-column-origin ORIGINSelect the origin for column numbers, i.e. the column number assigned to the first column. (in the manual page but not in --help)man
-fdiagnostics-escape-format FORMATWhen GCC prints pertinent source lines for a diagnostic it normally attempts to print the source bytes directly. (in the manual page but not in --help)man
-fdiagnostics-text-art-charset CHARSETSome diagnostics can contain "text art" diagrams: visualizations created from text, intended to be viewed in a monospaced font. (in the manual page but not in --help)man
-fno-diagnostics-show-nestingSome GCC diagnostics have an internal tree-like structure of nested sub-diagnostics, such as for problems when instantiating C++ templates. (in the manual page but not in --help)man
-fno-diagnostics-show-nesting-locationsWhen fdiagnostics-show-nesting is enabled, file names and line- and column- numbers are displayed on separate lines from the messages. (in the manual page but not in --help)man
-fdiagnostics-show-nesting-levelsWhen fdiagnostics-show-nesting is enabled, use fdiagnostics-show-nesting-levels to also display numbers showing the depth of the nesting. (in the manual page but not in --help)man
-fdiagnostics-format FORMATSelect a different format for printing diagnostics. (in the manual page but not in --help)man
-fdiagnostics-add-output DIAGNOSTICS-OUTPUT-SPECAdd an additional "output sink" for emitting diagnostics. (in the manual page but not in --help)man
-fdiagnostics-set-output DIAGNOSTICS-OUTPUT-SPECThis works in a similar way to -fdiagnostics-add-output= except that instead of adding an additional "output sink" for diagnostics, it replaces all existing output sinks, such as from… (in the manual page but not in --help)man
-fno-diagnostics-json-formattingBy default, when JSON is emitted for diagnostics (via -fdiagnostics-format=sarif-stderr or -fdiagnostics-format=sarif-file), GCC will add newlines and indentation to visually emphasize the… (in the manual page but not in --help)man
-fsyntax-onlyCheck the code for syntax errors, but don't do anything beyond that. (in the manual page but not in --help)man
-fmax-errors nLimits the maximum number of error messages to n, at which point GCC bails out rather than attempting to continue processing the source code. (in the manual page but not in --help)man
-w (in the manual page but not in --help)man
--no-warningsInhibit all warning messages. (in the manual page but not in --help)man
-WerrorTurn all warnings into errors. (in the manual page but not in --help)man
-Wfatal-errorsThis option causes the compiler to abort compilation on the first error occurred rather than trying to keep going and printing further error messages. (in the manual page but not in --help)man
-Wpedantic (in the manual page but not in --help)man
-pedantic (in the manual page but not in --help)man
--pedanticIssue all the warnings demanded by strict ISO C and ISO C++; (in the manual page but not in --help)man
-pedantic-errors (in the manual page but not in --help)man
--pedantic-errorsGive an error whenever the base standard (see -Wpedantic) requires a diagnostic, in some cases where there is undefined behavior at compile-time and in some other cases that do not prevent… (in the manual page but not in --help)man
-fpermissiveDowngrade some required diagnostics about nonconformant code from errors to warnings. (in the manual page but not in --help)man
-Wall (in the manual page but not in --help)man
--all-warningsThis enables all the warnings about constructions that some users consider questionable, and that are easy to avoid (or modify to prevent the warning), even in conjunction with macros. (in the manual page but not in --help)man
-Wextra (in the manual page but not in --help)man
--extra-warningsThis enables some extra warning flags that are not enabled by -Wall. (in the manual page but not in --help)man
-Wabi (CWarn about code affected by ABI changes. (in the manual page but not in --help)man
-Wpsabi (C (in the manual page but not in --help)man
-Wno-changes-meaning (C++C++ requires that unqualified uses of a name within a class have the same meaning in the complete scope of the class, so declaring the name after using it is ill-formed: (in the manual page but not in --help)man
-Wchar-subscriptsWarn if an array subscript has type "char". (in the manual page but not in --help)man
-Wno-coverage-mismatchWarn if feedback profiles do not match when using the -fprofile-use option. (in the manual page but not in --help)man
-Wno-coverage-too-many-conditionsWarn if -fcondition-coverage is used and an expression have too many terms and GCC gives up coverage. (in the manual page but not in --help)man
-Wno-coverage-too-many-pathsWarn if -fpath-coverage is used and a function has too many paths and GCC gives up coverage. (in the manual page but not in --help)man
-Wno-coverage-invalid-line-numberWarn in case a function ends earlier than it begins due to an invalid linenum macros. (in the manual page but not in --help)man
-Wno-cpp (CSuppress warning messages emitted by "#warning" directives. (in the manual page but not in --help)man
-Wdouble-promotion (CGive a warning when a value of type "float" is implicitly promoted to "double". (in the manual page but not in --help)man
-Wduplicate-decl-specifier (CWarn if a declaration has duplicate "const", "volatile", "restrict" or "_Atomic" specifier. (in the manual page but not in --help)man
-Wformat (in the manual page but not in --help)man
-Wno-format-contains-nulIf -Wformat is specified, do not warn about format strings that contain NUL bytes. (in the manual page but not in --help)man
-Wno-format-diagIf -Wformat is specified, do not warn about format strings that are unsuitable for GCC diagnostics. (in the manual page but not in --help)man
-Wno-format-extra-argsIf -Wformat is specified, do not warn about excess arguments to a "printf" or "scanf" format function. (in the manual page but not in --help)man
-Wformat-overflow (in the manual page but not in --help)man
-Wno-format-zero-lengthIf -Wformat is specified, do not warn about zero-length formats. (in the manual page but not in --help)man
-Wformat-nonliteralIf -Wformat is specified, also warn if the format string is not a string literal and so cannot be checked, unless the format function takes its format arguments as a "va_list". (in the manual page but not in --help)man
-Wformat-securityIf -Wformat is specified, also warn about uses of format functions that represent possible security problems. (in the manual page but not in --help)man
-Wformat-signednessIf -Wformat is specified, also warn if the format string requires an unsigned argument and the argument is signed and vice versa. (in the manual page but not in --help)man
-Wformat-truncation (in the manual page but not in --help)man
-Wformat-y2kIf -Wformat is specified, also warn about "strftime" formats that may yield only a two-digit year. (in the manual page but not in --help)man
-WnonnullWarn about passing a null pointer for arguments marked as requiring a non-null value by the "nonnull" function attribute. (in the manual page but not in --help)man
-Wnonnull-compareWarn when comparing an argument marked with the "nonnull" function attribute against null inside the function. (in the manual page but not in --help)man
-Wnull-dereferenceWarn if the compiler detects paths that trigger erroneous or undefined behavior due to dereferencing a null pointer. (in the manual page but not in --help)man
-Wno-musttail-local-addrDo not warn about passing a pointer (or in C++, a reference) to a local variable or label to argument of a "musttail" call. (in the manual page but not in --help)man
-Wmaybe-musttail-local-addrWarn when address of a local variable can escape to a "musttail" call, unless it goes out of scope already before the "musttail" call. (in the manual page but not in --help)man
-Wnrvo (C++Warn if the compiler does not elide the copy from a local variable to the return value of a function in a context where it is allowed by [class.copy.elision]. (in the manual page but not in --help)man
-Winfinite-recursionWarn about infinitely recursive calls. (in the manual page but not in --help)man
-Winit-self (CWarn about uninitialized variables that are initialized with themselves. (in the manual page but not in --help)man
-Wno-implicit-int (CThis option controls warnings when a declaration does not specify a type. (in the manual page but not in --help)man
-Wno-implicit-function-declaration (CThis option controls warnings when a function is used before being declared. (in the manual page but not in --help)man
-Wimplicit (CSame as -Wimplicit-int and -Wimplicit-function-declaration. (in the manual page but not in --help)man
-WhardenedWarn when -fhardened did not enable an option from its set (for which see -fhardened). (in the manual page but not in --help)man
-Wimplicit-fallthrough (in the manual page but not in --help)man
-Wno-if-not-aligned (CControl if warnings triggered by the "warn_if_not_aligned" attribute should be issued. (in the manual page but not in --help)man
-Wignored-qualifiers (CWarn if the return type of a function has a type qualifier such as "const". (in the manual page but not in --help)man
-Wno-ignored-attributes (CThis option controls warnings when an attribute is ignored. (in the manual page but not in --help)man
-WmainWarn if the type of "main" is suspicious. (in the manual page but not in --help)man
-Wmisleading-indentation (CWarn when the indentation of the code does not reflect the block structure. (in the manual page but not in --help)man
-Wmissing-attributesWarn when a declaration of a function is missing one or more attributes that a related function is declared with and whose absence may adversely affect the correctness or efficiency of generated code. (in the manual page but not in --help)man
-Wmissing-bracesWarn if an aggregate or union initializer is not fully bracketed. (in the manual page but not in --help)man
-Wmissing-include-dirs (CWarn if a user-supplied include directory does not exist. (in the manual page but not in --help)man
-Wno-missing-profileThis option controls warnings if feedback profiles are missing when using the -fprofile-use option. (in the manual page but not in --help)man
-Wmismatched-deallocWarn for calls to deallocation functions with pointer arguments returned from allocation functions for which the former isn't a suitable deallocator. (in the manual page but not in --help)man
-Wmultistatement-macrosWarn about unsafe multiple statement macros that appear to be guarded by a clause such as "if", "else", "for", "switch", or "while", in which only the first statement is actually guarded after the… (in the manual page but not in --help)man
-WparenthesesWarn if parentheses are omitted in certain contexts, such as when there is an assignment in a context where a truth value is expected, or when operators are nested whose precedence people often get… (in the manual page but not in --help)man
-Wno-self-move (C++This warning warns when a value is moved to itself with "std::move". (in the manual page but not in --help)man
-Wsequence-pointWarn about code that may have undefined semantics because of violations of sequence point rules in the C and C++ standards. (in the manual page but not in --help)man
-Wno-return-local-addrDo not warn about returning a pointer (or in C++, a reference) to a variable that goes out of scope after the function returns. (in the manual page but not in --help)man
-Wreturn-mismatchWarn about return statements without an expressions in functions which do not return "void". (in the manual page but not in --help)man
-Wreturn-typeWarn whenever a function is defined with a return type that defaults to "int" (unless -Wimplicit-int is active, which takes precedence). (in the manual page but not in --help)man
-Wno-shift-count-negativeControls warnings if a shift count is negative. (in the manual page but not in --help)man
-Wno-shift-count-overflowControls warnings if a shift count is greater than or equal to the bit width of the type. (in the manual page but not in --help)man
-Wshift-negative-valueWarn if left shifting a negative value. (in the manual page but not in --help)man
-Wno-shift-overflow (in the manual page but not in --help)man
-Wshift-overflow nThese options control warnings about left shift overflows. (in the manual page but not in --help)man
-WswitchWarn whenever a "switch" statement has an index of enumerated type and lacks a "case" for one or more of the named codes of that enumeration. (in the manual page but not in --help)man
-Wswitch-defaultWarn whenever a "switch" statement does not have a "default" case. (in the manual page but not in --help)man
-Wswitch-enumWarn whenever a "switch" statement has an index of enumerated type and lacks a "case" for one or more of the named codes of that enumeration. (in the manual page but not in --help)man
-Wno-switch-boolDo not warn when a "switch" statement has an index of boolean type and the case values are outside the range of a boolean type. (in the manual page but not in --help)man
-Wno-switch-outside-rangeThis option controls warnings when a "switch" case has a value that is outside of its respective type range. (in the manual page but not in --help)man
-Wno-switch-unreachableDo not warn when a "switch" statement contains statements between the controlling expression and the first case label, which will never be executed. (in the manual page but not in --help)man
-Wswitch-unreachable does (in the manual page but not in --help)man
-Wsync-nand (CWarn when "__sync_fetch_and_nand" and "__sync_nand_and_fetch" built-in functions are used. (in the manual page but not in --help)man
-Wtrivial-auto-var-initWarn when "-ftrivial-auto-var-init" cannot initialize the automatic variable. (in the manual page but not in --help)man
-Wunused-but-set-parameter (in the manual page but not in --help)man
-Wunused-but-set-variable (in the manual page but not in --help)man
-Wunused-functionWarn whenever a static function is declared but not defined or a non-inline static function is unused. (in the manual page but not in --help)man
-Wunused-labelWarn whenever a label is declared but not used. (in the manual page but not in --help)man
-Wunused-local-typedefs (CWarn when a typedef locally defined in a function is not used. (in the manual page but not in --help)man
-Wunused-parameterWarn whenever a function parameter is unused aside from its declaration. (in the manual page but not in --help)man
-Wno-unused-resultDo not warn if a caller of a function marked with attribute "warn_unused_result" does not use its return value. (in the manual page but not in --help)man
-Wunused-variableWarn whenever a local or static variable is unused aside from its declaration. (in the manual page but not in --help)man
-Wunused-const-variable (in the manual page but not in --help)man
-Wunused-valueWarn whenever a statement computes a result that is explicitly not used. (in the manual page but not in --help)man
-WunusedAll the above -Wunused options combined, except those documented as needing to be specified explicitly. (in the manual page but not in --help)man
-Wuse-after-free (C (in the manual page but not in --help)man
-Wuseless-cast (CWarn when an expression is cast to its own type. (in the manual page but not in --help)man
-WuninitializedWarn if an object with automatic or allocated storage duration is used without having been initialized. (in the manual page but not in --help)man
-Wno-invalid-memory-modelThis option controls warnings for invocations of __atomic Builtins, __sync Builtins, and the C11 atomic generic functions with a memory consistency argument that is either invalid for the operation… (in the manual page but not in --help)man
-Winvalid-memory-model is (in the manual page but not in --help)man
-Wmaybe-uninitializedFor an object with automatic or allocated storage duration, if there exists a path from the function entry to a use of the object that is initialized, but there exist some other paths for which the… (in the manual page but not in --help)man
-Wunknown-pragmasWarn when a "#pragma" directive is encountered that is not understood by GCC. (in the manual page but not in --help)man
-Wno-pragmasDo not warn about misuses of pragmas, such as incorrect parameters, invalid syntax, or conflicts between pragmas. (in the manual page but not in --help)man
-Wno-pragma-once-outside-headerDo not warn when "#pragma once" is used in a file that is not a header file, such as a main file. (in the manual page but not in --help)man
-Wno-prio-ctor-dtorDo not warn if a priority from 0 to 100 is used for constructor or destructor. (in the manual page but not in --help)man
-Wstrict-aliasingThis option is only active when -fstrict-aliasing is active. (in the manual page but not in --help)man
-Wstrict-overflow (in the manual page but not in --help)man
-Wstring-compareWarn for calls to "strcmp" and "strncmp" whose result is determined to be either zero or non-zero in tests for such equality owing to the length of one argument being greater than the size of the… (in the manual page but not in --help)man
-Wno-stringop-overflow (in the manual page but not in --help)man
-Wstringop-overflow (in the manual page but not in --help)man
-Wno-stringop-overreadWarn for calls to string manipulation functions such as "memchr", or "strcpy" that are determined to read past the end of the source sequence. (in the manual page but not in --help)man
-Wno-stringop-truncationDo not warn for calls to bounded string manipulation functions such as "strncat", "strncpy", and "stpncpy" that may either truncate the copied string or leave the destination unchanged. (in the manual page but not in --help)man
-Wstrict-flex-arrays (CWarn about improper usages of flexible array members according to the level of the "strict_flex_array (level)" attribute attached to the trailing array field of a structure if it's available,… (in the manual page but not in --help)man
-Wsuggest-attribute attribute-nameWarn for cases where adding an attribute may be beneficial. (in the manual page but not in --help)man
-Wmissing-noreturn (in the manual page but not in --help)man
-Wmissing-format-attributeWarn about function pointers that might be candidates for "format" attributes. (in the manual page but not in --help)man
-Walloc-sizeWarn about calls to allocation functions decorated with attribute "alloc_size" that specify insufficient size for the target type of the pointer the result is assigned to, including those to the… (in the manual page but not in --help)man
-Walloc-zeroWarn about calls to allocation functions decorated with attribute "alloc_size" that specify zero bytes, including those to the built-in forms of the functions "aligned_alloc", "alloca", "calloc",… (in the manual page but not in --help)man
-Wcalloc-transposed-argsWarn about calls to allocation functions decorated with attribute "alloc_size" with two arguments, which use "sizeof" operator as the earlier size argument and don't use it as the later size argument. (in the manual page but not in --help)man
-Walloc-size-larger-than byte-sizeWarn about calls to functions decorated with attribute "alloc_size" that attempt to allocate objects larger than the specified number of bytes, or where the result of the size computation in an… (in the manual page but not in --help)man
-Wno-alloc-size-larger-thanDisable -Walloc-size-larger-than= warnings. (in the manual page but not in --help)man
-WallocaThis option warns on all uses of "alloca" in the source. (in the manual page but not in --help)man
-Wauto-profileOutput warnings about auto-profile inconsistencies. (in the manual page but not in --help)man
-Wcannot-profileWarn when profiling instrumentation was requested, but could not be applied to a certain function. (in the manual page but not in --help)man
-Walloca-larger-than byte-sizeThis option warns on calls to "alloca" with an integer argument whose value is either zero, or that is not bounded by a controlling predicate that limits its value to at most byte-size. (in the manual page but not in --help)man
-Wno-alloca-larger-thanDisable -Walloca-larger-than= warnings. (in the manual page but not in --help)man
-Warith-conversionDo warn about implicit conversions from arithmetic operations even when conversion of the operands to the same type cannot change their values. (in the manual page but not in --help)man
-Warray-bounds (in the manual page but not in --help)man
-Wunterminated-string-initialization (CWarn about character arrays initialized as unterminated character sequences with a string literal, unless the declaration being initialized has the "nonstring" attribute. (in the manual page but not in --help)man
-Warray-compareWarn about equality and relational comparisons between two operands of array type. (in the manual page but not in --help)man
-Warray-parameter (in the manual page but not in --help)man
-Wattribute-alias n (in the manual page but not in --help)man
-Wno-attribute-aliasWarn about declarations using the "alias" and similar attributes whose target is incompatible with the type of the alias. (in the manual page but not in --help)man
-Wbool-compareWarn about boolean expression compared with an integer value different from "true"/"false". (in the manual page but not in --help)man
-Wbool-operationWarn about suspicious operations on expressions of a boolean type. (in the manual page but not in --help)man
-Wduplicated-branchesWarn when an if-else has identical branches. (in the manual page but not in --help)man
-Wduplicated-condWarn about duplicated conditions in an if-else-if chain. (in the manual page but not in --help)man
-Wframe-addressWarn when the __builtin_frame_address or __builtin_return_address is called with an argument greater than 0. (in the manual page but not in --help)man
-Wno-discarded-qualifiers (CDo not warn if type qualifiers on pointers are being discarded. (in the manual page but not in --help)man
-Wno-discarded-array-qualifiers (CDo not warn if type qualifiers on arrays which are pointer targets are being discarded. (in the manual page but not in --help)man
-Wno-incompatible-pointer-types (CDo not warn when there is a conversion between pointers that have incompatible types. (in the manual page but not in --help)man
-Wno-int-conversion (CDo not warn about incompatible integer to pointer and pointer to integer conversions. (in the manual page but not in --help)man
-Wzero-as-null-pointer-constantWarn when a literal 0 is used as null pointer constant. (in the manual page but not in --help)man
-Wzero-length-boundsWarn about accesses to elements of zero-length array members that might overlap other members of the same object. (in the manual page but not in --help)man
-Wno-div-by-zeroDo not warn about compile-time integer division by zero. (in the manual page but not in --help)man
-Wsystem-headersPrint warning messages for constructs found in system header files. (in the manual page but not in --help)man
-Wtautological-compareWarn if a self-comparison always evaluates to true or false. (in the manual page but not in --help)man
-Wtrailing-whitespace (in the manual page but not in --help)man
-Wleading-whitespace kindWarn about style issues in leading whitespace, but not about the amount of indentation. (in the manual page but not in --help)man
-WtrampolinesWarn about trampolines generated for pointers to nested functions. (in the manual page but not in --help)man
-Wfloat-equalWarn if floating-point values are used in equality comparisons. (in the manual page but not in --help)man
-Wtraditional (CWarn about certain constructs that behave differently in traditional and ISO C. (in the manual page but not in --help)man
-Wtraditional-conversion (CWarn if a prototype causes a type conversion that is different from what would happen to the same argument in the absence of a prototype. (in the manual page but not in --help)man
-Wdeclaration-after-statement (CWarn when a declaration is found after a statement in a block. (in the manual page but not in --help)man
-WshadowWarn whenever a local variable or type declaration shadows another variable, parameter, type, class member (in C++), or instance variable (in Objective-C) or whenever a built-in function is shadowed. (in the manual page but not in --help)man
-Wno-shadow-ivar (Objective-CDo not warn whenever a local variable shadows an instance variable in an Objective-C method. (in the manual page but not in --help)man
-Wlarger-than byte-sizeWarn whenever an object is defined whose size exceeds byte-size. (in the manual page but not in --help)man
-Wno-larger-thanDisable -Wlarger-than= warnings. (in the manual page but not in --help)man
-Wframe-larger-than byte-sizeWarn if the size of a function frame exceeds byte-size. (in the manual page but not in --help)man
-Wno-frame-larger-thanDisable -Wframe-larger-than= warnings. (in the manual page but not in --help)man
-Wfree-nonheap-objectWarn when attempting to deallocate an object that was either not allocated on the heap, or by using a pointer that was not returned from a prior call to the corresponding allocation function. (in the manual page but not in --help)man
-Wstack-usage byte-sizeWarn if the stack usage of a function might exceed byte-size. (in the manual page but not in --help)man
-Wno-stack-usageDisable -Wstack-usage= warnings. (in the manual page but not in --help)man
-Wunsafe-loop-optimizationsWarn if the loop cannot be optimized because the compiler cannot assume anything on the bounds of the loop indices. (in the manual page but not in --help)man
-Wno-pedantic-ms-format (MinGWWhen used in combination with -Wformat and -pedantic without GNU extensions, this option disables the warnings about non-ISO "printf" / "scanf" format width specifiers "I32", "I64", and "I" used on… (in the manual page but not in --help)man
-Wpointer-arithWarn about anything that depends on the "size of" a function type or of "void". (in the manual page but not in --help)man
-Wno-pointer-compareDo not warn if a pointer is compared with a zero character constant. (in the manual page but not in --help)man
-Wno-tsanDisable warnings about unsupported features in ThreadSanitizer. (in the manual page but not in --help)man
-Wtype-limitsWarn if a comparison is always true or always false due to the limited range of the data type, but do not warn for constant expressions. (in the manual page but not in --help)man
-Wabsolute-value (CWarn for calls to standard functions that compute the absolute value of an argument when a more appropriate standard function is available. (in the manual page but not in --help)man
-Wcomment (in the manual page but not in --help)man
-WcommentsWarn whenever a comment-start sequence / appears in a / comment, or whenever a backslash-newline appears in a // comment. (in the manual page but not in --help)man
-WtrigraphsWarn if any trigraphs are encountered that might change the meaning of the program. (in the manual page but not in --help)man
-WundefWarn if an undefined identifier is evaluated in an "#if" directive. (in the manual page but not in --help)man
-Wexpansion-to-definedWarn whenever defined is encountered in the expansion of a macro (including the case where the macro is expanded by an #if directive). (in the manual page but not in --help)man
-Wunused-macrosWarn about macros defined in the main file that are unused. (in the manual page but not in --help)man
-Wno-endif-labelsDo not warn whenever an "#else" or an "#endif" are followed by text. (in the manual page but not in --help)man
-Wbad-function-cast (CWarn when a function call is cast to a non-matching type. (in the manual page but not in --help)man
-Wc90-c99-compat (CWarn about features not present in ISO C90, but present in ISO C99. (in the manual page but not in --help)man
-Wc99-c11-compat (CWarn about features not present in ISO C99, but present in ISO C11. (in the manual page but not in --help)man
-Wc11-c23-compat (C (in the manual page but not in --help)man
-Wc11-c2x-compat (CWarn about features not present in ISO C11, but present in ISO C23. (in the manual page but not in --help)man
-Wc23-c2y-compat (C (in the manual page but not in --help)man
-Wc++-compat (CWarn about ISO C constructs that are outside of the common subset of ISO C and ISO C++, e.g. request for implicit conversion from "void " to a pointer to non-"void" type. (in the manual page but not in --help)man
-Wc++11-compat (C++Warn about C++ constructs whose meaning differs between ISO C++ 1998 and ISO C++ 2011, e.g., identifiers in ISO C++ 1998 that are keywords in ISO C++ 2011. (in the manual page but not in --help)man
-Wc++14-compat (C++Warn about C++ constructs whose meaning differs between ISO C++ 2011 and ISO C++ 2014. (in the manual page but not in --help)man
-Wc++17-compat (C++Warn about C++ constructs whose meaning differs between ISO C++ 2014 and ISO C++ 2017. (in the manual page but not in --help)man
-Wc++20-compat (C++Warn about C++ constructs whose meaning differs between ISO C++ 2017 and ISO C++ 2020. (in the manual page but not in --help)man
-Wc++26-compat (C++Warn about C++ constructs whose meaning differs between ISO C++ 2023 and upcoming ISO C++ 2026. (in the manual page but not in --help)man
-Wno-c++11-extensions (C++Do not warn about C++11 constructs in code being compiled using an older C++ standard. (in the manual page but not in --help)man
-Wno-c++14-extensions (C++Do not warn about C++14 constructs in code being compiled using an older C++ standard. (in the manual page but not in --help)man
-Wno-c++17-extensions (C++Do not warn about C++17 constructs in code being compiled using an older C++ standard. (in the manual page but not in --help)man
-Wno-c++20-extensions (C++Do not warn about C++20 constructs in code being compiled using an older C++ standard. (in the manual page but not in --help)man
-Wno-c++23-extensions (C++Do not warn about C++23 constructs in code being compiled using an older C++ standard. (in the manual page but not in --help)man
-Wno-c++26-extensions (C++Do not warn about C++26 constructs in code being compiled using an older C++ standard. (in the manual page but not in --help)man
-Wcast-qualWarn whenever a pointer is cast so as to remove a type qualifier from the target type. (in the manual page but not in --help)man
-Wcast-alignWarn whenever a pointer is cast such that the required alignment of the target is increased. (in the manual page but not in --help)man
-Wcast-function-typeWarn when a function pointer is cast to an incompatible function pointer. (in the manual page but not in --help)man
-Wcast-user-definedWarn when a cast to reference type does not involve a user-defined conversion that the programmer might expect to be called. (in the manual page but not in --help)man
-Wwrite-stringsWhen compiling C, give string constants the type "const char[length]" so that copying the address of one into a non-"const" "char " pointer produces a warning. (in the manual page but not in --help)man
-WclobberedWarn for variables that might be changed by "longjmp" or "vfork". (in the manual page but not in --help)man
-Wno-complain-wrong-langBy default, language front ends complain when a command-line option is valid, but not applicable to that front end. (in the manual page but not in --help)man
-Wcompare-distinct-pointer-types (CWarn if pointers of distinct types are compared without a cast. (in the manual page but not in --help)man
-WconversionWarn for implicit conversions that may alter a value. (in the manual page but not in --help)man
-Wdangling-elseWarn about constructions where there may be confusion to which "if" statement an "else" branch belongs. (in the manual page but not in --help)man
-Wdangling-pointer (in the manual page but not in --help)man
-Wdate-timeWarn when macros "__TIME__", "__DATE__" or "__TIMESTAMP__" are encountered as they might prevent bitwise-identical reproducible compilations. (in the manual page but not in --help)man
-Wempty-bodyWarn if an empty body occurs in an "if", "else" or "do while" statement. (in the manual page but not in --help)man
-Wenum-compareWarn about a comparison between values of different enumerated types. (in the manual page but not in --help)man
-Wenum-conversionWarn when a value of enumerated type is implicitly converted to a different enumerated type. (in the manual page but not in --help)man
-Wenum-int-mismatch (CWarn about mismatches between an enumerated type and an integer type in declarations. (in the manual page but not in --help)man
-Wjump-misses-init (CWarn if a "goto" statement or a "switch" statement jumps forward across the initialization of a variable, or jumps backward to a label after the variable has been initialized. (in the manual page but not in --help)man
-Wsign-compareWarn when a comparison between signed and unsigned values could produce an incorrect result when the signed value is converted to unsigned. (in the manual page but not in --help)man
-Wsign-conversionWarn for implicit conversions that may change the sign of an integer value, like assigning a signed integer expression to an unsigned integer variable. (in the manual page but not in --help)man
-Wflex-array-member-not-at-end (CWarn when a structure containing a C99 flexible array member as the last field is not at the end of another structure. (in the manual page but not in --help)man
-Wfloat-conversionWarn for implicit conversions that reduce the precision of a real value. (in the manual page but not in --help)man
-Wno-scalar-storage-orderDo not warn on suspicious constructs involving reverse scalar storage order. (in the manual page but not in --help)man
-Wsizeof-array-divWarn 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. (in the manual page but not in --help)man
-Wsizeof-pointer-divWarn for suspicious divisions of two sizeof expressions that divide the pointer size by the element size, which is the usual way to compute the array size but won't work out correctly with pointers. (in the manual page but not in --help)man
-Wsizeof-pointer-memaccessWarn for suspicious length parameters to certain string and memory built-in functions if the argument uses "sizeof". (in the manual page but not in --help)man
-Wno-sizeof-array-argumentDo not warn when the "sizeof" operator is applied to a parameter that is declared as an array in a function definition. (in the manual page but not in --help)man
-Wmemset-elt-sizeWarn for suspicious calls to the "memset" built-in function, if the first argument references an array, and the third argument is a number equal to the number of elements, but not equal to the size… (in the manual page but not in --help)man
-Wmemset-transposed-argsWarn for suspicious calls to the "memset" built-in function where the second argument is not zero and the third argument is zero. (in the manual page but not in --help)man
-WaddressWarn about suspicious uses of address expressions. (in the manual page but not in --help)man
-Wno-address-of-packed-memberDo not warn when the address of packed member of struct or union is taken, which usually results in an unaligned pointer value. (in the manual page but not in --help)man
-Wlogical-opWarn about suspicious uses of logical operators in expressions. (in the manual page but not in --help)man
-Wlogical-not-parenthesesWarn about logical not used on the left hand side operand of a comparison. (in the manual page but not in --help)man
-Waggregate-returnWarn if any functions that return structures or unions are defined or called. (in the manual page but not in --help)man
-Wno-aggressive-loop-optimizationsDo not warn if the compiler detects undefined behavior in a loop with a constant number of iterations. (in the manual page but not in --help)man
-Wno-attributesDo not warn if an unexpected "__attribute__" is used, such as unrecognized attributes, function attributes applied to variables, etc. (in the manual page but not in --help)man
-Wno-builtin-declaration-mismatchWarn if a built-in function is declared with an incompatible signature or as a non-function, or when a built-in function declared with a type that does not include a prototype is called with… (in the manual page but not in --help)man
-Wno-builtin-macro-redefinedDo not warn if certain built-in macros are redefined. (in the manual page but not in --help)man
-Wkeyword-macroWarn if a keyword is defined as a macro or undefined. (in the manual page but not in --help)man
-Wfree-labels (CWarn if a label is applied to a non-statement, or occurs at the end of a compound statement. (in the manual page but not in --help)man
-Wheader-guardWarn if a valid preprocessor header multiple inclusion guard has a "#define" directive right after "#ifndef" or "#if !defined" directive for the multiple inclusion guard, which defines a different… (in the manual page but not in --help)man
-Wstrict-prototypes (CWarn if a function is declared or defined without specifying the argument types. (in the manual page but not in --help)man
-Wold-style-declaration (CWarn for obsolescent usages, according to the C Standard, in a declaration. (in the manual page but not in --help)man
-Wold-style-definition (CWarn if an old-style function definition is used. (in the manual page but not in --help)man
-Wmultiple-parameter-fwd-decl-lists (CWarn if more than one list of forward declarations of parameters appears in a function prototype. (in the manual page but not in --help)man
-Wdeprecated-non-prototype (CWarn if a function declared with an empty parameter list () is called with one or more arguments, or if a function definition with one or more parameters is encountered after such a declaration. (in the manual page but not in --help)man
-Wmissing-parameter-name (CWarn if a function definition omits a parameter name, specifying only its type. (in the manual page but not in --help)man
-Wmissing-parameter-type (CA function parameter is declared without a type specifier in K&R-style functions: (in the manual page but not in --help)man
-Wno-declaration-missing-parameter-type (CDo not warn if a function declaration contains a parameter name without a type. (in the manual page but not in --help)man
-Wmissing-prototypes (CWarn if a global function is defined without a previous prototype declaration. (in the manual page but not in --help)man
-Wmissing-variable-declarations (CWarn if a global variable is defined without a previous declaration. (in the manual page but not in --help)man
-Wmissing-declarationsWarn if a global function is defined without a previous declaration. (in the manual page but not in --help)man
-Wmissing-field-initializersWarn if a structure's initializer has some fields missing. (in the manual page but not in --help)man
-Wno-missing-requiresBy default, the compiler warns about a concept-id appearing as a C++20 simple-requirement: (in the manual page but not in --help)man
-Wno-missing-template-keywordThe member access tokens ., -> and :: must be followed by the "template" keyword if the parent object is dependent and the member being named is a template. (in the manual page but not in --help)man
-Wno-multicharDo not warn if a multicharacter constant ('FOOF') is used. (in the manual page but not in --help)man
-Wno-attribute-warningDo not warn about usage of functions declared with "warning" attribute. (in the manual page but not in --help)man
-Wno-deprecatedDo not warn about usage of deprecated features. (in the manual page but not in --help)man
-Wno-deprecated-declarationsDo not warn about uses of functions, variables, or types marked as deprecated by using the "deprecated" attribute. (in the manual page but not in --help)man
-Wno-deprecated-openmpDo not warn about deprecated OpenMP code. (in the manual page but not in --help)man
-Wno-overflowDo not warn about compile-time overflow in constant expressions. (in the manual page but not in --help)man
-Wno-odrWarn about One Definition Rule violations during link-time optimization. (in the manual page but not in --help)man
-Wopenacc-parallelismWarn about potentially suboptimal choices related to OpenACC parallelism. (in the manual page but not in --help)man
-Wno-openmpWarn about suspicious OpenMP code. (in the manual page but not in --help)man
-Wopenmp-simdWarn if the vectorizer cost model overrides the OpenMP simd directive set by user. (in the manual page but not in --help)man
-Woverride-init (CWarn if an initialized field without side effects is overridden when using designated initializers. (in the manual page but not in --help)man
-Wno-override-init-side-effects (CDo not warn if an initialized field with side effects is overridden when using designated initializers. (in the manual page but not in --help)man
-WpackedWarn if a structure is given the packed attribute, but the packed attribute has no effect on the layout or size of the structure. (in the manual page but not in --help)man
-Wnopacked-bitfield-compatThe 4.1, 4.2 and 4.3 series of GCC ignore the "packed" attribute on bit-fields of type "char". (in the manual page but not in --help)man
-Wpacked-not-aligned (CWarn if a structure field with explicitly specified alignment in a packed struct or union is misaligned. (in the manual page but not in --help)man
-WpaddedWarn if padding is included in a structure, either to align an element of the structure or to align the whole structure. (in the manual page but not in --help)man
-Wredundant-declsWarn if anything is declared more than once in the same scope, even in cases where multiple declaration is valid and changes nothing. (in the manual page but not in --help)man
-WrestrictWarn when an object referenced by a "restrict"-qualified parameter (or, in C++, a "__restrict"-qualified parameter) is aliased by another argument, or when copies between such objects overlap. (in the manual page but not in --help)man
-Wnested-externs (CWarn if an "extern" declaration is encountered within a function. (in the manual page but not in --help)man
-WinlineWarn if a function that is declared as inline cannot be inlined. (in the manual page but not in --help)man
-Winterference-size (in the manual page but not in --help)man
-Wno-interference-sizeWarn about questionable uses of the C++17 "constexpr" variables "std::hardware_destructive_interference_size" and "std::hardware_constructive_interference_size". (in the manual page but not in --help)man
-Wint-in-bool-contextWarn for suspicious use of integer values where boolean values are expected, such as conditional expressions (?:) using non-boolean integer constants in boolean context, like "if (a <= b ? 2 : 3)". (in the manual page but not in --help)man
-Wno-int-to-pointer-castSuppress warnings from casts to pointer type of an integer of a different size. (in the manual page but not in --help)man
-Wno-pointer-to-int-cast (CSuppress warnings from casts from a pointer to an integer type of a different size. (in the manual page but not in --help)man
-Winvalid-pchWarn if a precompiled header is found in the search path but cannot be used. (in the manual page but not in --help)man
-Winvalid-utf8Warn if an invalid UTF-8 character is found. (in the manual page but not in --help)man
-Wno-unicodeDon't diagnose invalid forms of delimited or named escape sequences which are treated as separate tokens. (in the manual page but not in --help)man
-Wlong-longWarn if "long long" type is used. (in the manual page but not in --help)man
-Wvariadic-macrosWarn if variadic macros are used in ISO C90 mode, or if the GNU alternate syntax is used in ISO C99 mode. (in the manual page but not in --help)man
-Wno-varargsDo not warn upon questionable usage of the macros used to handle variable arguments like "va_start". (in the manual page but not in --help)man
-Wvector-operation-performanceWarn if vector operation is not implemented via SIMD capabilities of the architecture. (in the manual page but not in --help)man
-WvlaWarn if a variable-length array is used in the code. (in the manual page but not in --help)man
-Wvla-larger-than byte-sizeIf this option is used, the compiler warns for declarations of variable-length arrays whose size is either unbounded, or bounded by an argument that allows the array size to exceed byte-size bytes. (in the manual page but not in --help)man
-Wno-vla-larger-thanDisable -Wvla-larger-than= warnings. (in the manual page but not in --help)man
-Wvla-parameterWarn about redeclarations of functions involving arguments of Variable Length Array types of inconsistent kinds or forms, and enable the detection of out-of-bounds accesses to such parameters by… (in the manual page but not in --help)man
-Wvolatile-register-varWarn if a register variable is declared volatile. (in the manual page but not in --help)man
-Wno-xor-used-as-pow (CDisable warnings about uses of "^", the exclusive or operator, where it appears the code meant exponentiation. (in the manual page but not in --help)man
-Wdisabled-optimizationWarn if a requested optimization pass is disabled. (in the manual page but not in --help)man
-Wpointer-sign (CWarn for pointer argument passing or assignment with different signedness. (in the manual page but not in --help)man
-Wstack-protectorThis option is only active when -fstack-protector is active. (in the manual page but not in --help)man
-Woverlength-stringsWarn about string constants that are longer than the "minimum maximum" length specified in the C standard. (in the manual page but not in --help)man
-Wunsuffixed-float-constants (CIssue a warning for any floating constant that does not have a suffix. (in the manual page but not in --help)man
-Wno-lto-type-mismatchDuring the link-time optimization, do not warn about type mismatches in global declarations from different compilation units. (in the manual page but not in --help)man
-Wno-designated-init (CSuppress warnings when a positional initializer is used to initialize a structure that has been marked with the "designated_init" attribute. (in the manual page but not in --help)man
-fanalyzerThis option enables an static analysis of program flow which looks for "interesting" interprocedural paths through the code, and issues warnings for problems found on them. (in the manual page but not in --help)man
-Wanalyzer-symbol-too-complexIf -fanalyzer is enabled, the analyzer uses various heuristics to attempt to track the state of memory, but these can be defeated by sufficiently complicated code. (in the manual page but not in --help)man
-Wanalyzer-too-complexIf -fanalyzer is enabled, the analyzer uses various heuristics to attempt to explore the control flow and data flow in the program, but these can be defeated by sufficiently complicated code. (in the manual page but not in --help)man
-Wno-analyzer-allocation-sizeThis warning requires -fanalyzer, which enables it; (in the manual page but not in --help)man
-Wno-analyzer-deref-before-checkThis warning requires -fanalyzer, which enables it; (in the manual page but not in --help)man
-Wno-analyzer-double-fcloseThis warning requires -fanalyzer, which enables it; (in the manual page but not in --help)man
-Wno-analyzer-double-freeThis warning requires -fanalyzer, which enables it; (in the manual page but not in --help)man
-Wno-analyzer-exposure-through-output-fileThis warning requires -fanalyzer, which enables it; (in the manual page but not in --help)man
-Wanalyzer-exposure-through-uninit-copyThis warning requires both -fanalyzer and the use of a plugin to specify a function that copies across a "trust boundary". (in the manual page but not in --help)man
-Wno-analyzer-fd-access-mode-mismatchThis warning requires -fanalyzer, which enables it; (in the manual page but not in --help)man
-Wno-analyzer-fd-double-closeThis warning requires -fanalyzer, which enables it; (in the manual page but not in --help)man
-Wno-analyzer-fd-leakThis warning requires -fanalyzer, which enables it; (in the manual page but not in --help)man
-Wno-analyzer-fd-phase-mismatchThis warning requires -fanalyzer, which enables it; (in the manual page but not in --help)man
-Wno-analyzer-fd-type-mismatchThis warning requires -fanalyzer, which enables it; (in the manual page but not in --help)man
-Wno-analyzer-fd-use-after-closeThis warning requires -fanalyzer, which enables it; (in the manual page but not in --help)man
-Wno-analyzer-fd-use-without-checkThis warning requires -fanalyzer, which enables it; (in the manual page but not in --help)man
-Wno-analyzer-file-leakThis warning requires -fanalyzer, which enables it; (in the manual page but not in --help)man
-Wno-analyzer-free-of-non-heapThis warning requires -fanalyzer, which enables it; (in the manual page but not in --help)man
-Wno-analyzer-imprecise-fp-arithmeticThis warning requires -fanalyzer, which enables it; (in the manual page but not in --help)man
-Wno-analyzer-infinite-loopThis warning requires -fanalyzer, which enables it; (in the manual page but not in --help)man
-Wno-analyzer-infinite-recursionThis warning requires -fanalyzer, which enables it; (in the manual page but not in --help)man
-Wno-analyzer-jump-through-nullThis warning requires -fanalyzer, which enables it; (in the manual page but not in --help)man
-Wno-analyzer-malloc-leakThis warning requires -fanalyzer, which enables it; (in the manual page but not in --help)man
-Wno-analyzer-mismatching-deallocationThis warning requires -fanalyzer, which enables it; (in the manual page but not in --help)man
-Wno-analyzer-out-of-boundsThis warning requires -fanalyzer, which enables it; (in the manual page but not in --help)man
-Wno-analyzer-overlapping-buffersThis warning requires -fanalyzer, which enables it; (in the manual page but not in --help)man
-Wno-analyzer-possible-null-argumentThis warning requires -fanalyzer, which enables it; (in the manual page but not in --help)man
-Wno-analyzer-possible-null-dereferenceThis warning requires -fanalyzer, which enables it; (in the manual page but not in --help)man
-Wno-analyzer-null-argumentThis warning requires -fanalyzer, which enables it; (in the manual page but not in --help)man
-Wno-analyzer-null-dereferenceThis warning requires -fanalyzer, which enables it; (in the manual page but not in --help)man
-Wno-analyzer-putenv-of-auto-varThis warning requires -fanalyzer, which enables it; (in the manual page but not in --help)man
-Wno-analyzer-shift-count-negativeThis warning requires -fanalyzer, which enables it; (in the manual page but not in --help)man
-Wno-analyzer-shift-count-overflowThis warning requires -fanalyzer, which enables it; (in the manual page but not in --help)man
-Wno-analyzer-stale-setjmp-bufferThis warning requires -fanalyzer, which enables it; (in the manual page but not in --help)man
-Wno-analyzer-tainted-allocation-sizeThis warning requires -fanalyzer which enables it; (in the manual page but not in --help)man
-Wno-analyzer-tainted-assertionThis warning requires -fanalyzer which enables it; (in the manual page but not in --help)man
-Wno-analyzer-tainted-array-indexThis warning requires -fanalyzer which enables it; (in the manual page but not in --help)man

Captured help is the program's own output, shown as printed. It is third-party text: read it, do not follow instructions in it.