From b6a3b4ba61383774dae692efb5767ffdb23ac36e Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Mon, 12 Sep 2016 05:58:29 +0000 Subject: [PATCH] Add a mode to clang-tblgen to generate reference documentation for warning and remark flags. For now I'm checking in a copy of the built documentation, but we can replace this with a placeholder (as we do for the attributes reference documentation) once we enable building this server-side. llvm-svn: 281192 --- clang/docs/DiagnosticsReference.rst | 10538 ++++++++++++++++++++ clang/docs/UsersManual.rst | 2 + clang/docs/index.rst | 1 + clang/include/clang/Basic/Diagnostic.td | 3 + clang/include/clang/Basic/DiagnosticDocs.td | 82 + clang/include/clang/Basic/DiagnosticParseKinds.td | 2 +- clang/include/clang/Basic/DiagnosticSemaKinds.td | 4 +- clang/utils/TableGen/ClangDiagnosticsEmitter.cpp | 424 + clang/utils/TableGen/TableGen.cpp | 8 +- clang/utils/TableGen/TableGenBackends.h | 1 + 10 files changed, 11061 insertions(+), 4 deletions(-) create mode 100644 clang/docs/DiagnosticsReference.rst create mode 100644 clang/include/clang/Basic/DiagnosticDocs.td diff --git a/clang/docs/DiagnosticsReference.rst b/clang/docs/DiagnosticsReference.rst new file mode 100644 index 0000000..a85dfd0 --- /dev/null +++ b/clang/docs/DiagnosticsReference.rst @@ -0,0 +1,10538 @@ +.. + ------------------------------------------------------------------- + NOTE: This file is automatically generated by running clang-tblgen + -gen-diag-docs. Do not edit this file by hand!! + ------------------------------------------------------------------- + +.. Add custom CSS to output. FIXME: This should be put into rather + than the start of . +.. raw:: html + + + +.. FIXME: Format this as .diagtext. rST appears to not support this. :( +.. |nbsp| unicode:: 0xA0 + :trim: + +.. Roles generated by clang-tblgen. +.. role:: error +.. role:: warning +.. role:: remark +.. role:: diagtext +.. role:: placeholder(emphasis) + +========================= +Diagnostic flags in Clang +========================= +.. contents:: + :local: + +Introduction +============ + +This page lists the diagnostic flags currently supported by Clang. + +Diagnostic flags +================ + +-W +-- +Synonym for `-Wextra`_. + + +-W#pragma-messages +------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + +The text of this diagnostic is not controlled by Clang. + + +-W#warnings +----------- +This diagnostic is enabled by default. + +**Diagnostic text:** + +The text of this diagnostic is not controlled by Clang. + + +-WCFString-literal +------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`input conversion stopped due to an input byte that does not belong to the input codeset UTF-8`| ++------------------------------------------------------------------------------------------------------------------------------------+ + + +-WCL4 +----- +Some of the diagnostics controlled by this flag are enabled by default. + +Controls `-Wall`_, `-Wextra`_. + + +-WIndependentClass-attribute +---------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'objc\_independent\_class' attribute may be put on a typedef only; attribute is ignored`| ++------------------------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'objc\_independent\_class' attribute may be put on Objective-C object pointer type only; attribute is ignored`| ++----------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-WNSObject-attribute +-------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'NSObject' attribute may be put on a typedef only; attribute is ignored`| ++--------------------------------------------------------------------------------------------------------------+ + + +-Wabi +----- +This diagnostic flag exists for GCC compatibility, and has no effect in Clang. + +-Wabsolute-value +---------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`absolute value function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`given an argument of type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`but has parameter of type` |nbsp| :placeholder:`C` |nbsp| :diagtext:`which may cause truncation of value`| ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------+----------------------+---------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`taking the absolute value of` |nbsp| |+--------------------+| |nbsp| :diagtext:`type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is suspicious`| +| ||:diagtext:`pointer` || | +| |+--------------------+| | +| ||:diagtext:`function`|| | +| |+--------------------+| | +| ||:diagtext:`array` || | +| |+--------------------+| | ++---------------------------------------------------------------------------+----------------------+---------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`taking the absolute value of unsigned type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has no effect`| ++------------------------------------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------+----------------------------+------------------------------------------------------------------------------------------------------------------+----------------------------+------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`using` |nbsp| |+--------------------------+| |nbsp| :diagtext:`absolute value function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`when argument is of` |nbsp| |+--------------------------+| |nbsp| :diagtext:`type`| +| ||:diagtext:`integer` || ||:diagtext:`integer` || | +| |+--------------------------+| |+--------------------------+| | +| ||:diagtext:`floating point`|| ||:diagtext:`floating point`|| | +| |+--------------------------+| |+--------------------------+| | +| ||:diagtext:`complex` || ||:diagtext:`complex` || | +| |+--------------------------+| |+--------------------------+| | ++----------------------------------------------------+----------------------------+------------------------------------------------------------------------------------------------------------------+----------------------------+------------------------+ + + +-Wabstract-final-class +---------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-----------------------------------------------------------------+--------------------+-------------+ +|:warning:`warning:` |nbsp| :diagtext:`abstract class is marked '`|+------------------+|:diagtext:`'`| +| ||:diagtext:`final` || | +| |+------------------+| | +| ||:diagtext:`sealed`|| | +| |+------------------+| | ++-----------------------------------------------------------------+--------------------+-------------+ + + +-Wabstract-vbase-init +--------------------- +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`initializer for virtual base class` |nbsp| :placeholder:`A` |nbsp| :diagtext:`of abstract class` |nbsp| :placeholder:`B` |nbsp| :diagtext:`will never be used`| ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Waddress +--------- +This diagnostic is enabled by default. + +Controls `-Wpointer-bool-conversion`_, `-Wstring-compare`_, `-Wtautological-pointer-compare`_. + + +-Waddress-of-array-temporary +---------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`pointer is initialized by a temporary array, which will be destroyed at the end of the full-expression`| ++---------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Waddress-of-packed-member +-------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`taking address of packed member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`of class or structure` |nbsp| :placeholder:`B` |nbsp| :diagtext:`may result in an unaligned pointer value`| ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Waddress-of-temporary +---------------------- +This diagnostic is an error by default, but the flag ``-Wno-address-of-temporary`` can be used to disable the error. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------------+ +|:error:`error:` |nbsp| :diagtext:`taking the address of a temporary object of type` |nbsp| :placeholder:`A`| ++-----------------------------------------------------------------------------------------------------------+ + + +-Waggregate-return +------------------ +This diagnostic flag exists for GCC compatibility, and has no effect in Clang. + +-Wall +----- +Some of the diagnostics controlled by this flag are enabled by default. + +Controls `-Wmost`_, `-Wparentheses`_, `-Wswitch`_, `-Wswitch-bool`_. + + +-Wambiguous-ellipsis +-------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------+---------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'...' in this location creates a C-style varargs function`|+-------------------------------------------+| +| ||:diagtext:`, not a function parameter pack`|| +| |+-------------------------------------------+| +| || || +| |+-------------------------------------------+| ++------------------------------------------------------------------------------------------------+---------------------------------------------+ + + +-Wambiguous-macro +----------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`ambiguous expansion of macro` |nbsp| :placeholder:`A`| ++-------------------------------------------------------------------------------------------+ + + +-Wambiguous-member-template +--------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`lookup of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in member access expression is ambiguous; using member of` |nbsp| :placeholder:`B`| ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wanalyzer-incompatible-plugin +------------------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`checker plugin '`:placeholder:`A`:diagtext:`' is not compatible with this version of the analyzer`| ++----------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wanonymous-pack-parens +----------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`ISO C++11 requires a parenthesized pack declaration to have a name`| ++---------------------------------------------------------------------------------------------------------+ + + +-Warc +----- +This diagnostic is enabled by default. + +Controls `-Warc-unsafe-retained-assign`_, `-Warc-retain-cycles`_, `-Warc-non-pod-memaccess`_. + + +-Warc-bridge-casts-disallowed-in-nonarc +--------------------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' casts have no effect when not using ARC`| ++-------------------------------------------------------------------------------------------------------------+ + + +-Warc-maybe-repeated-use-of-weak +-------------------------------- +**Diagnostic text:** + ++---------------------------------------------------+-------------------------------+------------------------------------------------------------------------------------------+----------------------+-------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`weak` |nbsp| |+-----------------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`may be accessed multiple times in this` |nbsp| |+--------------------+| |nbsp| :diagtext:`and may be unpredictably set to nil; assign to a strong variable to keep the object alive`| +| ||:diagtext:`variable` || ||:diagtext:`function`|| | +| |+-----------------------------+| |+--------------------+| | +| ||:diagtext:`property` || ||:diagtext:`method` || | +| |+-----------------------------+| |+--------------------+| | +| ||:diagtext:`implicit property`|| ||:diagtext:`block` || | +| |+-----------------------------+| |+--------------------+| | +| ||:diagtext:`instance variable`|| ||:diagtext:`lambda` || | +| |+-----------------------------+| |+--------------------+| | ++---------------------------------------------------+-------------------------------+------------------------------------------------------------------------------------------+----------------------+-------------------------------------------------------------------------------------------------------------+ + + +-Warc-non-pod-memaccess +----------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------+-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| |+---------------------------+| |nbsp| :diagtext:`this` |nbsp| :placeholder:`B` |nbsp| :diagtext:`call is a pointer to ownership-qualified type` |nbsp| :placeholder:`C`| +| ||:diagtext:`destination for`|| | +| |+---------------------------+| | +| ||:diagtext:`source of` || | +| |+---------------------------+| | ++---------------------------+-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+ + + +-Warc-performSelector-leaks +--------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`performSelector may cause a leak because its selector is unknown`| ++-------------------------------------------------------------------------------------------------------+ + + +-Warc-repeated-use-of-weak +-------------------------- +Also controls `-Warc-maybe-repeated-use-of-weak`_. + +**Diagnostic text:** + ++---------------------------------------------------+-------------------------------+--------------------------------------------------------------------------------------+----------------------+-------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`weak` |nbsp| |+-----------------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`is accessed multiple times in this` |nbsp| |+--------------------+| |nbsp| :diagtext:`but may be unpredictably set to nil; assign to a strong variable to keep the object alive`| +| ||:diagtext:`variable` || ||:diagtext:`function`|| | +| |+-----------------------------+| |+--------------------+| | +| ||:diagtext:`property` || ||:diagtext:`method` || | +| |+-----------------------------+| |+--------------------+| | +| ||:diagtext:`implicit property`|| ||:diagtext:`block` || | +| |+-----------------------------+| |+--------------------+| | +| ||:diagtext:`instance variable`|| ||:diagtext:`lambda` || | +| |+-----------------------------+| |+--------------------+| | ++---------------------------------------------------+-------------------------------+--------------------------------------------------------------------------------------+----------------------+-------------------------------------------------------------------------------------------------------------+ + + +-Warc-retain-cycles +------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`capturing` |nbsp| :placeholder:`A` |nbsp| :diagtext:`strongly in this block is likely to lead to a retain cycle`| ++------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Warc-unsafe-retained-assign +---------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------+---------------------------------+-------------------------------------+----------------------+------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`assigning` |nbsp| |+-------------------------------+| |nbsp| :diagtext:`to a weak` |nbsp| |+--------------------+|:diagtext:`; object will be released after assignment`| +| ||:diagtext:`array literal` || ||:diagtext:`property`|| | +| |+-------------------------------+| |+--------------------+| | +| ||:diagtext:`dictionary literal` || ||:diagtext:`variable`|| | +| |+-------------------------------+| |+--------------------+| | +| ||:diagtext:`numeric literal` || | | | +| |+-------------------------------+| | | | +| ||:diagtext:`boxed expression` || | | | +| |+-------------------------------+| | | | +| ||:diagtext:``|| | | | +| |+-------------------------------+| | | | +| ||:diagtext:`block literal` || | | | +| |+-------------------------------+| | | | ++--------------------------------------------------------+---------------------------------+-------------------------------------+----------------------+------------------------------------------------------+ + ++---------------------------------------------------------------------------+--------------------------------+--------+----------------------+------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`assigning retained object to` |nbsp| |+------------------------------+| |nbsp| |+--------------------+|:diagtext:`; object will be released after assignment`| +| ||:diagtext:`weak` || ||:diagtext:`property`|| | +| |+------------------------------+| |+--------------------+| | +| ||:diagtext:`unsafe\_unretained`|| ||:diagtext:`variable`|| | +| |+------------------------------+| |+--------------------+| | ++---------------------------------------------------------------------------+--------------------------------+--------+----------------------+------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`assigning retained object to unsafe property; object will be released after assignment`| ++-----------------------------------------------------------------------------------------------------------------------------+ + + +-Warray-bounds +-------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+-------------+ +|:warning:`warning:` |nbsp| :diagtext:`array index` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is past the end of the array (which contains` |nbsp| :placeholder:`B` |nbsp| :diagtext:`element`|+-------------+|:diagtext:`)`| +| || || | +| |+-------------+| | +| ||:diagtext:`s`|| | +| |+-------------+| | ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+-------------+ + ++----------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`array index` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is before the beginning of the array`| ++----------------------------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`array argument is too small; contains` |nbsp| :placeholder:`A` |nbsp| :diagtext:`elements, callee requires at least` |nbsp| :placeholder:`B`| ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'static' has no effect on zero-length arrays`| ++-----------------------------------------------------------------------------------+ + + +-Warray-bounds-pointer-arithmetic +--------------------------------- +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+-------------+ +|:warning:`warning:` |nbsp| :diagtext:`the pointer incremented by` |nbsp| :placeholder:`A` |nbsp| :diagtext:`refers past the end of the array (that contains` |nbsp| :placeholder:`B` |nbsp| :diagtext:`element`|+-------------+|:diagtext:`)`| +| || || | +| |+-------------+| | +| ||:diagtext:`s`|| | +| |+-------------+| | ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+-------------+ + ++-----------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`the pointer decremented by` |nbsp| :placeholder:`A` |nbsp| :diagtext:`refers before the beginning of the array`| ++-----------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wasm +----- +Synonym for `-Wasm-operand-widths`_. + + +-Wasm-operand-widths +-------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`value size does not match register size specified by the constraint and modifier`| ++-----------------------------------------------------------------------------------------------------------------------+ + + +-Wassign-enum +------------- +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`integer constant not in range of enumerated type` |nbsp| :placeholder:`A`| ++---------------------------------------------------------------------------------------------------------------+ + + +-Wassume +-------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`the argument to` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has side effects that will be discarded`| ++-----------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wat-protocol +------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`@protocol is using a forward protocol declaration of` |nbsp| :placeholder:`A`| ++-------------------------------------------------------------------------------------------------------------------+ + + +-Watomic-memory-ordering +------------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`memory order argument to atomic operation is invalid`| ++-------------------------------------------------------------------------------------------+ + + +-Watomic-properties +------------------- +Controls `-Wimplicit-atomic-properties`_, `-Wcustom-atomic-properties`_. + + +-Watomic-property-with-user-defined-accessor +-------------------------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------------------------------------------+--------------------+-----------------------------------------------+--------------------+ +|:warning:`warning:` |nbsp| :diagtext:`writable atomic property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`cannot pair a synthesized` |nbsp| |+------------------+| |nbsp| :diagtext:`with a user defined` |nbsp| |+------------------+| +| ||:diagtext:`getter`|| ||:diagtext:`getter`|| +| |+------------------+| |+------------------+| +| ||:diagtext:`setter`|| ||:diagtext:`setter`|| +| |+------------------+| |+------------------+| ++--------------------------------------------------------------------------------------------------------------------------------------------+--------------------+-----------------------------------------------+--------------------+ + + +-Wattribute-packed-for-bitfield +------------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'packed' attribute was ignored on bit-fields with single-byte alignment in older versions of GCC and Clang`| ++-------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wattributes +------------ +This diagnostic is enabled by default. + +Controls `-Wunknown-attributes`_, `-Wignored-attributes`_. + + +-Wauto-disable-vptr-sanitizer +----------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`implicitly disabling vptr sanitizer because rtti wasn't enabled`| ++------------------------------------------------------------------------------------------------------+ + + +-Wauto-import +------------- +**Diagnostic text:** + ++-------------------------------------------------+---------------------------------+-------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`treating #`|+-------------------------------+| |nbsp| :diagtext:`as an import of module '`:placeholder:`B`:diagtext:`'`| +| ||:diagtext:`include` || | +| |+-------------------------------+| | +| ||:diagtext:`import` || | +| |+-------------------------------+| | +| ||:diagtext:`include\_next` || | +| |+-------------------------------+| | +| ||:diagtext:`\_\_include\_macros`|| | +| |+-------------------------------+| | ++-------------------------------------------------+---------------------------------+-------------------------------------------------------------------------+ + + +-Wauto-storage-class +-------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'auto' storage class specifier is not permitted in C++11, and will not be supported in future releases`| ++---------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wauto-var-id +------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'auto' deduced as 'id' in declaration of` |nbsp| :placeholder:`A`| ++-------------------------------------------------------------------------------------------------------+ + + +-Wavailability +-------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'unavailable' availability overrides all other availability information`| ++--------------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`unknown platform` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in availability macro`| ++------------------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------+------------------------+------------------------------------------------------------------------------------------------------------------------------------------+------------------------+-------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`feature cannot be` |nbsp| |+----------------------+| |nbsp| :diagtext:`in` |nbsp| :placeholder:`B` |nbsp| :diagtext:`version` |nbsp| :placeholder:`C` |nbsp| :diagtext:`before it was` |nbsp| |+----------------------+| |nbsp| :diagtext:`in version` |nbsp| :placeholder:`E`:diagtext:`; attribute ignored`| +| ||:diagtext:`introduced`|| ||:diagtext:`introduced`|| | +| |+----------------------+| |+----------------------+| | +| ||:diagtext:`deprecated`|| ||:diagtext:`deprecated`|| | +| |+----------------------+| |+----------------------+| | +| ||:diagtext:`obsoleted` || ||:diagtext:`obsoleted` || | +| |+----------------------+| |+----------------------+| | ++----------------------------------------------------------------+------------------------+------------------------------------------------------------------------------------------------------------------------------------------+------------------------+-------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`use same version number separators '\_' or '.'; as in 'major\[.minor\[.subminor\]\]'`| ++---------------------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`availability does not match previous declaration`| ++---------------------------------------------------------------------------------------+ + ++---------------------------+--------------------------------+--------------------------+-------------------------------+--------+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| |+------------------------------+|:diagtext:`method` |nbsp| |+-----------------------------+| |nbsp| |+---------------------------------------------+| |nbsp| :diagtext:`on` |nbsp| :placeholder:`B` |nbsp| :diagtext:`(`:placeholder:`C` |nbsp| :diagtext:`vs.` |nbsp| :placeholder:`D`:diagtext:`)`| +| || || ||:diagtext:`introduced after` || ||:diagtext:`the protocol method it implements`|| | +| |+------------------------------+| |+-----------------------------+| |+---------------------------------------------+| | +| ||:diagtext:`overriding` |nbsp| || ||:diagtext:`deprecated before`|| ||:diagtext:`overridden method` || | +| |+------------------------------+| |+-----------------------------+| |+---------------------------------------------+| | +| | | ||:diagtext:`obsoleted before` || | | | +| | | |+-----------------------------+| | | | ++---------------------------+--------------------------------+--------------------------+-------------------------------+--------+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ + ++---------------------------+--------------------------------+---------------------------------------------------------------------------------------------------+-----------------------------------------------+--------------------------------+ +|:warning:`warning:` |nbsp| |+------------------------------+|:diagtext:`method cannot be unavailable on` |nbsp| :placeholder:`A` |nbsp| :diagtext:`when` |nbsp| |+---------------------------------------------+| |nbsp| :diagtext:`is available`| +| || || ||:diagtext:`the protocol method it implements`|| | +| |+------------------------------+| |+---------------------------------------------+| | +| ||:diagtext:`overriding` |nbsp| || ||:diagtext:`its overridden method` || | +| |+------------------------------+| |+---------------------------------------------+| | ++---------------------------+--------------------------------+---------------------------------------------------------------------------------------------------+-----------------------------------------------+--------------------------------+ + + +-Wbackend-plugin +---------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + +The text of this diagnostic is not controlled by Clang. + + +-Wbackslash-newline-escape +-------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`backslash and newline separated by space`| ++-------------------------------------------------------------------------------+ + + +-Wbad-array-new-length +---------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`array is too large (`:placeholder:`A` |nbsp| :diagtext:`elements)`| ++--------------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`array size is negative`| ++-------------------------------------------------------------+ + + +-Wbad-function-cast +------------------- +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`cast from function call of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to non-matching type` |nbsp| :placeholder:`B`| ++--------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wbind-to-temporary-copy +------------------------ +Also controls `-Wc++98-compat-bind-to-temporary-copy`_. + +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+ +|:warning:`warning:` |nbsp| :diagtext:`C++98 requires an accessible copy constructor for class` |nbsp| :placeholder:`C` |nbsp| :diagtext:`when binding a reference to a temporary; was` |nbsp| |+---------------------+| +| ||:diagtext:`private` || +| |+---------------------+| +| ||:diagtext:`protected`|| +| |+---------------------+| ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+ + ++--------------------------------------------------------------------+-----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`no viable constructor` |nbsp| |+---------------------------------------+| |nbsp| :diagtext:`of type` |nbsp| :placeholder:`B`:diagtext:`; C++98 requires a copy constructor when binding a reference to a temporary`| +| ||:diagtext:`copying variable` || | +| |+---------------------------------------+| | +| ||:diagtext:`copying parameter` || | +| |+---------------------------------------+| | +| ||:diagtext:`returning object` || | +| |+---------------------------------------+| | +| ||:diagtext:`throwing object` || | +| |+---------------------------------------+| | +| ||:diagtext:`copying member subobject` || | +| |+---------------------------------------+| | +| ||:diagtext:`copying array element` || | +| |+---------------------------------------+| | +| ||:diagtext:`allocating object` || | +| |+---------------------------------------+| | +| ||:diagtext:`copying temporary` || | +| |+---------------------------------------+| | +| ||:diagtext:`initializing base subobject`|| | +| |+---------------------------------------+| | +| ||:diagtext:`initializing vector element`|| | +| |+---------------------------------------+| | +| ||:diagtext:`capturing value` || | +| |+---------------------------------------+| | ++--------------------------------------------------------------------+-----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wbitfield-constant-conversion +------------------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`implicit truncation from` |nbsp| :placeholder:`C` |nbsp| :diagtext:`to bitfield changes value from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`| ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wbitfield-width +---------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+ +|:warning:`warning:` |nbsp| :diagtext:`width of anonymous bit-field (`:placeholder:`A` |nbsp| :diagtext:`bits) exceeds width of its type; value will be truncated to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`bit`|+-------------+| +| || || +| |+-------------+| +| ||:diagtext:`s`|| +| |+-------------+| ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+ + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+ +|:warning:`warning:` |nbsp| :diagtext:`width of bit-field` |nbsp| :placeholder:`A` |nbsp| :diagtext:`(`:placeholder:`B` |nbsp| :diagtext:`bits) exceeds the width of its type; value will be truncated to` |nbsp| :placeholder:`C` |nbsp| :diagtext:`bit`|+-------------+| +| || || +| |+-------------+| +| ||:diagtext:`s`|| +| |+-------------+| ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+ + + +-Wbitwise-op-parentheses +------------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' within '`:placeholder:`B`:diagtext:`'`| ++-----------------------------------------------------------------------------------------------------------+ + + +-Wbool-conversion +----------------- +This diagnostic is enabled by default. + +Also controls `-Wpointer-bool-conversion`_, `-Wundefined-bool-conversion`_. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`initialization of pointer of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to null from a constant boolean expression`| ++--------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wbool-conversions +------------------ +Synonym for `-Wbool-conversion`_. + + +-Wbraced-scalar-init +-------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-----------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`braces around scalar initializer`| ++-----------------------------------------------------------------------+ + + +-Wbridge-cast +------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`bridges to` |nbsp| :placeholder:`B`:diagtext:`, not` |nbsp| :placeholder:`C`| ++------------------------------------------------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`cannot bridge to` |nbsp| :placeholder:`B`| ++-------------------------------------------------------------------------------------------------------+ + + +-Wbuiltin-macro-redefined +------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`redefining builtin macro`| ++---------------------------------------------------------------+ + ++---------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`undefining builtin macro`| ++---------------------------------------------------------------+ + + +-Wbuiltin-memcpy-chk-size +------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`will always overflow destination buffer`| ++------------------------------------------------------------------------------------------------------+ + + +-Wbuiltin-requires-header +------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`declaration of built-in function '`:placeholder:`B`:diagtext:`' requires inclusion of the header <`:placeholder:`A`:diagtext:`>`| ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wc++-compat +------------ +**Diagnostic text:** + ++---------------------------+---------------------------+--------------------+--------------------------------------------+---------------------------+--------------------------+ +|:warning:`warning:` |nbsp| |+-------------------------+|+------------------+| |nbsp| :diagtext:`has size 0 in C,` |nbsp| |+-------------------------+| |nbsp| :diagtext:`in C++`| +| || |||:diagtext:`struct`|| ||:diagtext:`size 1` || | +| |+-------------------------+|+------------------+| |+-------------------------+| | +| ||:diagtext:`empty` |nbsp| |||:diagtext:`union` || ||:diagtext:`non-zero size`|| | +| |+-------------------------+|+------------------+| |+-------------------------+| | ++---------------------------+---------------------------+--------------------+--------------------------------------------+---------------------------+--------------------------+ + + +-Wc++0x-compat +-------------- +Synonym for `-Wc++11-compat`_. + + +-Wc++0x-extensions +------------------ +Synonym for `-Wc++11-extensions`_. + + +-Wc++0x-narrowing +----------------- +Synonym for `-Wc++11-narrowing`_. + + +-Wc++11-compat +-------------- +Some of the diagnostics controlled by this flag are enabled by default. + +Also controls `-Wc++11-narrowing`_, `-Wc++11-compat-reserved-user-defined-literal`_, `-Wc++11-compat-deprecated-writable-strings`_, `-Wc++98-c++11-compat`_, `-Wc++98-c++11-c++14-compat`_. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`integer literal is too large to be represented in type 'long' and is subject to undefined behavior under C++98, interpreting as 'unsigned long'; this literal will` |nbsp| |+---------------------------------+| |nbsp| :diagtext:`in C++11 onwards`| +| ||:diagtext:`have type 'long long'`|| | +| |+---------------------------------+| | +| ||:diagtext:`be ill-formed` || | +| |+---------------------------------+| | ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'auto' storage class specifier is redundant and incompatible with C++11`| ++--------------------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`identifier after literal will be treated as a user-defined literal suffix in C++11`| ++-------------------------------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' is a keyword in C++11`| ++-------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`use of right-shift operator ('>>') in template argument will require parentheses in C++11`| ++--------------------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`explicit instantiation cannot be 'inline'`| ++--------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`explicit instantiation of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`must occur at global scope`| ++--------------------------------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`explicit instantiation of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`not in a namespace enclosing` |nbsp| :placeholder:`B`| ++----------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`explicit instantiation of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`must occur in namespace` |nbsp| :placeholder:`B`| ++-----------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`integer literal is too large to be represented in type 'long', interpreting as 'unsigned long' per C++98; this literal will` |nbsp| |+---------------------------------+| |nbsp| :diagtext:`in C++11 onwards`| +| ||:diagtext:`have type 'long long'`|| | +| |+---------------------------------+| | +| ||:diagtext:`be ill-formed` || | +| |+---------------------------------+| | ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+------------------------------------+ + + +-Wc++11-compat-deprecated-writable-strings +------------------------------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`conversion from string literal to` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is deprecated`| ++---------------------------------------------------------------------------------------------------------------------------------+ + + +-Wc++11-compat-pedantic +----------------------- +Controls `-Wc++98-c++11-compat-pedantic`_, `-Wc++98-c++11-c++14-compat-pedantic`_. + + +-Wc++11-compat-reserved-user-defined-literal +-------------------------------------------- +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`identifier after literal will be treated as a reserved user-defined literal suffix in C++11`| ++----------------------------------------------------------------------------------------------------------------------------------+ + + +-Wc++11-extensions +------------------ +Some of the diagnostics controlled by this flag are enabled by default. + +Also controls `-Wc++11-extra-semi`_, `-Wc++11-inline-namespace`_, `-Wc++11-long-long`_. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`alias declarations are a C++11 extension`| ++-------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`implicit conversion from array size expression of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| |+-----------------------+| |nbsp| :diagtext:`type` |nbsp| :placeholder:`C` |nbsp| :diagtext:`is a C++11 extension`| +| ||:diagtext:`integral` || | +| |+-----------------------+| | +| ||:diagtext:`enumeration`|| | +| |+-----------------------+| | ++---------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'auto' type specifier is a C++11 extension`| ++---------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`enumeration types with a fixed underlying type are a C++11 extension`| ++-----------------------------------------------------------------------------------------------------------+ + ++---------------------------+-----------------------+--------------------------------------------------------------+ +|:warning:`warning:` |nbsp| |+---------------------+| |nbsp| :diagtext:`function definitions are a C++11 extension`| +| ||:diagtext:`defaulted`|| | +| |+---------------------+| | +| ||:diagtext:`deleted` || | +| |+---------------------+| | ++---------------------------+-----------------------+--------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`befriending enumeration type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a C++11 extension`| ++-----------------------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`commas at the end of enumerator lists are a C++11 extension`| ++--------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`explicit conversion functions are a C++11 extension`| ++------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`extern templates are a C++11 extension`| ++-----------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`range-based for loop is a C++11 extension`| ++--------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`generalized initializer lists are a C++11 extension`| ++------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`use of enumeration in a nested name specifier is a C++11 extension`| ++---------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`non-class friend type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a C++11 extension`| ++----------------------------------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`in-class initialization of non-static data member is a C++11 extension`| ++-------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' keyword is a C++11 extension`| ++--------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`reference qualifiers on functions are a C++11 extension`| ++----------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`rvalue references are a C++11 extension`| ++------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`scoped enumerations are a C++11 extension`| ++--------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`static data member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in union is a C++11 extension`| ++----------------------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`non-type template argument referring to` |nbsp| |+--------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`with internal linkage is a C++11 extension`| +| ||:diagtext:`function`|| | +| |+--------------------+| | +| ||:diagtext:`object` || | +| |+--------------------+| | ++--------------------------------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'template' keyword outside of a template`| ++-------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`default template arguments for a function template are a C++11 extension`| ++---------------------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`first declaration of` |nbsp| |+-------------------------------------+| |nbsp| :diagtext:`specialization of` |nbsp| :placeholder:`B` |nbsp| :diagtext:`outside namespace` |nbsp| :placeholder:`C` |nbsp| :diagtext:`is a C++11 extension`| +| ||:diagtext:`class template` || | +| |+-------------------------------------+| | +| ||:diagtext:`class template partial` || | +| |+-------------------------------------+| | +| ||:diagtext:`variable template` || | +| |+-------------------------------------+| | +| ||:diagtext:`variable template partial`|| | +| |+-------------------------------------+| | +| ||:diagtext:`function template` || | +| |+-------------------------------------+| | +| ||:diagtext:`member function` || | +| |+-------------------------------------+| | +| ||:diagtext:`static data member` || | +| |+-------------------------------------+| | +| ||:diagtext:`member class` || | +| |+-------------------------------------+| | +| ||:diagtext:`member enumeration` || | +| |+-------------------------------------+| | ++-------------------------------------------------------------------+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'typename' occurs outside of a template`| ++------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------------+-----------------------+-------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`unelaborated friend declaration is a C++11 extension; specify '`|+---------------------+|:diagtext:`' to befriend` |nbsp| :placeholder:`B`| +| ||:diagtext:`struct` || | +| |+---------------------+| | +| ||:diagtext:`interface`|| | +| |+---------------------+| | +| ||:diagtext:`union` || | +| |+---------------------+| | +| ||:diagtext:`class` || | +| |+---------------------+| | +| ||:diagtext:`enum` || | +| |+---------------------+| | ++------------------------------------------------------------------------------------------------------+-----------------------+-------------------------------------------------+ + ++-------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`variadic templates are a C++11 extension`| ++-------------------------------------------------------------------------------+ + + +-Wc++11-extra-semi +------------------ +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`extra ';' outside of a function is a C++11 extension`| ++-------------------------------------------------------------------------------------------+ + + +-Wc++11-inline-namespace +------------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++----------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`inline namespaces are a C++11 feature`| ++----------------------------------------------------------------------------+ + + +-Wc++11-long-long +----------------- +**Diagnostic text:** + ++-----------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'long long' is a C++11 extension`| ++-----------------------------------------------------------------------+ + + +-Wc++11-narrowing +----------------- +Some of the diagnostics controlled by this flag are enabled by default. + +**Diagnostic text:** + ++-----------------------+----------------------------------------+--------+--------------------------------------------------------------------------------------------------------------------------+ +|:error:`error:` |nbsp| |+--------------------------------------+| |nbsp| |+------------------------------------------------------------------------------------------------------------------------+| +| ||:diagtext:`case value` || ||+--------------------------------------------------------------------------------------------------------------+ || +| |+--------------------------------------+| |||:diagtext:`cannot be narrowed from type` |nbsp| :placeholder:`C` |nbsp| :diagtext:`to` |nbsp| :placeholder:`D`| || +| ||:diagtext:`enumerator value` || ||+--------------------------------------------------------------------------------------------------------------+ || +| |+--------------------------------------+| |+------------------------------------------------------------------------------------------------------------------------+| +| ||:diagtext:`non-type template argument`|| ||+----------------------------------------------------------------------------------------------------------------------+|| +| |+--------------------------------------+| |||:diagtext:`evaluates to` |nbsp| :placeholder:`C`:diagtext:`, which cannot be narrowed to type` |nbsp| :placeholder:`D`||| +| ||:diagtext:`array size` || ||+----------------------------------------------------------------------------------------------------------------------+|| +| |+--------------------------------------+| |+------------------------------------------------------------------------------------------------------------------------+| +| ||:diagtext:`constexpr if condition` || | | +| |+--------------------------------------+| | | ++-----------------------+----------------------------------------+--------+--------------------------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:error:`error:` |nbsp| :diagtext:`constant expression evaluates to` |nbsp| :placeholder:`A` |nbsp| :diagtext:`which cannot be narrowed to type` |nbsp| :placeholder:`B`| ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:error:`error:` |nbsp| :diagtext:`type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`cannot be narrowed to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`in initializer list`| ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:error:`error:` |nbsp| :diagtext:`non-constant-expression cannot be narrowed from type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`in initializer list`| ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`constant expression evaluates to` |nbsp| :placeholder:`A` |nbsp| :diagtext:`which cannot be narrowed to type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`in C++11`| ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`cannot be narrowed to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`in initializer list in C++11`| ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`non-constant-expression cannot be narrowed from type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`in initializer list in C++11`| ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wc++14-binary-literal +---------------------- +**Diagnostic text:** + ++------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`binary integer literals are a C++14 extension`| ++------------------------------------------------------------------------------------+ + + +-Wc++14-compat +-------------- +Synonym for `-Wc++98-c++11-c++14-compat`_. + + +-Wc++14-compat-pedantic +----------------------- +Synonym for `-Wc++98-c++11-c++14-compat-pedantic`_. + + +-Wc++14-extensions +------------------ +Some of the diagnostics controlled by this flag are enabled by default. + +Also controls `-Wc++14-binary-literal`_. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------+-------------------------+----------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`use of this statement in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is a C++14 extension`| +| ||:diagtext:`function` || | +| |+-----------------------+| | +| ||:diagtext:`constructor`|| | +| |+-----------------------+| | ++-----------------------------------------------------------------------------------+-------------------------+----------------------------------------+ + ++------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`multiple return statements in constexpr function is a C++14 extension`| ++------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------+-------------------------+----------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`variable declaration in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is a C++14 extension`| +| ||:diagtext:`function` || | +| |+-----------------------+| | +| ||:diagtext:`constructor`|| | +| |+-----------------------+| | ++----------------------------------------------------------------------------------+-------------------------+----------------------------------------+ + ++-----------------------------------------------------------------------------+-------------------------+----------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`type definition in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is a C++14 extension`| +| ||:diagtext:`function` || | +| |+-----------------------+| | +| ||:diagtext:`constructor`|| | +| |+-----------------------+| | ++-----------------------------------------------------------------------------+-------------------------+----------------------------------------+ + ++---------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`use of the` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute is a C++14 extension`| ++---------------------------------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'decltype(auto)' type specifier is a C++14 extension`| ++-------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`initialized lambda captures are a C++14 extension`| ++----------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`variable templates are a C++14 extension`| ++-------------------------------------------------------------------------------+ + + +-Wc++1y-extensions +------------------ +Synonym for `-Wc++14-extensions`_. + + +-Wc++1z-compat +-------------- +This diagnostic is enabled by default. + +Controls `-Wdeprecated-register`_, `-Wdeprecated-increment-bool`_. + + +-Wc++1z-extensions +------------------ +Some of the diagnostics controlled by this flag are enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`constexpr if is a C++1z extension`| ++------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'constexpr' on lambda expressions is a C++1z extension`| ++---------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`use of the` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute is a C++1z extension`| ++---------------------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`decomposition declarations are a C++1z extension`| ++---------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`pack fold expression is a C++1z extension`| ++--------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'begin' and 'end' returning different types (`:placeholder:`A` |nbsp| :diagtext:`and` |nbsp| :placeholder:`B`:diagtext:`) is a C++1z extension`| ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`hexadecimal floating literals are a C++1z feature`| ++----------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`inline variables are a C++1z extension`| ++-----------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`nested namespace definition is a C++1z extension; define each namespace separately`| ++-------------------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`capture of '\*this' by copy is a C++1z extension`| ++---------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`static\_assert with no message is a C++1z extension`| ++------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`template template parameter using 'typename' is a C++1z extension`| ++--------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`default scope specifier for attributes is a C++1z extension`| ++--------------------------------------------------------------------------------------------------+ + + +-Wc++98-c++11-c++14-compat +-------------------------- +**Diagnostic text:** + ++------------------------------------------------------------+---------------------------+--------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`attributes on` |nbsp| |+-------------------------+| |nbsp| :diagtext:`declaration are incompatible with C++ standards before C++1z`| +| ||:diagtext:`a namespace` || | +| |+-------------------------+| | +| ||:diagtext:`an enumerator`|| | +| |+-------------------------+| | ++------------------------------------------------------------+---------------------------+--------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`constexpr if is incompatible with C++ standards before C++1z`| ++---------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`constexpr on lambda expressions is incompatible with C++ standards before C++1z`| ++----------------------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`decomposition declarations are incompatible with C++ standards before C++1z`| ++------------------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`pack fold expression is incompatible with C++ standards before C++1z`| ++-----------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`inline variables are incompatible with C++ standards before C++1z`| ++--------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`nested namespace definition is incompatible with C++ standards before C++1z`| ++------------------------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`by value capture of '\*this' is incompatible with C++ standards before C++1z`| ++-------------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`static\_assert with no message is incompatible with C++ standards before C++1z`| ++---------------------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`template template parameter using 'typename' is incompatible with C++ standards before C++1z`| ++-----------------------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`unicode literals are incompatible with C++ standards before C++1z`| ++--------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`default scope specifier for attributes is incompatible with C++ standards before C++1z`| ++-----------------------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'begin' and 'end' returning different types (`:placeholder:`A` |nbsp| :diagtext:`and` |nbsp| :placeholder:`B`:diagtext:`) is incompatible with C++ standards before C++1z`| ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wc++98-c++11-c++14-compat-pedantic +----------------------------------- +Also controls `-Wc++98-c++11-c++14-compat`_. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`hexidecimal floating literals are incompatible with C++ standards before C++1z`| ++---------------------------------------------------------------------------------------------------------------------+ + + +-Wc++98-c++11-compat +-------------------- +**Diagnostic text:** + ++-----------------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`use of this statement in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is incompatible with C++ standards before C++14`| +| ||:diagtext:`function` || | +| |+-----------------------+| | +| ||:diagtext:`constructor`|| | +| |+-----------------------+| | ++-----------------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`multiple return statements in constexpr function is incompatible with C++ standards before C++14`| ++---------------------------------------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`constexpr function with no return statements is incompatible with C++ standards before C++14`| ++-----------------------------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`variable declaration in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is incompatible with C++ standards before C++14`| +| ||:diagtext:`function` || | +| |+-----------------------+| | +| ||:diagtext:`constructor`|| | +| |+-----------------------+| | ++----------------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`type definition in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is incompatible with C++ standards before C++14`| +| ||:diagtext:`function` || | +| |+-----------------------+| | +| ||:diagtext:`constructor`|| | +| |+-----------------------+| | ++-----------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'decltype(auto)' type specifier is incompatible with C++ standards before C++14`| ++----------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`digit separators are incompatible with C++ standards before C++14`| ++--------------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`initialized lambda captures are incompatible with C++ standards before C++14`| ++-------------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`variable templates are incompatible with C++ standards before C++14`| ++----------------------------------------------------------------------------------------------------------+ + + +-Wc++98-c++11-compat-pedantic +----------------------------- +Also controls `-Wc++98-c++11-compat`_. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`binary integer literals are incompatible with C++ standards before C++14`| ++---------------------------------------------------------------------------------------------------------------+ + + +-Wc++98-compat +-------------- +Also controls `-Wc++98-compat-local-type-template-args`_, `-Wc++98-compat-unnamed-type-template-args`_, `-Wc++98-c++11-compat`_, `-Wc++98-c++11-c++14-compat`_. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`alias declarations are incompatible with C++98`| ++-------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'alignas' is incompatible with C++98`| ++---------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`alignof expressions are incompatible with C++98`| ++--------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`C++11 attribute syntax is incompatible with C++98`| ++----------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'auto' type specifier is incompatible with C++98`| ++---------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'constexpr' specifier is incompatible with C++98`| ++---------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`constructor call from initializer list is incompatible with C++98`| ++--------------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'decltype' type specifier is incompatible with C++98`| ++-------------------------------------------------------------------------------------------+ + ++---------------------------+-----------------------+--------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| |+---------------------+| |nbsp| :diagtext:`function definitions are incompatible with C++98`| +| ||:diagtext:`defaulted`|| | +| |+---------------------+| | +| ||:diagtext:`deleted` || | +| |+---------------------+| | ++---------------------------+-----------------------+--------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`delegating constructors are incompatible with C++98`| ++------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`scalar initialized from empty initializer list is incompatible with C++98`| ++----------------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`enumeration types with a fixed underlying type are incompatible with C++98`| ++-----------------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`befriending enumeration type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is incompatible with C++98`| ++-----------------------------------------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`enumeration type in nested name specifier is incompatible with C++98`| ++-----------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`explicit conversion functions are incompatible with C++98`| ++------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`range-based for loop is incompatible with C++98`| ++--------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`friend declaration naming a member of the declaring class is incompatible with C++98`| ++---------------------------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`generalized initializer lists are incompatible with C++98`| ++------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`jump from this goto statement to its label is incompatible with C++98`| ++------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`jump from this indirect goto statement to one of its possible targets is incompatible with C++98`| ++---------------------------------------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`initialization of initializer\_list object is incompatible with C++98`| ++------------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`inline namespaces are incompatible with C++98`| ++------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`lambda expressions are incompatible with C++98`| ++-------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'<::' is treated as digraph '<:' (aka '\[') followed by ':' in C++98`| ++-----------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`literal operators are incompatible with C++98`| ++------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`universal character name referring to a control character is incompatible with C++98`| ++---------------------------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`specifying character '`:placeholder:`A`:diagtext:`' with a universal character name is incompatible with C++98`| ++-----------------------------------------------------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`noexcept specifications are incompatible with C++98`| ++------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`noexcept expressions are incompatible with C++98`| ++---------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`use of non-static data member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in an unevaluated context is incompatible with C++98`| ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`non-class friend type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is incompatible with C++98`| ++----------------------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`in-class initialization of non-static data members is incompatible with C++98`| ++--------------------------------------------------------------------------------------------------------------------+ + ++---------------------------+------------------------------+------------------------------------------------------------------------------------------------+--------------------------------------+----------------------------------------------+ +|:warning:`warning:` |nbsp| |+----------------------------+| |nbsp| :diagtext:`member` |nbsp| :placeholder:`B` |nbsp| :diagtext:`with a non-trivial` |nbsp| |+------------------------------------+| |nbsp| :diagtext:`is incompatible with C++98`| +| ||:diagtext:`anonymous struct`|| ||:diagtext:`constructor` || | +| |+----------------------------+| |+------------------------------------+| | +| ||:diagtext:`union` || ||:diagtext:`copy constructor` || | +| |+----------------------------+| |+------------------------------------+| | +| | | ||:diagtext:`move constructor` || | +| | | |+------------------------------------+| | +| | | ||:diagtext:`copy assignment operator`|| | +| | | |+------------------------------------+| | +| | | ||:diagtext:`move assignment operator`|| | +| | | |+------------------------------------+| | +| | | ||:diagtext:`destructor` || | +| | | |+------------------------------------+| | ++---------------------------+------------------------------+------------------------------------------------------------------------------------------------+--------------------------------------+----------------------------------------------+ + ++---------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'nullptr' is incompatible with C++98`| ++---------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' keyword is incompatible with C++98`| ++--------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`passing object of trivial but non-POD type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`through variadic` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is incompatible with C++98`| +| ||:diagtext:`function` || | +| |+-----------------------+| | +| ||:diagtext:`block` || | +| |+-----------------------+| | +| ||:diagtext:`method` || | +| |+-----------------------+| | +| ||:diagtext:`constructor`|| | +| |+-----------------------+| | ++-----------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------+ + ++--------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`raw string literals are incompatible with C++98`| ++--------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`reference qualifiers on functions are incompatible with C++98`| ++----------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`reference initialized from initializer list is incompatible with C++98`| ++-------------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`rvalue references are incompatible with C++98`| ++------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`scoped enumerations are incompatible with C++98`| ++--------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`substitution failure due to access control is incompatible with C++98`| ++------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`static\_assert declarations are incompatible with C++98`| ++----------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`static data member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in union is incompatible with C++98`| ++----------------------------------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`jump from switch statement to this case label is incompatible with C++98`| ++---------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`redundant parentheses surrounding address non-type template argument are incompatible with C++98`| ++---------------------------------------------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`use of null pointer as non-type template argument is incompatible with C++98`| ++-------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`non-type template argument referring to` |nbsp| |+--------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`with internal linkage is incompatible with C++98`| +| ||:diagtext:`function`|| | +| |+--------------------+| | +| ||:diagtext:`object` || | +| |+--------------------+| | ++--------------------------------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`use of 'template' keyword outside of a template is incompatible with C++98`| ++-----------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`default template arguments for a function template are incompatible with C++98`| ++---------------------------------------------------------------------------------------------------------------------+ + ++---------------------------+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| |+-------------------------------------+| |nbsp| :diagtext:`specialization of` |nbsp| :placeholder:`B` |nbsp| :diagtext:`outside namespace` |nbsp| :placeholder:`C` |nbsp| :diagtext:`is incompatible with C++98`| +| ||:diagtext:`class template` || | +| |+-------------------------------------+| | +| ||:diagtext:`class template partial` || | +| |+-------------------------------------+| | +| ||:diagtext:`variable template` || | +| |+-------------------------------------+| | +| ||:diagtext:`variable template partial`|| | +| |+-------------------------------------+| | +| ||:diagtext:`function template` || | +| |+-------------------------------------+| | +| ||:diagtext:`member function` || | +| |+-------------------------------------+| | +| ||:diagtext:`static data member` || | +| |+-------------------------------------+| | +| ||:diagtext:`member class` || | +| |+-------------------------------------+| | +| ||:diagtext:`member enumeration` || | +| |+-------------------------------------+| | ++---------------------------+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`trailing return types are incompatible with C++98`| ++----------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`consecutive right angle brackets are incompatible with C++98 (use '> >')`| ++---------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`use of 'typename' outside of a template is incompatible with C++98`| ++---------------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------+-----------------------+------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`befriending` |nbsp| :placeholder:`B` |nbsp| :diagtext:`without '`|+---------------------+|:diagtext:`' keyword is incompatible with C++98`| +| ||:diagtext:`struct` || | +| |+---------------------+| | +| ||:diagtext:`interface`|| | +| |+---------------------+| | +| ||:diagtext:`union` || | +| |+---------------------+| | +| ||:diagtext:`class` || | +| |+---------------------+| | +| ||:diagtext:`enum` || | +| |+---------------------+| | ++-------------------------------------------------------------------------------------------------------+-----------------------+------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`using this character in an identifier is incompatible with C++98`| ++-------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`unicode literals are incompatible with C++98`| ++-----------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' type specifier is incompatible with C++98`| ++---------------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`inheriting constructors are incompatible with C++98`| ++------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`variadic templates are incompatible with C++98`| ++-------------------------------------------------------------------------------------+ + + +-Wc++98-compat-bind-to-temporary-copy +------------------------------------- +**Diagnostic text:** + ++---------------------------+-----------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------+----------------------------+ +|:warning:`warning:` |nbsp| |+---------------------------------------+| |nbsp| :diagtext:`of type` |nbsp| :placeholder:`C` |nbsp| :diagtext:`when binding a reference to a temporary would` |nbsp| |+----------------------------------------------+| |nbsp| :diagtext:`in C++98`| +| ||:diagtext:`copying variable` || ||:diagtext:`invoke an inaccessible constructor`|| | +| |+---------------------------------------+| |+----------------------------------------------+| | +| ||:diagtext:`copying parameter` || ||:diagtext:`find no viable constructor` || | +| |+---------------------------------------+| |+----------------------------------------------+| | +| ||:diagtext:`returning object` || ||:diagtext:`find ambiguous constructors` || | +| |+---------------------------------------+| |+----------------------------------------------+| | +| ||:diagtext:`throwing object` || ||:diagtext:`invoke a deleted constructor` || | +| |+---------------------------------------+| |+----------------------------------------------+| | +| ||:diagtext:`copying member subobject` || | | | +| |+---------------------------------------+| | | | +| ||:diagtext:`copying array element` || | | | +| |+---------------------------------------+| | | | +| ||:diagtext:`allocating object` || | | | +| |+---------------------------------------+| | | | +| ||:diagtext:`copying temporary` || | | | +| |+---------------------------------------+| | | | +| ||:diagtext:`initializing base subobject`|| | | | +| |+---------------------------------------+| | | | +| ||:diagtext:`initializing vector element`|| | | | +| |+---------------------------------------+| | | | ++---------------------------+-----------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------+----------------------------+ + + +-Wc++98-compat-local-type-template-args +--------------------------------------- +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`local type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`as template argument is incompatible with C++98`| ++--------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wc++98-compat-pedantic +----------------------- +Also controls `-Wc++98-compat`_, `-Wc++98-compat-bind-to-temporary-copy`_, `-Wc++98-c++11-compat-pedantic`_, `-Wc++98-c++11-c++14-compat-pedantic`_. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`implicit conversion from array size expression of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| |+-----------------------+| |nbsp| :diagtext:`type` |nbsp| :placeholder:`C` |nbsp| :diagtext:`is incompatible with C++98`| +| ||:diagtext:`integral` || | +| |+-----------------------+| | +| ||:diagtext:`enumeration`|| | +| |+-----------------------+| | ++---------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`cast between pointer-to-function and pointer-to-object is incompatible with C++98`| ++------------------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`empty macro arguments are incompatible with C++98`| ++----------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`commas at the end of enumerator lists are incompatible with C++98`| ++--------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`extern templates are incompatible with C++98`| ++-----------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'long long' is incompatible with C++98`| ++-----------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`C++98 requires newline at end of file`| ++----------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`#line number greater than 32767 is incompatible with C++98`| ++-------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`extra ';' outside of a function is incompatible with C++98`| ++-------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`variadic macros are incompatible with C++98`| ++----------------------------------------------------------------------------------+ + + +-Wc++98-compat-unnamed-type-template-args +----------------------------------------- +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`unnamed type as template argument is incompatible with C++98`| ++---------------------------------------------------------------------------------------------------+ + + +-Wc11-extensions +---------------- +**Diagnostic text:** + ++---------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`anonymous unions are a C11 extension`| ++---------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a C11-specific feature`| ++----------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`anonymous structs are a C11 extension`| ++----------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`generic selections are a C11-specific feature`| ++------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`\_Noreturn functions are a C11-specific feature`| ++--------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`\_Static\_assert is a C11-specific feature`| ++---------------------------------------------------------------------------------+ + + +-Wc99-compat +------------ +Some of the diagnostics controlled by this flag are enabled by default. + +**Diagnostic text:** + ++---------------------------+--------------------------------------------------------+--------------------------------------------+ +|:warning:`warning:` |nbsp| |+------------------------------------------------------+| |nbsp| :diagtext:`is incompatible with C99`| +| ||:diagtext:`using this character in an identifier` || | +| |+------------------------------------------------------+| | +| ||:diagtext:`starting an identifier with this character`|| | +| |+------------------------------------------------------+| | ++---------------------------+--------------------------------------------------------+--------------------------------------------+ + ++---------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`unicode literals are incompatible with C99`| ++---------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+----------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`integer literal is too large to be represented in type 'long', interpreting as 'unsigned long' per C89; this literal will` |nbsp| |+---------------------------------+| |nbsp| :diagtext:`in C99 onwards`| +| ||:diagtext:`have type 'long long'`|| | +| |+---------------------------------+| | +| ||:diagtext:`be ill-formed` || | +| |+---------------------------------+| | ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+----------------------------------+ + + +-Wc99-extensions +---------------- +Some of the diagnostics controlled by this flag are enabled by default. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`initializer for aggregate is not a compile-time constant`| ++-----------------------------------------------------------------------------------------------+ + ++---------------------------+----------------------------------+------------------------------+-----------------------+----------------------------+ +|:warning:`warning:` |nbsp| |+--------------------------------+|:diagtext:`array size` |nbsp| |+---------------------+|:diagtext:`is a C99 feature`| +| ||:diagtext:`qualifier in` |nbsp| || || || | +| |+--------------------------------+| |+---------------------+| | +| ||:diagtext:`static` |nbsp| || || || | +| |+--------------------------------+| |+---------------------+| | +| || || ||:diagtext:`'\[\*\] '`|| | +| |+--------------------------------+| |+---------------------+| | ++---------------------------+----------------------------------+------------------------------+-----------------------+----------------------------+ + ++-----------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`compound literals are a C99-specific feature`| ++-----------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`flexible array members are a C99 feature`| ++-------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`variable declaration in for loop is a C99-specific feature`| ++-------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`ISO C99 requires whitespace after the macro name`| ++---------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`designated initializers are a C99 feature`| ++--------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`empty macro arguments are a C99 feature`| ++------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`commas at the end of enumerator lists are a C99-specific feature`| ++-------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`hexadecimal floating constants are a C99 feature`| ++---------------------------------------------------------------------------------------+ + + +-Wcast-align +------------ +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`cast from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`increases required alignment from` |nbsp| :placeholder:`C` |nbsp| :diagtext:`to` |nbsp| :placeholder:`D`| ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wcast-calling-convention +------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`cast between incompatible calling conventions '`:placeholder:`A`:diagtext:`' and '`:placeholder:`B`:diagtext:`'; calls through this pointer may abort at runtime`| ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wcast-of-sel-type +------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`cast of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is deprecated; use sel\_getName instead`| ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wcast-qual +----------- +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`cast from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`drops` |nbsp| |+-----------------------------------------+| +| ||:diagtext:`const and volatile qualifiers`|| +| |+-----------------------------------------+| +| ||:diagtext:`const qualifier` || +| |+-----------------------------------------+| +| ||:diagtext:`volatile qualifier` || +| |+-----------------------------------------+| ++-------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`cast from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`must have all intermediate pointers const qualified to be safe`| ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wchar-align +------------ +This diagnostic flag exists for GCC compatibility, and has no effect in Clang. + +-Wchar-subscripts +----------------- +**Diagnostic text:** + ++------------------------------------------------------------+-------------------------+-------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`array section` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is of type 'char'`| +| ||:diagtext:`lower bound`|| | +| |+-----------------------+| | +| ||:diagtext:`length` || | +| |+-----------------------+| | ++------------------------------------------------------------+-------------------------+-------------------------------------+ + ++------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`array subscript is of type 'char'`| ++------------------------------------------------------------------------+ + + +-Wclang-cl-pch +-------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`support for '/Yc' with more than one source file not implemented yet; flag ignored`| ++-------------------------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`support for '/Yc' and '/Yu' with different filenames not implemented yet; flags ignored`| ++------------------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`support for '`:placeholder:`A`:diagtext:`' without a filename not implemented yet; flag ignored`| ++--------------------------------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`support for '`:placeholder:`A`:diagtext:`' without a corresponding /FI flag not implemented yet; flag ignored`| ++----------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wclass-varargs +--------------- +Some of the diagnostics controlled by this flag are enabled by default. + +Also controls `-Wnon-pod-varargs`_. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`passing object of class type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`through variadic` |nbsp| |+-----------------------+|+--------------------------------------------------------------------+| +| ||:diagtext:`function` ||| || +| |+-----------------------+|+--------------------------------------------------------------------+| +| ||:diagtext:`block` |||+------------------------------------------------------------------+|| +| |+-----------------------+|||:diagtext:`; did you mean to call '`:placeholder:`D`:diagtext:`'?`||| +| ||:diagtext:`method` |||+------------------------------------------------------------------+|| +| |+-----------------------+|+--------------------------------------------------------------------+| +| ||:diagtext:`constructor`|| | +| |+-----------------------+| | ++---------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------+ + + +-Wcomma +------- +**Diagnostic text:** + ++-----------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`possible misuse of comma operator here`| ++-----------------------------------------------------------------------------+ + + +-Wcomment +--------- +Some of the diagnostics controlled by this flag are enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`escaped newline between \*/ characters at block comment end`| ++--------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`// comments are not allowed in this language`| ++-----------------------------------------------------------------------------------+ + ++------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`multi-line // comment`| ++------------------------------------------------------------+ + ++-----------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'/\*' within block comment`| ++-----------------------------------------------------------------+ + + +-Wcomments +---------- +Synonym for `-Wcomment`_. + + +-Wcompare-distinct-pointer-types +-------------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`comparison of distinct pointer types`| ++---------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`comparison of distinct pointer types (`:placeholder:`A` |nbsp| :diagtext:`and` |nbsp| :placeholder:`B`:diagtext:`) uses non-standard composite pointer type` |nbsp| :placeholder:`C`| ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wcomplex-component-init +------------------------ +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`complex initialization specifying real and imaginary components is an extension`| ++----------------------------------------------------------------------------------------------------------------------+ + + +-Wconditional-type-mismatch +--------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`pointer/integer type mismatch in conditional expression`| ++----------------------------------------------------------------------------------------------+ + + +-Wconditional-uninitialized +--------------------------- +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------------------+-------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`may be uninitialized when` |nbsp| |+-----------------------------+| +| ||:diagtext:`used here` || +| |+-----------------------------+| +| ||:diagtext:`captured by block`|| +| |+-----------------------------+| ++----------------------------------------------------------------------------------------------------------------------------+-------------------------------+ + + +-Wconfig-macros +--------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------+------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------+---------------------------------------------------------+ +|:warning:`warning:` |nbsp| |+----------------------+| |nbsp| :diagtext:`of configuration macro '`:placeholder:`B`:diagtext:`' has no effect on the import of '`:placeholder:`C`:diagtext:`'; pass '`|+------------------------------------------------+|:diagtext:`' on the command line to configure the module`| +| ||:diagtext:`definition`|| ||+----------------------------------------------+|| | +| |+----------------------+| |||:diagtext:`-D`:placeholder:`B`:diagtext:`=...`||| | +| ||:diagtext:`#undef` || ||+----------------------------------------------+|| | +| |+----------------------+| |+------------------------------------------------+| | +| | | ||+------------------------------+ || | +| | | |||:diagtext:`-U`:placeholder:`B`| || | +| | | ||+------------------------------+ || | +| | | |+------------------------------------------------+| | ++---------------------------+------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------+---------------------------------------------------------+ + + +-Wconstant-conversion +--------------------- +This diagnostic is enabled by default. + +Also controls `-Wbitfield-constant-conversion`_. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`implicit conversion from` |nbsp| :placeholder:`C` |nbsp| :diagtext:`to` |nbsp| :placeholder:`D` |nbsp| :diagtext:`changes value from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`| ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wconstant-logical-operand +-------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`use of logical '`:placeholder:`A`:diagtext:`' with constant operand`| ++----------------------------------------------------------------------------------------------------------+ + + +-Wconstexpr-not-const +--------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'constexpr' non-static member function will not be implicitly 'const' in C++14; add 'const' to avoid a change in behavior`| ++----------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wconsumed +---------- +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`consumed analysis attribute is attached to member of class '`:placeholder:`A`:diagtext:`' which isn't marked as consumable`| ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`state of variable '`:placeholder:`A`:diagtext:`' must match at the entry and exit of loop`| ++--------------------------------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`parameter '`:placeholder:`A`:diagtext:`' not in expected state when the function returns: expected '`:placeholder:`B`:diagtext:`', observed '`:placeholder:`C`:diagtext:`'`| ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`argument not in expected state; expected '`:placeholder:`A`:diagtext:`', observed '`:placeholder:`B`:diagtext:`'`| ++-------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`return state set for an unconsumable type '`:placeholder:`A`:diagtext:`'`| ++---------------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`return value not in expected state; expected '`:placeholder:`A`:diagtext:`', observed '`:placeholder:`B`:diagtext:`'`| ++-----------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`invalid invocation of method '`:placeholder:`A`:diagtext:`' on object '`:placeholder:`B`:diagtext:`' while it is in the '`:placeholder:`C`:diagtext:`' state`| ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`invalid invocation of method '`:placeholder:`A`:diagtext:`' on a temporary object while it is in the '`:placeholder:`B`:diagtext:`' state`| ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wconversion +------------ +Some of the diagnostics controlled by this flag are enabled by default. + +Also controls `-Wbool-conversion`_, `-Wconstant-conversion`_, `-Wenum-conversion`_, `-Wfloat-conversion`_, `-Wshorten-64-to-32`_, `-Wint-conversion`_, `-Wliteral-conversion`_, `-Wnon-literal-null-conversion`_, `-Wnull-conversion`_, `-Wobjc-literal-conversion`_, `-Wsign-conversion`_, `-Wstring-conversion`_. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`implicit conversion discards imaginary component:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`| ++--------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`implicit conversion loses floating-point precision:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`| ++----------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`implicit conversion loses integer precision:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`| ++---------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`implicit conversion turns vector to scalar:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`| ++--------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`non-type template argument with value '`:placeholder:`A`:diagtext:`' converted to '`:placeholder:`B`:diagtext:`' for unsigned template parameter of type` |nbsp| :placeholder:`C`| ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`non-type template argument value '`:placeholder:`A`:diagtext:`' truncated to '`:placeholder:`B`:diagtext:`' for template parameter of type` |nbsp| :placeholder:`C`| ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wconversion-null +----------------- +Synonym for `-Wnull-conversion`_. + + +-Wcoreturn-without-coawait +-------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'co\_return' used in a function that uses neither 'co\_await' nor 'co\_yield'`| ++--------------------------------------------------------------------------------------------------------------------+ + + +-Wcovered-switch-default +------------------------ +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`default label in switch which covers all enumeration values`| ++--------------------------------------------------------------------------------------------------+ + + +-Wcstring-format-directive +-------------------------- +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------------+------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`using` |nbsp| :placeholder:`A` |nbsp| :diagtext:`directive in` |nbsp| |+--------------------+| |nbsp| :diagtext:`which is being passed as a formatting argument to the formatting` |nbsp| |+----------------------+| +| ||:diagtext:`NSString`|| ||:diagtext:`method` || +| |+--------------------+| |+----------------------+| +| ||:diagtext:`CFString`|| ||:diagtext:`CFfunction`|| +| |+--------------------+| |+----------------------+| ++------------------------------------------------------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------------+------------------------+ + + +-Wctor-dtor-privacy +------------------- +This diagnostic flag exists for GCC compatibility, and has no effect in Clang. + +-Wcuda-compat +------------- +Some of the diagnostics controlled by this flag are enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute parameter` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is negative and will be ignored`| ++-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`ignored 'inline' attribute on kernel function` |nbsp| :placeholder:`A`| ++------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`kernel function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a member function; this may not be accepted by nvcc`| ++--------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`argument to '#pragma unroll' should not be in parentheses in CUDA C/C++`| ++--------------------------------------------------------------------------------------------------------------+ + + +-Wcustom-atomic-properties +-------------------------- +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------------------------+--------------------+----------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`atomic by default property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has a user defined` |nbsp| |+------------------+| |nbsp| :diagtext:`(property should be marked 'atomic' if this is intended)`| +| ||:diagtext:`getter`|| | +| |+------------------+| | +| ||:diagtext:`setter`|| | +| |+------------------+| | ++---------------------------------------------------------------------------------------------------------------------------------------+--------------------+----------------------------------------------------------------------------+ + + +-Wdangling-else +--------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`add explicit braces to avoid dangling else`| ++---------------------------------------------------------------------------------+ + + +-Wdangling-field +---------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`binding reference member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to stack allocated parameter` |nbsp| :placeholder:`B`| ++---------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------+----------------------------------+----------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`binding reference` |nbsp| |+--------------------------------+|:diagtext:`member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to a temporary value`| +| || || | +| |+--------------------------------+| | +| ||:diagtext:`subobject of` |nbsp| || | +| |+--------------------------------+| | ++----------------------------------------------------------------+----------------------------------+----------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`initializing pointer member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`with the stack address of parameter` |nbsp| :placeholder:`B`| ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wdangling-initializer-list +--------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------------------+---------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`array backing the initializer list will be destroyed at the end of` |nbsp| |+-------------------------------+| +| ||:diagtext:`the full-expression`|| +| |+-------------------------------+| +| ||:diagtext:`the constructor` || +| |+-------------------------------+| ++-----------------------------------------------------------------------------------------------------------------+---------------------------------+ + + +-Wdate-time +----------- +**Diagnostic text:** + ++------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`expansion of date or time macro is not reproducible`| ++------------------------------------------------------------------------------------------+ + + +-Wdealloc-in-category +--------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`-dealloc is being overridden in a category`| ++---------------------------------------------------------------------------------+ + + +-Wdebug-compression-unavailable +------------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`cannot compress debug sections (zlib not installed)`| ++------------------------------------------------------------------------------------------+ + + +-Wdeclaration-after-statement +----------------------------- +**Diagnostic text:** + ++-----------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`ISO C90 forbids mixing declarations and code`| ++-----------------------------------------------------------------------------------+ + + +-Wdelegating-ctor-cycles +------------------------ +This diagnostic is an error by default, but the flag ``-Wno-delegating-ctor-cycles`` can be used to disable the error. + +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------------------------------+ +|:error:`error:` |nbsp| :diagtext:`constructor for` |nbsp| :placeholder:`A` |nbsp| :diagtext:`creates a delegation cycle`| ++------------------------------------------------------------------------------------------------------------------------+ + + +-Wdelete-incomplete +------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`cannot delete expression with pointer-to-'void' type` |nbsp| :placeholder:`A`| ++-------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`deleting pointer to incomplete type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`may cause undefined behavior`| ++--------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wdelete-non-virtual-dtor +------------------------- +Some of the diagnostics controlled by this flag are enabled by default. + +**Diagnostic text:** + ++---------------------------+------------------------+------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| |+----------------------+| |nbsp| :diagtext:`called on` |nbsp| :placeholder:`B` |nbsp| :diagtext:`that is abstract but has non-virtual destructor`| +| ||:diagtext:`delete` || | +| |+----------------------+| | +| ||:diagtext:`destructor`|| | +| |+----------------------+| | ++---------------------------+------------------------+------------------------------------------------------------------------------------------------------------------------+ + ++---------------------------+------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| |+----------------------+| |nbsp| :diagtext:`called on non-final` |nbsp| :placeholder:`B` |nbsp| :diagtext:`that has virtual functions but non-virtual destructor`| +| ||:diagtext:`delete` || | +| |+----------------------+| | +| ||:diagtext:`destructor`|| | +| |+----------------------+| | ++---------------------------+------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wdeprecated +------------ +Some of the diagnostics controlled by this flag are enabled by default. + +Also controls `-Wdeprecated-attributes`_, `-Wdeprecated-declarations`_, `-Wdeprecated-increment-bool`_, `-Wdeprecated-register`_, `-Wdeprecated-writable-strings`_. + +**Diagnostic text:** + ++---------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`-O4 is equivalent to -O3`| ++---------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`access declarations are deprecated; use using declarations instead`| ++---------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------+---------------------------------+-----------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`definition of implicit copy` |nbsp| |+-------------------------------+| |nbsp| :diagtext:`for` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is deprecated because it has a user-declared` |nbsp| |+------------------------------------------------------------+| +| ||:diagtext:`constructor` || ||+------------------------+---------------------------------+|| +| |+-------------------------------+| |||:diagtext:`copy` |nbsp| |+-------------------------------+||| +| ||:diagtext:`assignment operator`|| ||| ||:diagtext:`assignment operator`|||| +| |+-------------------------------+| ||| |+-------------------------------+||| +| | | ||| ||:diagtext:`constructor` |||| +| | | ||| |+-------------------------------+||| +| | | ||+------------------------+---------------------------------+|| +| | | |+------------------------------------------------------------+| +| | | ||:diagtext:`destructor` || +| | | |+------------------------------------------------------------+| ++--------------------------------------------------------------------------+---------------------------------+-----------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`out-of-line definition of constexpr static data member is redundant in C++17 and is deprecated`| ++-------------------------------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`argument '`:placeholder:`A`:diagtext:`' is deprecated, use '`:placeholder:`B`:diagtext:`' instead`| ++----------------------------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`treating '`:placeholder:`A`:diagtext:`' input as '`:placeholder:`B`:diagtext:`' when in C++ mode, this behavior is deprecated`| ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`dynamic exception specifications are deprecated`| ++--------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`OpenCL version` |nbsp| :placeholder:`A` |nbsp| :diagtext:`does not support the option '`:placeholder:`B`:diagtext:`'`| ++-----------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`Use of 'long' with '\_\_vector' is deprecated`| ++------------------------------------------------------------------------------------+ + + +-Wdeprecated-attributes +----------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`specifying vector types with the 'mode' attribute is deprecated; use the 'vector\_size' attribute instead`| ++------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wdeprecated-declarations +------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`use of C-style parameters in Objective-C method declarations is deprecated`| ++-----------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is deprecated`| ++----------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`may be deprecated because the receiver type is unknown`| ++---------------------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is deprecated:` |nbsp| :placeholder:`B`| ++-----------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`property access is using` |nbsp| :placeholder:`A` |nbsp| :diagtext:`method which is deprecated`| ++-------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wdeprecated-implementations +---------------------------- +**Diagnostic text:** + ++----------------------------------------------------------------------+----------------------+ +|:warning:`warning:` |nbsp| :diagtext:`Implementing deprecated` |nbsp| |+--------------------+| +| ||:diagtext:`method` || +| |+--------------------+| +| ||:diagtext:`class` || +| |+--------------------+| +| ||:diagtext:`category`|| +| |+--------------------+| ++----------------------------------------------------------------------+----------------------+ + + +-Wdeprecated-increment-bool +--------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`incrementing expression of type bool is deprecated and incompatible with C++1z`| ++---------------------------------------------------------------------------------------------------------------------+ + + +-Wdeprecated-objc-isa-usage +--------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`assignment to Objective-C's isa is deprecated in favor of object\_setClass()`| ++-------------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`direct access to Objective-C's isa is deprecated in favor of object\_getClass()`| ++----------------------------------------------------------------------------------------------------------------------+ + + +-Wdeprecated-objc-pointer-introspection +--------------------------------------- +This diagnostic is enabled by default. + +Also controls `-Wdeprecated-objc-pointer-introspection-performSelector`_. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`bitmasking for introspection of Objective-C object pointers is strongly discouraged`| ++--------------------------------------------------------------------------------------------------------------------------+ + + +-Wdeprecated-objc-pointer-introspection-performSelector +------------------------------------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`bitmasking for introspection of Objective-C object pointers is strongly discouraged`| ++--------------------------------------------------------------------------------------------------------------------------+ + + +-Wdeprecated-register +--------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'register' storage class specifier is deprecated and incompatible with C++1z`| ++-------------------------------------------------------------------------------------------------------------------+ + + +-Wdeprecated-writable-strings +----------------------------- +Synonym for `-Wc++11-compat-deprecated-writable-strings`_. + + +-Wdirect-ivar-access +-------------------- +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`instance variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is being directly accessed`| ++------------------------------------------------------------------------------------------------------------------------------+ + + +-Wdisabled-macro-expansion +-------------------------- +**Diagnostic text:** + ++----------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`disabled expansion of recursive macro`| ++----------------------------------------------------------------------------+ + + +-Wdisabled-optimization +----------------------- +This diagnostic flag exists for GCC compatibility, and has no effect in Clang. + +-Wdiscard-qual +-------------- +This diagnostic flag exists for GCC compatibility, and has no effect in Clang. + +-Wdistributed-object-modifiers +------------------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`conflicting distributed object modifiers on parameter type in implementation of` |nbsp| :placeholder:`A`| ++----------------------------------------------------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`conflicting distributed object modifiers on return type in implementation of` |nbsp| :placeholder:`A`| ++-------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wdiv-by-zero +------------- +This diagnostic flag exists for GCC compatibility, and has no effect in Clang. + +-Wdivision-by-zero +------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------+-----------------------+----------------------------------------+ +|:warning:`warning:` |nbsp| |+---------------------+| |nbsp| :diagtext:`by zero is undefined`| +| ||:diagtext:`remainder`|| | +| |+---------------------+| | +| ||:diagtext:`division` || | +| |+---------------------+| | ++---------------------------+-----------------------+----------------------------------------+ + + +-Wdll-attribute-on-redeclaration +-------------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`redeclaration of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`should not add` |nbsp| :placeholder:`B` |nbsp| :diagtext:`attribute`| ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wdllexport-explicit-instantiation-decl +--------------------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`explicit instantiation declaration should not be 'dllexport'`| ++---------------------------------------------------------------------------------------------------+ + + +-Wdllimport-static-field-def +---------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`definition of dllimport static field`| ++---------------------------------------------------------------------------+ + + +-Wdocumentation +--------------- +Also controls `-Wdocumentation-html`_, `-Wdocumentation-deprecated-sync`_. + +**Diagnostic text:** + ++----------------------------------------+----------------+-----------------------+------------------------------------------------------------------------+-----------------------+-------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|+---------------------+|:diagtext:`' command should not be used in a comment attached to a non-`|+---------------------+| |nbsp| :diagtext:`declaration`| +| ||:diagtext:`\\`|||:diagtext:`class` || ||:diagtext:`class` || | +| |+--------------+|+---------------------+| |+---------------------+| | +| ||:diagtext:`@` |||:diagtext:`interface`|| ||:diagtext:`interface`|| | +| |+--------------+|+---------------------+| |+---------------------+| | +| | ||:diagtext:`protocol` || ||:diagtext:`protocol` || | +| | |+---------------------+| |+---------------------+| | +| | ||:diagtext:`struct` || ||:diagtext:`struct` || | +| | |+---------------------+| |+---------------------+| | +| | ||:diagtext:`union` || ||:diagtext:`union` || | +| | |+---------------------+| |+---------------------+| | ++----------------------------------------+----------------+-----------------------+------------------------------------------------------------------------+-----------------------+-------------------------------+ + ++-----------------------------------------------------------+----------------+-----------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`duplicated command '`|+--------------+|:placeholder:`B`:diagtext:`'`| +| ||:diagtext:`\\`|| | +| |+--------------+| | +| ||:diagtext:`@` || | +| |+--------------+| | ++-----------------------------------------------------------+----------------+-----------------------------+ + ++------------------------------------------------------------------+----------------+-------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`empty paragraph passed to '`|+--------------+|:placeholder:`B`:diagtext:`' command`| +| ||:diagtext:`\\`|| | +| |+--------------+| | +| ||:diagtext:`@` || | +| |+--------------+| | ++------------------------------------------------------------------+----------------+-------------------------------------+ + ++----------------------------------------+----------------+--------------------------+---------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|+------------------------+|:diagtext:`' command should not be used in a comment attached to a non-container declaration`| +| ||:diagtext:`\\`|||:diagtext:`classdesign` || | +| |+--------------+|+------------------------+| | +| ||:diagtext:`@` |||:diagtext:`coclass` || | +| |+--------------+|+------------------------+| | +| | ||:diagtext:`dependency` || | +| | |+------------------------+| | +| | ||:diagtext:`helper` || | +| | |+------------------------+| | +| | ||:diagtext:`helperclass` || | +| | |+------------------------+| | +| | ||:diagtext:`helps` || | +| | |+------------------------+| | +| | ||:diagtext:`instancesize`|| | +| | |+------------------------+| | +| | ||:diagtext:`ownership` || | +| | |+------------------------+| | +| | ||:diagtext:`performance` || | +| | |+------------------------+| | +| | ||:diagtext:`security` || | +| | |+------------------------+| | +| | ||:diagtext:`superclass` || | +| | |+------------------------+| | ++----------------------------------------+----------------+--------------------------+---------------------------------------------------------------------------------------------+ + ++----------------------------------------+----------------+---------------------------+---------------------------------------------------------------------+-----------------------------------+-------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|+-------------------------+|:diagtext:`' command should be used in a comment attached to` |nbsp| |+---------------------------------+| |nbsp| :diagtext:`declaration`| +| ||:diagtext:`\\`|||:diagtext:`function` || ||:diagtext:`a function` || | +| |+--------------+|+-------------------------+| |+---------------------------------+| | +| ||:diagtext:`@` |||:diagtext:`functiongroup`|| ||:diagtext:`a function` || | +| |+--------------+|+-------------------------+| |+---------------------------------+| | +| | ||:diagtext:`method` || ||:diagtext:`an Objective-C method`|| | +| | |+-------------------------+| |+---------------------------------+| | +| | ||:diagtext:`methodgroup` || ||:diagtext:`an Objective-C method`|| | +| | |+-------------------------+| |+---------------------------------+| | +| | ||:diagtext:`callback` || ||:diagtext:`a pointer to function`|| | +| | |+-------------------------+| |+---------------------------------+| | ++----------------------------------------+----------------+---------------------------+---------------------------------------------------------------------+-----------------------------------+-------------------------------+ + ++-------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`HTML start tag prematurely ended, expected attribute name or '>'`| ++-------------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`expected quoted string after equals sign`| ++-------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`parameter '`:placeholder:`A`:diagtext:`' is already documented`| ++-----------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`unrecognized parameter passing direction, valid directions are '\[in\]', '\[out\]' and '\[in,out\]'`| ++------------------------------------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------+----------------+-------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|:diagtext:`param' command used in a comment that is not attached to a function declaration`| +| ||:diagtext:`\\`|| | +| |+--------------+| | +| ||:diagtext:`@` || | +| |+--------------+| | ++----------------------------------------+----------------+-------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`parameter '`:placeholder:`A`:diagtext:`' not found in the function declaration`| ++---------------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------+----------------+-------------------------------------------------------------------------------------+-------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|:placeholder:`B`:diagtext:`' command used in a comment that is attached to a` |nbsp| |+-----------------------------------+| +| ||:diagtext:`\\`|| ||:diagtext:`function returning void`|| +| |+--------------+| |+-----------------------------------+| +| ||:diagtext:`@` || ||:diagtext:`constructor` || +| |+--------------+| |+-----------------------------------+| +| | | ||:diagtext:`destructor` || +| | | |+-----------------------------------+| +| | | ||:diagtext:`method returning void` || +| | | |+-----------------------------------+| ++----------------------------------------+----------------+-------------------------------------------------------------------------------------+-------------------------------------+ + ++----------------------------------------+----------------+----------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|:placeholder:`B`:diagtext:`' command used in a comment that is not attached to a function or method declaration`| +| ||:diagtext:`\\`|| | +| |+--------------+| | +| ||:diagtext:`@` || | +| |+--------------+| | ++----------------------------------------+----------------+----------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`template parameter '`:placeholder:`A`:diagtext:`' is already documented`| ++--------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------+----------------+--------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|:diagtext:`tparam' command used in a comment that is not attached to a template declaration`| +| ||:diagtext:`\\`|| | +| |+--------------+| | +| ||:diagtext:`@` || | +| |+--------------+| | ++----------------------------------------+----------------+--------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`template parameter '`:placeholder:`A`:diagtext:`' not found in the template declaration`| ++------------------------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`not a Doxygen trailing comment`| ++---------------------------------------------------------------------+ + ++----------------------------------------+----------------+------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|:placeholder:`B`:diagtext:`' command does not terminate a verbatim text block`| +| ||:diagtext:`\\`|| | +| |+--------------+| | +| ||:diagtext:`@` || | +| |+--------------+| | ++----------------------------------------+----------------+------------------------------------------------------------------------------+ + + +-Wdocumentation-deprecated-sync +------------------------------- +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`declaration is marked with '\\deprecated' command but does not have a deprecation attribute`| ++----------------------------------------------------------------------------------------------------------------------------------+ + + +-Wdocumentation-html +-------------------- +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`HTML end tag '`:placeholder:`A`:diagtext:`' is forbidden`| ++-----------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`HTML end tag does not match any start tag`| ++--------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`HTML tag '`:placeholder:`A`:diagtext:`' requires an end tag`| ++--------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`HTML start tag '`:placeholder:`A`:diagtext:`' closed by '`:placeholder:`B`:diagtext:`'`| ++-----------------------------------------------------------------------------------------------------------------------------+ + + +-Wdocumentation-pedantic +------------------------ +Also controls `-Wdocumentation-unknown-command`_. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`whitespace is not allowed in parameter passing direction`| ++-----------------------------------------------------------------------------------------------+ + + +-Wdocumentation-unknown-command +------------------------------- +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`unknown command tag name '`:placeholder:`A`:diagtext:`'; did you mean '`:placeholder:`B`:diagtext:`'?`| ++--------------------------------------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`unknown command tag name`| ++---------------------------------------------------------------+ + + +-Wdollar-in-identifier-extension +-------------------------------- +**Diagnostic text:** + ++--------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'$' in identifier`| ++--------------------------------------------------------+ + + +-Wdouble-promotion +------------------ +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`implicit conversion increases floating-point precision:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`| ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wduplicate-decl-specifier +-------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`duplicate '`:placeholder:`A`:diagtext:`' declaration specifier`| ++-----------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`duplicate '`:placeholder:`A`:diagtext:`' declaration specifier`| ++-----------------------------------------------------------------------------------------------------+ + + +-Wduplicate-enum +---------------- +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`element` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has been implicitly assigned` |nbsp| :placeholder:`B` |nbsp| :diagtext:`which another element has been assigned`| ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wduplicate-method-arg +---------------------- +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`redeclaration of method parameter` |nbsp| :placeholder:`A`| ++------------------------------------------------------------------------------------------------+ + + +-Wduplicate-method-match +------------------------ +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`multiple declarations of method` |nbsp| :placeholder:`A` |nbsp| :diagtext:`found and ignored`| ++-----------------------------------------------------------------------------------------------------------------------------------+ + + +-Wdynamic-class-memaccess +------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------+-------------------------------+------------------------------------------------------------------------------------------------+----------------------------------------+---------------------------------------------------------------------------------------------+-------------------------+ +|:warning:`warning:` |nbsp| |+-----------------------------+| |nbsp| :diagtext:`this` |nbsp| :placeholder:`B` |nbsp| :diagtext:`call is a pointer to` |nbsp| |+--------------------------------------+|:diagtext:`dynamic class` |nbsp| :placeholder:`D`:diagtext:`; vtable pointer will be` |nbsp| |+-----------------------+| +| ||:diagtext:`destination for` || || || ||:diagtext:`overwritten`|| +| |+-----------------------------+| |+--------------------------------------+| |+-----------------------+| +| ||:diagtext:`source of` || ||:diagtext:`class containing a` |nbsp| || ||:diagtext:`copied` || +| |+-----------------------------+| |+--------------------------------------+| |+-----------------------+| +| ||:diagtext:`first operand of` || | | ||:diagtext:`moved` || +| |+-----------------------------+| | | |+-----------------------+| +| ||:diagtext:`second operand of`|| | | ||:diagtext:`compared` || +| |+-----------------------------+| | | |+-----------------------+| ++---------------------------+-------------------------------+------------------------------------------------------------------------------------------------+----------------------------------------+---------------------------------------------------------------------------------------------+-------------------------+ + + +-Weffc++ +-------- +This diagnostic flag exists for GCC compatibility, and has no effect in Clang. + +-Wembedded-directive +-------------------- +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`embedding a directive within macro arguments has undefined behavior`| ++----------------------------------------------------------------------------------------------------------+ + + +-Wempty-body +------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`for loop has empty body`| ++--------------------------------------------------------------+ + ++------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`if statement has empty body`| ++------------------------------------------------------------------+ + ++--------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`range-based for loop has empty body`| ++--------------------------------------------------------------------------+ + ++----------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`switch statement has empty body`| ++----------------------------------------------------------------------+ + ++----------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`while loop has empty body`| ++----------------------------------------------------------------+ + + +-Wempty-decomposition +--------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`ISO C++1z does not allow a decomposition group to be empty`| ++-------------------------------------------------------------------------------------------------+ + + +-Wempty-translation-unit +------------------------ +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`ISO C requires a translation unit to contain at least one declaration`| ++------------------------------------------------------------------------------------------------------------+ + + +-Wencode-type +------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`encoding of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`type is incomplete because` |nbsp| :placeholder:`B` |nbsp| :diagtext:`component has unknown encoding`| ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wendif-labels +-------------- +Synonym for `-Wextra-tokens`_. + + +-Wenum-compare +-------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`comparison of two values with different enumeration types`| ++------------------------------------------------------------------------------------------------+ + + +-Wenum-conversion +----------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`implicit conversion from enumeration type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to different enumeration type` |nbsp| :placeholder:`B`| ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wenum-too-large +---------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`enumeration values exceed range of largest integer`| ++-----------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`incremented enumerator value` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not representable in the largest integer type`| ++---------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wexceptions +------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------+-------------------------+--------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`cannot refer to a non-static member from the handler of a` |nbsp| |+-----------------------+| |nbsp| :diagtext:`function try block`| +| ||:diagtext:`constructor`|| | +| |+-----------------------+| | +| ||:diagtext:`destructor` || | +| |+-----------------------+| | ++--------------------------------------------------------------------------------------------------------+-------------------------+--------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`exception of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`will be caught by earlier handler`| ++-------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wexit-time-destructors +----------------------- +**Diagnostic text:** + ++-----------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`declaration requires an exit-time destructor`| ++-----------------------------------------------------------------------------------+ + + +-Wexpansion-to-defined +---------------------- +Some of the diagnostics controlled by this flag are enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`macro expansion producing 'defined' has undefined behavior`| ++-------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`macro expansion producing 'defined' has undefined behavior`| ++-------------------------------------------------------------------------------------------------+ + + +-Wexplicit-initialize-call +-------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`explicit call to +initialize results in duplicate call to +initialize`| ++------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`explicit call to \[super initialize\] should only be in implementation of +initialize`| ++----------------------------------------------------------------------------------------------------------------------------+ + + +-Wexplicit-ownership-type +------------------------- +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`method parameter of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`with no explicit ownership`| ++-------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wextended-offsetof +------------------- +**Diagnostic text:** + ++--------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`using extended field designator is an extension`| ++--------------------------------------------------------------------------------------+ + + +-Wextern-c-compat +----------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------+---------------------------+--------------------+--------------------------------------------+---------------------------+--------------------------+ +|:warning:`warning:` |nbsp| |+-------------------------+|+------------------+| |nbsp| :diagtext:`has size 0 in C,` |nbsp| |+-------------------------+| |nbsp| :diagtext:`in C++`| +| || |||:diagtext:`struct`|| ||:diagtext:`size 1` || | +| |+-------------------------+|+------------------+| |+-------------------------+| | +| ||:diagtext:`empty` |nbsp| |||:diagtext:`union` || ||:diagtext:`non-zero size`|| | +| |+-------------------------+|+------------------+| |+-------------------------+| | ++---------------------------+---------------------------+--------------------+--------------------------------------------+---------------------------+--------------------------+ + + +-Wextern-initializer +-------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'extern' variable has an initializer`| ++---------------------------------------------------------------------------+ + + +-Wextra +------- +Some of the diagnostics controlled by this flag are enabled by default. + +Controls `-Wmissing-field-initializers`_, `-Wignored-qualifiers`_, `-Winitializer-overrides`_, `-Wsemicolon-before-method-body`_, `-Wmissing-method-return-type`_, `-Wsign-compare`_, `-Wunused-parameter`_. + + +-Wextra-qualification +--------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`extra qualification on member` |nbsp| :placeholder:`A`| ++--------------------------------------------------------------------------------------------+ + + +-Wextra-semi +------------ +Also controls `-Wc++11-extra-semi`_. + +**Diagnostic text:** + ++--------------------------------------------------------+------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`extra ';'` |nbsp| |+----------------------------------------------+| +| ||:diagtext:`outside of a function` || +| |+----------------------------------------------+| +| ||+--------------------------------------------+|| +| |||:diagtext:`inside a` |nbsp| :placeholder:`B`||| +| ||+--------------------------------------------+|| +| |+----------------------------------------------+| +| ||:diagtext:`inside instance variable list` || +| |+----------------------------------------------+| +| ||:diagtext:`after member function definition` || +| |+----------------------------------------------+| ++--------------------------------------------------------+------------------------------------------------+ + ++---------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`extra ';' after member function definition`| ++---------------------------------------------------------------------------------+ + + +-Wextra-tokens +-------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`extra tokens at end of #`:placeholder:`A` |nbsp| :diagtext:`directive`| ++------------------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`extra tokens at the end of '#pragma omp` |nbsp| :placeholder:`A`:diagtext:`' are ignored`| ++-------------------------------------------------------------------------------------------------------------------------------+ + + +-Wfallback +---------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`falling back to` |nbsp| :placeholder:`A`| ++------------------------------------------------------------------------------+ + + +-Wflag-enum +----------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`enumeration value` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is out of range of flags in enumeration type` |nbsp| :placeholder:`B`| ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wflexible-array-extensions +--------------------------- +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`may not be used as an array element due to flexible array member`| ++-------------------------------------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`may not be nested in a struct due to flexible array member`| ++-------------------------------------------------------------------------------------------------------------------------+ + + +-Wfloat-conversion +------------------ +Also controls `-Wfloat-overflow-conversion`_, `-Wfloat-zero-conversion`_. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`implicit conversion turns floating-point number into integer:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`| ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wfloat-equal +------------- +**Diagnostic text:** + ++---------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`comparing floating point with == or != is unsafe`| ++---------------------------------------------------------------------------------------+ + + +-Wfloat-overflow-conversion +--------------------------- +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`implicit conversion of out of range value from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`changes value from` |nbsp| :placeholder:`C` |nbsp| :diagtext:`to` |nbsp| :placeholder:`D`| ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wfloat-zero-conversion +----------------------- +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`implicit conversion from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`changes non-zero value from` |nbsp| :placeholder:`C` |nbsp| :diagtext:`to` |nbsp| :placeholder:`D`| ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wfor-loop-analysis +------------------- +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is` |nbsp| |+-----------------------+| |nbsp| :diagtext:`both in the loop header and in the loop body`| +| ||:diagtext:`decremented`|| | +| |+-----------------------+| | +| ||:diagtext:`incremented`|| | +| |+-----------------------+| | ++-----------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------+ + ++-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`variable`|+----------------------------------------------------------------------------------------------------------------------------------------------------------+| |nbsp| :diagtext:`used in loop condition not modified in loop body`| +| ||:diagtext:`s` || | +| |+----------------------------------------------------------------------------------------------------------------------------------------------------------+| | +| ||+------------------------+ || | +| ||| |nbsp| :placeholder:`B`| || | +| ||+------------------------+ || | +| |+----------------------------------------------------------------------------------------------------------------------------------------------------------+| | +| ||+------------------------------------------------------------------------------------+ || | +| |||:diagtext:`s` |nbsp| :placeholder:`B` |nbsp| :diagtext:`and` |nbsp| :placeholder:`C`| || | +| ||+------------------------------------------------------------------------------------+ || | +| |+----------------------------------------------------------------------------------------------------------------------------------------------------------+| | +| ||+-------------------------------------------------------------------------------------------------------------------+ || | +| |||:diagtext:`s` |nbsp| :placeholder:`B`:diagtext:`,` |nbsp| :placeholder:`C`:diagtext:`, and` |nbsp| :placeholder:`D`| || | +| ||+-------------------------------------------------------------------------------------------------------------------+ || | +| |+----------------------------------------------------------------------------------------------------------------------------------------------------------+| | +| ||+--------------------------------------------------------------------------------------------------------------------------------------------------------+|| | +| |||:diagtext:`s` |nbsp| :placeholder:`B`:diagtext:`,` |nbsp| :placeholder:`C`:diagtext:`,` |nbsp| :placeholder:`D`:diagtext:`, and` |nbsp| :placeholder:`E`||| | +| ||+--------------------------------------------------------------------------------------------------------------------------------------------------------+|| | +| |+----------------------------------------------------------------------------------------------------------------------------------------------------------+| | ++-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+ + + +-Wformat +-------- +This diagnostic is enabled by default. + +Also controls `-Wformat-extra-args`_, `-Wformat-zero-length`_, `-Wnonnull`_, `-Wformat-security`_, `-Wformat-y2k`_, `-Wformat-invalid-specifier`_. + +**Diagnostic text:** + ++---------------------------+----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| |+--------------------------------------------+| |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' should not be used as format arguments; add an explicit cast to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`instead`| +| ||:diagtext:`values of type` || | +| |+--------------------------------------------+| | +| ||:diagtext:`enum values with underlying type`|| | +| |+--------------------------------------------+| | ++---------------------------+----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------------------------------------------+-----------------------------+------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`format specifies type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`but the argument has` |nbsp| |+---------------------------+| |nbsp| :placeholder:`B`| +| ||:diagtext:`type` || | +| |+---------------------------+| | +| ||:diagtext:`underlying type`|| | +| |+---------------------------+| | ++------------------------------------------------------------------------------------------------------------------------------------+-----------------------------+------------------------+ + ++-----------------------------------------------------------------------------+-----------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`invalid position specified for` |nbsp| |+---------------------------+| +| ||:diagtext:`field width` || +| |+---------------------------+| +| ||:diagtext:`field precision`|| +| |+---------------------------+| ++-----------------------------------------------------------------------------+-----------------------------+ + ++----------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`cannot mix positional and non-positional arguments in format string`| ++----------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`length modifier '`:placeholder:`A`:diagtext:`' results in undefined behavior or no effect with '`:placeholder:`B`:diagtext:`' conversion specifier`| ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`format string should not be a wide string`| ++--------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`position arguments in format strings start counting at 1 (not 0)`| ++-------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`format string missing`| ++------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`object format flags cannot be used with '`:placeholder:`A`:diagtext:`' conversion specifier`| ++----------------------------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------+-----------------+-------------------------------------+-----------------------+--------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'`|+---------------+|:diagtext:`' specified field` |nbsp| |+---------------------+| |nbsp| :diagtext:`is missing a matching 'int' argument`| +| ||:diagtext:`\*` || ||:diagtext:`width` || | +| |+---------------+| |+---------------------+| | +| ||:diagtext:`.\*`|| ||:diagtext:`precision`|| | +| |+---------------+| |+---------------------+| | ++----------------------------------------+-----------------+-------------------------------------+-----------------------+--------------------------------------------------------+ + ++----------------------------------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`field` |nbsp| |+---------------------+| |nbsp| :diagtext:`should have type` |nbsp| :placeholder:`B`:diagtext:`, but argument has type` |nbsp| :placeholder:`C`| +| ||:diagtext:`width` || | +| |+---------------------+| | +| ||:diagtext:`precision`|| | +| |+---------------------+| | ++----------------------------------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`missing object format flag`| ++-----------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`format string contains '\\0' within the string body`| ++------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`format string is not null-terminated`| ++---------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`flag '`:placeholder:`A`:diagtext:`' is ignored when flag '`:placeholder:`B`:diagtext:`' is present`| ++-----------------------------------------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`incomplete format specifier`| ++------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`more '%%' conversions than data arguments`| ++--------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' is not a valid object format flag`| ++-------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`flag '`:placeholder:`A`:diagtext:`' results in undefined behavior with '`:placeholder:`B`:diagtext:`' conversion specifier`| ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++---------------------------+-------------------------+------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| |+-----------------------+| |nbsp| :diagtext:`used with '`:placeholder:`B`:diagtext:`' conversion specifier, resulting in undefined behavior`| +| ||:diagtext:`field width`|| | +| |+-----------------------+| | +| ||:diagtext:`precision` || | +| |+-----------------------+| | ++---------------------------+-------------------------+------------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`data argument position '`:placeholder:`A`:diagtext:`' exceeds the number of data arguments (`:placeholder:`B`:diagtext:`)`| ++----------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`zero field width in scanf format string is unused`| ++----------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`no closing '\]' for '%%\[' in scanf format string`| ++----------------------------------------------------------------------------------------+ + + +-Wformat-extra-args +------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`data argument not used by format string`| ++------------------------------------------------------------------------------+ + + +-Wformat-invalid-specifier +-------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`invalid conversion specifier '`:placeholder:`A`:diagtext:`'`| ++--------------------------------------------------------------------------------------------------+ + + +-Wformat-non-iso +---------------- +**Diagnostic text:** + ++-----------------------------------------------------------------------------+----------------------------------+---------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`'` |nbsp| |+--------------------------------+| |nbsp| :diagtext:`is not supported by ISO C`| +| ||:diagtext:`length modifier` || | +| |+--------------------------------+| | +| ||:diagtext:`conversion specifier`|| | +| |+--------------------------------+| | ++-----------------------------------------------------------------------------+----------------------------------+---------------------------------------------+ + ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`using length modifier '`:placeholder:`A`:diagtext:`' with conversion specifier '`:placeholder:`B`:diagtext:`' is not supported by ISO C`| ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`positional arguments are not supported by ISO C`| ++--------------------------------------------------------------------------------------+ + + +-Wformat-nonliteral +------------------- +**Diagnostic text:** + ++----------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`format string is not a string literal`| ++----------------------------------------------------------------------------+ + + +-Wformat-pedantic +----------------- +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------------------------------------------+-----------------------------+------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`format specifies type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`but the argument has` |nbsp| |+---------------------------+| |nbsp| :placeholder:`B`| +| ||:diagtext:`type` || | +| |+---------------------------+| | +| ||:diagtext:`underlying type`|| | +| |+---------------------------+| | ++------------------------------------------------------------------------------------------------------------------------------------+-----------------------------+------------------------+ + + +-Wformat-security +----------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`format string is not a string literal (potentially insecure)`| ++---------------------------------------------------------------------------------------------------+ + + +-Wformat-y2k +------------ +This diagnostic flag exists for GCC compatibility, and has no effect in Clang. + +-Wformat-zero-length +-------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`format string is empty`| ++-------------------------------------------------------------+ + + +-Wformat=2 +---------- +Some of the diagnostics controlled by this flag are enabled by default. + +Controls `-Wformat-nonliteral`_, `-Wformat-security`_, `-Wformat-y2k`_. + + +-Wfour-char-constants +--------------------- +**Diagnostic text:** + ++-------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`multi-character character constant`| ++-------------------------------------------------------------------------+ + + +-Wframe-larger-than= +-------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + +The text of this diagnostic is not controlled by Clang. + ++--------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`stack frame size of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`bytes in` |nbsp| :placeholder:`B`| ++--------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wfunction-def-in-objc-container +-------------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`function definition inside an Objective-C container is deprecated`| ++--------------------------------------------------------------------------------------------------------+ + + +-Wfuture-compat +--------------- +This diagnostic flag exists for GCC compatibility, and has no effect in Clang. + +-Wgcc-compat +------------ +Some of the diagnostics controlled by this flag are enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'enable\_if' is a clang extension`| ++------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`\_\_final is a GNU extension, consider using C++11 final`| ++-----------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`GCC does not allow` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute in this position on a function definition`| ++--------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'break' is bound to loop, GCC binds it to switch`| ++---------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`GCC does not allow the 'cleanup' attribute argument to be anything other than a simple identifier`| ++----------------------------------------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`GCC does not allow an attribute in this position on a function declaration`| ++-----------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' is bound to current loop, GCC binds it to the enclosing loop`| ++----------------------------------------------------------------------------------------------------------------------------------+ + + +-Wglobal-constructors +--------------------- +**Diagnostic text:** + ++--------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`declaration requires a global constructor`| ++--------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`declaration requires a global destructor`| ++-------------------------------------------------------------------------------+ + + +-Wgnu +----- +Some of the diagnostics controlled by this flag are enabled by default. + +Controls `-Wgnu-alignof-expression`_, `-Wgnu-anonymous-struct`_, `-Wgnu-auto-type`_, `-Wgnu-binary-literal`_, `-Wgnu-case-range`_, `-Wgnu-complex-integer`_, `-Wgnu-compound-literal-initializer`_, `-Wgnu-conditional-omitted-operand`_, `-Wgnu-designator`_, `-Wgnu-empty-initializer`_, `-Wgnu-empty-struct`_, `-Wvla-extension`_, `-Wgnu-flexible-array-initializer`_, `-Wgnu-flexible-array-union-member`_, `-Wgnu-folding-constant`_, `-Wgnu-imaginary-constant`_, `-Wgnu-include-next`_, `-Wgnu-label-as-value`_, `-Wredeclared-class-member`_, `-Wgnu-redeclared-enum`_, `-Wgnu-statement-expression`_, `-Wgnu-static-float-init`_, `-Wgnu-string-literal-operator-template`_, `-Wgnu-union-cast`_, `-Wgnu-variable-sized-type-not-at-end`_, `-Wzero-length-array`_, `-Wgnu-zero-line-directive`_, `-Wgnu-zero-variadic-macro-arguments`_. + + +-Wgnu-alignof-expression +------------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`applied to an expression is a GNU extension`| ++----------------------------------------------------------------------------------------------------------+ + + +-Wgnu-anonymous-struct +---------------------- +**Diagnostic text:** + ++----------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`anonymous structs are a GNU extension`| ++----------------------------------------------------------------------------+ + + +-Wgnu-array-member-paren-init +----------------------------- +This diagnostic is an error by default, but the flag ``-Wno-gnu-array-member-paren-init`` can be used to disable the error. + +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------+ +|:error:`error:` |nbsp| :diagtext:`parenthesized initialization of a member array is a GNU extension`| ++----------------------------------------------------------------------------------------------------+ + + +-Wgnu-auto-type +--------------- +**Diagnostic text:** + ++--------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'\_\_auto\_type' is a GNU extension`| ++--------------------------------------------------------------------------+ + + +-Wgnu-binary-literal +-------------------- +**Diagnostic text:** + ++----------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`binary integer literals are a GNU extension`| ++----------------------------------------------------------------------------------+ + + +-Wgnu-case-range +---------------- +**Diagnostic text:** + ++----------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`use of GNU case range extension`| ++----------------------------------------------------------------------+ + + +-Wgnu-complex-integer +--------------------- +**Diagnostic text:** + ++--------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`complex integer types are a GNU extension`| ++--------------------------------------------------------------------------------+ + + +-Wgnu-compound-literal-initializer +---------------------------------- +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`initialization of an array` |nbsp| :diagtext:`from a compound literal` |nbsp| :diagtext:`is a GNU extension`| ++--------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wgnu-conditional-omitted-operand +--------------------------------- +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`use of GNU ?: conditional expression extension, omitting middle operand`| ++--------------------------------------------------------------------------------------------------------------+ + + +-Wgnu-designator +---------------- +Some of the diagnostics controlled by this flag are enabled by default. + +**Diagnostic text:** + ++-----------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`use of GNU array range extension`| ++-----------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`use of GNU 'missing =' extension in designator`| ++-------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`use of GNU old-style field designator extension`| ++--------------------------------------------------------------------------------------+ + + +-Wgnu-empty-initializer +----------------------- +**Diagnostic text:** + ++-----------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`use of GNU empty initializer extension`| ++-----------------------------------------------------------------------------+ + + +-Wgnu-empty-struct +------------------ +**Diagnostic text:** + ++----------------------------------------------------+--------------------+--------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`empty` |nbsp| |+------------------+| |nbsp| :diagtext:`is a GNU extension`| +| ||:diagtext:`struct`|| | +| |+------------------+| | +| ||:diagtext:`union` || | +| |+------------------+| | ++----------------------------------------------------+--------------------+--------------------------------------+ + ++----------------------------------------------------------------------------------------------------------------------------------+-----------------------+--------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`flexible array member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in otherwise empty` |nbsp| |+---------------------+| |nbsp| :diagtext:`is a GNU extension`| +| ||:diagtext:`struct` || | +| |+---------------------+| | +| ||:diagtext:`interface`|| | +| |+---------------------+| | +| ||:diagtext:`union` || | +| |+---------------------+| | +| ||:diagtext:`class` || | +| |+---------------------+| | +| ||:diagtext:`enum` || | +| |+---------------------+| | ++----------------------------------------------------------------------------------------------------------------------------------+-----------------------+--------------------------------------+ + ++---------------------------+--------------------+------------------------------------------------------------+ +|:warning:`warning:` |nbsp| |+------------------+| |nbsp| :diagtext:`without named members is a GNU extension`| +| ||:diagtext:`struct`|| | +| |+------------------+| | +| ||:diagtext:`union` || | +| |+------------------+| | ++---------------------------+--------------------+------------------------------------------------------------+ + + +-Wgnu-flexible-array-initializer +-------------------------------- +**Diagnostic text:** + ++---------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`flexible array initialization is a GNU extension`| ++---------------------------------------------------------------------------------------+ + + +-Wgnu-flexible-array-union-member +--------------------------------- +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`flexible array member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in a union is a GNU extension`| ++-------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wgnu-folding-constant +---------------------- +**Diagnostic text:** + ++-------------------------------------------------------------------+----------------------+------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`expression is not an` |nbsp| |+--------------------+| |nbsp| :diagtext:`constant expression; folding it to a constant is a GNU extension`| +| ||:diagtext:`integer` || | +| |+--------------------+| | +| ||:diagtext:`integral`|| | +| |+--------------------+| | ++-------------------------------------------------------------------+----------------------+------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`in-class initializer for static data member is not a constant expression; folding it to a constant is a GNU extension`| ++------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`variable length array folded to constant array as an extension`| ++-----------------------------------------------------------------------------------------------------+ + + +-Wgnu-imaginary-constant +------------------------ +**Diagnostic text:** + ++------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`imaginary constants are a GNU extension`| ++------------------------------------------------------------------------------+ + + +-Wgnu-include-next +------------------ +**Diagnostic text:** + ++-----------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`#include\_next is a language extension`| ++-----------------------------------------------------------------------------+ + + +-Wgnu-label-as-value +-------------------- +**Diagnostic text:** + ++----------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`use of GNU address-of-label extension`| ++----------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`use of GNU indirect-goto extension`| ++-------------------------------------------------------------------------+ + + +-Wgnu-redeclared-enum +--------------------- +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`redeclaration of already-defined enum` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a GNU extension`| ++------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wgnu-statement-expression +-------------------------- +**Diagnostic text:** + ++--------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`use of GNU statement expression extension`| ++--------------------------------------------------------------------------------+ + + +-Wgnu-static-float-init +----------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`in-class initializer for static data member of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a GNU extension`| ++--------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wgnu-string-literal-operator-template +-------------------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`string literal operator templates are a GNU extension`| ++--------------------------------------------------------------------------------------------+ + + +-Wgnu-union-cast +---------------- +**Diagnostic text:** + ++----------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`cast to union type is a GNU extension`| ++----------------------------------------------------------------------------+ + + +-Wgnu-variable-sized-type-not-at-end +------------------------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`field` |nbsp| :placeholder:`A` |nbsp| :diagtext:`with variable sized type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`not at the end of a struct or class is a GNU extension`| ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wgnu-zero-line-directive +------------------------- +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`#line directive with zero argument is a GNU extension`| ++--------------------------------------------------------------------------------------------+ + + +-Wgnu-zero-variadic-macro-arguments +----------------------------------- +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`must specify at least one argument for '...' parameter of variadic macro`| ++---------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`token pasting of ',' and \_\_VA\_ARGS\_\_ is a GNU extension`| ++---------------------------------------------------------------------------------------------------+ + + +-Wheader-guard +-------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is used as a header guard here, followed by #define of a different macro`| ++---------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wheader-hygiene +---------------- +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`using namespace directive in global context in header`| ++--------------------------------------------------------------------------------------------+ + + +-Widiomatic-parentheses +----------------------- +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`using the result of an assignment as a condition without parentheses`| ++-----------------------------------------------------------------------------------------------------------+ + + +-Wignored-attributes +-------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------+-------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| |+-----------------+| |nbsp| :diagtext:`will always resolve to` |nbsp| :placeholder:`A` |nbsp| :diagtext:`even if weak definition of` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is overridden`| +| ||:diagtext:`alias`|| | +| |+-----------------+| | +| ||:diagtext:`ifunc`|| | +| |+-----------------+| | ++---------------------------+-------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++---------------------------+-------------------+----------------------------------------------------------------------------------------------------------------+----------------------+ +|:warning:`warning:` |nbsp| |+-----------------+| |nbsp| :diagtext:`will not be in section '`:placeholder:`A`:diagtext:`' but in the same section as the` |nbsp| |+--------------------+| +| ||:diagtext:`alias`|| ||:diagtext:`aliasee` || +| |+-----------------+| |+--------------------+| +| ||:diagtext:`ifunc`|| ||:diagtext:`resolver`|| +| |+-----------------+| |+--------------------+| ++---------------------------+-------------------+----------------------------------------------------------------------------------------------------------------+----------------------+ + ++----------------------------------------------------------------------+------------------------+-------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'abi\_tag' attribute on` |nbsp| |+----------------------+| |nbsp| :diagtext:`namespace ignored`| +| ||:diagtext:`non-inline`|| | +| |+----------------------+| | +| ||:diagtext:`anonymous` || | +| |+----------------------+| | ++----------------------------------------------------------------------+------------------------+-------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`attribute` |nbsp| :placeholder:`A` |nbsp| :diagtext:`after definition is ignored`| ++-----------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute can only be applied to instance variables or properties`| ++--------------------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute ignored`| ++--------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute ignored on inline function`| ++---------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' attribute cannot be specified on a definition`| ++-------------------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`attribute` |nbsp| :placeholder:`A` |nbsp| :diagtext:`ignored, because it is not attached to a declaration`| ++------------------------------------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'nonnull' attribute applied to function with no pointer arguments`| ++--------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'nonnull' attribute when used on parameters takes no arguments`| ++-----------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute ignored when parsing type`| ++--------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute only applies to a pointer or reference (`:placeholder:`B` |nbsp| :diagtext:`is invalid)`| ++----------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------+------------------------------+-------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute only applies to`|+----------------------------+| |nbsp| :diagtext:`pointer arguments`| +| || || | +| |+----------------------------+| | +| || |nbsp| :diagtext:`constant`|| | +| |+----------------------------+| | ++----------------------------------------------------------------------------------------+------------------------------+-------------------------------------+ + ++------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`attribute declaration must precede definition`| ++------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute only applies to return values that are pointers`| ++------------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute only applies to return values that are pointers or references`| ++--------------------------------------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'sentinel' attribute requires named arguments`| ++------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------+-----------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'sentinel' attribute only supported for variadic` |nbsp| |+---------------------+| +| ||:diagtext:`functions`|| +| |+---------------------+| +| ||:diagtext:`blocks` || +| |+---------------------+| ++-----------------------------------------------------------------------------------------------+-----------------------+ + ++------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute argument not supported:` |nbsp| :placeholder:`B`| ++------------------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`unknown visibility` |nbsp| :placeholder:`A`| ++---------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------------------------------+--------------------------------+----------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`attribute` |nbsp| :placeholder:`A` |nbsp| :diagtext:`cannot be applied to` |nbsp| |+------------------------------+| |nbsp| :diagtext:`without return value`| +| ||:diagtext:`functions` || | +| |+------------------------------+| | +| ||:diagtext:`Objective-C method`|| | +| |+------------------------------+| | ++------------------------------------------------------------------------------------------------------------------------+--------------------------------+----------------------------------------+ + ++----------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`\_\_weak attribute cannot be specified on a field declaration`| ++----------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`\_\_weak attribute cannot be specified on an automatic variable when ARC is not enabled`| ++------------------------------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute only applies to` |nbsp| |+----------------------------------------------------------------------------------------------------------------+| +| ||:diagtext:`functions` || +| |+----------------------------------------------------------------------------------------------------------------+| +| ||:diagtext:`unions` || +| |+----------------------------------------------------------------------------------------------------------------+| +| ||:diagtext:`variables and functions` || +| |+----------------------------------------------------------------------------------------------------------------+| +| ||:diagtext:`functions, variables, and Objective-C interfaces` || +| |+----------------------------------------------------------------------------------------------------------------+| +| ||:diagtext:`functions and methods` || +| |+----------------------------------------------------------------------------------------------------------------+| +| ||:diagtext:`parameters` || +| |+----------------------------------------------------------------------------------------------------------------+| +| ||:diagtext:`functions, methods and blocks` || +| |+----------------------------------------------------------------------------------------------------------------+| +| ||:diagtext:`functions, methods, and classes` || +| |+----------------------------------------------------------------------------------------------------------------+| +| ||:diagtext:`functions, methods, and parameters` || +| |+----------------------------------------------------------------------------------------------------------------+| +| ||:diagtext:`classes` || +| |+----------------------------------------------------------------------------------------------------------------+| +| ||:diagtext:`enums` || +| |+----------------------------------------------------------------------------------------------------------------+| +| ||:diagtext:`variables` || +| |+----------------------------------------------------------------------------------------------------------------+| +| ||:diagtext:`methods` || +| |+----------------------------------------------------------------------------------------------------------------+| +| ||:diagtext:`fields and global variables` || +| |+----------------------------------------------------------------------------------------------------------------+| +| ||:diagtext:`structs` || +| |+----------------------------------------------------------------------------------------------------------------+| +| ||:diagtext:`parameters and typedefs` || +| |+----------------------------------------------------------------------------------------------------------------+| +| ||:diagtext:`variables and typedefs` || +| |+----------------------------------------------------------------------------------------------------------------+| +| ||:diagtext:`thread-local variables` || +| |+----------------------------------------------------------------------------------------------------------------+| +| ||:diagtext:`variables and fields` || +| |+----------------------------------------------------------------------------------------------------------------+| +| ||:diagtext:`variables, data members and tag types` || +| |+----------------------------------------------------------------------------------------------------------------+| +| ||:diagtext:`types and namespaces` || +| |+----------------------------------------------------------------------------------------------------------------+| +| ||:diagtext:`Objective-C interfaces` || +| |+----------------------------------------------------------------------------------------------------------------+| +| ||:diagtext:`methods and properties` || +| |+----------------------------------------------------------------------------------------------------------------+| +| ||:diagtext:`struct or union` || +| |+----------------------------------------------------------------------------------------------------------------+| +| ||:diagtext:`struct, union or class` || +| |+----------------------------------------------------------------------------------------------------------------+| +| ||:diagtext:`types` || +| |+----------------------------------------------------------------------------------------------------------------+| +| ||:diagtext:`Objective-C instance methods` || +| |+----------------------------------------------------------------------------------------------------------------+| +| ||:diagtext:`init methods of interface or class extension declarations` || +| |+----------------------------------------------------------------------------------------------------------------+| +| ||:diagtext:`variables, functions and classes` || +| |+----------------------------------------------------------------------------------------------------------------+| +| ||:diagtext:`functions, variables, classes, and Objective-C interfaces` || +| |+----------------------------------------------------------------------------------------------------------------+| +| ||:diagtext:`Objective-C protocols` || +| |+----------------------------------------------------------------------------------------------------------------+| +| ||:diagtext:`functions and global variables` || +| |+----------------------------------------------------------------------------------------------------------------+| +| ||:diagtext:`structs, unions, and typedefs` || +| |+----------------------------------------------------------------------------------------------------------------+| +| ||:diagtext:`structs and typedefs` || +| |+----------------------------------------------------------------------------------------------------------------+| +| ||:diagtext:`interface or protocol declarations` || +| |+----------------------------------------------------------------------------------------------------------------+| +| ||:diagtext:`kernel functions` || +| |+----------------------------------------------------------------------------------------------------------------+| +| ||:diagtext:`non-K&R-style functions` || +| |+----------------------------------------------------------------------------------------------------------------+| +| ||:diagtext:`variables, enums, fields and typedefs` || +| |+----------------------------------------------------------------------------------------------------------------+| +| ||:diagtext:`functions, methods, enums, and classes` || +| |+----------------------------------------------------------------------------------------------------------------+| +| ||:diagtext:`structs, classes, variables, functions, and inline namespaces` || +| |+----------------------------------------------------------------------------------------------------------------+| +| ||:diagtext:`variables, functions, methods, types, enumerations, enumerators, labels, and non-static data members`|| +| |+----------------------------------------------------------------------------------------------------------------+| ++------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`attribute` |nbsp| :placeholder:`A` |nbsp| :diagtext:`ignored, because it cannot be applied to omitted return type`| ++--------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`calling convention` |nbsp| :placeholder:`A` |nbsp| :diagtext:`ignored for this target`| ++----------------------------------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`calling convention ignored on constructor/destructor`| ++-------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`calling convention ignored on variadic function`| ++--------------------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`attribute` |nbsp| :placeholder:`A` |nbsp| :diagtext:`ignored, because it cannot be applied to a type`| ++-------------------------------------------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------------------------------+-----------------------+----------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`attribute` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is ignored, place it after "`|+---------------------+|:diagtext:`" to apply attribute to type declaration`| +| ||:diagtext:`class` || | +| |+---------------------+| | +| ||:diagtext:`struct` || | +| |+---------------------+| | +| ||:diagtext:`interface`|| | +| |+---------------------+| | +| ||:diagtext:`union` || | +| |+---------------------+| | +| ||:diagtext:`enum` || | +| |+---------------------+| | ++------------------------------------------------------------------------------------------------------------------------+-----------------------+----------------------------------------------------+ + ++--------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'deprecated' attribute on anonymous namespace ignored`| ++--------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`redeclared inline;` |nbsp| :placeholder:`B` |nbsp| :diagtext:`attribute ignored`| ++----------------------------------------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`attribute` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is already applied with different parameters`| ++----------------------------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`attribute` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is already applied`| ++--------------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`Objective-C GC does not allow weak variables on the stack`| ++------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'gnu\_inline' attribute requires function to be marked 'inline', attribute ignored`| ++-------------------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------+------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`inheritance model ignored on` |nbsp| |+----------------------------------+| +| ||:diagtext:`primary template` || +| |+----------------------------------+| +| ||:diagtext:`partial specialization`|| +| |+----------------------------------+| ++---------------------------------------------------------------------------+------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'internal\_linkage' attribute on a non-static local variable is ignored`| ++--------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`qualifiers after comma in declarator list are ignored`| ++--------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------+----------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`MIPS 'interrupt' attribute only applies to functions that have` |nbsp| |+--------------------------------+| +| ||:diagtext:`no parameters` || +| |+--------------------------------+| +| ||:diagtext:`a 'void' return type`|| +| |+--------------------------------+| ++-------------------------------------------------------------------------------------------------------------+----------------------------------+ + ++---------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`unknown attribute '`:placeholder:`A`:diagtext:`'`| ++---------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------+-----------------------------------+------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute only applies to` |nbsp| |+---------------------------------+| |nbsp| :diagtext:`parameters`| +| ||:diagtext:`Objective-C object` || | +| |+---------------------------------+| | +| ||:diagtext:`pointer` || | +| |+---------------------------------+| | +| ||:diagtext:`pointer-to-CF-pointer`|| | +| |+---------------------------------+| | ++------------------------------------------------------------------------------------------------+-----------------------------------+------------------------------+ + ++------------------------------------------------------------------------------------------------+------------------------+---------------------------------------+--------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute only applies to` |nbsp| |+----------------------+| |nbsp| :diagtext:`that return` |nbsp| |+------------------------------------+| +| ||:diagtext:`functions` || ||:diagtext:`an Objective-C object` || +| |+----------------------+| |+------------------------------------+| +| ||:diagtext:`methods` || ||:diagtext:`a pointer` || +| |+----------------------+| |+------------------------------------+| +| ||:diagtext:`properties`|| ||:diagtext:`a non-retainable pointer`|| +| |+----------------------+| |+------------------------------------+| ++------------------------------------------------------------------------------------------------+------------------------+---------------------------------------+--------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute is deprecated and ignored in OpenCL version` |nbsp| :placeholder:`B`| ++--------------------------------------------------------------------------------------------------------------------------------------------+ + ++---------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+-------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| |+---------------------+| |nbsp| :diagtext:`of field` |nbsp| :placeholder:`B` |nbsp| :diagtext:`(`:placeholder:`C` |nbsp| :diagtext:`bits) does not match the` |nbsp| |+---------------------+| |nbsp| :diagtext:`of the first field in transparent union; transparent\_union attribute ignored`| +| ||:diagtext:`alignment`|| ||:diagtext:`alignment`|| | +| |+---------------------+| |+---------------------+| | +| ||:diagtext:`size` || ||:diagtext:`size` || | +| |+---------------------+| |+---------------------+| | ++---------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+-------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------+----------------------------+--------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`first field of a transparent union cannot have` |nbsp| |+--------------------------+| |nbsp| :diagtext:`type` |nbsp| :placeholder:`B`:diagtext:`; transparent\_union attribute ignored`| +| ||:diagtext:`floating point`|| | +| |+--------------------------+| | +| ||:diagtext:`vector` || | +| |+--------------------------+| | ++---------------------------------------------------------------------------------------------+----------------------------+--------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`transparent\_union attribute can only be applied to a union definition; attribute ignored`| ++--------------------------------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`transparent union definition must contain at least one field; transparent\_union attribute ignored`| ++-----------------------------------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------+-------------------------------------------------+---------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' only applies to` |nbsp| |+-----------------------------------------------+| |nbsp| :diagtext:`types; type here is` |nbsp| :placeholder:`C`| +| ||:diagtext:`function` || | +| |+-----------------------------------------------+| | +| ||:diagtext:`pointer` || | +| |+-----------------------------------------------+| | +| ||:diagtext:`Objective-C object or block pointer`|| | +| |+-----------------------------------------------+| | ++---------------------------------------------------------------------------------------------+-------------------------------------------------+---------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`\_\_declspec attribute` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not supported`| ++-------------------------------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`Ignoring unsupported '`:placeholder:`A`:diagtext:`' in the target attribute string`| ++-------------------------------------------------------------------------------------------------------------------------+ + + +-Wignored-optimization-argument +------------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`optimization flag '`:placeholder:`A`:diagtext:`' is not supported for target '`:placeholder:`B`:diagtext:`'`| ++--------------------------------------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`optimization flag '`:placeholder:`A`:diagtext:`' is not supported`| ++--------------------------------------------------------------------------------------------------------+ + + +-Wignored-pragmas +----------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------------+---------------------------+-----------------------+ +|:warning:`warning:` |nbsp| :diagtext:`expected '=' following '#pragma` |nbsp| |+-------------------------+|:diagtext:`' - ignored`| +| ||:diagtext:`align` || | +| |+-------------------------+| | +| ||:diagtext:`options align`|| | +| |+-------------------------+| | ++------------------------------------------------------------------------------+---------------------------+-----------------------+ + ++-----------------------------------------------------------------------------------+---------------------------+-----------------------+ +|:warning:`warning:` |nbsp| :diagtext:`invalid alignment option in '#pragma` |nbsp| |+-------------------------+|:diagtext:`' - ignored`| +| ||:diagtext:`align` || | +| |+-------------------------+| | +| ||:diagtext:`options align`|| | +| |+-------------------------+| | ++-----------------------------------------------------------------------------------+---------------------------+-----------------------+ + ++----------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'#pragma comment` |nbsp| :placeholder:`A`:diagtext:`' ignored`| ++----------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`missing argument to debug command '`:placeholder:`A`:diagtext:`'`| ++-------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`unexpected debug command '`:placeholder:`A`:diagtext:`'`| ++----------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`expected action or ')' in '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`| ++------------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`missing ':' after` |nbsp| :placeholder:`A` |nbsp| :diagtext:`- ignoring`| ++--------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`missing ':' or ')' after` |nbsp| :placeholder:`A` |nbsp| :diagtext:`- ignoring`| ++---------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`expected 'enable' or 'disable' - ignoring`| ++--------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`expected identifier in '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`| ++---------------------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`expected 'compiler', 'lib', 'user', or a string literal for the section name in '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`| ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`expected integer between` |nbsp| :placeholder:`A` |nbsp| :diagtext:`and` |nbsp| :placeholder:`B` |nbsp| :diagtext:`inclusive in '#pragma` |nbsp| :placeholder:`C`:diagtext:`' - ignored`| ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`missing '(' after '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignoring`| ++-----------------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`expected non-wide string literal in '#pragma` |nbsp| :placeholder:`A`:diagtext:`'`| ++------------------------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`expected ')' or ',' in '#pragma` |nbsp| :placeholder:`A`:diagtext:`'`| ++-----------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`missing ')' after '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignoring`| ++-----------------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`expected a stack label or a string literal for the section name in '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`| ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`expected a string literal for the section name in '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`| ++------------------------------------------------------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`expected push, pop or a string literal for the section name in '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`| ++-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`extra tokens at end of '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`| ++---------------------------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'#pragma init\_seg' is only supported when targeting a Microsoft environment`| ++-------------------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`unknown action for '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`| ++-----------------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`unknown action '`:placeholder:`B`:diagtext:`' for '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`| ++------------------------------------------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`incorrect use of '#pragma ms\_struct on\|off' - ignored`| ++----------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`#pragma options align=reset failed:` |nbsp| :placeholder:`A`| ++--------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`expected 'align' following '#pragma options' - ignored`| ++---------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`expected #pragma pack parameter to be '1', '2', '4', '8', or '16'`| ++--------------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`expected integer or identifier in '#pragma pack' - ignored`| ++-------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`#pragma` |nbsp| :placeholder:`A`:diagtext:`(pop, ...) failed:` |nbsp| :placeholder:`B`| ++----------------------------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`pragma pop\_macro could not pop '`:placeholder:`A`:diagtext:`', no matching push\_macro`| ++------------------------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`unknown OpenCL extension` |nbsp| :placeholder:`A` |nbsp| :diagtext:`- ignoring`| ++---------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`known but unsupported action '`:placeholder:`B`:diagtext:`' for '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`| ++--------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`unsupported OpenCL extension` |nbsp| :placeholder:`A` |nbsp| :diagtext:`- ignoring`| ++-------------------------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`expected '#pragma unused' argument to be a variable name`| ++-----------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`only variables can be arguments to '#pragma unused'`| ++------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`undeclared variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`used as an argument for '#pragma unused'`| ++----------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wignored-qualifiers +-------------------- +Some of the diagnostics controlled by this flag are enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------+------------------------------------+----------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`ARC` |nbsp| |+----------------------------------+| |nbsp| :diagtext:`lifetime qualifier on return type is ignored`| +| ||:diagtext:`unused` || | +| |+----------------------------------+| | +| ||:diagtext:`\_\_unsafe\_unretained`|| | +| |+----------------------------------+| | +| ||:diagtext:`\_\_strong` || | +| |+----------------------------------+| | +| ||:diagtext:`\_\_weak` || | +| |+----------------------------------+| | +| ||:diagtext:`\_\_autoreleasing` || | +| |+----------------------------------+| | ++--------------------------------------------------+------------------------------------+----------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' qualifier on omitted return type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`has no effect`| ++---------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------+---------------+------------------------------------------+-------------------+-----------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' type qualifier`|+-------------+| |nbsp| :diagtext:`on return type` |nbsp| |+-----------------+| |nbsp| :diagtext:`no effect`| +| || || ||:diagtext:`:has` || | +| |+-------------+| |+-----------------+| | +| ||:diagtext:`s`|| ||:diagtext:`:have`|| | +| |+-------------+| |+-----------------+| | ++------------------------------------------------------------------------------------+---------------+------------------------------------------+-------------------+-----------------------------+ + ++---------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' qualifier on function type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`has no effect`| ++---------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' qualifier on reference type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`has no effect`| ++----------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wimplicit +---------- +Some of the diagnostics controlled by this flag are enabled by default. + +Controls `-Wimplicit-function-declaration`_, `-Wimplicit-int`_. + + +-Wimplicit-atomic-properties +---------------------------- +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`property is assumed atomic when auto-synthesizing the property`| ++-----------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`property is assumed atomic by default`| ++----------------------------------------------------------------------------+ + + +-Wimplicit-conversion-floating-point-to-bool +-------------------------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`implicit conversion turns floating-point number into bool:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`| ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wimplicit-exception-spec-mismatch +---------------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------+----------------------+----------------------------------------------------------------------+----------------------+-------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`function previously declared with an` |nbsp| |+--------------------+| |nbsp| :diagtext:`exception specification redeclared with an` |nbsp| |+--------------------+| |nbsp| :diagtext:`exception specification`| +| ||:diagtext:`explicit`|| ||:diagtext:`implicit`|| | +| |+--------------------+| |+--------------------+| | +| ||:diagtext:`implicit`|| ||:diagtext:`explicit`|| | +| |+--------------------+| |+--------------------+| | ++-----------------------------------------------------------------------------------+----------------------+----------------------------------------------------------------------+----------------------+-------------------------------------------+ + + +-Wimplicit-fallthrough +---------------------- +Also controls `-Wimplicit-fallthrough-per-function`_. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`fallthrough annotation in unreachable code`| ++---------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`unannotated fall-through between switch labels`| ++-------------------------------------------------------------------------------------+ + + +-Wimplicit-fallthrough-per-function +----------------------------------- +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`unannotated fall-through between switch labels in partly-annotated function`| ++------------------------------------------------------------------------------------------------------------------+ + + +-Wimplicit-function-declaration +------------------------------- +Some of the diagnostics controlled by this flag are enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`implicit declaration of function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is invalid in C99`| ++------------------------------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`implicitly declaring library function '`:placeholder:`A`:diagtext:`' with type` |nbsp| :placeholder:`B`| ++---------------------------------------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------+ +|:error:`error:` |nbsp| :diagtext:`use of unknown builtin` |nbsp| :placeholder:`A`| ++---------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`implicit declaration of function` |nbsp| :placeholder:`A`| ++-----------------------------------------------------------------------------------------------+ + + +-Wimplicit-int +-------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`type specifier missing, defaults to 'int'`| ++--------------------------------------------------------------------------------+ + + +-Wimplicit-retain-self +---------------------- +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`block implicitly retains 'self'; explicitly mention 'self' to indicate this is intended behavior`| ++---------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wimplicitly-unsigned-literal +----------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`integer literal is too large to be represented in a signed integer type, interpreting as unsigned`| ++----------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wimport +-------- +This diagnostic flag exists for GCC compatibility, and has no effect in Clang. + +-Wimport-preprocessor-directive-pedantic +---------------------------------------- +**Diagnostic text:** + ++----------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`#import is a language extension`| ++----------------------------------------------------------------------+ + + +-Winaccessible-base +------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`direct base` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is inaccessible due to ambiguity:`:placeholder:`B`| ++-----------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Winclude-next-absolute-path +---------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`#include\_next with absolute path`| ++------------------------------------------------------------------------+ + + +-Winclude-next-outside-header +----------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++----------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`#include\_next in primary source file`| ++----------------------------------------------------------------------------+ + + +-Wincompatible-function-pointer-types +------------------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++----------------------------------------------------------------------------------+----------------------------------------------------------------+---------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`incompatible function pointer types` |nbsp| |+--------------------------------------------------------------+|+-------------------------------------+| +| ||:diagtext:`assigning to different types` ||| || +| |+--------------------------------------------------------------+|+-------------------------------------+| +| ||:diagtext:`passing to parameter of different type` |||:diagtext:`; dereference with \*` || +| |+--------------------------------------------------------------+|+-------------------------------------+| +| ||:diagtext:`returning from function with different return type`|||:diagtext:`; take the address with &`|| +| |+--------------------------------------------------------------+|+-------------------------------------+| +| ||:diagtext:`converting between types` |||:diagtext:`; remove \*` || +| |+--------------------------------------------------------------+|+-------------------------------------+| +| ||:diagtext:`initializing with expression of different type` |||:diagtext:`; remove &` || +| |+--------------------------------------------------------------+|+-------------------------------------+| +| ||:diagtext:`sending to parameter of different type` || | +| |+--------------------------------------------------------------+| | +| ||:diagtext:`casting between types` || | +| |+--------------------------------------------------------------+| | ++----------------------------------------------------------------------------------+----------------------------------------------------------------+---------------------------------------+ + + +-Wincompatible-library-redeclaration +------------------------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`incompatible redeclaration of library function` |nbsp| :placeholder:`A`| ++-------------------------------------------------------------------------------------------------------------+ + + +-Wincompatible-ms-struct +------------------------ +This diagnostic is an error by default, but the flag ``-Wno-incompatible-ms-struct`` can be used to disable the error. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------------------------------+ +|:error:`error:` |nbsp| :diagtext:`ms\_struct may not produce Microsoft-compatible layouts for classes with base classes or virtual functions`| ++---------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wincompatible-pointer-types +---------------------------- +This diagnostic is enabled by default. + +Also controls `-Wincompatible-pointer-types-discards-qualifiers`_, `-Wincompatible-function-pointer-types`_. + +**Diagnostic text:** + ++-------------------------------------------------------------------------+----------------------------------------------------------------+---------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`incompatible pointer types` |nbsp| |+--------------------------------------------------------------+|+-------------------------------------+| +| ||:diagtext:`assigning to different types` ||| || +| |+--------------------------------------------------------------+|+-------------------------------------+| +| ||:diagtext:`passing to parameter of different type` |||:diagtext:`; dereference with \*` || +| |+--------------------------------------------------------------+|+-------------------------------------+| +| ||:diagtext:`returning from function with different return type`|||:diagtext:`; take the address with &`|| +| |+--------------------------------------------------------------+|+-------------------------------------+| +| ||:diagtext:`converting between types` |||:diagtext:`; remove \*` || +| |+--------------------------------------------------------------+|+-------------------------------------+| +| ||:diagtext:`initializing with expression of different type` |||:diagtext:`; remove &` || +| |+--------------------------------------------------------------+|+-------------------------------------+| +| ||:diagtext:`sending to parameter of different type` || | +| |+--------------------------------------------------------------+| | +| ||:diagtext:`casting between types` || | +| |+--------------------------------------------------------------+| | ++-------------------------------------------------------------------------+----------------------------------------------------------------+---------------------------------------+ + + +-Wincompatible-pointer-types-discards-qualifiers +------------------------------------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------+----------------------------------------------------------------+---------------------------------------------------------------+ +|:warning:`warning:` |nbsp| |+--------------------------------------------------------------+| |nbsp| :diagtext:`discards qualifiers in nested pointer types`| +| ||:diagtext:`assigning to different types` || | +| |+--------------------------------------------------------------+| | +| ||:diagtext:`passing to parameter of different type` || | +| |+--------------------------------------------------------------+| | +| ||:diagtext:`returning from function with different return type`|| | +| |+--------------------------------------------------------------+| | +| ||:diagtext:`converting between types` || | +| |+--------------------------------------------------------------+| | +| ||:diagtext:`initializing with expression of different type` || | +| |+--------------------------------------------------------------+| | +| ||:diagtext:`sending to parameter of different type` || | +| |+--------------------------------------------------------------+| | +| ||:diagtext:`casting between types` || | +| |+--------------------------------------------------------------+| | ++---------------------------+----------------------------------------------------------------+---------------------------------------------------------------+ + ++---------------------------+----------------------------------------------------------------+---------------------------------------+ +|:warning:`warning:` |nbsp| |+--------------------------------------------------------------+| |nbsp| :diagtext:`discards qualifiers`| +| ||:diagtext:`assigning to different types` || | +| |+--------------------------------------------------------------+| | +| ||:diagtext:`passing to parameter of different type` || | +| |+--------------------------------------------------------------+| | +| ||:diagtext:`returning from function with different return type`|| | +| |+--------------------------------------------------------------+| | +| ||:diagtext:`converting between types` || | +| |+--------------------------------------------------------------+| | +| ||:diagtext:`initializing with expression of different type` || | +| |+--------------------------------------------------------------+| | +| ||:diagtext:`sending to parameter of different type` || | +| |+--------------------------------------------------------------+| | +| ||:diagtext:`casting between types` || | +| |+--------------------------------------------------------------+| | ++---------------------------+----------------------------------------------------------------+---------------------------------------+ + + +-Wincompatible-property-type +---------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`property type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is incompatible with type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`inherited from` |nbsp| :placeholder:`C`| ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wincompatible-sysroot +---------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`using sysroot for '`:placeholder:`A`:diagtext:`' but targeting '`:placeholder:`B`:diagtext:`'`| ++------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wincomplete-implementation +--------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`method definition for` |nbsp| :placeholder:`A` |nbsp| :diagtext:`not found`| ++-----------------------------------------------------------------------------------------------------------------+ + + +-Wincomplete-module +------------------- +Some of the diagnostics controlled by this flag are enabled by default. + +Controls `-Wincomplete-umbrella`_, `-Wnon-modular-include-in-module`_. + + +-Wincomplete-umbrella +--------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`missing submodule '`:placeholder:`A`:diagtext:`'`| ++---------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`umbrella header for module '`:placeholder:`A`:diagtext:`' does not include header '`:placeholder:`B`:diagtext:`'`| ++-------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Winconsistent-dllimport +------------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`redeclared without` |nbsp| :placeholder:`B` |nbsp| :diagtext:`attribute: previous` |nbsp| :placeholder:`B` |nbsp| :diagtext:`ignored`| ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`redeclared without 'dllimport' attribute: 'dllexport' attribute added`| ++------------------------------------------------------------------------------------------------------------------------------------+ + + +-Winconsistent-missing-override +------------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`overrides a member function but is not marked 'override'`| ++-----------------------------------------------------------------------------------------------------------------------+ + + +-Wincrement-bool +---------------- +This diagnostic is enabled by default. + +Also controls `-Wdeprecated-increment-bool`_. + +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------+ +|:error:`error:` |nbsp| :diagtext:`ISO C++1z does not allow incrementing expression of type bool`| ++------------------------------------------------------------------------------------------------+ + + +-Winfinite-recursion +-------------------- +**Diagnostic text:** + ++---------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`all paths through this function will call itself`| ++---------------------------------------------------------------------------------------+ + + +-Winit-self +----------- +This diagnostic flag exists for GCC compatibility, and has no effect in Clang. + +-Winitializer-overrides +----------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`initializer overrides prior initialization of this subobject`| ++---------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`subobject initialization overrides initialization of other fields within its enclosing subobject`| ++---------------------------------------------------------------------------------------------------------------------------------------+ + + +-Winline +-------- +This diagnostic flag exists for GCC compatibility, and has no effect in Clang. + +-Winline-asm +------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + +The text of this diagnostic is not controlled by Clang. + + +-Winline-new-delete +------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`replacement function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`cannot be declared 'inline'`| ++----------------------------------------------------------------------------------------------------------------------------------+ + + +-Winstantiation-after-specialization +------------------------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`explicit instantiation of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`that occurs after an explicit specialization has no effect`| ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wint-conversion +---------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------+----------------------------------------------------------------+---------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`incompatible integer to pointer conversion` |nbsp| |+--------------------------------------------------------------+|+-------------------------------------+| +| ||:diagtext:`assigning to different types` ||| || +| |+--------------------------------------------------------------+|+-------------------------------------+| +| ||:diagtext:`passing to parameter of different type` |||:diagtext:`; dereference with \*` || +| |+--------------------------------------------------------------+|+-------------------------------------+| +| ||:diagtext:`returning from function with different return type`|||:diagtext:`; take the address with &`|| +| |+--------------------------------------------------------------+|+-------------------------------------+| +| ||:diagtext:`converting between types` |||:diagtext:`; remove \*` || +| |+--------------------------------------------------------------+|+-------------------------------------+| +| ||:diagtext:`initializing with expression of different type` |||:diagtext:`; remove &` || +| |+--------------------------------------------------------------+|+-------------------------------------+| +| ||:diagtext:`sending to parameter of different type` || | +| |+--------------------------------------------------------------+| | +| ||:diagtext:`casting between types` || | +| |+--------------------------------------------------------------+| | ++-----------------------------------------------------------------------------------------+----------------------------------------------------------------+---------------------------------------+ + ++-----------------------------------------------------------------------------------------+----------------------------------------------------------------+---------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`incompatible pointer to integer conversion` |nbsp| |+--------------------------------------------------------------+|+-------------------------------------+| +| ||:diagtext:`assigning to different types` ||| || +| |+--------------------------------------------------------------+|+-------------------------------------+| +| ||:diagtext:`passing to parameter of different type` |||:diagtext:`; dereference with \*` || +| |+--------------------------------------------------------------+|+-------------------------------------+| +| ||:diagtext:`returning from function with different return type`|||:diagtext:`; take the address with &`|| +| |+--------------------------------------------------------------+|+-------------------------------------+| +| ||:diagtext:`converting between types` |||:diagtext:`; remove \*` || +| |+--------------------------------------------------------------+|+-------------------------------------+| +| ||:diagtext:`initializing with expression of different type` |||:diagtext:`; remove &` || +| |+--------------------------------------------------------------+|+-------------------------------------+| +| ||:diagtext:`sending to parameter of different type` || | +| |+--------------------------------------------------------------+| | +| ||:diagtext:`casting between types` || | +| |+--------------------------------------------------------------+| | ++-----------------------------------------------------------------------------------------+----------------------------------------------------------------+---------------------------------------+ + + +-Wint-conversions +----------------- +Synonym for `-Wint-conversion`_. + + +-Wint-to-pointer-cast +--------------------- +This diagnostic is enabled by default. + +Also controls `-Wint-to-void-pointer-cast`_. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`cast to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`from smaller integer type` |nbsp| :placeholder:`A`| ++-------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wint-to-void-pointer-cast +-------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`cast to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`from smaller integer type` |nbsp| :placeholder:`A`| ++-------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Winteger-overflow +------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`overflow in expression; result is` |nbsp| :placeholder:`A` |nbsp| :diagtext:`with type` |nbsp| :placeholder:`B`| ++-----------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Winvalid-command-line-argument +------------------------------- +This diagnostic is enabled by default. + +Also controls `-Wignored-optimization-argument`_. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`optimization level '`:placeholder:`A`:diagtext:`' is not supported; using '`:placeholder:`B`:placeholder:`C`:diagtext:`' instead`| ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Winvalid-constexpr +------------------- +This diagnostic is an error by default, but the flag ``-Wno-invalid-constexpr`` can be used to disable the error. + +**Diagnostic text:** + ++----------------------------------------------------+-------------------------+--------------------------------------------------------+ +|:error:`error:` |nbsp| :diagtext:`constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`never produces a constant expression`| +| ||:diagtext:`function` || | +| |+-----------------------+| | +| ||:diagtext:`constructor`|| | +| |+-----------------------+| | ++----------------------------------------------------+-------------------------+--------------------------------------------------------+ + + +-Winvalid-iboutlet +------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| |+-----------------------------+| |nbsp| :diagtext:`with` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute must be an object type (invalid` |nbsp| :placeholder:`B`:diagtext:`)`| +| ||:diagtext:`instance variable`|| | +| |+-----------------------------+| | +| ||:diagtext:`property` || | +| |+-----------------------------+| | ++---------------------------+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`IBOutletCollection properties should be copy/strong and not assign`| ++---------------------------------------------------------------------------------------------------------+ + + +-Winvalid-initializer-from-system-header +---------------------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`invalid constructor form class in system header, should not be explicit`| ++--------------------------------------------------------------------------------------------------------------+ + + +-Winvalid-noreturn +------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`function declared 'noreturn' should not return`| ++-------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`declared 'noreturn' should not return`| ++--------------------------------------------------------------------------------------------------------------------------------+ + + +-Winvalid-offsetof +------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++----------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`offset of on non-POD type` |nbsp| :placeholder:`A`| ++----------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`offset of on non-standard-layout type` |nbsp| :placeholder:`A`| ++----------------------------------------------------------------------------------------------------+ + + +-Winvalid-or-nonexistent-directory +---------------------------------- +Some of the diagnostics controlled by this flag are enabled by default. + +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`environment variable SCE\_ORBIS\_SDK\_DIR is set, but points to invalid or nonexistent directory '`:placeholder:`A`:diagtext:`'`| ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`unable to find` |nbsp| :placeholder:`A` |nbsp| :diagtext:`directory, expected to be in '`:placeholder:`B`:diagtext:`'`| ++------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Winvalid-pch +------------- +This diagnostic flag exists for GCC compatibility, and has no effect in Clang. + +-Winvalid-pp-token +------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`empty character constant`| ++---------------------------------------------------------------+ + ++------------------------------------------------------------------+-----------------+-----------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`missing terminating` |nbsp| |+---------------+| |nbsp| :diagtext:`character`| +| ||:diagtext:`'` || | +| |+---------------+| | +| ||:diagtext:`'"'`|| | +| |+---------------+| | ++------------------------------------------------------------------+-----------------+-----------------------------+ + + +-Winvalid-source-encoding +------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`illegal character encoding in character literal`| ++--------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`illegal character encoding in string literal`| ++-----------------------------------------------------------------------------------+ + + +-Winvalid-token-paste +--------------------- +This diagnostic is an error by default, but the flag ``-Wno-invalid-token-paste`` can be used to disable the error. + +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------+ +|:error:`error:` |nbsp| :diagtext:`pasting formed '`:placeholder:`A`:diagtext:`', an invalid preprocessing token`| ++----------------------------------------------------------------------------------------------------------------+ + + +-Wjump-seh-finally +------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`jump out of \_\_finally block has undefined behavior`| ++-------------------------------------------------------------------------------------------+ + + +-Wkeyword-compat +---------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`keyword '`:placeholder:`A`:diagtext:`' will be made available as an identifier` |nbsp| |+-----------------------------------------------------+| +| ||:diagtext:`here` || +| |+-----------------------------------------------------+| +| ||:diagtext:`for the remainder of the translation unit`|| +| |+-----------------------------------------------------+| ++-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------+ + + +-Wkeyword-macro +--------------- +**Diagnostic text:** + ++----------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`keyword is hidden by macro definition`| ++----------------------------------------------------------------------------+ + + +-Wknr-promoted-parameter +------------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`promoted type of K&R function parameter is not compatible with parameter type` |nbsp| :diagtext:`declared in a previous prototype`| ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wlanguage-extension-token +-------------------------- +**Diagnostic text:** + ++-----------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`extension used`| ++-----------------------------------------------------+ + + +-Wlarge-by-value-copy +--------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a large (`:placeholder:`B` |nbsp| :diagtext:`bytes) pass-by-value argument; pass it by reference instead ?`| ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`return value of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a large (`:placeholder:`B` |nbsp| :diagtext:`bytes) pass-by-value object; pass it by reference instead ?`| ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wliblto +-------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`libLTO.dylib relative to clang installed dir not found; using 'ld' default search path instead`| ++-------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wliteral-conversion +-------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`implicit conversion from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`changes value from` |nbsp| :placeholder:`C` |nbsp| :diagtext:`to` |nbsp| :placeholder:`D`| ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wliteral-range +--------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`magnitude of floating-point constant too large for type` |nbsp| :placeholder:`A`:diagtext:`; maximum is` |nbsp| :placeholder:`B`| ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`magnitude of floating-point constant too small for type` |nbsp| :placeholder:`A`:diagtext:`; minimum is` |nbsp| :placeholder:`B`| ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wlocal-type-template-args +-------------------------- +Some of the diagnostics controlled by this flag are enabled by default. + +Also controls `-Wc++98-compat-local-type-template-args`_. + +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`template argument uses local type` |nbsp| :placeholder:`A`| ++------------------------------------------------------------------------------------------------+ + + +-Wlogical-not-parentheses +------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`logical not is only applied to the left hand side of this comparison`| ++-----------------------------------------------------------------------------------------------------------+ + + +-Wlogical-op-parentheses +------------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'&&' within '\|\|'`| ++---------------------------------------------------------+ + + +-Wlong-long +----------- +Also controls `-Wc++11-long-long`_. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'long long' is an extension when C99 mode is not enabled`| ++-----------------------------------------------------------------------------------------------+ + + +-Wloop-analysis +--------------- +Controls `-Wfor-loop-analysis`_, `-Wrange-loop-analysis`_. + + +-Wmacro-redefined +----------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`macro redefined`| ++------------------------------------------------------------------------------+ + + +-Wmain +------ +Some of the diagnostics controlled by this flag are enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`ISO C++ does not allow 'main' to be used by a program`| ++--------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'main' is not allowed to be declared \_Noreturn`| ++--------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'main' is not allowed to be declared variadic`| ++------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`only one parameter on 'main' declaration`| ++-------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`variable named 'main' with external linkage has undefined behavior`| ++---------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'main' should not be declared static`| ++---------------------------------------------------------------------------+ + + +-Wmain-return-type +------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`return type of 'main' is not 'int'`| ++-------------------------------------------------------------------------+ + + +-Wmalformed-warning-check +------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`\_\_has\_warning expected option name (e.g. "-Wundef")`| ++---------------------------------------------------------------------------------------------+ + + +-Wmany-braces-around-scalar-init +-------------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`too many braces around scalar initializer`| ++--------------------------------------------------------------------------------+ + + +-Wmemsize-comparison +-------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`size argument in` |nbsp| :placeholder:`A` |nbsp| :diagtext:`call is a comparison`| ++-----------------------------------------------------------------------------------------------------------------------+ + + +-Wmethod-signatures +------------------- +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`conflicting parameter types in implementation of` |nbsp| :placeholder:`A`:diagtext:`:` |nbsp| :placeholder:`B` |nbsp| :diagtext:`vs` |nbsp| :placeholder:`C`| ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`conflicting return type in implementation of` |nbsp| :placeholder:`A`:diagtext:`:` |nbsp| :placeholder:`B` |nbsp| :diagtext:`vs` |nbsp| :placeholder:`C`| ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wmicrosoft +----------- +Some of the diagnostics controlled by this flag are enabled by default. + +Controls `-Wmicrosoft-charize`_, `-Wmicrosoft-include`_, `-Wmicrosoft-cpp-macro`_, `-Wmicrosoft-fixed-enum`_, `-Wmicrosoft-sealed`_, `-Wmicrosoft-unqualified-friend`_, `-Wmicrosoft-exception-spec`_, `-Wmicrosoft-using-decl`_, `-Wmicrosoft-mutable-reference`_, `-Wmicrosoft-pure-definition`_, `-Wmicrosoft-union-member-reference`_, `-Wmicrosoft-explicit-constructor-call`_, `-Wmicrosoft-enum-value`_, `-Wmicrosoft-default-arg-redefinition`_, `-Wmicrosoft-template`_, `-Wmicrosoft-redeclare-static`_, `-Wmicrosoft-enum-forward-reference`_, `-Wmicrosoft-goto`_, `-Wmicrosoft-flexible-array`_, `-Wmicrosoft-extra-qualification`_, `-Wmicrosoft-cast`_, `-Wmicrosoft-const-init`_, `-Wmicrosoft-void-pseudo-dtor`_, `-Wmicrosoft-anon-tag`_, `-Wmicrosoft-comment-paste`_, `-Wmicrosoft-end-of-file`_, `-Winconsistent-dllimport`_. + + +-Wmicrosoft-anon-tag +-------------------- +Some of the diagnostics controlled by this flag are enabled by default. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------+--------------------+---------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`types declared in an anonymous` |nbsp| |+------------------+| |nbsp| :diagtext:`are a Microsoft extension`| +| ||:diagtext:`struct`|| | +| |+------------------+| | +| ||:diagtext:`union` || | +| |+------------------+| | ++-----------------------------------------------------------------------------+--------------------+---------------------------------------------+ + ++--------------------------------------------------------+---------------------+---------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`anonymous` |nbsp| |+-------------------+| |nbsp| :diagtext:`are a Microsoft extension`| +| ||:diagtext:`structs`|| | +| |+-------------------+| | +| ||:diagtext:`unions` || | +| |+-------------------+| | ++--------------------------------------------------------+---------------------+---------------------------------------------+ + + +-Wmicrosoft-cast +---------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`static\_cast between pointer-to-function and pointer-to-object is a Microsoft extension`| ++------------------------------------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`implicit conversion between pointer-to-function and pointer-to-object is a Microsoft extension`| ++-------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wmicrosoft-charize +------------------- +**Diagnostic text:** + ++-------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`charizing operator #@ is a Microsoft extension`| ++-------------------------------------------------------------------------------------+ + + +-Wmicrosoft-comment-paste +------------------------- +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`pasting two '/' tokens into a '//' comment is a Microsoft extension`| ++----------------------------------------------------------------------------------------------------------+ + + +-Wmicrosoft-const-init +---------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+--------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`default initialization of an object of const type` |nbsp| :placeholder:`A`|+---------------------------------------------------------------+| |nbsp| :diagtext:`is a Microsoft extension`| +| || || | +| |+---------------------------------------------------------------+| | +| || |nbsp| :diagtext:`without a user-provided default constructor`|| | +| |+---------------------------------------------------------------+| | ++----------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+--------------------------------------------+ + + +-Wmicrosoft-cpp-macro +--------------------- +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`C++ operator` |nbsp| :placeholder:`A` |nbsp| :diagtext:`(aka` |nbsp| :placeholder:`B`:diagtext:`) used as a macro name`| ++-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wmicrosoft-default-arg-redefinition +------------------------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-----------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`redefinition of default argument`| ++-----------------------------------------------------------------------+ + + +-Wmicrosoft-end-of-file +----------------------- +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`treating Ctrl-Z as end-of-file is a Microsoft extension`| ++----------------------------------------------------------------------------------------------+ + + +-Wmicrosoft-enum-forward-reference +---------------------------------- +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`forward references to 'enum' types are a Microsoft extension`| ++---------------------------------------------------------------------------------------------------+ + + +-Wmicrosoft-enum-value +---------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`enumerator value is not representable in the underlying type` |nbsp| :placeholder:`A`| ++---------------------------------------------------------------------------------------------------------------------------+ + + +-Wmicrosoft-exception-spec +-------------------------- +Some of the diagnostics controlled by this flag are enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`exception specification of '...' is a Microsoft extension`| ++------------------------------------------------------------------------------------------------+ + ++---------------------------+----------------------------------+----------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| |+--------------------------------+|:diagtext:`incomplete type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is not allowed in exception specification`| +| || || | +| |+--------------------------------+| | +| ||:diagtext:`pointer to` |nbsp| || | +| |+--------------------------------+| | +| ||:diagtext:`reference to` |nbsp| || | +| |+--------------------------------+| | ++---------------------------+----------------------------------+----------------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`exception specification in declaration does not match previous declaration`| ++-----------------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`exception specification in explicit instantiation does not match instantiated one`| ++------------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is missing exception specification '`:placeholder:`B`:diagtext:`'`| ++--------------------------------------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`exception specification of overriding function is more lax than base version`| ++-------------------------------------------------------------------------------------------------------------------+ + + +-Wmicrosoft-exists +------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------+---------------------------------+--------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`dependent` |nbsp| |+-------------------------------+| |nbsp| :diagtext:`declarations are ignored`| +| ||:diagtext:`\_\_if\_not\_exists`|| | +| |+-------------------------------+| | +| ||:diagtext:`\_\_if\_exists` || | +| |+-------------------------------+| | ++--------------------------------------------------------+---------------------------------+--------------------------------------------+ + + +-Wmicrosoft-explicit-constructor-call +------------------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`explicit constructor calls are a Microsoft extension`| ++-------------------------------------------------------------------------------------------+ + + +-Wmicrosoft-extra-qualification +------------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`extra qualification on member` |nbsp| :placeholder:`A`| ++--------------------------------------------------------------------------------------------+ + + +-Wmicrosoft-fixed-enum +---------------------- +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`enumeration types with a fixed underlying type are a Microsoft extension`| ++---------------------------------------------------------------------------------------------------------------+ + + +-Wmicrosoft-flexible-array +-------------------------- +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------------------------+-----------------------+--------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`flexible array member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in otherwise empty` |nbsp| |+---------------------+| |nbsp| :diagtext:`is a Microsoft extension`| +| ||:diagtext:`struct` || | +| |+---------------------+| | +| ||:diagtext:`interface`|| | +| |+---------------------+| | +| ||:diagtext:`union` || | +| |+---------------------+| | +| ||:diagtext:`class` || | +| |+---------------------+| | +| ||:diagtext:`enum` || | +| |+---------------------+| | ++----------------------------------------------------------------------------------------------------------------------------------+-----------------------+--------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`flexible array member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in a union is a Microsoft extension`| ++-------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wmicrosoft-goto +---------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`jump from this goto statement to its label is a Microsoft extension`| ++----------------------------------------------------------------------------------------------------------+ + + +-Wmicrosoft-include +------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`#include resolved using non-portable Microsoft search rules as:` |nbsp| :placeholder:`A`| ++------------------------------------------------------------------------------------------------------------------------------+ + + +-Wmicrosoft-mutable-reference +----------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'mutable' on a reference type is a Microsoft extension`| ++---------------------------------------------------------------------------------------------+ + + +-Wmicrosoft-pure-definition +--------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`function definition with pure-specifier is a Microsoft extension`| ++-------------------------------------------------------------------------------------------------------+ + + +-Wmicrosoft-redeclare-static +---------------------------- +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`redeclaring non-static` |nbsp| :placeholder:`A` |nbsp| :diagtext:`as static is a Microsoft extension`| ++-------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wmicrosoft-sealed +------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'sealed' keyword is a Microsoft extension`| ++--------------------------------------------------------------------------------+ + + +-Wmicrosoft-template +-------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`duplicate explicit instantiation of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`ignored as a Microsoft extension`| ++------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`use of identifier` |nbsp| :placeholder:`A` |nbsp| :diagtext:`found via unqualified lookup into dependent bases of class templates is a Microsoft extension`| ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`explicit specialization of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`within class scope is a Microsoft extension`| ++--------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`using the undeclared type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`as a default template argument is a Microsoft extension`| ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`non-type template argument containing a dereference operation is a Microsoft extension`| ++-----------------------------------------------------------------------------------------------------------------------------+ + ++---------------------------+---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| |+-------------------------------------+| |nbsp| :diagtext:`specialization of` |nbsp| :placeholder:`B` |nbsp| :diagtext:`outside namespace enclosing` |nbsp| :placeholder:`C` |nbsp| :diagtext:`is a Microsoft extension`| +| ||:diagtext:`class template` || | +| |+-------------------------------------+| | +| ||:diagtext:`class template partial` || | +| |+-------------------------------------+| | +| ||:diagtext:`variable template` || | +| |+-------------------------------------+| | +| ||:diagtext:`variable template partial`|| | +| |+-------------------------------------+| | +| ||:diagtext:`function template` || | +| |+-------------------------------------+| | +| ||:diagtext:`member function` || | +| |+-------------------------------------+| | +| ||:diagtext:`static data member` || | +| |+-------------------------------------+| | +| ||:diagtext:`member class` || | +| |+-------------------------------------+| | +| ||:diagtext:`member enumeration` || | +| |+-------------------------------------+| | ++---------------------------+---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`template argument for template type parameter must be a type; omitted 'typename' is a Microsoft extension`| ++------------------------------------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`use of undeclared identifier` |nbsp| :placeholder:`A`:diagtext:`; unqualified lookup into dependent bases of class template` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is a Microsoft extension`| ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wmicrosoft-union-member-reference +---------------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`union member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has reference type` |nbsp| :placeholder:`B`:diagtext:`, which is a Microsoft extension`| ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wmicrosoft-unqualified-friend +------------------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`unqualified friend declaration referring to type outside of the nearest enclosing namespace is a Microsoft extension; add a nested name specifier`| ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wmicrosoft-using-decl +---------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`using declaration referring to inaccessible member '`:placeholder:`A`:diagtext:`' (which refers to accessible member '`:placeholder:`B`:diagtext:`') is a Microsoft compatibility extension`| ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wmicrosoft-void-pseudo-dtor +---------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`pseudo-destructors on type void are a Microsoft extension`| ++------------------------------------------------------------------------------------------------+ + + +-Wmismatched-new-delete +----------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++----------------------------------------------+------------------+---------------------------------------------------------------+------------------+-----------------------------------+------------------+--------------+ +|:warning:`warning:` |nbsp| :diagtext:`'delete`|+----------------+|:diagtext:`' applied to a pointer that was allocated with 'new`|+----------------+|:diagtext:`'; did you mean 'delete`|+----------------+|:diagtext:`'?`| +| || || ||:diagtext:`\[\]`|| ||:diagtext:`\[\]`|| | +| |+----------------+| |+----------------+| |+----------------+| | +| ||:diagtext:`\[\]`|| || || || || | +| |+----------------+| |+----------------+| |+----------------+| | ++----------------------------------------------+------------------+---------------------------------------------------------------+------------------+-----------------------------------+------------------+--------------+ + + +-Wmismatched-parameter-types +---------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`conflicting parameter types in implementation of` |nbsp| :placeholder:`A`| ++---------------------------------------------------------------------------------------------------------------+ + + +-Wmismatched-return-types +------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`conflicting return type in implementation of` |nbsp| :placeholder:`A`| ++-----------------------------------------------------------------------------------------------------------+ + + +-Wmismatched-tags +----------------- +**Diagnostic text:** + ++---------------------------------------------------------------------------------+--------------------------+------------------------------+-----------------------------------------------------------+--------------------------+------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`C` |nbsp| :diagtext:`defined as` |nbsp| |+------------------------+|+----------------------------+| |nbsp| :diagtext:`here but previously declared as` |nbsp| |+------------------------+|+----------------------------+| +| ||:diagtext:`a struct` ||| || ||:diagtext:`a struct` ||| || +| |+------------------------+|+----------------------------+| |+------------------------+|+----------------------------+| +| ||:diagtext:`an interface`||| |nbsp| :diagtext:`template`|| ||:diagtext:`an interface`||| |nbsp| :diagtext:`template`|| +| |+------------------------+|+----------------------------+| |+------------------------+|+----------------------------+| +| ||:diagtext:`a class` || | ||:diagtext:`a class` || | +| |+------------------------+| | |+------------------------+| | ++---------------------------------------------------------------------------------+--------------------------+------------------------------+-----------------------------------------------------------+--------------------------+------------------------------+ + ++---------------------------+-----------------------+------------------------------+--------------------------------------------------------------------------------+-----------------------+------------------------------+ +|:warning:`warning:` |nbsp| |+---------------------+|+----------------------------+| |nbsp| :placeholder:`C` |nbsp| :diagtext:`was previously declared as a` |nbsp| |+---------------------+|+----------------------------+| +| ||:diagtext:`struct` ||| || ||:diagtext:`struct` ||| || +| |+---------------------+|+----------------------------+| |+---------------------+|+----------------------------+| +| ||:diagtext:`interface`||| |nbsp| :diagtext:`template`|| ||:diagtext:`interface`||| |nbsp| :diagtext:`template`|| +| |+---------------------+|+----------------------------+| |+---------------------+|+----------------------------+| +| ||:diagtext:`class` || | ||:diagtext:`class` || | +| |+---------------------+| | |+---------------------+| | ++---------------------------+-----------------------+------------------------------+--------------------------------------------------------------------------------+-----------------------+------------------------------+ + + +-Wmissing-braces +---------------- +**Diagnostic text:** + ++----------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`suggest braces around initialization of subobject`| ++----------------------------------------------------------------------------------------+ + + +-Wmissing-declarations +---------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++----------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`declaration does not declare anything`| ++----------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' is not permitted on a declaration of a type`| ++-----------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`typedef requires a name`| ++--------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' ignored on this declaration`| ++-------------------------------------------------------------------------------------------------+ + + +-Wmissing-exception-spec +------------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is missing exception specification '`:placeholder:`B`:diagtext:`'`| ++--------------------------------------------------------------------------------------------------------------------------------+ + + +-Wmissing-field-initializers +---------------------------- +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`missing field` |nbsp| :placeholder:`A` |nbsp| :diagtext:`initializer`| ++-----------------------------------------------------------------------------------------------------------+ + + +-Wmissing-format-attribute +-------------------------- +This diagnostic flag exists for GCC compatibility, and has no effect in Clang. + +-Wmissing-include-dirs +---------------------- +This diagnostic flag exists for GCC compatibility, and has no effect in Clang. + +-Wmissing-method-return-type +---------------------------- +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`method has no return type specified; defaults to 'id'`| ++--------------------------------------------------------------------------------------------+ + + +-Wmissing-noreturn +------------------ +**Diagnostic text:** + ++----------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`block could be declared with attribute 'noreturn'`| ++----------------------------------------------------------------------------------------+ + ++---------------------------+----------------------+---------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| |+--------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`could be declared with attribute 'noreturn'`| +| ||:diagtext:`function`|| | +| |+--------------------+| | +| ||:diagtext:`method` || | +| |+--------------------+| | ++---------------------------+----------------------+---------------------------------------------------------------------------------------+ + + +-Wmissing-prototype-for-cc +-------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`function with no prototype cannot use the` |nbsp| :placeholder:`A` |nbsp| :diagtext:`calling convention`| ++----------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wmissing-prototypes +-------------------- +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`no previous prototype for function` |nbsp| :placeholder:`A`| ++-------------------------------------------------------------------------------------------------+ + + +-Wmissing-selector-name +----------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`used as the name of the previous parameter rather than as part of the selector`| ++---------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wmissing-sysroot +----------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`no such sysroot directory: '`:placeholder:`A`:diagtext:`'`| ++------------------------------------------------------------------------------------------------+ + + +-Wmissing-variable-declarations +------------------------------- +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`no previous extern declaration for non-static variable` |nbsp| :placeholder:`A`| ++---------------------------------------------------------------------------------------------------------------------+ + + +-Rmodule-build +-------------- +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------+ +|:remark:`remark:` |nbsp| :diagtext:`building module '`:placeholder:`A`:diagtext:`' as '`:placeholder:`B`:diagtext:`'`| ++---------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------+ +|:remark:`remark:` |nbsp| :diagtext:`finished building module '`:placeholder:`A`:diagtext:`'`| ++--------------------------------------------------------------------------------------------+ + + +-Wmodule-conflict +----------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`module '`:placeholder:`A`:diagtext:`' conflicts with already-imported module '`:placeholder:`B`:diagtext:`':` |nbsp| :placeholder:`C`| ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wmodule-file-config-mismatch +----------------------------- +This diagnostic is an error by default, but the flag ``-Wno-module-file-config-mismatch`` can be used to disable the error. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:error:`error:` |nbsp| :diagtext:`module file` |nbsp| :placeholder:`A` |nbsp| :diagtext:`cannot be loaded due to a configuration mismatch with the current compilation`| ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wmodule-file-extension +----------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`duplicate module file extension block name '`:placeholder:`A`:diagtext:`'`| ++----------------------------------------------------------------------------------------------------------------+ + + +-Wmodule-import-in-extern-c +--------------------------- +This diagnostic is an error by default, but the flag ``-Wno-module-import-in-extern-c`` can be used to disable the error. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------------------------------------------------+ +|:error:`error:` |nbsp| :diagtext:`import of C++ module '`:placeholder:`A`:diagtext:`' appears within extern "C" language linkage specification`| ++-----------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wmodules-ambiguous-internal-linkage +------------------------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`ambiguous use of internal linkage declaration` |nbsp| :placeholder:`A` |nbsp| :diagtext:`defined in multiple modules`| ++-----------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wmodules-import-nested-redundant +--------------------------------- +This diagnostic is an error by default, but the flag ``-Wno-modules-import-nested-redundant`` can be used to disable the error. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------------------------------------+ +|:error:`error:` |nbsp| :diagtext:`redundant #include of module '`:placeholder:`A`:diagtext:`' appears within` |nbsp| :placeholder:`B`| ++-------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wmost +------ +Some of the diagnostics controlled by this flag are enabled by default. + +Controls `-Wchar-subscripts`_, `-Wcomment`_, `-Wdelete-non-virtual-dtor`_, `-Wfor-loop-analysis`_, `-Wformat`_, `-Wimplicit`_, `-Winfinite-recursion`_, `-Wmismatched-tags`_, `-Wmissing-braces`_, `-Wmove`_, `-Wmultichar`_, `-Wreorder`_, `-Wreturn-type`_, `-Wself-assign`_, `-Wself-move`_, `-Wsizeof-array-argument`_, `-Wsizeof-array-decay`_, `-Wstring-plus-int`_, `-Wtrigraphs`_, `-Wuninitialized`_, `-Wunknown-pragmas`_, `-Wunused`_, `-Wvolatile-register-var`_, `-Wobjc-missing-super-calls`_, `-Wobjc-designated-initializers`_, `-Woverloaded-virtual`_, `-Wprivate-extern`_, `-Wcast-of-sel-type`_, `-Wextern-c-compat`_. + + +-Wmove +------ +Controls `-Wpessimizing-move`_, `-Wredundant-move`_, `-Wself-move`_. + + +-Wmsvc-include +-------------- +Synonym for `-Wmicrosoft-include`_. + + +-Wmultichar +----------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`multi-character character constant`| ++-------------------------------------------------------------------------+ + + +-Wmultiple-move-vbase +--------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`defaulted move assignment operator of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`will move assign virtual base class` |nbsp| :placeholder:`B` |nbsp| :diagtext:`multiple times`| ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wnarrowing +----------- +Synonym for `-Wc++11-narrowing`_. + + +-Wnested-anon-types +------------------- +**Diagnostic text:** + ++---------------------------------------------------------------------------------------+--------------------+------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`anonymous types declared in an anonymous` |nbsp| |+------------------+| |nbsp| :diagtext:`are an extension`| +| ||:diagtext:`struct`|| | +| |+------------------+| | +| ||:diagtext:`union` || | +| |+------------------+| | ++---------------------------------------------------------------------------------------+--------------------+------------------------------------+ + + +-Wnested-externs +---------------- +This diagnostic flag exists for GCC compatibility, and has no effect in Clang. + +-Wnew-returns-null +------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`should not return a null pointer unless it is declared 'throw()'`|+---------------------------------+| +| || || +| |+---------------------------------+| +| || |nbsp| :diagtext:`or 'noexcept'`|| +| |+---------------------------------+| ++-------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+ + + +-Wnewline-eof +------------- +**Diagnostic text:** + ++----------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`no newline at end of file`| ++----------------------------------------------------------------+ + ++----------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`no newline at end of file`| ++----------------------------------------------------------------+ + + +-Wnon-gcc +--------- +Some of the diagnostics controlled by this flag are enabled by default. + +Controls `-Wsign-compare`_, `-Wconversion`_, `-Wliteral-range`_. + + +-Wnon-literal-null-conversion +----------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`expression which evaluates to zero treated as a null pointer constant of type` |nbsp| :placeholder:`A`| ++--------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wnon-modular-include-in-framework-module +----------------------------------------- +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`include of non-modular header inside framework module '`:placeholder:`A`:diagtext:`'`| ++---------------------------------------------------------------------------------------------------------------------------+ + + +-Wnon-modular-include-in-module +------------------------------- +Also controls `-Wnon-modular-include-in-framework-module`_. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`include of non-modular header inside module '`:placeholder:`A`:diagtext:`'`| ++-----------------------------------------------------------------------------------------------------------------+ + + +-Wnon-pod-varargs +----------------- +This diagnostic is an error by default, but the flag ``-Wno-non-pod-varargs`` can be used to disable the error. + +**Diagnostic text:** + ++----------------------------------------------------------------+-------------------------+--------------------------------------------------------------------------------------------+-------------------------+----------------------------------------+ +|:error:`error:` |nbsp| :diagtext:`cannot pass object of` |nbsp| |+-----------------------+| |nbsp| :diagtext:`type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`through variadic` |nbsp| |+-----------------------+|:diagtext:`; call will abort at runtime`| +| ||:diagtext:`non-POD` || ||:diagtext:`function` || | +| |+-----------------------+| |+-----------------------+| | +| ||:diagtext:`non-trivial`|| ||:diagtext:`block` || | +| |+-----------------------+| |+-----------------------+| | +| | | ||:diagtext:`method` || | +| | | |+-----------------------+| | +| | | ||:diagtext:`constructor`|| | +| | | |+-----------------------+| | ++----------------------------------------------------------------+-------------------------+--------------------------------------------------------------------------------------------+-------------------------+----------------------------------------+ + ++------------------------------------------------------+-------------------------+-------------------------------------------------------------------------------------------------+-------------------------+--------------------------------------------------------------------------+ +|:error:`error:` |nbsp| :diagtext:`cannot pass` |nbsp| |+-----------------------+| |nbsp| :diagtext:`object of type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`to variadic` |nbsp| |+-----------------------+|:diagtext:`; expected type from format string was` |nbsp| :placeholder:`D`| +| ||:diagtext:`non-POD` || ||:diagtext:`function` || | +| |+-----------------------+| |+-----------------------+| | +| ||:diagtext:`non-trivial`|| ||:diagtext:`block` || | +| |+-----------------------+| |+-----------------------+| | +| | | ||:diagtext:`method` || | +| | | |+-----------------------+| | +| | | ||:diagtext:`constructor`|| | +| | | |+-----------------------+| | ++------------------------------------------------------+-------------------------+-------------------------------------------------------------------------------------------------+-------------------------+--------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------+ +|:error:`error:` |nbsp| :diagtext:`second argument to 'va\_arg' is of non-POD type` |nbsp| :placeholder:`A`| ++----------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------------------+ +|:error:`error:` |nbsp| :diagtext:`second argument to 'va\_arg' is of ARC ownership-qualified type` |nbsp| :placeholder:`A`| ++--------------------------------------------------------------------------------------------------------------------------+ + + +-Wnon-virtual-dtor +------------------ +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has virtual functions but non-virtual destructor`| ++---------------------------------------------------------------------------------------------------------------+ + + +-Wnonnull +--------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`null passed to a callee that requires a non-null argument`| ++------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------+----------------------+---------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`null returned from` |nbsp| |+--------------------+| |nbsp| :diagtext:`that requires a non-null return value`| +| ||:diagtext:`function`|| | +| |+--------------------+| | +| ||:diagtext:`method` || | +| |+--------------------+| | ++-----------------------------------------------------------------+----------------------+---------------------------------------------------------+ + + +-Wnonportable-cfstrings +----------------------- +This diagnostic flag exists for GCC compatibility, and has no effect in Clang. + +-Wnonportable-include-path +-------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`non-portable path to file '`:placeholder:`A`:diagtext:`'; specified path differs in case from file name on disk`| ++------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wnonportable-system-include-path +--------------------------------- +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`non-portable path to file '`:placeholder:`A`:diagtext:`'; specified path differs in case from file name on disk`| ++------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wnonportable-vector-initialization +----------------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`vector initializers are not compatible with NEON intrinsics in big endian mode`| ++---------------------------------------------------------------------------------------------------------------------+ + + +-Wnull-arithmetic +----------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`use of NULL in arithmetic operation`| ++--------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------+--------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`comparison between NULL and non-pointer` |nbsp| |+------------------------------------------------------------+| +| ||+----------------------------------------------------------+|| +| |||:diagtext:`(`:placeholder:`B` |nbsp| :diagtext:`and NULL)`||| +| ||+----------------------------------------------------------+|| +| |+------------------------------------------------------------+| +| ||+----------------------------------------------------------+|| +| |||:diagtext:`(NULL and` |nbsp| :placeholder:`B`:diagtext:`)`||| +| ||+----------------------------------------------------------+|| +| |+------------------------------------------------------------+| ++--------------------------------------------------------------------------------------+--------------------------------------------------------------+ + + +-Wnull-character +---------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------+--------------------+---------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`null character(s) preserved in` |nbsp| |+------------------+| |nbsp| :diagtext:`literal`| +| ||:diagtext:`char` || | +| |+------------------+| | +| ||:diagtext:`string`|| | +| |+------------------+| | ++-----------------------------------------------------------------------------+--------------------+---------------------------+ + ++-------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`null character ignored`| ++-------------------------------------------------------------+ + + +-Wnull-conversion +----------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------+---------------------+-------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`implicit conversion of` |nbsp| |+-------------------+| |nbsp| :diagtext:`constant to` |nbsp| :placeholder:`B`| +| ||:diagtext:`NULL` || | +| |+-------------------+| | +| ||:diagtext:`nullptr`|| | +| |+-------------------+| | ++---------------------------------------------------------------------+---------------------+-------------------------------------------------------+ + + +-Wnull-dereference +------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`binding dereferenced null pointer to reference has undefined behavior`| ++------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`indirection of non-volatile null pointer will be deleted, not trap`| ++---------------------------------------------------------------------------------------------------------+ + + +-Wnullability +------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`conflicting nullability specifier on parameter types,` |nbsp| :placeholder:`A` |nbsp| :diagtext:`conflicts with existing specifier` |nbsp| :placeholder:`B`| ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`conflicting nullability specifier on return types,` |nbsp| :placeholder:`A` |nbsp| :diagtext:`conflicts with existing specifier` |nbsp| :placeholder:`B`| ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`nullability specifier` |nbsp| :placeholder:`A` |nbsp| :diagtext:`conflicts with existing specifier` |nbsp| :placeholder:`B`| ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`synthesized setter` |nbsp| :placeholder:`A` |nbsp| :diagtext:`for null\_resettable property` |nbsp| :placeholder:`B` |nbsp| :diagtext:`does not handle nil`| ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`duplicate nullability specifier` |nbsp| :placeholder:`A`| ++----------------------------------------------------------------------------------------------+ + + +-Wnullability-completeness +-------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------+----------------------------+-----------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| |+--------------------------+| |nbsp| :diagtext:`is missing a nullability type specifier (\_Nonnull, \_Nullable, or \_Null\_unspecified)`| +| ||:diagtext:`pointer` || | +| |+--------------------------+| | +| ||:diagtext:`block pointer` || | +| |+--------------------------+| | +| ||:diagtext:`member pointer`|| | +| |+--------------------------+| | ++---------------------------+----------------------------+-----------------------------------------------------------------------------------------------------------+ + + +-Wnullability-declspec +---------------------- +This diagnostic is an error by default, but the flag ``-Wno-nullability-declspec`` can be used to disable the error. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------+-------------+ +|:error:`error:` |nbsp| :diagtext:`nullability specifier` |nbsp| :placeholder:`A` |nbsp| :diagtext:`cannot be applied to non-pointer type` |nbsp| :placeholder:`B`:diagtext:`; did you mean to apply the specifier to the` |nbsp| |+-----------------------------------+|:diagtext:`?`| +| ||:diagtext:`pointer` || | +| |+-----------------------------------+| | +| ||:diagtext:`block pointer` || | +| |+-----------------------------------+| | +| ||:diagtext:`member pointer` || | +| |+-----------------------------------+| | +| ||:diagtext:`function pointer` || | +| |+-----------------------------------+| | +| ||:diagtext:`member function pointer`|| | +| |+-----------------------------------+| | ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------+-------------+ + + +-Wnullability-extension +----------------------- +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`type nullability specifier` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a Clang extension`| ++---------------------------------------------------------------------------------------------------------------------------------+ + + +-Wnullable-to-nonnull-conversion +-------------------------------- +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`implicit conversion from nullable pointer` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to non-nullable pointer type` |nbsp| :placeholder:`B`| ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wobjc-autosynthesis-property-ivar-name-match +--------------------------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------------+-------------------------+---------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`autosynthesized property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`will use` |nbsp| |+-----------------------+| |nbsp| :diagtext:`instance variable` |nbsp| :placeholder:`C`:diagtext:`, not existing instance variable` |nbsp| :placeholder:`D`| +| || || | +| |+-----------------------+| | +| ||:diagtext:`synthesized`|| | +| |+-----------------------+| | ++---------------------------------------------------------------------------------------------------------------------------+-------------------------+---------------------------------------------------------------------------------------------------------------------------------+ + + +-Wobjc-circular-container +------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`adding '`:placeholder:`A`:diagtext:`' to '`:placeholder:`B`:diagtext:`' might cause circular dependency in container`| ++-----------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wobjc-cocoa-api +---------------- +Synonym for `-Wobjc-redundant-api-use`_. + + +-Wobjc-designated-initializers +------------------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`designated initializer missing a 'super' call to a designated initializer of the super class`| ++-----------------------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`designated initializer invoked a non-designated initializer`| ++--------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`designated initializer should only invoke a designated initializer on 'super'`| ++--------------------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`method override for the designated initializer of the superclass` |nbsp| :placeholder:`A` |nbsp| :diagtext:`not found`| ++------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`convenience initializer missing a 'self' call to another initializer`| ++-----------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`convenience initializer should not invoke an initializer on 'super'`| ++----------------------------------------------------------------------------------------------------------+ + + +-Wobjc-forward-class-redefinition +--------------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`redefinition of forward class` |nbsp| :placeholder:`A` |nbsp| :diagtext:`of a typedef name of an object type is ignored`| ++--------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wobjc-interface-ivars +---------------------- +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`declaration of instance variables in the interface is deprecated`| ++-------------------------------------------------------------------------------------------------------+ + + +-Wobjc-literal-compare +---------------------- +This diagnostic is enabled by default. + +Also controls `-Wobjc-string-compare`_. + +**Diagnostic text:** + ++-------------------------------------------------------------------+----------------------------------+------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`direct comparison of` |nbsp| |+--------------------------------+| |nbsp| :diagtext:`has undefined behavior`| +| ||:diagtext:`an array literal` || | +| |+--------------------------------+| | +| ||:diagtext:`a dictionary literal`|| | +| |+--------------------------------+| | +| ||:diagtext:`a numeric literal` || | +| |+--------------------------------+| | +| ||:diagtext:`a boxed expression` || | +| |+--------------------------------+| | +| || || | +| |+--------------------------------+| | ++-------------------------------------------------------------------+----------------------------------+------------------------------------------+ + + +-Wobjc-literal-conversion +------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`implicit boolean conversion of Objective-C object literal always evaluates to true`| ++-------------------------------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`object of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not compatible with` |nbsp| |+---------------------------------+| |nbsp| :placeholder:`C`| +| ||:diagtext:`array element type` || | +| |+---------------------------------+| | +| ||:diagtext:`dictionary key type` || | +| |+---------------------------------+| | +| ||:diagtext:`dictionary value type`|| | +| |+---------------------------------+| | ++-------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+------------------------+ + + +-Wobjc-macro-redefinition +------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`ignoring redefinition of Objective-C qualifier macro`| ++-------------------------------------------------------------------------------------------+ + + +-Wobjc-method-access +-------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`class method` |nbsp| :placeholder:`A` |nbsp| :diagtext:`not found (return type defaults to 'id')`| ++---------------------------------------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`class method` |nbsp| :placeholder:`A` |nbsp| :diagtext:`not found (return type defaults to 'id'); did you mean` |nbsp| :placeholder:`C`:diagtext:`?`| ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`instance method` |nbsp| :placeholder:`A` |nbsp| :diagtext:`not found (return type defaults to 'id')`| ++------------------------------------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`instance method` |nbsp| :placeholder:`A` |nbsp| :diagtext:`not found (return type defaults to 'id'); did you mean` |nbsp| :placeholder:`C`:diagtext:`?`| ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`instance method` |nbsp| :placeholder:`A` |nbsp| :diagtext:`found instead of class method` |nbsp| :placeholder:`B`| ++-------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`instance method` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is being used on 'Class' which is not in the root class`| ++---------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wobjc-missing-property-synthesis +--------------------------------- +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`auto property synthesis is synthesizing property not explicitly synthesized`| ++------------------------------------------------------------------------------------------------------------------+ + + +-Wobjc-missing-super-calls +-------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`method possibly missing a \[super` |nbsp| :placeholder:`A`:diagtext:`\] call`| ++-------------------------------------------------------------------------------------------------------------------+ + + +-Wobjc-multiple-method-names +---------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`multiple methods named` |nbsp| :placeholder:`A` |nbsp| :diagtext:`found`| ++--------------------------------------------------------------------------------------------------------------+ + + +-Wobjc-noncopy-retain-block-property +------------------------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`retain'ed block property does not copy the block - use copy attribute instead`| ++--------------------------------------------------------------------------------------------------------------------+ + + +-Wobjc-nonunified-exceptions +---------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`cannot catch an exception thrown with @throw in C++ in the non-unified exception model`| ++-----------------------------------------------------------------------------------------------------------------------------+ + + +-Wobjc-property-implementation +------------------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`class property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`requires method` |nbsp| :placeholder:`B` |nbsp| :diagtext:`to be defined - use @dynamic or provide a method implementation in this class implementation`| ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`class property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`requires method` |nbsp| :placeholder:`B` |nbsp| :diagtext:`to be defined - use @dynamic or provide a method implementation in this category`| ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`requires method` |nbsp| :placeholder:`B` |nbsp| :diagtext:`to be defined - use @synthesize, @dynamic or provide a method implementation in this class implementation`| ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`requires method` |nbsp| :placeholder:`B` |nbsp| :diagtext:`to be defined - use @dynamic or provide a method implementation in this category`| ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wobjc-property-implicit-mismatch +--------------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`primary property declaration is implicitly strong while redeclaration in class extension is weak`| ++---------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wobjc-property-matches-cocoa-ownership-rule +-------------------------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`property follows Cocoa naming convention for returning 'owned' objects`| ++-------------------------------------------------------------------------------------------------------------+ + + +-Wobjc-property-no-attribute +---------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`default property attribute 'assign' not appropriate for non-GC object`| ++------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`no 'assign', 'retain', or 'copy' attribute is specified - 'assign' is assumed`| ++--------------------------------------------------------------------------------------------------------------------+ + + +-Wobjc-property-synthesis +------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`auto property synthesis will not synthesize property` |nbsp| :placeholder:`A`:diagtext:`; it will be implemented by its superclass, use @dynamic to acknowledge intention`| ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`auto property synthesis will not synthesize property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`because it is 'readwrite' but it will be synthesized 'readonly' via another property`| ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`auto property synthesis will not synthesize property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`because it cannot share an ivar with another synthesized property`| ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wobjc-protocol-method-implementation +------------------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`category is implementing a method which will also be implemented by its primary class`| ++----------------------------------------------------------------------------------------------------------------------------+ + + +-Wobjc-protocol-property-synthesis +---------------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`auto property synthesis will not synthesize property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`declared in protocol` |nbsp| :placeholder:`B`| ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wobjc-protocol-qualifiers +-------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`parameterized class` |nbsp| :placeholder:`A` |nbsp| :diagtext:`already conforms to the protocols listed; did you forget a '\*'?`| ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wobjc-readonly-with-setter-property +------------------------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`setter cannot be specified for a readonly property`| ++-----------------------------------------------------------------------------------------+ + + +-Wobjc-redundant-api-use +------------------------ +Synonym for `-Wobjc-redundant-literal-use`_. + + +-Wobjc-redundant-literal-use +---------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`using` |nbsp| :placeholder:`A` |nbsp| :diagtext:`with a literal is redundant`| ++-------------------------------------------------------------------------------------------------------------------+ + + +-Wobjc-root-class +----------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`class` |nbsp| :placeholder:`A` |nbsp| :diagtext:`defined without specifying a base class`| ++-------------------------------------------------------------------------------------------------------------------------------+ + + +-Wobjc-string-compare +--------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`direct comparison of a string literal has undefined behavior`| ++---------------------------------------------------------------------------------------------------+ + + +-Wobjc-string-concatenation +--------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`concatenated NSString literal for an NSArray expression - possibly missing a comma`| ++-------------------------------------------------------------------------------------------------------------------------+ + + +-Wodr +----- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has incompatible definitions in different translation units`| ++--------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wold-style-cast +---------------- +**Diagnostic text:** + ++------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`use of old-style cast`| ++------------------------------------------------------------+ + + +-Wold-style-definition +---------------------- +This diagnostic flag exists for GCC compatibility, and has no effect in Clang. + +-Wopencl-unsupported-rgba +------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`vector component name '`:placeholder:`A`:diagtext:`' is an OpenCL version 2.2 feature`| ++----------------------------------------------------------------------------------------------------------------------------+ + + +-Wopenmp-clauses +---------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`aligned clause will be ignored because the requested alignment is not a power of 2`| ++-------------------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------+---------------------------------------------------+-------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`zero linear step (`:placeholder:`A` |nbsp| |+-------------------------------------------------+|:diagtext:`should probably be const)`| +| || || | +| |+-------------------------------------------------+| | +| ||:diagtext:`and other variables in clause` |nbsp| || | +| |+-------------------------------------------------+| | ++---------------------------------------------------------------------------------+---------------------------------------------------+-------------------------------------+ + + +-Wopenmp-loop-form +------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`initialization clause of OpenMP for loop is not in canonical form ('var = init' or 'T var = init')`| ++-----------------------------------------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`OpenMP loop iteration variable cannot have more than 64 bits size and will be narrowed`| ++-----------------------------------------------------------------------------------------------------------------------------+ + + +-Wopenmp-target +--------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`declaration is not declared in any declare target region`| ++-----------------------------------------------------------------------------------------------+ + + +-Woption-ignored +---------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`option '`:placeholder:`A`:diagtext:`' was ignored by the PS4 toolchain, using '-fPIC'`| ++----------------------------------------------------------------------------------------------------------------------------+ + + +-Wout-of-line-declaration +------------------------- +This diagnostic is an error by default, but the flag ``-Wno-out-of-line-declaration`` can be used to disable the error. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------+ +|:error:`error:` |nbsp| :diagtext:`out-of-line declaration of a member must be a definition`| ++-------------------------------------------------------------------------------------------+ + + +-Wover-aligned +-------------- +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`requires` |nbsp| :placeholder:`B` |nbsp| :diagtext:`bytes of alignment and the default allocator only guarantees` |nbsp| :placeholder:`C` |nbsp| :diagtext:`bytes`| ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Woverflow +---------- +This diagnostic flag exists for GCC compatibility, and has no effect in Clang. + +-Woverlength-strings +-------------------- +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------+-----------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`string literal of length` |nbsp| :placeholder:`A` |nbsp| :diagtext:`exceeds maximum length` |nbsp| :placeholder:`B` |nbsp| :diagtext:`that` |nbsp| |+-------------------+| |nbsp| :diagtext:`compilers are required to support`| +| ||:diagtext:`C90` || | +| |+-------------------+| | +| ||:diagtext:`ISO C99`|| | +| |+-------------------+| | +| ||:diagtext:`C++` || | +| |+-------------------+| | ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------+-----------------------------------------------------+ + + +-Woverloaded-shift-op-parentheses +--------------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------+----------------+------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`overloaded operator` |nbsp| |+--------------+| |nbsp| :diagtext:`has higher precedence than comparison operator`| +| ||:diagtext:`>>`|| | +| |+--------------+| | +| ||:diagtext:`<<`|| | +| |+--------------+| | ++------------------------------------------------------------------+----------------+------------------------------------------------------------------+ + + +-Woverloaded-virtual +-------------------- +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------+-----------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`hides overloaded virtual` |nbsp| |+---------------------+| +| ||:diagtext:`function` || +| |+---------------------+| +| ||:diagtext:`functions`|| +| |+---------------------+| ++-----------------------------------------------------------------------------------------------+-----------------------+ + + +-Woverride-module +----------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`overriding the module target triple with` |nbsp| :placeholder:`A`| ++-------------------------------------------------------------------------------------------------------+ + + +-Woverriding-method-mismatch +---------------------------- +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`conflicting distributed object modifiers on parameter type in declaration of` |nbsp| :placeholder:`A`| ++-------------------------------------------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`conflicting parameter types in declaration of` |nbsp| :placeholder:`A`| ++------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`conflicting distributed object modifiers on return type in declaration of` |nbsp| :placeholder:`A`| ++----------------------------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`conflicting return type in declaration of` |nbsp| :placeholder:`A`| ++--------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`conflicting variadic declaration of method and its implementation`| ++--------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`conflicting parameter types in declaration of` |nbsp| :placeholder:`A`:diagtext:`:` |nbsp| :placeholder:`B` |nbsp| :diagtext:`vs` |nbsp| :placeholder:`C`| ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`conflicting return type in declaration of` |nbsp| :placeholder:`A`:diagtext:`:` |nbsp| :placeholder:`B` |nbsp| :diagtext:`vs` |nbsp| :placeholder:`C`| ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Woverriding-t-option +--------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`overriding '`:placeholder:`A`:diagtext:`' option with '`:placeholder:`B`:diagtext:`'`| ++---------------------------------------------------------------------------------------------------------------------------+ + + +-Wpacked +-------- +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`packed attribute is unnecessary for` |nbsp| :placeholder:`A`| ++--------------------------------------------------------------------------------------------------+ + + +-Wpadded +-------- +**Diagnostic text:** + ++------------------------------------------------------+-----------------------+--------------------------------------------------------------------------------+------------------+---------------+------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`padding` |nbsp| |+---------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`with` |nbsp| :placeholder:`C` |nbsp| |+----------------+|+-------------+| |nbsp| :diagtext:`to align anonymous bit-field`| +| ||:diagtext:`struct` || ||:diagtext:`byte`||| || | +| |+---------------------+| |+----------------+|+-------------+| | +| ||:diagtext:`interface`|| ||:diagtext:`bit` |||:diagtext:`s`|| | +| |+---------------------+| |+----------------+|+-------------+| | +| ||:diagtext:`class` || | | | | +| |+---------------------+| | | | | ++------------------------------------------------------+-----------------------+--------------------------------------------------------------------------------+------------------+---------------+------------------------------------------------+ + ++------------------------------------------------------+-----------------------+--------------------------------------------------------------------------------+------------------+---------------+----------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`padding` |nbsp| |+---------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`with` |nbsp| :placeholder:`C` |nbsp| |+----------------+|+-------------+| |nbsp| :diagtext:`to align` |nbsp| :placeholder:`E`| +| ||:diagtext:`struct` || ||:diagtext:`byte`||| || | +| |+---------------------+| |+----------------+|+-------------+| | +| ||:diagtext:`interface`|| ||:diagtext:`bit` |||:diagtext:`s`|| | +| |+---------------------+| |+----------------+|+-------------+| | +| ||:diagtext:`class` || | | | | +| |+---------------------+| | | | | ++------------------------------------------------------+-----------------------+--------------------------------------------------------------------------------+------------------+---------------+----------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------------------------------+------------------+---------------+-----------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`padding size of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`with` |nbsp| :placeholder:`B` |nbsp| |+----------------+|+-------------+| |nbsp| :diagtext:`to alignment boundary`| +| ||:diagtext:`byte`||| || | +| |+----------------+|+-------------+| | +| ||:diagtext:`bit` |||:diagtext:`s`|| | +| |+----------------+|+-------------+| | ++--------------------------------------------------------------------------------------------------------------------------------------+------------------+---------------+-----------------------------------------+ + + +-Wparentheses +------------- +This diagnostic is enabled by default. + +Also controls `-Wlogical-op-parentheses`_, `-Wlogical-not-parentheses`_, `-Wbitwise-op-parentheses`_, `-Wshift-op-parentheses`_, `-Woverloaded-shift-op-parentheses`_, `-Wparentheses-equality`_, `-Wdangling-else`_. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`using the result of an assignment as a condition without parentheses`| ++-----------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has lower precedence than` |nbsp| :placeholder:`B`:diagtext:`;` |nbsp| :placeholder:`B` |nbsp| :diagtext:`will be evaluated first`| ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`operator '?:' has lower precedence than '`:placeholder:`A`:diagtext:`'; '`:placeholder:`A`:diagtext:`' will be evaluated first`| ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wparentheses-equality +---------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`equality comparison with extraneous parentheses`| ++--------------------------------------------------------------------------------------+ + + +-Wpartial-availability +---------------------- +Synonym for `-Wunguarded-availability`_. + + +-Rpass +------ +**Diagnostic text:** + +The text of this diagnostic is not controlled by Clang. + + +-Rpass-analysis +--------------- +**Diagnostic text:** + +The text of this diagnostic is not controlled by Clang. + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:remark:`remark:` |nbsp| :placeholder:`A`:diagtext:`; allow reordering by specifying '#pragma clang loop vectorize(enable)' before the loop. If the arrays will always be independent specify '#pragma clang loop vectorize(assume\_safety)' before the loop or provide the '\_\_restrict\_\_' qualifier with the independent array arguments. Erroneous results will occur if these options are incorrectly applied!`| ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:remark:`remark:` |nbsp| :placeholder:`A`:diagtext:`; allow reordering by specifying '#pragma clang loop vectorize(enable)' before the loop or by providing the compiler option '-ffast-math'.`| ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wpass-failed +------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + +The text of this diagnostic is not controlled by Clang. + + +-Rpass-missed +------------- +**Diagnostic text:** + +The text of this diagnostic is not controlled by Clang. + + +-Wpch-date-time +--------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------+--------------------------------+-----------------------------------------------------+ +|:warning:`warning:` |nbsp| |+------------------------------+| |nbsp| :diagtext:`uses \_\_DATE\_\_ or \_\_TIME\_\_`| +| ||:diagtext:`precompiled header`|| | +| |+------------------------------+| | +| ||:diagtext:`module` || | +| |+------------------------------+| | ++---------------------------+--------------------------------+-----------------------------------------------------+ + + +-Wpedantic +---------- +Also controls `-Wgnu-union-cast`_, `-Wdollar-in-identifier-extension`_, `-Wgnu-zero-line-directive`_, `-Wc11-extensions`_, `-Wgnu-flexible-array-union-member`_, `-Wvariadic-macros`_, `-Wempty-translation-unit`_, `-Wgnu-include-next`_, `-Wembedded-directive`_, `-Wgnu-statement-expression`_, `-Wimport-preprocessor-directive-pedantic`_, `-Wfour-char-constants`_, `-Wgnu-conditional-omitted-operand`_, `-Wgnu-redeclared-enum`_, `-Wmicrosoft-enum-forward-reference`_, `-Wc++14-binary-literal`_, `-Wgnu-empty-initializer`_, `-Wmicrosoft-charize`_, `-Wdeclaration-after-statement`_, `-Woverlength-strings`_, `-Wcomplex-component-init`_, `-Wmicrosoft-end-of-file`_, `-Wgnu-folding-constant`_, `-Wmicrosoft-fixed-enum`_, `-Wkeyword-macro`_, `-Wlong-long`_, `-Wgnu-compound-literal-initializer`_, `-Wc++11-extra-semi`_, `-Wformat-pedantic`_, `-Wnullability-extension`_, `-Wgnu-flexible-array-initializer`_, `-Wmicrosoft-flexible-array`_, `-Wmicrosoft-cpp-macro`_, `-Wgnu-case-range`_, `-Wvla-extension`_, `-Wgnu-zero-variadic-macro-arguments`_, `-Wlanguage-extension-token`_, `-Wgnu-empty-struct`_, `-Wgnu-auto-type`_, `-Wzero-length-array`_, `-Wgnu-complex-integer`_, `-Wmicrosoft-redeclare-static`_, `-Wc++11-long-long`_, `-Wretained-language-linkage`_, `-Wgnu-imaginary-constant`_, `-Wgnu-anonymous-struct`_, `-Wflexible-array-extensions`_, `-Wgnu-binary-literal`_, `-Wgnu-label-as-value`_, `-Wnested-anon-types`_, `-Wmicrosoft-comment-paste`_, `-Wextended-offsetof`_. + +**Diagnostic text:** + ++----------------------------------------------------+-----------------------+---------------------------+---------------+----------------------+-------------------------+---------------------------------+---------------+------------------------+---------------------------------------------------+--------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`arithmetic on`|+---------------------+| |nbsp| :diagtext:`pointer`|+-------------+| |nbsp| :diagtext:`to`|+-----------------------+| |nbsp| :diagtext:`function type`|+-------------+| |nbsp| :placeholder:`B`|+-------------------------------------------------+| |nbsp| :diagtext:`is a GNU extension`| +| || |nbsp| :diagtext:`a`|| || || || |nbsp| :diagtext:`the`|| || || || || | +| |+---------------------+| |+-------------+| |+-----------------------+| |+-------------+| |+-------------------------------------------------+| | +| || || ||:diagtext:`s`|| || || ||:diagtext:`s`|| ||+-----------------------------------------------+|| | +| |+---------------------+| |+-------------+| |+-----------------------+| |+-------------+| ||| |nbsp| :diagtext:`and` |nbsp| :placeholder:`D`||| | +| | | | | | | | | ||+-----------------------------------------------+|| | +| | | | | | | | | |+-------------------------------------------------+| | ++----------------------------------------------------+-----------------------+---------------------------+---------------+----------------------+-------------------------+---------------------------------+---------------+------------------------+---------------------------------------------------+--------------------------------------+ + ++---------------------------------------------------------------+-----------------------+----------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`invalid application of '`|+---------------------+|:diagtext:`' to a void type`| +| ||:diagtext:`sizeof` || | +| |+---------------------+| | +| ||:diagtext:`alignof` || | +| |+---------------------+| | +| ||:diagtext:`vec\_step`|| | +| |+---------------------+| | ++---------------------------------------------------------------+-----------------------+----------------------------+ + ++----------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`\_\_VA\_ARGS\_\_ can only appear in the expansion of a C99 variadic macro`| ++----------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`ordered comparison between pointer and zero (`:placeholder:`A` |nbsp| :diagtext:`and` |nbsp| :placeholder:`B`:diagtext:`) is an extension`| ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`ISO C forbids forward references to 'enum' types`| ++---------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`use of the` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute is a C++1z extension`| ++---------------------------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`use of non-standard escape character '\\`:placeholder:`A`:diagtext:`'`| ++------------------------------------------------------------------------------------------------------------+ + ++---------------------------+----------------------------------+------------------------------+-----------------------+----------------------------+ +|:warning:`warning:` |nbsp| |+--------------------------------+|:diagtext:`array size` |nbsp| |+---------------------+|:diagtext:`is a C99 feature`| +| ||:diagtext:`qualifier in` |nbsp| || || || | +| |+--------------------------------+| |+---------------------+| | +| ||:diagtext:`static` |nbsp| || || || | +| |+--------------------------------+| |+---------------------+| | +| || || ||:diagtext:`'\[\*\] '`|| | +| |+--------------------------------+| |+---------------------+| | ++---------------------------+----------------------------------+------------------------------+-----------------------+----------------------------+ + ++----------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`no newline at end of file`| ++----------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`macro expansion producing 'defined' has undefined behavior`| ++-------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`exception specification of '...' is a Microsoft extension`| ++------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`variable declaration in for loop is a C99-specific feature`| ++-------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`implicit conversion from array size expression of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| |+-----------------------+| |nbsp| :diagtext:`type` |nbsp| :placeholder:`C` |nbsp| :diagtext:`is a C++11 extension`| +| ||:diagtext:`integral` || | +| |+-----------------------+| | +| ||:diagtext:`enumeration`|| | +| |+-----------------------+| | ++---------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`cast between pointer-to-function and pointer-to-object is an extension`| ++-------------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'enable\_if' is a clang extension`| ++------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`hexadecimal floating constants are a C99 feature`| ++---------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`C99 forbids casting nonscalar type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to the same type`| ++-------------------------------------------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`ISO C forbids taking the address of an expression of type 'void'`| ++-------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`#ident is a language extension`| ++---------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`initializer for aggregate is not a compile-time constant`| ++-----------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' cannot be signed or unsigned`| ++--------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`ISO C90 does not allow subscripting non-lvalue array`| ++-------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`flexible array members are a C99 feature`| ++-------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`use of GNU array range extension`| ++-----------------------------------------------------------------------+ + ++------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`empty macro arguments are a C99 feature`| ++------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------+-----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`no viable constructor` |nbsp| |+---------------------------------------+| |nbsp| :diagtext:`of type` |nbsp| :placeholder:`B`:diagtext:`; C++98 requires a copy constructor when binding a reference to a temporary`| +| ||:diagtext:`copying variable` || | +| |+---------------------------------------+| | +| ||:diagtext:`copying parameter` || | +| |+---------------------------------------+| | +| ||:diagtext:`returning object` || | +| |+---------------------------------------+| | +| ||:diagtext:`throwing object` || | +| |+---------------------------------------+| | +| ||:diagtext:`copying member subobject` || | +| |+---------------------------------------+| | +| ||:diagtext:`copying array element` || | +| |+---------------------------------------+| | +| ||:diagtext:`allocating object` || | +| |+---------------------------------------+| | +| ||:diagtext:`copying temporary` || | +| |+---------------------------------------+| | +| ||:diagtext:`initializing base subobject`|| | +| |+---------------------------------------+| | +| ||:diagtext:`initializing vector element`|| | +| |+---------------------------------------+| | +| ||:diagtext:`capturing value` || | +| |+---------------------------------------+| | ++--------------------------------------------------------------------+-----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`ISO C does not support '~' for complex conjugation of` |nbsp| :placeholder:`A`| ++--------------------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------+--------------------+---------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`types declared in an anonymous` |nbsp| |+------------------+| |nbsp| :diagtext:`are a Microsoft extension`| +| ||:diagtext:`struct`|| | +| |+------------------+| | +| ||:diagtext:`union` || | +| |+------------------+| | ++-----------------------------------------------------------------------------+--------------------+---------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`parameter` |nbsp| :placeholder:`A` |nbsp| :diagtext:`was not declared, defaulting to type 'int'`| ++--------------------------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`ISO C++ does not allow 'main' to be used by a program`| ++--------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`extern templates are a C++11 extension`| ++-----------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`qualifier in explicit instantiation of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`requires a template-id (a typedef is not permitted)`| ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------+-----------------------+---------------------------+---------------+----------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`arithmetic on`|+---------------------+| |nbsp| :diagtext:`pointer`|+-------------+| |nbsp| :diagtext:`to void is a GNU extension`| +| || |nbsp| :diagtext:`a`|| || || | +| |+---------------------+| |+-------------+| | +| || || ||:diagtext:`s`|| | +| |+---------------------+| |+-------------+| | ++----------------------------------------------------+-----------------------+---------------------------+---------------+----------------------------------------------+ + ++-----------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`comma operator in operand of #if`| ++-----------------------------------------------------------------------+ + ++-----------------------------------------------------+----------------------+-----------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`static` |nbsp| |+--------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`is used in an inline function with external linkage`| +| ||:diagtext:`function`|| | +| |+--------------------+| | +| ||:diagtext:`variable`|| | +| |+--------------------+| | ++-----------------------------------------------------+----------------------+-----------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------+--------------------+------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`anonymous` |nbsp| |+------------------+| |nbsp| :diagtext:`cannot be '`:placeholder:`B`:diagtext:`'`| +| ||:diagtext:`struct`|| | +| |+------------------+| | +| ||:diagtext:`union` || | +| |+------------------+| | ++--------------------------------------------------------+--------------------+------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`ISO C does not support '++'/'--' on complex integer type` |nbsp| :placeholder:`A`| ++-----------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`commas at the end of enumerator lists are a C++11 extension`| ++--------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------------------------------------------+-------------------+-------------+ +|:warning:`warning:` |nbsp| :diagtext:`ISO C restricts enumerator values to range of 'int' (`:placeholder:`A` |nbsp| :diagtext:`is too` |nbsp| |+-----------------+|:diagtext:`)`| +| ||:diagtext:`small`|| | +| |+-----------------+| | +| ||:diagtext:`large`|| | +| |+-----------------+| | ++----------------------------------------------------------------------------------------------------------------------------------------------+-------------------+-------------+ + ++---------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`use of the` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute is a C++14 extension`| ++---------------------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`hexadecimal floating literals are a C++1z feature`| ++----------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`kernel function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a member function; this may not be accepted by nvcc`| ++--------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`type-less parameter names in function declaration`| ++----------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`C requires #line number to be less than` |nbsp| :placeholder:`A`:diagtext:`, allowed as extension`| ++----------------------------------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------+----------------------+-----------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`void` |nbsp| |+--------------------+| |nbsp| :placeholder:`A` |nbsp| :diagtext:`should not return void expression`| +| ||:diagtext:`function`|| | +| |+--------------------+| | +| ||:diagtext:`method` || | +| |+--------------------+| | +| ||:diagtext:`block` || | +| |+--------------------+| | ++---------------------------------------------------+----------------------+-----------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`complex numbers are an extension in a freestanding C99 implementation`| ++------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`equality comparison between function pointer and void pointer (`:placeholder:`A` |nbsp| :diagtext:`and` |nbsp| :placeholder:`B`:diagtext:`)`| ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'\_\_thread' before '`:placeholder:`A`:diagtext:`'`| ++-----------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`C99 forbids conditional expressions with only one void side`| ++--------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`multi-line // comment`| ++------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+ +|:warning:`warning:` |nbsp| :diagtext:`C++98 requires an accessible copy constructor for class` |nbsp| :placeholder:`C` |nbsp| :diagtext:`when binding a reference to a temporary; was` |nbsp| |+---------------------+| +| ||:diagtext:`private` || +| |+---------------------+| +| ||:diagtext:`protected`|| +| |+---------------------+| ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+ + ++---------------------------+----------------------------------------------------------------+----------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| |+--------------------------------------------------------------+| |nbsp| :diagtext:`converts between void pointer and function pointer`| +| ||:diagtext:`assigning to different types` || | +| |+--------------------------------------------------------------+| | +| ||:diagtext:`passing to parameter of different type` || | +| |+--------------------------------------------------------------+| | +| ||:diagtext:`returning from function with different return type`|| | +| |+--------------------------------------------------------------+| | +| ||:diagtext:`converting between types` || | +| |+--------------------------------------------------------------+| | +| ||:diagtext:`initializing with expression of different type` || | +| |+--------------------------------------------------------------+| | +| ||:diagtext:`sending to parameter of different type` || | +| |+--------------------------------------------------------------+| | +| ||:diagtext:`casting between types` || | +| |+--------------------------------------------------------------+| | ++---------------------------+----------------------------------------------------------------+----------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`compound literals are a C99-specific feature`| ++-----------------------------------------------------------------------------------+ + ++--------------------------------------------------------+------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`extra ';'` |nbsp| |+----------------------------------------------+| +| ||:diagtext:`outside of a function` || +| |+----------------------------------------------+| +| ||+--------------------------------------------+|| +| |||:diagtext:`inside a` |nbsp| :placeholder:`B`||| +| ||+--------------------------------------------+|| +| |+----------------------------------------------+| +| ||:diagtext:`inside instance variable list` || +| |+----------------------------------------------+| +| ||:diagtext:`after member function definition` || +| |+----------------------------------------------+| ++--------------------------------------------------------+------------------------------------------------+ + ++-----------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`#warning is a language extension`| ++-----------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`subscript of a pointer to void is a GNU extension`| ++----------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`size of static array must be an integer constant expression`| ++--------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`commas at the end of enumerator lists are a C99-specific feature`| ++-------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`enumeration types with a fixed underlying type are a C++11 extension`| ++-----------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`designated initializers are a C99 feature`| ++--------------------------------------------------------------------------------+ + ++---------------------------------------------------------------+-----------------------+--------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`invalid application of '`|+---------------------+|:diagtext:`' to a function type`| +| ||:diagtext:`sizeof` || | +| |+---------------------+| | +| ||:diagtext:`alignof` || | +| |+---------------------+| | +| ||:diagtext:`vec\_step`|| | +| |+---------------------+| | ++---------------------------------------------------------------+-----------------------+--------------------------------+ + ++-----------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`// comments are not allowed in this language`| ++-----------------------------------------------------------------------------------+ + + +-Wpedantic-core-features +------------------------ +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`OpenCL extension` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is core feature or supported optional core feature - ignoring`| ++----------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wpessimizing-move +------------------ +**Diagnostic text:** + ++--------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`moving a temporary object prevents copy elision`| ++--------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`moving a local object in a return statement prevents copy elision`| ++--------------------------------------------------------------------------------------------------------+ + + +-Wpointer-arith +--------------- +Some of the diagnostics controlled by this flag are enabled by default. + +**Diagnostic text:** + ++----------------------------------------------------+-----------------------+---------------------------+---------------+----------------------+-------------------------+---------------------------------+---------------+------------------------+---------------------------------------------------+--------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`arithmetic on`|+---------------------+| |nbsp| :diagtext:`pointer`|+-------------+| |nbsp| :diagtext:`to`|+-----------------------+| |nbsp| :diagtext:`function type`|+-------------+| |nbsp| :placeholder:`B`|+-------------------------------------------------+| |nbsp| :diagtext:`is a GNU extension`| +| || |nbsp| :diagtext:`a`|| || || || |nbsp| :diagtext:`the`|| || || || || | +| |+---------------------+| |+-------------+| |+-----------------------+| |+-------------+| |+-------------------------------------------------+| | +| || || ||:diagtext:`s`|| || || ||:diagtext:`s`|| ||+-----------------------------------------------+|| | +| |+---------------------+| |+-------------+| |+-----------------------+| |+-------------+| ||| |nbsp| :diagtext:`and` |nbsp| :placeholder:`D`||| | +| | | | | | | | | ||+-----------------------------------------------+|| | +| | | | | | | | | |+-------------------------------------------------+| | ++----------------------------------------------------+-----------------------+---------------------------+---------------+----------------------+-------------------------+---------------------------------+---------------+------------------------+---------------------------------------------------+--------------------------------------+ + ++----------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`subscript of a pointer to void is a GNU extension`| ++----------------------------------------------------------------------------------------+ + ++----------------------------------------------------+-----------------------+---------------------------+---------------+----------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`arithmetic on`|+---------------------+| |nbsp| :diagtext:`pointer`|+-------------+| |nbsp| :diagtext:`to void is a GNU extension`| +| || |nbsp| :diagtext:`a`|| || || | +| |+---------------------+| |+-------------+| | +| || || ||:diagtext:`s`|| | +| |+---------------------+| |+-------------+| | ++----------------------------------------------------+-----------------------+---------------------------+---------------+----------------------------------------------+ + ++---------------------------------------------------------------+-----------------------+--------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`invalid application of '`|+---------------------+|:diagtext:`' to a function type`| +| ||:diagtext:`sizeof` || | +| |+---------------------+| | +| ||:diagtext:`alignof` || | +| |+---------------------+| | +| ||:diagtext:`vec\_step`|| | +| |+---------------------+| | ++---------------------------------------------------------------+-----------------------+--------------------------------+ + ++---------------------------------------------------------------+-----------------------+----------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`invalid application of '`|+---------------------+|:diagtext:`' to a void type`| +| ||:diagtext:`sizeof` || | +| |+---------------------+| | +| ||:diagtext:`alignof` || | +| |+---------------------+| | +| ||:diagtext:`vec\_step`|| | +| |+---------------------+| | ++---------------------------------------------------------------+-----------------------+----------------------------+ + ++-----------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`subtraction of pointers to type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`of zero size has undefined behavior`| ++-----------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wpointer-bool-conversion +------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------+---------------------------+---------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`nonnull` |nbsp| |+-------------------------+| |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' will evaluate to 'true' on first encounter`| +| ||:diagtext:`function call`|| | +| |+-------------------------+| | +| ||:diagtext:`parameter` || | +| |+-------------------------+| | ++------------------------------------------------------+---------------------------+---------------------------------------------------------------------------------------------+ + ++-------------------------------------------------+------------------------------+---------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`address of`|+----------------------------+| |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' will always evaluate to 'true'`| +| || || | +| |+----------------------------+| | +| || |nbsp| :diagtext:`function`|| | +| |+----------------------------+| | +| || |nbsp| :diagtext:`array` || | +| |+----------------------------+| | ++-------------------------------------------------+------------------------------+---------------------------------------------------------------------------------+ + + +-Wpointer-sign +-------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------+----------------------------------------------------------------+----------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| |+--------------------------------------------------------------+| |nbsp| :diagtext:`converts between pointers to integer types with different sign`| +| ||:diagtext:`assigning to different types` || | +| |+--------------------------------------------------------------+| | +| ||:diagtext:`passing to parameter of different type` || | +| |+--------------------------------------------------------------+| | +| ||:diagtext:`returning from function with different return type`|| | +| |+--------------------------------------------------------------+| | +| ||:diagtext:`converting between types` || | +| |+--------------------------------------------------------------+| | +| ||:diagtext:`initializing with expression of different type` || | +| |+--------------------------------------------------------------+| | +| ||:diagtext:`sending to parameter of different type` || | +| |+--------------------------------------------------------------+| | +| ||:diagtext:`casting between types` || | +| |+--------------------------------------------------------------+| | ++---------------------------+----------------------------------------------------------------+----------------------------------------------------------------------------------+ + + +-Wpointer-to-int-cast +--------------------- +This diagnostic flag exists for GCC compatibility, and has no effect in Clang. + +-Wpointer-type-mismatch +----------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`pointer type mismatch`| ++------------------------------------------------------------+ + + +-Wpotentially-evaluated-expression +---------------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`expression with side effects will be evaluated despite being used as an operand to 'typeid'`| ++----------------------------------------------------------------------------------------------------------------------------------+ + + +-Wpragma-once-outside-header +---------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++----------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`#pragma once in main file`| ++----------------------------------------------------------------+ + + +-Wpragma-system-header-outside-header +------------------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++----------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`#pragma system\_header ignored in main file`| ++----------------------------------------------------------------------------------+ + + +-Wpragmas +--------- +Some of the diagnostics controlled by this flag are enabled by default. + +Also controls `-Wunknown-pragmas`_, `-Wignored-pragmas`_. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------------------------------------+----------------------+------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`#pragma redefine\_extname is applicable to external C declarations only; not applied to` |nbsp| |+--------------------+| |nbsp| :placeholder:`B`| +| ||:diagtext:`function`|| | +| |+--------------------+| | +| ||:diagtext:`variable`|| | +| |+--------------------+| | ++--------------------------------------------------------------------------------------------------------------------------------------+----------------------+------------------------+ + + +-Wpredefined-identifier-outside-function +---------------------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`predefined identifier is only valid inside function`| ++------------------------------------------------------------------------------------------+ + + +-Wprivate-extern +---------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`use of \_\_private\_extern\_\_ on a declaration may not produce external symbol private to the linkage unit and is deprecated`| ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wprivate-header +---------------- +This diagnostic is an error by default, but the flag ``-Wno-private-header`` can be used to disable the error. + +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------+ +|:error:`error:` |nbsp| :diagtext:`use of private header from outside its module: '`:placeholder:`A`:diagtext:`'`| ++----------------------------------------------------------------------------------------------------------------+ + + +-Wprofile-instr-out-of-date +--------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------------------------------------+---------------+---------------------------------------------+-------------------+---------------------------------------------------------------+-------------------+--------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`profile data may be out of date: of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`function`|+-------------+|:diagtext:`,` |nbsp| :placeholder:`B` |nbsp| |+-----------------+| |nbsp| :diagtext:`no data and` |nbsp| :placeholder:`C` |nbsp| |+-----------------+| |nbsp| :diagtext:`mismatched data that will be ignored`| +| || || ||:diagtext:`:has` || ||:diagtext:`:has` || | +| |+-------------+| |+-----------------+| |+-----------------+| | +| ||:diagtext:`s`|| ||:diagtext:`:have`|| ||:diagtext:`:have`|| | +| |+-------------+| |+-----------------+| |+-----------------+| | ++------------------------------------------------------------------------------------------------------------------------------+---------------+---------------------------------------------+-------------------+---------------------------------------------------------------+-------------------+--------------------------------------------------------+ + + +-Wprofile-instr-unprofiled +-------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`no profile data available for file "`:placeholder:`A`:diagtext:`"`| ++--------------------------------------------------------------------------------------------------------+ + + +-Wproperty-access-dot-syntax +---------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`not found on object of type` |nbsp| :placeholder:`B`:diagtext:`; did you mean to access property` |nbsp| :placeholder:`C`:diagtext:`?`| ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wproperty-attribute-mismatch +----------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`property attribute in class extension does not match the primary class`| ++-------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' attribute on property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`does not match the property inherited from` |nbsp| :placeholder:`C`| ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`getter name mismatch between property redeclaration (`:placeholder:`B`:diagtext:`) and its original declaration (`:placeholder:`A`:diagtext:`)`| ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`attribute 'readonly' of property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`restricts attribute 'readwrite' of property inherited from` |nbsp| :placeholder:`B`| ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wprotocol +---------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`method` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in protocol` |nbsp| :placeholder:`B` |nbsp| :diagtext:`not implemented`| ++---------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wprotocol-property-synthesis-ambiguity +--------------------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`property of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`was selected for synthesis`| ++-----------------------------------------------------------------------------------------------------------------------------+ + + +-Wqualified-void-return-type +---------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`function cannot return qualified void type` |nbsp| :placeholder:`A`| ++---------------------------------------------------------------------------------------------------------+ + + +-Wrange-loop-analysis +--------------------- +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`loop variable` |nbsp| :placeholder:`A` |nbsp| |nbsp| :diagtext:`is initialized with a value of a different type` |nbsp| :diagtext:`resulting in a copy`| ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`loop variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`of type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`creates a copy from type` |nbsp| :placeholder:`C`| ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`loop variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is always a copy because the range of type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`does not return a reference`| ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wreadonly-iboutlet-property +---------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`readonly IBOutlet property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`when auto-synthesized may not work correctly with 'nib' loader`| ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wreceiver-expr +--------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`receiver type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not 'id' or interface pointer, consider casting it to 'id'`| ++-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wreceiver-forward-class +------------------------ +Some of the diagnostics controlled by this flag are enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`receiver` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a forward class and corresponding @interface may not exist`| ++--------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`receiver type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`for instance message is a forward declaration`| ++---------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wredeclared-class-member +------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`class member cannot be redeclared`| ++------------------------------------------------------------------------+ + + +-Wredundant-decls +----------------- +This diagnostic flag exists for GCC compatibility, and has no effect in Clang. + +-Wredundant-move +---------------- +**Diagnostic text:** + ++-------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`redundant move in return statement`| ++-------------------------------------------------------------------------+ + + +-Wregister +---------- +This diagnostic is enabled by default. + +Also controls `-Wdeprecated-register`_. + +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------+ +|:error:`error:` |nbsp| :diagtext:`ISO C++1z does not allow 'register' storage class specifier`| ++----------------------------------------------------------------------------------------------+ + + +-Wreinterpret-base-class +------------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------+------------------+---------------------------------------------------------+------------------+-------------------------------+-------------------------------------+-----------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'reinterpret\_cast'` |nbsp| |+----------------+| |nbsp| :diagtext:`class` |nbsp| :placeholder:`A` |nbsp| |+----------------+| |nbsp| :diagtext:`its` |nbsp| |+-----------------------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`behaves differently from 'static\_cast'`| +| ||:diagtext:`from`|| ||:diagtext:`to` || ||:diagtext:`virtual base` || | +| |+----------------+| |+----------------+| |+-----------------------------------+| | +| ||:diagtext:`to` || ||:diagtext:`from`|| ||:diagtext:`base at non-zero offset`|| | +| |+----------------+| |+----------------+| |+-----------------------------------+| | ++------------------------------------------------------------------+------------------+---------------------------------------------------------+------------------+-------------------------------+-------------------------------------+-----------------------------------------------------------------------------------+ + + +-Rremark-backend-plugin +----------------------- +**Diagnostic text:** + +The text of this diagnostic is not controlled by Clang. + + +-Wreorder +--------- +**Diagnostic text:** + ++---------------------------+------------------------+-----------------------------------------------------------------------------+-------------------+------------------------+ +|:warning:`warning:` |nbsp| |+----------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`will be initialized after` |nbsp| |+-----------------+| |nbsp| :placeholder:`D`| +| ||:diagtext:`field` || ||:diagtext:`field`|| | +| |+----------------------+| |+-----------------+| | +| ||:diagtext:`base class`|| ||:diagtext:`base` || | +| |+----------------------+| |+-----------------+| | ++---------------------------+------------------------+-----------------------------------------------------------------------------+-------------------+------------------------+ + + +-Wrequires-super-attribute +-------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------+----------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute cannot be applied to` |nbsp| |+--------------------------------+| +| ||:diagtext:`methods in protocols`|| +| |+--------------------------------+| +| ||:diagtext:`dealloc` || +| |+--------------------------------+| ++-----------------------------------------------------------------------------------------------------+----------------------------------+ + + +-Wreserved-id-macro +------------------- +**Diagnostic text:** + ++--------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`macro name is a reserved identifier`| ++--------------------------------------------------------------------------+ + + +-Wreserved-user-defined-literal +------------------------------- +Some of the diagnostics controlled by this flag are enabled by default. + +Also controls `-Wc++11-compat-reserved-user-defined-literal`_. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`invalid suffix on literal; C++11 requires a space between literal and identifier`| ++-----------------------------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------------+ +|:error:`error:` |nbsp| :diagtext:`invalid suffix on literal; C++11 requires a space between literal and identifier`| ++-------------------------------------------------------------------------------------------------------------------+ + + +-Wretained-language-linkage +--------------------------- +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`friend function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`retaining previous language linkage is an extension`| ++-----------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wreturn-stack-address +---------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`returning address of label, which is local`| ++---------------------------------------------------------------------------------+ + ++--------------------------------------------------------+--------------------------+------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`returning` |nbsp| |+------------------------+| |nbsp| :diagtext:`local temporary object`| +| ||:diagtext:`address of` || | +| |+------------------------+| | +| ||:diagtext:`reference to`|| | +| |+------------------------+| | ++--------------------------------------------------------+--------------------------+------------------------------------------+ + ++---------------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| |+------------------------+| |nbsp| :diagtext:`stack memory associated with local variable` |nbsp| :placeholder:`B` |nbsp| :diagtext:`returned`| +| ||:diagtext:`address of` || | +| |+------------------------+| | +| ||:diagtext:`reference to`|| | +| |+------------------------+| | ++---------------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------+ + + +-Wreturn-type +------------- +This diagnostic is enabled by default. + +Also controls `-Wreturn-type-c-linkage`_. + +**Diagnostic text:** + ++-----------------------+---------------------------+---------------------------------------------------------------------+ +|:error:`error:` |nbsp| |+-------------------------+| |nbsp| :placeholder:`A` |nbsp| :diagtext:`should not return a value`| +| ||:diagtext:`void function`|| | +| |+-------------------------+| | +| ||:diagtext:`void method` || | +| |+-------------------------+| | +| ||:diagtext:`constructor` || | +| |+-------------------------+| | +| ||:diagtext:`destructor` || | +| |+-------------------------+| | ++-----------------------+---------------------------+---------------------------------------------------------------------+ + ++---------------------------------------------------+----------------------+-----------------------------------------------------------------+ +|:error:`error:` |nbsp| :diagtext:`non-void` |nbsp| |+--------------------+| |nbsp| :placeholder:`A` |nbsp| :diagtext:`should return a value`| +| ||:diagtext:`function`|| | +| |+--------------------+| | +| ||:diagtext:`method` || | +| |+--------------------+| | ++---------------------------------------------------+----------------------+-----------------------------------------------------------------+ + ++-------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`control reaches end of non-void function`| ++-------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`control reaches end of non-void lambda`| ++-----------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`control may reach end of non-void function`| ++---------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`control may reach end of non-void lambda`| ++-------------------------------------------------------------------------------+ + ++---------------------------------------------------+----------------------+-----------------------------------------------------------------+ +|:error:`error:` |nbsp| :diagtext:`non-void` |nbsp| |+--------------------+| |nbsp| :placeholder:`A` |nbsp| :diagtext:`should return a value`| +| ||:diagtext:`function`|| | +| |+--------------------+| | +| ||:diagtext:`method` || | +| |+--------------------+| | ++---------------------------------------------------+----------------------+-----------------------------------------------------------------+ + + +-Wreturn-type-c-linkage +----------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has C-linkage specified, but returns user-defined type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`which is incompatible with C`| ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has C-linkage specified, but returns incomplete type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`which could be incompatible with C`| ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wrtti-for-exceptions +--------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`implicitly enabling rtti for exception handling`| ++--------------------------------------------------------------------------------------+ + + +-Rsanitize-address +------------------ +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------+ +|:remark:`remark:` |nbsp| :diagtext:`-fsanitize-address-field-padding applied to` |nbsp| :placeholder:`A`| ++--------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------+ +|:remark:`remark:` |nbsp| :diagtext:`-fsanitize-address-field-padding ignored for` |nbsp| :placeholder:`A` |nbsp| :diagtext:`because it` |nbsp| |+------------------------------------+| +| ||:diagtext:`is not C++` || +| |+------------------------------------+| +| ||:diagtext:`is packed` || +| |+------------------------------------+| +| ||:diagtext:`is a union` || +| |+------------------------------------+| +| ||:diagtext:`is trivially copyable` || +| |+------------------------------------+| +| ||:diagtext:`has trivial destructor` || +| |+------------------------------------+| +| ||:diagtext:`is standard layout` || +| |+------------------------------------+| +| ||:diagtext:`is in a blacklisted file`|| +| |+------------------------------------+| +| ||:diagtext:`is blacklisted` || +| |+------------------------------------+| ++-----------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------+ + + +-Wsection +--------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++----------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`section does not match previous declaration`| ++----------------------------------------------------------------------------------+ + + +-Wselector +---------- +Also controls `-Wselector-type-mismatch`_. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`no method with selector` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is implemented in this translation unit`| ++-------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wselector-type-mismatch +------------------------ +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`several methods with selector` |nbsp| :placeholder:`A` |nbsp| :diagtext:`of mismatched types are found for the @selector expression`| ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wself-assign +------------- +Some of the diagnostics controlled by this flag are enabled by default. + +Also controls `-Wself-assign-field`_. + +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`explicitly assigning value of variable of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to itself`| ++------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wself-assign-field +------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------+-------------------------------+-----------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`assigning` |nbsp| |+-----------------------------+| |nbsp| :diagtext:`to itself`| +| ||:diagtext:`field` || | +| |+-----------------------------+| | +| ||:diagtext:`instance variable`|| | +| |+-----------------------------+| | ++--------------------------------------------------------+-------------------------------+-----------------------------+ + + +-Wself-move +----------- +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`explicitly moving variable of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to itself`| ++------------------------------------------------------------------------------------------------------------------------------+ + + +-Wsemicolon-before-method-body +------------------------------ +**Diagnostic text:** + ++------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`semicolon before method body is ignored`| ++------------------------------------------------------------------------------+ + + +-Wsentinel +---------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------+-----------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`missing sentinel in` |nbsp| |+---------------------------+| +| ||:diagtext:`function call` || +| |+---------------------------+| +| ||:diagtext:`method dispatch`|| +| |+---------------------------+| +| ||:diagtext:`block call` || +| |+---------------------------+| ++------------------------------------------------------------------+-----------------------------+ + ++------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`not enough variable arguments in` |nbsp| :placeholder:`A` |nbsp| :diagtext:`declaration to fit a sentinel`| ++------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wsequence-point +---------------- +Synonym for `-Wunsequenced`_. + + +-Wserialized-diagnostics +------------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`unable to open file` |nbsp| :placeholder:`A` |nbsp| :diagtext:`for serializing diagnostics (`:placeholder:`B`:diagtext:`)`| ++----------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`unable to merge a subprocess's serialized diagnostics`| ++--------------------------------------------------------------------------------------------+ + + +-Wshadow +-------- +Also controls `-Wshadow-field-in-constructor-modified`_. + +**Diagnostic text:** + ++--------------------------------------------------------------------+-------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`declaration shadows a` |nbsp| |+-----------------------------------------------------------+| +| ||:diagtext:`local variable` || +| |+-----------------------------------------------------------+| +| ||+-----------------------------------------------+ || +| |||:diagtext:`variable in` |nbsp| :placeholder:`C`| || +| ||+-----------------------------------------------+ || +| |+-----------------------------------------------------------+| +| ||+---------------------------------------------------------+|| +| |||:diagtext:`static data member of` |nbsp| :placeholder:`C`||| +| ||+---------------------------------------------------------+|| +| |+-----------------------------------------------------------+| +| ||+--------------------------------------------+ || +| |||:diagtext:`field of` |nbsp| :placeholder:`C`| || +| ||+--------------------------------------------+ || +| |+-----------------------------------------------------------+| ++--------------------------------------------------------------------+-------------------------------------------------------------+ + + +-Wshadow-all +------------ +Controls `-Wshadow`_, `-Wshadow-field-in-constructor`_. + + +-Wshadow-field-in-constructor +----------------------------- +Also controls `-Wshadow-field-in-constructor-modified`_. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`constructor parameter` |nbsp| :placeholder:`A` |nbsp| :diagtext:`shadows the field` |nbsp| :placeholder:`B` |nbsp| :diagtext:`of` |nbsp| :placeholder:`C`| ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wshadow-field-in-constructor-modified +-------------------------------------- +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`modifying constructor parameter` |nbsp| :placeholder:`A` |nbsp| :diagtext:`that shadows a field of` |nbsp| :placeholder:`B`| ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wshadow-ivar +------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`local declaration of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`hides instance variable`| ++------------------------------------------------------------------------------------------------------------------------------+ + + +-Wshift-count-negative +---------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`shift count is negative`| ++--------------------------------------------------------------+ + + +-Wshift-count-overflow +---------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`shift count >= width of type`| ++-------------------------------------------------------------------+ + + +-Wshift-negative-value +---------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`shifting a negative signed value is undefined`| ++------------------------------------------------------------------------------------+ + + +-Wshift-op-parentheses +---------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`operator '`:placeholder:`A`:diagtext:`' has lower precedence than '`:placeholder:`B`:diagtext:`'; '`:placeholder:`B`:diagtext:`' will be evaluated first`| ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wshift-overflow +---------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`signed shift result (`:placeholder:`A`:diagtext:`) requires` |nbsp| :placeholder:`B` |nbsp| :diagtext:`bits to represent, but` |nbsp| :placeholder:`C` |nbsp| :diagtext:`only has` |nbsp| :placeholder:`D` |nbsp| :diagtext:`bits`| ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wshift-sign-overflow +--------------------- +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`signed shift result (`:placeholder:`A`:diagtext:`) sets the sign bit of the shift expression's type (`:placeholder:`B`:diagtext:`) and becomes negative`| ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wshorten-64-to-32 +------------------ +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`implicit conversion loses integer precision:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`| ++---------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wsign-compare +-------------- +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`comparison of integers of different signs:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`and` |nbsp| :placeholder:`B`| ++--------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wsign-conversion +----------------- +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`implicit conversion changes signedness:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`| ++----------------------------------------------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`operand of ? changes signedness:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`| ++---------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wsign-promo +------------ +This diagnostic flag exists for GCC compatibility, and has no effect in Clang. + +-Wsizeof-array-argument +----------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`sizeof on array function parameter will return size of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`instead of` |nbsp| :placeholder:`B`| ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wsizeof-array-decay +-------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`sizeof on pointer operation will return size of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`instead of` |nbsp| :placeholder:`B`| ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wsizeof-pointer-memaccess +-------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' call operates on objects of type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`while the size is based on a different type` |nbsp| :placeholder:`C`| ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+---------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`argument to 'sizeof' in` |nbsp| :placeholder:`A` |nbsp| :diagtext:`call is the same pointer type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`as the` |nbsp| |+-----------------------+|:diagtext:`; expected` |nbsp| :placeholder:`D` |nbsp| :diagtext:`or an explicit length`| +| ||:diagtext:`destination`|| | +| |+-----------------------+| | +| ||:diagtext:`source` || | +| |+-----------------------+| | ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+---------------------------------------------------------------------------------------+ + + +-Wsometimes-uninitialized +------------------------- +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------+----------------------+--------------------------------------------------+--------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is` |nbsp| |+--------------------+| |nbsp| :diagtext:`uninitialized whenever` |nbsp| |+------------------------------------------------------------------------------------------------------------+| +| ||:diagtext:`used` || ||+---------------------------------------------------------------+-------------------+ || +| |+--------------------+| |||:diagtext:`'`:placeholder:`D`:diagtext:`' condition is` |nbsp| |+-----------------+| || +| ||:diagtext:`captured`|| ||| ||:diagtext:`true` || || +| |+--------------------+| ||| |+-----------------+| || +| | | ||| ||:diagtext:`false`|| || +| | | ||| |+-----------------+| || +| | | ||+---------------------------------------------------------------+-------------------+ || +| | | |+------------------------------------------------------------------------------------------------------------+| +| | | ||+-------------------------------------------------------+--------------------------------------------------+|| +| | | |||:diagtext:`'`:placeholder:`D`:diagtext:`' loop` |nbsp| |+------------------------------------------------+||| +| | | ||| ||:diagtext:`is entered` |||| +| | | ||| |+------------------------------------------------+||| +| | | ||| ||:diagtext:`exits because its condition is false`|||| +| | | ||| |+------------------------------------------------+||| +| | | ||+-------------------------------------------------------+--------------------------------------------------+|| +| | | |+------------------------------------------------------------------------------------------------------------+| +| | | ||+-------------------------------------------------------+--------------------------------------------------+|| +| | | |||:diagtext:`'`:placeholder:`D`:diagtext:`' loop` |nbsp| |+------------------------------------------------+||| +| | | ||| ||:diagtext:`condition is true` |||| +| | | ||| |+------------------------------------------------+||| +| | | ||| ||:diagtext:`exits because its condition is false`|||| +| | | ||| |+------------------------------------------------+||| +| | | ||+-------------------------------------------------------+--------------------------------------------------+|| +| | | |+------------------------------------------------------------------------------------------------------------+| +| | | ||+----------------------------------------------------------------------+ || +| | | |||:diagtext:`switch` |nbsp| :placeholder:`D` |nbsp| :diagtext:`is taken`| || +| | | ||+----------------------------------------------------------------------+ || +| | | |+------------------------------------------------------------------------------------------------------------+| +| | | ||:diagtext:`its declaration is reached` || +| | | |+------------------------------------------------------------------------------------------------------------+| +| | | ||+---------------------------------------------+ || +| | | |||:placeholder:`D` |nbsp| :diagtext:`is called`| || +| | | ||+---------------------------------------------+ || +| | | |+------------------------------------------------------------------------------------------------------------+| ++-----------------------------------------------------------------------------------------------------+----------------------+--------------------------------------------------+--------------------------------------------------------------------------------------------------------------+ + + +-Wsource-uses-openmp +-------------------- +Some of the diagnostics controlled by this flag are enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`OpenMP only allows an ordered construct with the simd clause nested in a simd construct`| ++------------------------------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`unexpected '#pragma omp ...' in program`| ++------------------------------------------------------------------------------+ + + +-Wspir-compat +------------- +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`sampler initializer has invalid` |nbsp| :placeholder:`A` |nbsp| :diagtext:`bits`| ++----------------------------------------------------------------------------------------------------------------------+ + + +-Wstack-protector +----------------- +This diagnostic flag exists for GCC compatibility, and has no effect in Clang. + +-Wstatic-float-init +------------------- +This diagnostic is enabled by default. + +Also controls `-Wgnu-static-float-init`_. + +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:error:`error:` |nbsp| :diagtext:`in-class initializer for static data member of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`requires 'constexpr' specifier`| ++----------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wstatic-in-inline +------------------ +Some of the diagnostics controlled by this flag are enabled by default. + +**Diagnostic text:** + ++-----------------------------------------------------+----------------------+-----------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`static` |nbsp| |+--------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`is used in an inline function with external linkage`| +| ||:diagtext:`function`|| | +| |+--------------------+| | +| ||:diagtext:`variable`|| | +| |+--------------------+| | ++-----------------------------------------------------+----------------------+-----------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------+----------------------+-----------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`static` |nbsp| |+--------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`is used in an inline function with external linkage`| +| ||:diagtext:`function`|| | +| |+--------------------+| | +| ||:diagtext:`variable`|| | +| |+--------------------+| | ++-----------------------------------------------------+----------------------+-----------------------------------------------------------------------------------------------+ + + +-Wstatic-inline-explicit-instantiation +-------------------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------+--------------------+--------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`ignoring '`|+------------------+|:diagtext:`' keyword on explicit template instantiation`| +| ||:diagtext:`static`|| | +| |+------------------+| | +| ||:diagtext:`inline`|| | +| |+------------------+| | ++-------------------------------------------------+--------------------+--------------------------------------------------------+ + + +-Wstatic-local-in-inline +------------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`non-constant static local variable in inline function may be different in different files`| ++--------------------------------------------------------------------------------------------------------------------------------+ + + +-Wstatic-self-init +------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`static variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is suspiciously used within its own initialization`| ++----------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wstrict-aliasing +----------------- +This diagnostic flag exists for GCC compatibility, and has no effect in Clang. + +-Wstrict-aliasing=0 +------------------- +This diagnostic flag exists for GCC compatibility, and has no effect in Clang. + +-Wstrict-aliasing=1 +------------------- +This diagnostic flag exists for GCC compatibility, and has no effect in Clang. + +-Wstrict-aliasing=2 +------------------- +This diagnostic flag exists for GCC compatibility, and has no effect in Clang. + +-Wstrict-overflow +----------------- +This diagnostic flag exists for GCC compatibility, and has no effect in Clang. + +-Wstrict-overflow=0 +------------------- +This diagnostic flag exists for GCC compatibility, and has no effect in Clang. + +-Wstrict-overflow=1 +------------------- +This diagnostic flag exists for GCC compatibility, and has no effect in Clang. + +-Wstrict-overflow=2 +------------------- +This diagnostic flag exists for GCC compatibility, and has no effect in Clang. + +-Wstrict-overflow=3 +------------------- +This diagnostic flag exists for GCC compatibility, and has no effect in Clang. + +-Wstrict-overflow=4 +------------------- +This diagnostic flag exists for GCC compatibility, and has no effect in Clang. + +-Wstrict-overflow=5 +------------------- +This diagnostic flag exists for GCC compatibility, and has no effect in Clang. + +-Wstrict-prototypes +------------------- +This diagnostic flag exists for GCC compatibility, and has no effect in Clang. + +-Wstrict-selector-match +----------------------- +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`multiple methods named` |nbsp| :placeholder:`A` |nbsp| :diagtext:`found`| ++--------------------------------------------------------------------------------------------------------------+ + + +-Wstring-compare +---------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------+------------------------------+--------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`result of comparison against` |nbsp| |+----------------------------+| |nbsp| :diagtext:`is unspecified (use strncmp instead)`| +| ||:diagtext:`a string literal`|| | +| |+----------------------------+| | +| ||:diagtext:`@encode` || | +| |+----------------------------+| | ++---------------------------------------------------------------------------+------------------------------+--------------------------------------------------------+ + + +-Wstring-conversion +------------------- +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`implicit conversion turns string literal into bool:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`| ++----------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wstring-plus-char +------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`adding` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to a string pointer does not append to the string`| ++------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wstring-plus-int +----------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`adding` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to a string does not append to the string`| ++----------------------------------------------------------------------------------------------------------------------------------+ + + +-Wstrlcpy-strlcat-size +---------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`size argument in` |nbsp| :placeholder:`A` |nbsp| :diagtext:`call appears to be size of the source; expected the size of the destination`| ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wstrncat-size +-------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`the value of the size argument in 'strncat' is too large, might lead to a buffer overflow`| ++--------------------------------------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`size argument in 'strncat' call appears to be size of the source`| ++-------------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`the value of the size argument to 'strncat' is wrong`| ++-------------------------------------------------------------------------------------------+ + + +-Wsuper-class-method-mismatch +----------------------------- +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`method parameter type` |nbsp| :diagtext:`does not match super class method parameter type`| ++--------------------------------------------------------------------------------------------------------------------------------+ + + +-Wswitch +-------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`overflow converting case value to switch condition type (`:placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`:diagtext:`)`| ++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++---------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| |+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| +| ||+-----------------------------------------------------------------------------------------------+ || +| |||:diagtext:`:enumeration value` |nbsp| :placeholder:`B` |nbsp| :diagtext:`not handled in switch`| || +| ||+-----------------------------------------------------------------------------------------------+ || +| |+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| +| ||+-----------------------------------------------------------------------------------------------------------------------------------------------+ || +| |||:diagtext:`:enumeration values` |nbsp| :placeholder:`B` |nbsp| :diagtext:`and` |nbsp| :placeholder:`C` |nbsp| :diagtext:`not handled in switch`| || +| ||+-----------------------------------------------------------------------------------------------------------------------------------------------+ || +| |+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| +| ||+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ || +| |||:diagtext:`:enumeration values` |nbsp| :placeholder:`B`:diagtext:`,` |nbsp| :placeholder:`C`:diagtext:`, and` |nbsp| :placeholder:`D` |nbsp| :diagtext:`not handled in switch`| || +| ||+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ || +| |+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| +| ||+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|| +| |||:diagtext:`:`:placeholder:`A` |nbsp| :diagtext:`enumeration values not handled in switch:` |nbsp| :placeholder:`B`:diagtext:`,` |nbsp| :placeholder:`C`:diagtext:`,` |nbsp| :placeholder:`D`:diagtext:`...`||| +| ||+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|| +| |+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| ++---------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`case value not in enumerated type` |nbsp| :placeholder:`A`| ++------------------------------------------------------------------------------------------------+ + + +-Wswitch-bool +------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`switch condition has boolean value`| ++-------------------------------------------------------------------------+ + + +-Wswitch-default +---------------- +This diagnostic flag exists for GCC compatibility, and has no effect in Clang. + +-Wswitch-enum +------------- +**Diagnostic text:** + ++---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| |+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| +| ||+----------------------------------------------------------------------------------------------------------+ || +| |||:diagtext:`:enumeration value` |nbsp| :placeholder:`B` |nbsp| :diagtext:`not explicitly handled in switch`| || +| ||+----------------------------------------------------------------------------------------------------------+ || +| |+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| +| ||+----------------------------------------------------------------------------------------------------------------------------------------------------------+ || +| |||:diagtext:`:enumeration values` |nbsp| :placeholder:`B` |nbsp| :diagtext:`and` |nbsp| :placeholder:`C` |nbsp| :diagtext:`not explicitly handled in switch`| || +| ||+----------------------------------------------------------------------------------------------------------------------------------------------------------+ || +| |+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| +| ||+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ || +| |||:diagtext:`:enumeration values` |nbsp| :placeholder:`B`:diagtext:`,` |nbsp| :placeholder:`C`:diagtext:`, and` |nbsp| :placeholder:`D` |nbsp| :diagtext:`not explicitly handled in switch`| || +| ||+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ || +| |+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| +| ||+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|| +| |||:diagtext:`:`:placeholder:`A` |nbsp| :diagtext:`enumeration values not explicitly handled in switch:` |nbsp| :placeholder:`B`:diagtext:`,` |nbsp| :placeholder:`C`:diagtext:`,` |nbsp| :placeholder:`D`:diagtext:`...`||| +| ||+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|| +| |+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| ++---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wsync-fetch-and-nand-semantics-changed +--------------------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`the semantics of this intrinsic changed with GCC version 4.4 - the newer semantics are provided here`| ++-------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wsynth +------- +This diagnostic flag exists for GCC compatibility, and has no effect in Clang. + +-Wtautological-compare +---------------------- +Some of the diagnostics controlled by this flag are enabled by default. + +Also controls `-Wtautological-constant-out-of-range-compare`_, `-Wtautological-pointer-compare`_, `-Wtautological-overlap-compare`_, `-Wtautological-undefined-compare`_. + +**Diagnostic text:** + ++---------------------------+---------------------------+--------------------------------------------------+------------------------+ +|:warning:`warning:` |nbsp| |+-------------------------+|:diagtext:`comparison always evaluates to` |nbsp| |+----------------------+| +| ||:diagtext:`self-` || ||:diagtext:`false` || +| |+-------------------------+| |+----------------------+| +| ||:diagtext:`array` |nbsp| || ||:diagtext:`true` || +| |+-------------------------+| |+----------------------+| +| | | ||:diagtext:`a constant`|| +| | | |+----------------------+| ++---------------------------+---------------------------+--------------------------------------------------+------------------------+ + ++-------------------------------------------------------------------------------------+-------------------+ +|:warning:`warning:` |nbsp| :diagtext:`bitwise comparison always evaluates to` |nbsp| |+-----------------+| +| ||:diagtext:`false`|| +| |+-----------------+| +| ||:diagtext:`true` || +| |+-----------------+| ++-------------------------------------------------------------------------------------+-------------------+ + ++-------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`comparison of unsigned`|+------------------------+| |nbsp| :diagtext:`expression` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is always` |nbsp| :placeholder:`B`| +| || || | +| |+------------------------+| | +| || |nbsp| :diagtext:`enum`|| | +| |+------------------------+| | ++-------------------------------------------------------------+--------------------------+-----------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------+--------------------------+----------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`comparison of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`unsigned`|+------------------------+| |nbsp| :diagtext:`expression is always` |nbsp| :placeholder:`B`| +| || || | +| |+------------------------+| | +| || |nbsp| :diagtext:`enum`|| | +| |+------------------------+| | ++--------------------------------------------------------------------------------------------------------+--------------------------+----------------------------------------------------------------+ + + +-Wtautological-constant-out-of-range-compare +-------------------------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------+------------------------------------------------+--------------------------------+----------------------------------------------------------+-------------------------------------+-------------------+ +|:warning:`warning:` |nbsp| :diagtext:`comparison of` |nbsp| |+----------------------------------------------+| |nbsp| :diagtext:`with` |nbsp| |+--------------------------------------------------------+| |nbsp| :diagtext:`is always` |nbsp| |+-----------------+| +| ||+--------------------------------------------+|| ||+------------------------------------------------------+|| ||:diagtext:`false`|| +| |||:diagtext:`constant` |nbsp| :placeholder:`A`||| |||:diagtext:`expression of type` |nbsp| :placeholder:`C`||| |+-----------------+| +| ||+--------------------------------------------+|| ||+------------------------------------------------------+|| ||:diagtext:`true` || +| |+----------------------------------------------+| |+--------------------------------------------------------+| |+-----------------+| +| ||:diagtext:`true` || ||:diagtext:`boolean expression` || | | +| |+----------------------------------------------+| |+--------------------------------------------------------+| | | +| ||:diagtext:`false` || | | | | +| |+----------------------------------------------+| | | | | ++------------------------------------------------------------+------------------------------------------------+--------------------------------+----------------------------------------------------------+-------------------------------------+-------------------+ + + +-Wtautological-overlap-compare +------------------------------ +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------+-------------------+ +|:warning:`warning:` |nbsp| :diagtext:`overlapping comparisons always evaluate to` |nbsp| |+-----------------+| +| ||:diagtext:`false`|| +| |+-----------------+| +| ||:diagtext:`true` || +| |+-----------------+| ++-----------------------------------------------------------------------------------------+-------------------+ + + +-Wtautological-pointer-compare +------------------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------------------+---------------------------+----------------------------------------------------------+-------------------------+----------------------------------------+-------------------+--------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`comparison of nonnull` |nbsp| |+-------------------------+| |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`'` |nbsp| |+-----------------------+|:diagtext:`equal to a null pointer is '`|+-----------------+|:diagtext:`' on first encounter`| +| ||:diagtext:`function call`|| ||:diagtext:`not` |nbsp| || ||:diagtext:`true` || | +| |+-------------------------+| |+-----------------------+| |+-----------------+| | +| ||:diagtext:`parameter` || || || ||:diagtext:`false`|| | +| |+-------------------------+| |+-----------------------+| |+-----------------+| | ++--------------------------------------------------------------------+---------------------------+----------------------------------------------------------+-------------------------+----------------------------------------+-------------------+--------------------------------+ + ++------------------------------------------------------------+------------------------+----------------------------------------------------------+-------------------------+-----------------------------------------------------+-------------------+ +|:warning:`warning:` |nbsp| :diagtext:`comparison of` |nbsp| |+----------------------+| |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`'` |nbsp| |+-----------------------+|:diagtext:`equal to a null pointer is always` |nbsp| |+-----------------+| +| ||:diagtext:`address of`|| ||:diagtext:`not` |nbsp| || ||:diagtext:`true` || +| |+----------------------+| |+-----------------------+| |+-----------------+| +| ||:diagtext:`function` || || || ||:diagtext:`false`|| +| |+----------------------+| |+-----------------------+| |+-----------------+| +| ||:diagtext:`array` || | | | | +| |+----------------------+| | | | | ++------------------------------------------------------------+------------------------+----------------------------------------------------------+-------------------------+-----------------------------------------------------+-------------------+ + + +-Wtautological-undefined-compare +-------------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------+ +|:warning:`warning:` |nbsp| :diagtext:`reference cannot be bound to dereferenced null pointer in well-defined C++ code; comparison may be assumed to always evaluate to` |nbsp| |+-----------------+| +| ||:diagtext:`true` || +| |+-----------------+| +| ||:diagtext:`false`|| +| |+-----------------+| ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------+ + ++------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'this' pointer cannot be null in well-defined C++ code; comparison may be assumed to always evaluate to` |nbsp| |+-----------------+| +| ||:diagtext:`true` || +| |+-----------------+| +| ||:diagtext:`false`|| +| |+-----------------+| ++------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------+ + + +-Wtentative-definition-incomplete-type +-------------------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`tentative definition of variable with internal linkage has incomplete non-array type` |nbsp| :placeholder:`A`| ++---------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wthread-safety +--------------- +Controls `-Wthread-safety-attributes`_, `-Wthread-safety-analysis`_, `-Wthread-safety-precise`_, `-Wthread-safety-reference`_. + + +-Wthread-safety-analysis +------------------------ +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' must be acquired before '`:placeholder:`C`:diagtext:`'`| ++----------------------------------------------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`Cycle in acquired\_before/after dependencies, starting with '`:placeholder:`A`:diagtext:`'`| ++---------------------------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`cannot resolve lock expression`| ++---------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`acquiring` |nbsp| :placeholder:`A` |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' that is already held`| ++-----------------------------------------------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`expecting` |nbsp| :placeholder:`A` |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' to be held at start of each loop`| ++-----------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`expecting` |nbsp| :placeholder:`A` |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' to be held at the end of function`| ++------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`cannot call function '`:placeholder:`B`:diagtext:`' while` |nbsp| :placeholder:`A` |nbsp| :diagtext:`'`:placeholder:`C`:diagtext:`' is held`| ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`calling function '`:placeholder:`B`:diagtext:`' requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+| +| ||+------------------------------------------+ || +| |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| || +| ||+------------------------------------------+ || +| |+--------------------------------------------------------+| +| ||+------------------------------------------------------+|| +| |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`||| +| ||+------------------------------------------------------+|| +| |+--------------------------------------------------------+| ++---------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' is acquired exclusively and shared in the same scope`| ++--------------------------------------------------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' is not held on every path through here`| ++------------------------------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' is still held at the end of function`| ++----------------------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`releasing` |nbsp| :placeholder:`A` |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' that was not held`| ++--------------------------------------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------------------------------------+-----------------------+--------------------------------------------+-----------------------+--------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`releasing` |nbsp| :placeholder:`A` |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' using` |nbsp| |+---------------------+| |nbsp| :diagtext:`access, expected` |nbsp| |+---------------------+| |nbsp| :diagtext:`access`| +| ||:diagtext:`shared` || ||:diagtext:`shared` || | +| |+---------------------+| |+---------------------+| | +| ||:diagtext:`exclusive`|| ||:diagtext:`exclusive`|| | +| |+---------------------+| |+---------------------+| | ++----------------------------------------------------------------------------------------------------------------------------------------+-----------------------+--------------------------------------------+-----------------------+--------------------------+ + ++---------------------------+---------------------+---------------------------------------------------------------------------------------------------+-----------------------------------+ +|:warning:`warning:` |nbsp| |+-------------------+| |nbsp| :diagtext:`the value pointed to by '`:placeholder:`A`:diagtext:`' requires holding` |nbsp| |+---------------------------------+| +| ||:diagtext:`reading`|| ||:diagtext:`any mutex` || +| |+-------------------+| |+---------------------------------+| +| ||:diagtext:`writing`|| ||:diagtext:`any mutex exclusively`|| +| |+-------------------+| |+---------------------------------+| ++---------------------------+---------------------+---------------------------------------------------------------------------------------------------+-----------------------------------+ + ++---------------------------+---------------------+---------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ +|:warning:`warning:` |nbsp| |+-------------------+| |nbsp| :diagtext:`the value pointed to by '`:placeholder:`B`:diagtext:`' requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+| +| ||:diagtext:`reading`|| ||+------------------------------------------+ || +| |+-------------------+| |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| || +| ||:diagtext:`writing`|| ||+------------------------------------------+ || +| |+-------------------+| |+--------------------------------------------------------+| +| | | ||+------------------------------------------------------+|| +| | | |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`||| +| | | ||+------------------------------------------------------+|| +| | | |+--------------------------------------------------------+| ++---------------------------+---------------------+---------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ + ++---------------------------+---------------------+------------------------------------------------------------------------------------+-----------------------------------+ +|:warning:`warning:` |nbsp| |+-------------------+| |nbsp| :diagtext:`variable '`:placeholder:`A`:diagtext:`' requires holding` |nbsp| |+---------------------------------+| +| ||:diagtext:`reading`|| ||:diagtext:`any mutex` || +| |+-------------------+| |+---------------------------------+| +| ||:diagtext:`writing`|| ||:diagtext:`any mutex exclusively`|| +| |+-------------------+| |+---------------------------------+| ++---------------------------+---------------------+------------------------------------------------------------------------------------+-----------------------------------+ + ++---------------------------+---------------------+------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ +|:warning:`warning:` |nbsp| |+-------------------+| |nbsp| :diagtext:`variable '`:placeholder:`B`:diagtext:`' requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+| +| ||:diagtext:`reading`|| ||+------------------------------------------+ || +| |+-------------------+| |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| || +| ||:diagtext:`writing`|| ||+------------------------------------------+ || +| |+-------------------+| |+--------------------------------------------------------+| +| | | ||+------------------------------------------------------+|| +| | | |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`||| +| | | ||+------------------------------------------------------+|| +| | | |+--------------------------------------------------------+| ++---------------------------+---------------------+------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ + + +-Wthread-safety-attributes +-------------------------- +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`invalid capability name '`:placeholder:`A`:diagtext:`'; capability name must be 'mutex' or 'role'`| ++----------------------------------------------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute requires arguments whose type is annotated with 'capability' attribute; type here is` |nbsp| :placeholder:`B`| ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute can only be applied in a context annotated with 'capability("mutex")' attribute`| ++--------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`only applies to pointer types; type here is` |nbsp| :placeholder:`B`| ++----------------------------------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`ignoring` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute because its argument is invalid`| ++------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wthread-safety-beta +-------------------- +**Diagnostic text:** + ++------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`Thread safety beta warning.`| ++------------------------------------------------------------------+ + + +-Wthread-safety-negative +------------------------ +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`acquiring` |nbsp| :placeholder:`A` |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' requires negative capability '`:placeholder:`C`:diagtext:`'`| ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wthread-safety-precise +----------------------- +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`calling function '`:placeholder:`B`:diagtext:`' requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+| +| ||+------------------------------------------+ || +| |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| || +| ||+------------------------------------------+ || +| |+--------------------------------------------------------+| +| ||+------------------------------------------------------+|| +| |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`||| +| ||+------------------------------------------------------+|| +| |+--------------------------------------------------------+| ++---------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ + ++---------------------------+---------------------+---------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ +|:warning:`warning:` |nbsp| |+-------------------+| |nbsp| :diagtext:`the value pointed to by '`:placeholder:`B`:diagtext:`' requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+| +| ||:diagtext:`reading`|| ||+------------------------------------------+ || +| |+-------------------+| |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| || +| ||:diagtext:`writing`|| ||+------------------------------------------+ || +| |+-------------------+| |+--------------------------------------------------------+| +| | | ||+------------------------------------------------------+|| +| | | |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`||| +| | | ||+------------------------------------------------------+|| +| | | |+--------------------------------------------------------+| ++---------------------------+---------------------+---------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ + ++---------------------------+---------------------+------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ +|:warning:`warning:` |nbsp| |+-------------------+| |nbsp| :diagtext:`variable '`:placeholder:`B`:diagtext:`' requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+| +| ||:diagtext:`reading`|| ||+------------------------------------------+ || +| |+-------------------+| |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| || +| ||:diagtext:`writing`|| ||+------------------------------------------+ || +| |+-------------------+| |+--------------------------------------------------------+| +| | | ||+------------------------------------------------------+|| +| | | |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`||| +| | | ||+------------------------------------------------------+|| +| | | |+--------------------------------------------------------+| ++---------------------------+---------------------+------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ + + +-Wthread-safety-reference +------------------------- +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`passing variable '`:placeholder:`B`:diagtext:`' by reference requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+| +| ||+------------------------------------------+ || +| |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| || +| ||+------------------------------------------+ || +| |+--------------------------------------------------------+| +| ||+------------------------------------------------------+|| +| |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`||| +| ||+------------------------------------------------------+|| +| |+--------------------------------------------------------+| ++----------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`passing the value that '`:placeholder:`B`:diagtext:`' points to by reference requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+| +| ||+------------------------------------------+ || +| |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| || +| ||+------------------------------------------+ || +| |+--------------------------------------------------------+| +| ||+------------------------------------------------------+|| +| |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`||| +| ||+------------------------------------------------------+|| +| |+--------------------------------------------------------+| ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ + + +-Wthread-safety-verbose +----------------------- +**Diagnostic text:** + ++---------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`Thread safety verbose warning.`| ++---------------------------------------------------------------------+ + + +-Wtrigraphs +----------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`trigraph converted to '`:placeholder:`A`:diagtext:`' character`| ++-----------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`trigraph ends block comment`| ++------------------------------------------------------------------+ + ++-------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`trigraph ignored`| ++-------------------------------------------------------+ + ++-------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`ignored trigraph would end block comment`| ++-------------------------------------------------------------------------------+ + + +-Wtype-limits +------------- +This diagnostic flag exists for GCC compatibility, and has no effect in Clang. + +-Wtype-safety +------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`specified` |nbsp| :placeholder:`A` |nbsp| :diagtext:`type tag requires a null pointer`| ++----------------------------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`argument type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`doesn't match specified` |nbsp| :placeholder:`B` |nbsp| :diagtext:`type tag` |nbsp| |+---------------------------------------------------+| +| ||+-------------------------------------------------+|| +| |||:diagtext:`that requires` |nbsp| :placeholder:`D`||| +| ||+-------------------------------------------------+|| +| |+---------------------------------------------------+| +| || || +| |+---------------------------------------------------+| ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`this type tag was not designed to be used with this function`| ++---------------------------------------------------------------------------------------------------+ + + +-Wtypedef-redefinition +---------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`redefinition of typedef` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a C11 feature`| ++--------------------------------------------------------------------------------------------------------------------------+ + + +-Wtypename-missing +------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`missing 'typename' prior to dependent type name '`:placeholder:`A`:placeholder:`B`:diagtext:`'`| ++-------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wunavailable-declarations +-------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`may be unavailable because the receiver type is unknown`| ++----------------------------------------------------------------------------------------------------------------------+ + + +-Wundeclared-selector +--------------------- +**Diagnostic text:** + ++----------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`undeclared selector` |nbsp| :placeholder:`A`| ++----------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`undeclared selector` |nbsp| :placeholder:`A`:diagtext:`; did you mean` |nbsp| :placeholder:`B`:diagtext:`?`| ++-------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wundef +------- +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not defined, evaluates to 0`| ++---------------------------------------------------------------------------------------------+ + + +-Wundefined-bool-conversion +--------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`reference cannot be bound to dereferenced null pointer in well-defined C++ code; pointer may be assumed to always convert to true`| ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'this' pointer cannot be null in well-defined C++ code; pointer may be assumed to always convert to true`| ++-----------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wundefined-func-template +------------------------- +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`instantiation of function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`required here, but no definition is available`| ++---------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wundefined-inline +------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`inline function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not defined`| ++----------------------------------------------------------------------------------------------------------------+ + + +-Wundefined-internal +-------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------+----------------------+-----------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| |+--------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`has internal linkage but is not defined`| +| ||:diagtext:`function`|| | +| |+--------------------+| | +| ||:diagtext:`variable`|| | +| |+--------------------+| | ++---------------------------+----------------------+-----------------------------------------------------------------------------------+ + + +-Wundefined-reinterpret-cast +---------------------------- +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`dereference of type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`that was reinterpret\_cast from type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has undefined behavior`| ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`reinterpret\_cast from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`has undefined behavior`| ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wundefined-var-template +------------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`instantiation of variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`required here, but no definition is available`| ++---------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wunevaluated-expression +------------------------ +This diagnostic is enabled by default. + +Also controls `-Wpotentially-evaluated-expression`_. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`expression with side effects has no effect in an unevaluated context`| ++-----------------------------------------------------------------------------------------------------------+ + + +-Wunguarded-availability +------------------------ +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is only available conditionally`| ++----------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`may be partial because the receiver type is unknown`| ++------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is partial:` |nbsp| :placeholder:`B`| ++--------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is only available on` |nbsp| :placeholder:`B` |nbsp| :placeholder:`C` |nbsp| :diagtext:`or newer`| ++---------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wunicode +--------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`incomplete universal character name; treating as '\\' followed by identifier`| ++-------------------------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`\\`:placeholder:`A` |nbsp| :diagtext:`used with no following hex digits; treating as '\\' followed by identifier`| ++-------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`universal character name refers to a surrogate character`| ++-----------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`universal character names are only valid in C99 or C++; treating as '\\' followed by identifier`| ++--------------------------------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`universal character names are only valid in C99 or C++`| ++---------------------------------------------------------------------------------------------+ + + +-Wunicode-whitespace +-------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`treating Unicode character as whitespace`| ++-------------------------------------------------------------------------------+ + + +-Wuninitialized +--------------- +Some of the diagnostics controlled by this flag are enabled by default. + +Also controls `-Wsometimes-uninitialized`_, `-Wstatic-self-init`_. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`base class` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is uninitialized when used here to access` |nbsp| :placeholder:`B`| ++--------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`field` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is uninitialized when used here`| ++-----------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`reference` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not yet bound to a value when used here`| ++--------------------------------------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`block pointer variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is uninitialized when captured by block`| ++------------------------------------------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is uninitialized when used within its own initialization`| ++---------------------------------------------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`reference` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not yet bound to a value when used within its own initialization`| ++---------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------------------------------------------------------+-------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is uninitialized when` |nbsp| |+-----------------------------+| +| ||:diagtext:`used here` || +| |+-----------------------------+| +| ||:diagtext:`captured by block`|| +| |+-----------------------------+| ++------------------------------------------------------------------------------------------------------------------------+-------------------------------+ + + +-Wunknown-argument +------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`unknown argument ignored in clang-cl: '`:placeholder:`A`:diagtext:`'`| ++-----------------------------------------------------------------------------------------------------------+ + + +-Wunknown-attributes +-------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`unknown attribute` |nbsp| :placeholder:`A` |nbsp| :diagtext:`ignored`| ++-----------------------------------------------------------------------------------------------------------+ + + +-Wunknown-escape-sequence +------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`unknown escape sequence '\\`:placeholder:`A`:diagtext:`'`| ++-----------------------------------------------------------------------------------------------+ + + +-Wunknown-pragmas +----------------- +Some of the diagnostics controlled by this flag are enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`expected 'ON' or 'OFF' or 'DEFAULT' in pragma`| ++------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`expected end of directive in pragma`| ++--------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`unknown pragma in STDC namespace`| ++-----------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`pragma diagnostic pop could not pop, no matching push`| ++--------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`pragma diagnostic expected 'error', 'warning', 'ignored', 'fatal', 'push', or 'pop'`| ++--------------------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`pragma diagnostic expected option name (e.g. "-Wundef")`| ++----------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`unexpected token in pragma diagnostic`| ++----------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`unknown warning group '`:placeholder:`A`:diagtext:`', ignored`| ++----------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`unknown pragma ignored`| ++-------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`pragma include\_alias expected '`:placeholder:`A`:diagtext:`'`| ++----------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`pragma include\_alias expected include filename`| ++--------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`angle-bracketed include <`:placeholder:`A`:diagtext:`> cannot be aliased to double-quoted include "`:placeholder:`B`:diagtext:`"`| ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`double-quoted include "`:placeholder:`A`:diagtext:`" cannot be aliased to angle-bracketed include <`:placeholder:`B`:diagtext:`>`| ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`#pragma warning expected '`:placeholder:`A`:diagtext:`'`| ++----------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`#pragma warning expected a warning number`| ++--------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`#pragma warning(push, level) requires a level between 0 and 4`| ++----------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`#pragma warning expected 'push', 'pop', 'default', 'disable', 'error', 'once', 'suppress', 1, 2, 3, or 4`| ++-----------------------------------------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`pragma STDC FENV\_ACCESS ON is not supported, ignoring pragma`| ++----------------------------------------------------------------------------------------------------+ + + +-Wunknown-sanitizers +-------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`unknown sanitizer '`:placeholder:`A`:diagtext:`' ignored`| ++-----------------------------------------------------------------------------------------------+ + + +-Wunknown-warning-option +------------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------+---------------------+---------------------------------------------------------+--------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`unknown` |nbsp| |+-------------------+| |nbsp| :diagtext:`option '`:placeholder:`B`:diagtext:`'`|+------------------------------------------------------------+| +| ||:diagtext:`warning`|| || || +| |+-------------------+| |+------------------------------------------------------------+| +| ||:diagtext:`remark` || ||+----------------------------------------------------------+|| +| |+-------------------+| |||:diagtext:`; did you mean '`:placeholder:`D`:diagtext:`'?`||| +| | | ||+----------------------------------------------------------+|| +| | | |+------------------------------------------------------------+| ++------------------------------------------------------+---------------------+---------------------------------------------------------+--------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`unknown` |nbsp| :placeholder:`A` |nbsp| :diagtext:`warning specifier: '`:placeholder:`B`:diagtext:`'`| ++-------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wunnamed-type-template-args +---------------------------- +Some of the diagnostics controlled by this flag are enabled by default. + +Also controls `-Wc++98-compat-unnamed-type-template-args`_. + +**Diagnostic text:** + ++--------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`template argument uses unnamed type`| ++--------------------------------------------------------------------------+ + + +-Wunneeded-internal-declaration +------------------------------- +**Diagnostic text:** + ++---------------------------+----------------------+---------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| |+--------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`is not needed and will not be emitted`| +| ||:diagtext:`function`|| | +| |+--------------------+| | +| ||:diagtext:`variable`|| | +| |+--------------------+| | ++---------------------------+----------------------+---------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'static' function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`declared in header file should be declared 'static inline'`| ++--------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wunneeded-member-function +-------------------------- +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`member function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not needed and will not be emitted`| ++---------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wunreachable-code +------------------ +Also controls `-Wunreachable-code-loop-increment`_. + +**Diagnostic text:** + ++------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`code will never be executed`| ++------------------------------------------------------------------+ + + +-Wunreachable-code-aggressive +----------------------------- +Controls `-Wunreachable-code`_, `-Wunreachable-code-break`_, `-Wunreachable-code-return`_. + + +-Wunreachable-code-break +------------------------ +**Diagnostic text:** + ++---------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'break' will never be executed`| ++---------------------------------------------------------------------+ + + +-Wunreachable-code-loop-increment +--------------------------------- +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`loop will run at most once (loop increment never executed)`| ++-------------------------------------------------------------------------------------------------+ + + +-Wunreachable-code-return +------------------------- +**Diagnostic text:** + ++----------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'return' will never be executed`| ++----------------------------------------------------------------------+ + + +-Wunsequenced +------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`multiple unsequenced modifications to` |nbsp| :placeholder:`A`| ++----------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`unsequenced modification and access to` |nbsp| :placeholder:`A`| ++-----------------------------------------------------------------------------------------------------+ + + +-Wunsupported-cb +---------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`ignoring '-mcompact-branches=' option because the '`:placeholder:`A`:diagtext:`' architecture does not support it`| ++--------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wunsupported-dll-base-class-template +------------------------------------- +**Diagnostic text:** + ++---------------------------------------------------------------------------+------------------------------------+------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`propagating dll attribute to` |nbsp| |+----------------------------------+| |nbsp| :diagtext:`base class template without dll attribute is not supported`| +| ||:diagtext:`already instantiated` || | +| |+----------------------------------+| | +| ||:diagtext:`explicitly specialized`|| | +| |+----------------------------------+| | ++---------------------------------------------------------------------------+------------------------------------+------------------------------------------------------------------------------+ + + +-Wunsupported-friend +-------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`dependent nested name specifier '`:placeholder:`A`:diagtext:`' for friend template declaration is not supported; ignoring this friend declaration`| ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`dependent nested name specifier '`:placeholder:`A`:diagtext:`' for friend class declaration is not supported; turning off access control for` |nbsp| :placeholder:`B`| ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wunsupported-nan +----------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`ignoring '-mnan=2008' option because the '`:placeholder:`A`:diagtext:`' architecture does not support it`| ++-----------------------------------------------------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`ignoring '-mnan=legacy' option because the '`:placeholder:`A`:diagtext:`' architecture does not support it`| ++-------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wunsupported-visibility +------------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`target does not support 'protected' visibility; using 'default'`| ++------------------------------------------------------------------------------------------------------+ + + +-Wunused +-------- +Some of the diagnostics controlled by this flag are enabled by default. + +Controls `-Wunused-argument`_, `-Wunused-function`_, `-Wunused-label`_, `-Wunused-private-field`_, `-Wunused-local-typedef`_, `-Wunused-value`_, `-Wunused-variable`_, `-Wunused-property-ivar`_. + + +-Wunused-argument +----------------- +This diagnostic flag exists for GCC compatibility, and has no effect in Clang. + +-Wunused-command-line-argument +------------------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`joined argument expects additional value: '`:placeholder:`A`:diagtext:`'`| ++---------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------+----------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A`:diagtext:`: '`:placeholder:`B`:diagtext:`' input unused`|+--------------------------------------------------------------------+| +| ||+------------------------------------------------------------------+|| +| ||| |nbsp| :diagtext:`when '`:placeholder:`D`:diagtext:`' is present`||| +| ||+------------------------------------------------------------------+|| +| |+--------------------------------------------------------------------+| +| || || +| |+--------------------------------------------------------------------+| ++----------------------------------------------------------------------------------------------------+----------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A`:diagtext:`: '`:placeholder:`B`:diagtext:`' input unused in cpp mode`| ++----------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------+-----------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A`:diagtext:`: previously preprocessed input`|+---------------------------------------------------------------------------+| +| ||+-------------------------------------------------------------------------+|| +| ||| |nbsp| :diagtext:`unused when '`:placeholder:`C`:diagtext:`' is present`||| +| ||+-------------------------------------------------------------------------+|| +| |+---------------------------------------------------------------------------+| +| || || +| |+---------------------------------------------------------------------------+| ++--------------------------------------------------------------------------------------+-----------------------------------------------------------------------------+ + ++---------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`argument unused during compilation: '`:placeholder:`A`:diagtext:`'`| ++---------------------------------------------------------------------------------------------------------+ + + +-Wunused-comparison +------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------+-----------------------------------------+--------------------------------------------+ +|:warning:`warning:` |nbsp| |+---------------------------------------+| |nbsp| :diagtext:`comparison result unused`| +| ||+----------------+--------------------+|| | +| |||+--------------+|:diagtext:`equality`||| | +| |||| || ||| | +| |||+--------------+| ||| | +| ||||:diagtext:`in`|| ||| | +| |||+--------------+| ||| | +| ||+----------------+--------------------+|| | +| |+---------------------------------------+| | +| ||:diagtext:`relational` || | +| |+---------------------------------------+| | ++---------------------------+-----------------------------------------+--------------------------------------------+ + + +-Wunused-const-variable +----------------------- +**Diagnostic text:** + ++------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`unused variable` |nbsp| :placeholder:`A`| ++------------------------------------------------------------------------------+ + + +-Wunused-exception-parameter +---------------------------- +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`unused exception parameter` |nbsp| :placeholder:`A`| ++-----------------------------------------------------------------------------------------+ + + +-Wunused-function +----------------- +Also controls `-Wunneeded-internal-declaration`_. + +**Diagnostic text:** + ++------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`unused function` |nbsp| :placeholder:`A`| ++------------------------------------------------------------------------------+ + + +-Wunused-getter-return-value +---------------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`property access result unused - getters should not be used for side effects`| ++------------------------------------------------------------------------------------------------------------------+ + + +-Wunused-label +-------------- +**Diagnostic text:** + ++---------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`unused label` |nbsp| :placeholder:`A`| ++---------------------------------------------------------------------------+ + + +-Wunused-local-typedef +---------------------- +**Diagnostic text:** + ++-----------------------------------------------------+------------------------+------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`unused` |nbsp| |+----------------------+| |nbsp| :placeholder:`B`| +| ||:diagtext:`typedef` || | +| |+----------------------+| | +| ||:diagtext:`type alias`|| | +| |+----------------------+| | ++-----------------------------------------------------+------------------------+------------------------+ + + +-Wunused-local-typedefs +----------------------- +Synonym for `-Wunused-local-typedef`_. + + +-Wunused-macros +--------------- +**Diagnostic text:** + ++--------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`macro is not used`| ++--------------------------------------------------------+ + + +-Wunused-member-function +------------------------ +Also controls `-Wunneeded-member-function`_. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`unused member function` |nbsp| :placeholder:`A`| ++-------------------------------------------------------------------------------------+ + + +-Wunused-parameter +------------------ +**Diagnostic text:** + ++-------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`unused parameter` |nbsp| :placeholder:`A`| ++-------------------------------------------------------------------------------+ + + +-Wunused-private-field +---------------------- +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`private field` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not used`| ++-----------------------------------------------------------------------------------------------------------+ + + +-Wunused-property-ivar +---------------------- +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`ivar` |nbsp| :placeholder:`A` |nbsp| :diagtext:`which backs the property is not referenced in this property's accessor`| ++-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wunused-result +--------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`ignoring return value of function declared with` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute`| ++-------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wunused-value +-------------- +This diagnostic is enabled by default. + +Also controls `-Wunused-comparison`_, `-Wunused-result`_, `-Wunevaluated-expression`_. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`ignoring return value of function declared with` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute`| ++-------------------------------------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`container access result unused - container access should not be used for side effects`| ++----------------------------------------------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`expression result unused`| ++---------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`expression result unused; should this cast be to 'void'?`| ++-----------------------------------------------------------------------------------------------+ + + +-Wunused-variable +----------------- +Also controls `-Wunused-const-variable`_. + +**Diagnostic text:** + ++------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`unused variable` |nbsp| :placeholder:`A`| ++------------------------------------------------------------------------------+ + + +-Wunused-volatile-lvalue +------------------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`expression result unused; assign into a variable to force a volatile load`| ++----------------------------------------------------------------------------------------------------------------+ + + +-Wused-but-marked-unused +------------------------ +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`was marked unused but was used`| ++---------------------------------------------------------------------------------------------+ + + +-Wuser-defined-literals +----------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------+----------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`user-defined literal suffixes not starting with '\_' are reserved`|+--------------------------------------------------+| +| ||:diagtext:`; no literal will invoke this operator`|| +| |+--------------------------------------------------+| +| || || +| |+--------------------------------------------------+| ++--------------------------------------------------------------------------------------------------------+----------------------------------------------------+ + + +-Wvarargs +--------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++-----------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`second argument to 'va\_start' is not the last named parameter`| ++-----------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`second argument to 'va\_arg' is of promotable type` |nbsp| :placeholder:`A`:diagtext:`; this va\_arg has undefined behavior because arguments will be promoted to` |nbsp| :placeholder:`B`| ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++------------------------------------------------------+-----------------------------------------------------------------+---------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`passing` |nbsp| |+---------------------------------------------------------------+| |nbsp| :diagtext:`to 'va\_start' has undefined behavior`| +| ||:diagtext:`an object that undergoes default argument promotion`|| | +| |+---------------------------------------------------------------+| | +| ||:diagtext:`an object of reference type` || | +| |+---------------------------------------------------------------+| | +| ||:diagtext:`a parameter declared with the 'register' keyword` || | +| |+---------------------------------------------------------------+| | ++------------------------------------------------------+-----------------------------------------------------------------+---------------------------------------------------------+ + + +-Wvariadic-macros +----------------- +**Diagnostic text:** + ++--------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`named variadic macros are a GNU extension`| ++--------------------------------------------------------------------------------+ + ++------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`variadic macros are a C99 feature`| ++------------------------------------------------------------------------+ + + +-Wvector-conversion +------------------- +**Diagnostic text:** + ++------------------------------------------------------------------------+----------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`incompatible vector types` |nbsp| |+--------------------------------------------------------------+| +| ||:diagtext:`assigning to different types` || +| |+--------------------------------------------------------------+| +| ||:diagtext:`passing to parameter of different type` || +| |+--------------------------------------------------------------+| +| ||:diagtext:`returning from function with different return type`|| +| |+--------------------------------------------------------------+| +| ||:diagtext:`converting between types` || +| |+--------------------------------------------------------------+| +| ||:diagtext:`initializing with expression of different type` || +| |+--------------------------------------------------------------+| +| ||:diagtext:`sending to parameter of different type` || +| |+--------------------------------------------------------------+| +| ||:diagtext:`casting between types` || +| |+--------------------------------------------------------------+| ++------------------------------------------------------------------------+----------------------------------------------------------------+ + + +-Wvector-conversions +-------------------- +Synonym for `-Wvector-conversion`_. + + +-Wvexing-parse +-------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++----------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`empty parentheses interpreted as a function declaration`| ++----------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`parentheses were disambiguated as a function declaration`| ++-----------------------------------------------------------------------------------------------+ + + +-Wvisibility +------------ +This diagnostic is enabled by default. + +**Diagnostic text:** + ++---------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`declaration of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`will not be visible outside of this function`| ++---------------------------------------------------------------------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`redefinition of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`will not be visible outside of this function`| ++----------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wvla +----- +**Diagnostic text:** + ++-----------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`variable length array used`| ++-----------------------------------------------------------------+ + + +-Wvla-extension +--------------- +**Diagnostic text:** + ++-------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`variable length arrays are a C99 feature`| ++-------------------------------------------------------------------------------+ + + +-Wvoid-ptr-dereference +---------------------- +This diagnostic is enabled by default. + +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`ISO C++ does not allow indirection on operand of type` |nbsp| :placeholder:`A`| ++--------------------------------------------------------------------------------------------------------------------+ + + +-Wvolatile-register-var +----------------------- +This diagnostic flag exists for GCC compatibility, and has no effect in Clang. + +-Wweak-template-vtables +----------------------- +**Diagnostic text:** + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`explicit template instantiation` |nbsp| :placeholder:`A` |nbsp| :diagtext:`will emit a vtable in every translation unit`| ++--------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wweak-vtables +-------------- +**Diagnostic text:** + ++------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has no out-of-line virtual method definitions; its vtable will be emitted in every translation unit`| ++------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +-Wwritable-strings +------------------ +This diagnostic is enabled by default. + +Also controls `-Wdeprecated-writable-strings`_. + +**Diagnostic text:** + ++-------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`ISO C++11 does not allow conversion from string literal to` |nbsp| :placeholder:`A`| ++-------------------------------------------------------------------------------------------------------------------------+ + + +-Wwrite-strings +--------------- +Synonym for `-Wwritable-strings`_. + + +-Wzero-length-array +------------------- +**Diagnostic text:** + ++------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`zero size arrays are an extension`| ++------------------------------------------------------------------------+ + + diff --git a/clang/docs/UsersManual.rst b/clang/docs/UsersManual.rst index d7e83e0..e9cc2d3 100644 --- a/clang/docs/UsersManual.rst +++ b/clang/docs/UsersManual.rst @@ -107,6 +107,8 @@ Options to Control Error and Warning Messages .. option:: -Wfoo Enable warning "foo". + See the :doc:`diagnostics reference ` for a complete + list of the warning flags that can be specified in this way. .. option:: -Wno-foo diff --git a/clang/docs/index.rst b/clang/docs/index.rst index 2960547..be0e94a 100644 --- a/clang/docs/index.rst +++ b/clang/docs/index.rst @@ -19,6 +19,7 @@ Using Clang as a Compiler UsersManual LanguageExtensions AttributeReference + DiagnosticsReference CrossCompilation ThreadSafetyAnalysis AddressSanitizer diff --git a/clang/include/clang/Basic/Diagnostic.td b/clang/include/clang/Basic/Diagnostic.td index 48cbf09..39da006 100644 --- a/clang/include/clang/Basic/Diagnostic.td +++ b/clang/include/clang/Basic/Diagnostic.td @@ -48,10 +48,13 @@ class DiagGroup subgroups = []> { string GroupName = Name; list SubGroups = subgroups; string CategoryName = ""; + code Documentation = [{}]; } class InGroup { DiagGroup Group = G; } //class IsGroup { DiagGroup Group = DiagGroup; } +// This defines documentation for diagnostic groups. +include "DiagnosticDocs.td" // This defines all of the named diagnostic categories. include "DiagnosticCategories.td" diff --git a/clang/include/clang/Basic/DiagnosticDocs.td b/clang/include/clang/Basic/DiagnosticDocs.td new file mode 100644 index 0000000..aa83bbc --- /dev/null +++ b/clang/include/clang/Basic/DiagnosticDocs.td @@ -0,0 +1,82 @@ +//==--- DiagnosticDocs.td - Diagnostic documentation ---------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===---------------------------------------------------------------------===// + +def GlobalDocumentation { + code Intro =[{.. + ------------------------------------------------------------------- + NOTE: This file is automatically generated by running clang-tblgen + -gen-diag-docs. Do not edit this file by hand!! + ------------------------------------------------------------------- + +.. Add custom CSS to output. FIXME: This should be put into rather + than the start of . +.. raw:: html + + + +.. FIXME: Format this as .diagtext. rST appears to not support this. :( +.. |nbsp| unicode:: 0xA0 + :trim: + +.. Roles generated by clang-tblgen. +.. role:: error +.. role:: warning +.. role:: remark +.. role:: diagtext +.. role:: placeholder(emphasis) + +========================= +Diagnostic flags in Clang +========================= +.. contents:: + :local: + +Introduction +============ + +This page lists the diagnostic flags currently supported by Clang. + +Diagnostic flags +================ +}]; +} + diff --git a/clang/include/clang/Basic/DiagnosticParseKinds.td b/clang/include/clang/Basic/DiagnosticParseKinds.td index e13f221..ebaaf30 100644 --- a/clang/include/clang/Basic/DiagnosticParseKinds.td +++ b/clang/include/clang/Basic/DiagnosticParseKinds.td @@ -427,7 +427,7 @@ def err_synthesized_property_name : Error< "expected a property name in @synthesize">; def warn_semicolon_before_method_body : Warning< "semicolon before method body is ignored">, - InGroup>, DefaultIgnore; + InGroup, DefaultIgnore; def note_extra_comma_message_arg : Note< "comma separating Objective-C messaging arguments">; diff --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td b/clang/include/clang/Basic/DiagnosticSemaKinds.td index 414a6b4..0537c48 100644 --- a/clang/include/clang/Basic/DiagnosticSemaKinds.td +++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td @@ -5464,7 +5464,7 @@ def err_typecheck_invalid_lvalue_addrof : Error< "cannot take the address of an rvalue of type %0">; def ext_typecheck_addrof_temporary : ExtWarn< "taking the address of a temporary object of type %0">, - InGroup>, DefaultError; + InGroup, DefaultError; def err_typecheck_addrof_temporary : Error< "taking the address of a temporary object of type %0">; def err_typecheck_addrof_dtor : Error< @@ -6821,7 +6821,7 @@ def warn_side_effects_typeid : Warning< "operand to 'typeid'">, InGroup; def warn_unused_result : Warning< "ignoring return value of function declared with %0 attribute">, - InGroup>; + InGroup; def warn_unused_volatile : Warning< "expression result unused; assign into a variable to force a volatile load">, InGroup>; diff --git a/clang/utils/TableGen/ClangDiagnosticsEmitter.cpp b/clang/utils/TableGen/ClangDiagnosticsEmitter.cpp index dfb715e..2af3e91 100644 --- a/clang/utils/TableGen/ClangDiagnosticsEmitter.cpp +++ b/clang/utils/TableGen/ClangDiagnosticsEmitter.cpp @@ -18,6 +18,7 @@ #include "llvm/ADT/SmallString.h" #include "llvm/ADT/SmallVector.h" #include "llvm/ADT/StringMap.h" +#include "llvm/ADT/STLExtras.h" #include "llvm/ADT/Twine.h" #include "llvm/TableGen/Error.h" #include "llvm/TableGen/Record.h" @@ -27,6 +28,7 @@ #include #include #include +#include using namespace llvm; //===----------------------------------------------------------------------===// @@ -141,6 +143,11 @@ static bool beforeThanCompare(const Record *LHS, const Record *RHS) { LHS->getLoc().front().getPointer() < RHS->getLoc().front().getPointer(); } +static bool diagGroupBeforeByName(const Record *LHS, const Record *RHS) { + return LHS->getValueAsString("GroupName") < + RHS->getValueAsString("GroupName"); +} + static bool beforeThanCompareGroups(const GroupInfo *LHS, const GroupInfo *RHS){ assert(!LHS->DiagsInGroup.empty() && !RHS->DiagsInGroup.empty()); return beforeThanCompare(LHS->DiagsInGroup.front(), @@ -892,4 +899,421 @@ void EmitClangDiagsIndexName(RecordKeeper &Records, raw_ostream &OS) { OS << "DIAG_NAME_INDEX(" << R.Name << ")\n"; } } + +//===----------------------------------------------------------------------===// +// Diagnostic documentation generation +//===----------------------------------------------------------------------===// + +namespace docs { +namespace { + +/// Diagnostic text, parsed into pieces. +struct DiagText { + struct Piece { + virtual void print(std::vector &RST) = 0; + }; + struct TextPiece : Piece { + StringRef Role; + std::string Text; + void print(std::vector &RST) override; + }; + struct PlaceholderPiece : Piece { + int Index; + void print(std::vector &RST) override; + }; + struct SelectPiece : Piece { + std::vector Options; + void print(std::vector &RST) override; + }; + + std::vector> Pieces; + + DiagText() {} + DiagText(StringRef Text); + DiagText(StringRef Kind, StringRef Text); + + template void add(P Piece) { + Pieces.push_back(llvm::make_unique

(std::move(Piece))); + } + void print(std::vector &RST); +}; + +DiagText parseDiagText(StringRef &Text, bool Nested = false) { + DiagText Parsed; + + while (!Text.empty()) { + size_t End = (size_t)-2; + do + End = Nested ? Text.find_first_of("%|}", End + 2) + : Text.find_first_of('%', End + 2); + while (End < Text.size() - 1 && Text[End] == '%' && Text[End + 1] == '%'); + + if (End) { + DiagText::TextPiece Piece; + Piece.Role = "diagtext"; + Piece.Text = Text.slice(0, End); + Parsed.add(std::move(Piece)); + Text = Text.slice(End, StringRef::npos); + if (Text.empty()) break; + } + + if (Text[0] == '|' || Text[0] == '}') + break; + + // Drop the '%'. + Text = Text.drop_front(); + + // Extract the (optional) modifier. + size_t ModLength = Text.find_first_of("0123456789{"); + StringRef Modifier = Text.slice(0, ModLength); + Text = Text.slice(ModLength, StringRef::npos); + + // FIXME: Handle %ordinal here. + if (Modifier == "select" || Modifier == "plural") { + DiagText::SelectPiece Select; + do { + Text = Text.drop_front(); + if (Modifier == "plural") + while (Text[0] != ':') + Text = Text.drop_front(); + Select.Options.push_back(parseDiagText(Text, true)); + assert(!Text.empty() && "malformed %select"); + } while (Text.front() == '|'); + Parsed.add(std::move(Select)); + + // Drop the trailing '}n'. + Text = Text.drop_front(2); + continue; + } + + // For %diff, just take the second alternative (tree diagnostic). It would + // be preferable to take the first one, and replace the $ with the suitable + // placeholders. + if (Modifier == "diff") { + Text = Text.drop_front(); // '{' + parseDiagText(Text, true); + Text = Text.drop_front(); // '|' + + DiagText D = parseDiagText(Text, true); + for (auto &P : D.Pieces) + Parsed.Pieces.push_back(std::move(P)); + + Text = Text.drop_front(4); // '}n,m' + continue; + } + + if (Modifier == "s") { + Text = Text.drop_front(); + DiagText::SelectPiece Select; + Select.Options.push_back(DiagText("")); + Select.Options.push_back(DiagText("s")); + Parsed.add(std::move(Select)); + continue; + } + + assert(!Text.empty() && isdigit(Text[0]) && "malformed placeholder"); + DiagText::PlaceholderPiece Placeholder; + Placeholder.Index = Text[0] - '0'; + Parsed.add(std::move(Placeholder)); + Text = Text.drop_front(); + continue; + } + return Parsed; +} + +DiagText::DiagText(StringRef Text) : DiagText(parseDiagText(Text, false)) {} + +DiagText::DiagText(StringRef Kind, StringRef Text) : DiagText(parseDiagText(Text, false)) { + TextPiece Prefix; + Prefix.Role = Kind; + Prefix.Text = Kind; + Prefix.Text += ": "; + Pieces.insert(Pieces.begin(), llvm::make_unique(std::move(Prefix))); +} + +void escapeRST(StringRef Str, std::string &Out) { + for (auto K : Str) { + if (StringRef("`*|_[]\\").count(K)) + Out.push_back('\\'); + Out.push_back(K); + } +} + +template void padToSameLength(It Begin, It End) { + size_t Width = 0; + for (It I = Begin; I != End; ++I) + Width = std::max(Width, I->size()); + for (It I = Begin; I != End; ++I) + (*I) += std::string(Width - I->size(), ' '); +} + +template void makeTableRows(It Begin, It End) { + if (Begin == End) return; + padToSameLength(Begin, End); + for (It I = Begin; I != End; ++I) + *I = "|" + *I + "|"; +} + +void makeRowSeparator(std::string &Str) { + for (char &K : Str) + K = (K == '|' ? '+' : '-'); +} + +void DiagText::print(std::vector &RST) { + if (Pieces.empty()) { + RST.push_back(""); + return; + } + + if (Pieces.size() == 1) + return Pieces[0]->print(RST); + + std::string EmptyLinePrefix; + size_t Start = RST.size(); + bool HasMultipleLines = true; + for (auto &P : Pieces) { + std::vector Lines; + P->print(Lines); + if (Lines.empty()) + continue; + + // We need a vertical separator if either this or the previous piece is a + // multi-line piece, or this is the last piece. + const char *Separator = (Lines.size() > 1 || HasMultipleLines) ? "|" : ""; + HasMultipleLines = Lines.size() > 1; + + if (Start + Lines.size() > RST.size()) + RST.resize(Start + Lines.size(), EmptyLinePrefix); + + padToSameLength(Lines.begin(), Lines.end()); + for (size_t I = 0; I != Lines.size(); ++I) + RST[Start + I] += Separator + Lines[I]; + std::string Empty(Lines[0].size(), ' '); + for (size_t I = Start + Lines.size(); I != RST.size(); ++I) + RST[I] += Separator + Empty; + EmptyLinePrefix += Separator + Empty; + } + for (size_t I = Start; I != RST.size(); ++I) + RST[I] += "|"; + EmptyLinePrefix += "|"; + + makeRowSeparator(EmptyLinePrefix); + RST.insert(RST.begin() + Start, EmptyLinePrefix); + RST.insert(RST.end(), EmptyLinePrefix); +} + +void DiagText::TextPiece::print(std::vector &RST) { + RST.push_back(""); + auto &S = RST.back(); + + StringRef T = Text; + while (!T.empty() && T.front() == ' ') { + RST.back() += " |nbsp| "; + T = T.drop_front(); + } + + std::string Suffix; + while (!T.empty() && T.back() == ' ') { + Suffix += " |nbsp| "; + T = T.drop_back(); + } + + if (!T.empty()) { + S += ':'; + S += Role; + S += ":`"; + escapeRST(T, S); + S += '`'; + } + + S += Suffix; +} + +void DiagText::PlaceholderPiece::print(std::vector &RST) { + RST.push_back(std::string(":placeholder:`") + char('A' + Index) + "`"); +} + +void DiagText::SelectPiece::print(std::vector &RST) { + std::vector SeparatorIndexes; + SeparatorIndexes.push_back(RST.size()); + RST.emplace_back(); + for (auto &O : Options) { + O.print(RST); + SeparatorIndexes.push_back(RST.size()); + RST.emplace_back(); + } + + makeTableRows(RST.begin() + SeparatorIndexes.front(), + RST.begin() + SeparatorIndexes.back() + 1); + for (size_t I : SeparatorIndexes) + makeRowSeparator(RST[I]); +} + +bool isRemarkGroup(const Record *DiagGroup, + const std::map &DiagsInGroup) { + bool AnyRemarks = false, AnyNonRemarks = false; + + std::function Visit = [&](StringRef GroupName) { + auto &GroupInfo = DiagsInGroup.find(GroupName)->second; + for (const Record *Diag : GroupInfo.DiagsInGroup) + (isRemark(*Diag) ? AnyRemarks : AnyNonRemarks) = true; + for (const auto &Name : GroupInfo.SubGroups) + Visit(Name); + }; + Visit(DiagGroup->getValueAsString("GroupName")); + + if (AnyRemarks && AnyNonRemarks) + PrintFatalError( + DiagGroup->getLoc(), + "Diagnostic group contains both remark and non-remark diagnostics"); + return AnyRemarks; +} + +std::string getDefaultSeverity(const Record *Diag) { + return Diag->getValueAsDef("DefaultSeverity")->getValueAsString("Name"); +} + +std::set +getDefaultSeverities(const Record *DiagGroup, + const std::map &DiagsInGroup) { + std::set States; + + std::function Visit = [&](StringRef GroupName) { + auto &GroupInfo = DiagsInGroup.find(GroupName)->second; + for (const Record *Diag : GroupInfo.DiagsInGroup) + States.insert(getDefaultSeverity(Diag)); + for (const auto &Name : GroupInfo.SubGroups) + Visit(Name); + }; + Visit(DiagGroup->getValueAsString("GroupName")); + return States; +} + +void writeHeader(StringRef Str, raw_ostream &OS, char Kind = '-') { + OS << Str << "\n" << std::string(Str.size(), Kind) << "\n"; +} + +void writeDiagnosticText(StringRef Role, StringRef Text, raw_ostream &OS) { + if (Text == "%0") + OS << "The text of this diagnostic is not controlled by Clang.\n\n"; + else { + std::vector Out; + DiagText(Role, Text).print(Out); + for (auto &Line : Out) + OS << Line << "\n"; + OS << "\n"; + } +} + +} // namespace +} // namespace docs + +void EmitClangDiagDocs(RecordKeeper &Records, raw_ostream &OS) { + using namespace docs; + + // Get the documentation introduction paragraph. + const Record *Documentation = Records.getDef("GlobalDocumentation"); + if (!Documentation) { + PrintFatalError("The Documentation top-level definition is missing, " + "no documentation will be generated."); + return; + } + + OS << Documentation->getValueAsString("Intro") << "\n"; + + std::vector Diags = + Records.getAllDerivedDefinitions("Diagnostic"); + std::vector DiagGroups = + Records.getAllDerivedDefinitions("DiagGroup"); + std::sort(DiagGroups.begin(), DiagGroups.end(), diagGroupBeforeByName); + + DiagGroupParentMap DGParentMap(Records); + + std::map DiagsInGroup; + groupDiagnostics(Diags, DiagGroups, DiagsInGroup); + + // Compute the set of diagnostics that are in -Wpedantic. + { + RecordSet DiagsInPedantic; + RecordSet GroupsInPedantic; + InferPedantic inferPedantic(DGParentMap, Diags, DiagGroups, DiagsInGroup); + inferPedantic.compute(&DiagsInPedantic, &GroupsInPedantic); + auto &PedDiags = DiagsInGroup["pedantic"]; + PedDiags.DiagsInGroup.insert(PedDiags.DiagsInGroup.end(), + DiagsInPedantic.begin(), + DiagsInPedantic.end()); + for (auto *Group : GroupsInPedantic) + PedDiags.SubGroups.push_back(Group->getValueAsString("GroupName")); + } + + // FIXME: Write diagnostic categories and link to diagnostic groups in each. + + // Write out the diagnostic groups. + for (const Record *G : DiagGroups) { + bool IsRemarkGroup = isRemarkGroup(G, DiagsInGroup); + auto &GroupInfo = DiagsInGroup[G->getValueAsString("GroupName")]; + bool IsSynonym = GroupInfo.DiagsInGroup.empty() && + GroupInfo.SubGroups.size() == 1; + + writeHeader((IsRemarkGroup ? "-R" : "-W") + + G->getValueAsString("GroupName"), + OS); + + if (!IsSynonym) { + // FIXME: Ideally, all the diagnostics in a group should have the same + // default state, but that is not currently the case. + auto DefaultSeverities = getDefaultSeverities(G, DiagsInGroup); + if (!DefaultSeverities.empty() && !DefaultSeverities.count("Ignored")) { + bool AnyNonErrors = DefaultSeverities.count("Warning") || + DefaultSeverities.count("Remark"); + if (!AnyNonErrors) + OS << "This diagnostic is an error by default, but the flag ``-Wno-" + << G->getValueAsString("GroupName") << "`` can be used to disable " + << "the error.\n\n"; + else + OS << "This diagnostic is enabled by default.\n\n"; + } else if (DefaultSeverities.size() > 1) { + OS << "Some of the diagnostics controlled by this flag are enabled " + << "by default.\n\n"; + } + } + + if (!GroupInfo.SubGroups.empty()) { + if (IsSynonym) + OS << "Synonym for "; + else if (GroupInfo.DiagsInGroup.empty()) + OS << "Controls "; + else + OS << "Also controls "; + + bool First = true; + for (const auto &Name : GroupInfo.SubGroups) { + if (!First) OS << ", "; + OS << "`" << (IsRemarkGroup ? "-R" : "-W") << Name << "`_"; + First = false; + } + OS << ".\n\n"; + } + + if (!GroupInfo.DiagsInGroup.empty()) { + OS << "**Diagnostic text:**\n\n"; + for (const Record *D : GroupInfo.DiagsInGroup) { + auto Severity = getDefaultSeverity(D); + Severity[0] = tolower(Severity[0]); + if (Severity == "ignored") + Severity = IsRemarkGroup ? "remark" : "warning"; + writeDiagnosticText(Severity, D->getValueAsString("Text"), OS); + } + } + + auto Doc = G->getValueAsString("Documentation"); + if (!Doc.empty()) + OS << Doc; + else if (GroupInfo.SubGroups.empty() && GroupInfo.DiagsInGroup.empty()) + OS << "This diagnostic flag exists for GCC compatibility, and has no " + "effect in Clang.\n"; + OS << "\n"; + } +} + } // end namespace clang diff --git a/clang/utils/TableGen/TableGen.cpp b/clang/utils/TableGen/TableGen.cpp index ef6ad3a..9aa0c49 100644 --- a/clang/utils/TableGen/TableGen.cpp +++ b/clang/utils/TableGen/TableGen.cpp @@ -52,7 +52,8 @@ enum ActionType { GenArmNeon, GenArmNeonSema, GenArmNeonTest, - GenAttrDocs + GenAttrDocs, + GenDiagDocs }; namespace { @@ -133,6 +134,8 @@ cl::opt Action( "Generate ARM NEON tests for clang"), clEnumValN(GenAttrDocs, "gen-attr-docs", "Generate attribute documentation"), + clEnumValN(GenDiagDocs, "gen-diag-docs", + "Generate attribute documentation"), clEnumValEnd)); cl::opt @@ -233,6 +236,9 @@ bool ClangTableGenMain(raw_ostream &OS, RecordKeeper &Records) { case GenAttrDocs: EmitClangAttrDocs(Records, OS); break; + case GenDiagDocs: + EmitClangDiagDocs(Records, OS); + break; } return false; diff --git a/clang/utils/TableGen/TableGenBackends.h b/clang/utils/TableGen/TableGenBackends.h index 4adf368..0305ed1 100644 --- a/clang/utils/TableGen/TableGenBackends.h +++ b/clang/utils/TableGen/TableGenBackends.h @@ -69,6 +69,7 @@ void EmitNeonSema2(RecordKeeper &Records, raw_ostream &OS); void EmitNeonTest2(RecordKeeper &Records, raw_ostream &OS); void EmitClangAttrDocs(RecordKeeper &Records, raw_ostream &OS); +void EmitClangDiagDocs(RecordKeeper &Records, raw_ostream &OS); } // end namespace clang -- 2.7.4