llvm-project/clang/docs/DiagnosticsReference.rst

10561 lines
857 KiB
ReStructuredText

..
-------------------------------------------------------------------
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 <head> rather
than the start of <body>.
.. raw:: html
<style>
table.docutils {
width: 1px;
}
table.docutils td {
border: none;
padding: 0 0 0 0.2em;
vertical-align: middle;
white-space: nowrap;
width: 1px;
font-family: monospace;
}
table.docutils tr + tr {
border-top: 0.2em solid #aaa;
}
.error {
font-family: monospace;
font-weight: bold;
color: #c00;
}
.warning {
font-family: monospace;
font-weight: bold;
color: #80a;
}
.remark {
font-family: monospace;
font-weight: bold;
color: #00c;
}
.diagtext {
font-family: monospace;
font-weight: bold;
}
</style>
.. FIXME: rST doesn't support formatting this, so we format all <td> elements
as monospace font face instead.
.. |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-non-pod-memaccess`_, `-Warc-retain-cycles`_, `-Warc-unsafe-retained-assign`_.
-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:`<should not happen>`|| | | |
| |+-------------------------------+| | | |
| ||: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 `-Wcustom-atomic-properties`_, `-Wimplicit-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 `-Wignored-attributes`_, `-Wunknown-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-compat-deprecated-writable-strings`_, `-Wc++11-compat-reserved-user-defined-literal`_, `-Wc++11-narrowing`_, `-Wc++98-c++11-c++14-compat`_, `-Wc++98-c++11-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-c++14-compat-pedantic`_, `-Wc++98-c++11-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-increment-bool`_, `-Wdeprecated-register`_.
-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-c++11-c++14-compat`_, `-Wc++98-c++11-compat`_, `-Wc++98-compat-local-type-template-args`_, `-Wc++98-compat-unnamed-type-template-args`_.
**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-c++11-c++14-compat-pedantic`_, `-Wc++98-c++11-compat-pedantic`_, `-Wc++98-compat`_, `-Wc++98-compat-bind-to-temporary-copy`_.
**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`_, `-Wint-conversion`_, `-Wliteral-conversion`_, `-Wnon-literal-null-conversion`_, `-Wnull-conversion`_, `-Wobjc-literal-conversion`_, `-Wshorten-64-to-32`_, `-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
-------------
Synonym for `-Wdivision-by-zero`_.
-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-deprecated-sync`_, `-Wdocumentation-html`_.
**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++
--------
Synonym for `-Wnon-virtual-dtor`_.
-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 `-Wignored-qualifiers`_, `-Winitializer-overrides`_, `-Wmissing-field-initializers`_, `-Wmissing-method-return-type`_, `-Wsemicolon-before-method-body`_, `-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-invalid-specifier`_, `-Wformat-security`_, `-Wformat-y2k`_, `-Wformat-zero-length`_, `-Wnonnull`_.
**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`_, `-Wgnu-flexible-array-initializer`_, `-Wgnu-flexible-array-union-member`_, `-Wgnu-folding-constant`_, `-Wgnu-imaginary-constant`_, `-Wgnu-include-next`_, `-Wgnu-label-as-value`_, `-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`_, `-Wgnu-zero-line-directive`_, `-Wgnu-zero-variadic-macro-arguments`_, `-Wredeclared-class-member`_, `-Wvla-extension`_, `-Wzero-length-array`_.
-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:`variables with static or thread storage duration` ||
| |+----------------------------------------------------------------------------------------------------------------+|
| ||: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| :placeholder:`A` |nbsp| :diagtext:`is not a recognized builtin`|+----------------------------------------------------------------------------+|
| || ||
| |+----------------------------------------------------------------------------+|
| ||:diagtext:`; consider including <intrin.h> to access non-builtin intrinsics`||
| |+----------------------------------------------------------------------------+|
+------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------+
|: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-function-pointer-types`_, `-Wincompatible-pointer-types-discards-qualifiers`_.
**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 `-Winconsistent-dllimport`_, `-Wmicrosoft-anon-tag`_, `-Wmicrosoft-cast`_, `-Wmicrosoft-charize`_, `-Wmicrosoft-comment-paste`_, `-Wmicrosoft-const-init`_, `-Wmicrosoft-cpp-macro`_, `-Wmicrosoft-default-arg-redefinition`_, `-Wmicrosoft-end-of-file`_, `-Wmicrosoft-enum-forward-reference`_, `-Wmicrosoft-enum-value`_, `-Wmicrosoft-exception-spec`_, `-Wmicrosoft-explicit-constructor-call`_, `-Wmicrosoft-extra-qualification`_, `-Wmicrosoft-fixed-enum`_, `-Wmicrosoft-flexible-array`_, `-Wmicrosoft-goto`_, `-Wmicrosoft-include`_, `-Wmicrosoft-mutable-reference`_, `-Wmicrosoft-pure-definition`_, `-Wmicrosoft-redeclare-static`_, `-Wmicrosoft-sealed`_, `-Wmicrosoft-template`_, `-Wmicrosoft-union-member-reference`_, `-Wmicrosoft-unqualified-friend`_, `-Wmicrosoft-using-decl`_, `-Wmicrosoft-void-pseudo-dtor`_.
-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 `-Wcast-of-sel-type`_, `-Wchar-subscripts`_, `-Wcomment`_, `-Wdelete-non-virtual-dtor`_, `-Wextern-c-compat`_, `-Wfor-loop-analysis`_, `-Wformat`_, `-Wimplicit`_, `-Winfinite-recursion`_, `-Wmismatched-tags`_, `-Wmissing-braces`_, `-Wmove`_, `-Wmultichar`_, `-Wobjc-designated-initializers`_, `-Wobjc-missing-super-calls`_, `-Woverloaded-virtual`_, `-Wprivate-extern`_, `-Wreorder`_, `-Wreturn-type`_, `-Wself-assign`_, `-Wself-move`_, `-Wsizeof-array-argument`_, `-Wsizeof-array-decay`_, `-Wstring-plus-int`_, `-Wtrigraphs`_, `-Wuninitialized`_, `-Wunknown-pragmas`_, `-Wunused`_, `-Wvolatile-register-var`_.
-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 `-Wconversion`_, `-Wliteral-range`_, `-Wsign-compare`_.
-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 `-Wbitwise-op-parentheses`_, `-Wdangling-else`_, `-Wlogical-not-parentheses`_, `-Wlogical-op-parentheses`_, `-Woverloaded-shift-op-parentheses`_, `-Wparentheses-equality`_, `-Wshift-op-parentheses`_.
**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 `-Wc++11-extra-semi`_, `-Wc++11-long-long`_, `-Wc++14-binary-literal`_, `-Wc11-extensions`_, `-Wcomplex-component-init`_, `-Wdeclaration-after-statement`_, `-Wdollar-in-identifier-extension`_, `-Wembedded-directive`_, `-Wempty-translation-unit`_, `-Wextended-offsetof`_, `-Wflexible-array-extensions`_, `-Wformat-pedantic`_, `-Wfour-char-constants`_, `-Wgnu-anonymous-struct`_, `-Wgnu-auto-type`_, `-Wgnu-binary-literal`_, `-Wgnu-case-range`_, `-Wgnu-complex-integer`_, `-Wgnu-compound-literal-initializer`_, `-Wgnu-conditional-omitted-operand`_, `-Wgnu-empty-initializer`_, `-Wgnu-empty-struct`_, `-Wgnu-flexible-array-initializer`_, `-Wgnu-flexible-array-union-member`_, `-Wgnu-folding-constant`_, `-Wgnu-imaginary-constant`_, `-Wgnu-include-next`_, `-Wgnu-label-as-value`_, `-Wgnu-redeclared-enum`_, `-Wgnu-statement-expression`_, `-Wgnu-union-cast`_, `-Wgnu-zero-line-directive`_, `-Wgnu-zero-variadic-macro-arguments`_, `-Wimport-preprocessor-directive-pedantic`_, `-Wkeyword-macro`_, `-Wlanguage-extension-token`_, `-Wlong-long`_, `-Wmicrosoft-charize`_, `-Wmicrosoft-comment-paste`_, `-Wmicrosoft-cpp-macro`_, `-Wmicrosoft-end-of-file`_, `-Wmicrosoft-enum-forward-reference`_, `-Wmicrosoft-fixed-enum`_, `-Wmicrosoft-flexible-array`_, `-Wmicrosoft-redeclare-static`_, `-Wnested-anon-types`_, `-Wnullability-extension`_, `-Woverlength-strings`_, `-Wretained-language-linkage`_, `-Wvariadic-macros`_, `-Wvla-extension`_, `-Wzero-length-array`_.
**Diagnostic text:**
+------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'enable\_if' is a clang extension`|
+------------------------------------------------------------------------+
+--------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`designated initializers are a C99 feature`|
+--------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ISO C++ does not allow 'main' to be used by a program`|
+--------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+
|: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:`anonymous` |nbsp| |+------------------+| |nbsp| :diagtext:`cannot be '`:placeholder:`B`:diagtext:`'`|
| ||:diagtext:`struct`|| |
| |+------------------+| |
| ||:diagtext:`union` || |
| |+------------------+| |
+--------------------------------------------------------+--------------------+------------------------------------------------------------+
+--------------------------------------------------------------------+-----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+
|: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:`parameter` |nbsp| :placeholder:`A` |nbsp| :diagtext:`was not declared, defaulting to type 'int'`|
+--------------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|: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:`static` |nbsp| |+--------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`is used in an inline function with external linkage`|
| ||:diagtext:`function`|| |
| |+--------------------+| |
| ||:diagtext:`variable`|| |
| |+--------------------+| |
+-----------------------------------------------------+----------------------+-----------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ISO C forbids forward references to 'enum' types`|
+---------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------------------+-------------------+-------------+
|: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:`size of static array must be an integer constant expression`|
+--------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`initializer for aggregate is not a compile-time constant`|
+-----------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`flexible array members 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:`invalid application of '`|+---------------------+|:diagtext:`' to a void type`|
| ||:diagtext:`sizeof` || |
| |+---------------------+| |
| ||:diagtext:`alignof` || |
| |+---------------------+| |
| ||:diagtext:`vec\_step`|| |
| |+---------------------+| |
+---------------------------------------------------------------+-----------------------+----------------------------+
+-------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ISO C90 does not allow subscripting non-lvalue array`|
+-------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`subscript of a pointer to void is a GNU extension`|
+----------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ISO C forbids taking the address of an expression of type 'void'`|
+-------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|: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:`equality comparison between function pointer and void pointer (`:placeholder:`A` |nbsp| :diagtext:`and` |nbsp| :placeholder:`B`:diagtext:`)`|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------+-----------------------+---------------------------+---------------+----------------------------------------------+
|: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:`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:`ISO C does not support '++'/'--' on complex integer type` |nbsp| :placeholder:`A`|
+-----------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ISO C does not support '~' for complex conjugation of` |nbsp| :placeholder:`A`|
+--------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`complex numbers are an extension in a freestanding C99 implementation`|
+------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`cast between pointer-to-function and pointer-to-object is an 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| |+--------------------------------------------------------------+| |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:`kernel function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a member function; this may not be accepted by nvcc`|
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`C99 forbids conditional expressions with only one void side`|
+--------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`C99 forbids casting nonscalar type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to the same type`|
+-------------------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`use of the` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute is a C++14 extension`|
+---------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`use of the` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute is a C++1z extension`|
+---------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------+--------------------+---------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`types declared in an anonymous` |nbsp| |+------------------+| |nbsp| :diagtext:`are a Microsoft extension`|
| ||:diagtext:`struct`|| |
| |+------------------+| |
| ||:diagtext:`union` || |
| |+------------------+| |
+-----------------------------------------------------------------------------+--------------------+---------------------------------------------+
+---------------------------------------------------+----------------------+-----------------------------------------------------------------------------+
|: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:`'`:placeholder:`A`:diagtext:`' cannot be signed or unsigned`|
+--------------------------------------------------------------------------------------------------+
+---------------------------+----------------------------------+------------------------------+-----------------------+----------------------------+
|:warning:`warning:` |nbsp| |+--------------------------------+|:diagtext:`array size` |nbsp| |+---------------------+|:diagtext:`is a C99 feature`|
| ||:diagtext:`qualifier in` |nbsp| || || || |
| |+--------------------------------+| |+---------------------+| |
| ||:diagtext:`static` |nbsp| || || || |
| |+--------------------------------+| |+---------------------+| |
| || || ||:diagtext:`'\[\*\] '`|| |
| |+--------------------------------+| |+---------------------+| |
+---------------------------+----------------------------------+------------------------------+-----------------------+----------------------------+
+--------------------------------------------------------+------------------------------------------------+
|: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:`'\_\_thread' before '`:placeholder:`A`:diagtext:`'`|
+-----------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`type-less parameter names in function declaration`|
+----------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`variable declaration in for loop is a C99-specific feature`|
+-------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`compound literals are a C99-specific feature`|
+-----------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`commas at the end of enumerator lists are a C99-specific feature`|
+-------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`commas at the end of enumerator lists are a C++11 extension`|
+--------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`enumeration types with a fixed underlying type are a C++11 extension`|
+-----------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`use of GNU array range extension`|
+-----------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`exception specification of '...' is a Microsoft extension`|
+------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`extern templates are a C++11 extension`|
+-----------------------------------------------------------------------------+
+------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`multi-line // comment`|
+------------------------------------------------------------+
+-----------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`// comments are not allowed in this language`|
+-----------------------------------------------------------------------------------+
+----------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`no newline at end of file`|
+----------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`use of non-standard escape character '\\`:placeholder:`A`:diagtext:`'`|
+------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`hexadecimal floating constants are a C99 feature`|
+---------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`hexadecimal floating literals are a C++1z feature`|
+----------------------------------------------------------------------------------------+
+---------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`#ident is a language extension`|
+---------------------------------------------------------------------+
+-----------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`#warning is a language extension`|
+-----------------------------------------------------------------------+
+-----------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`comma operator in operand of #if`|
+-----------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`\_\_VA\_ARGS\_\_ can only appear in the expansion of a C99 variadic macro`|
+----------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`empty macro arguments are a C99 feature`|
+------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`C requires #line number to be less than` |nbsp| :placeholder:`A`:diagtext:`, allowed as extension`|
+----------------------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`macro expansion producing 'defined' has undefined behavior`|
+-------------------------------------------------------------------------------------------------+
-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 `-Wignored-pragmas`_, `-Wunknown-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
--------
Some of the diagnostics controlled by this flag are enabled by default.
Also controls `-Wshadow-field-in-constructor-modified`_, `-Wshadow-ivar`_.
**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
------------
Some of the diagnostics controlled by this flag are enabled by default.
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-overlap-compare`_, `-Wtautological-pointer-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-analysis`_, `-Wthread-safety-attributes`_, `-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-local-typedef`_, `-Wunused-private-field`_, `-Wunused-property-ivar`_, `-Wunused-value`_, `-Wunused-variable`_.
-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| :diagtext:`argument '-fdiagnostics-show-hotness' requires profile-guided optimization information`|
+-----------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------+----------------------------------------------------------------------+
|: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 `-Wunevaluated-expression`_, `-Wunused-comparison`_, `-Wunused-result`_.
**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`|
+------------------------------------------------------------------------+