view clang/docs/DiagnosticsReference.rst @ 173:0572611fdcc8 llvm10 llvm12

reorgnization done
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 11:55:54 +0900
parents 1d019706d866
children
line wrap: on
line source

..
  -------------------------------------------------------------------
  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-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 `-Wmisleading-indentation`_, `-Wmost`_, `-Wparentheses`_, `-Wswitch`_, `-Wswitch-bool`_.


-Walloca
--------
**Diagnostic text:**

+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`use of function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is discouraged; there is no way to check for failure but failure may still occur, resulting in a possibly exploitable security vulnerability`|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-Walloca-with-align-alignof
---------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+--------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`second argument to \_\_builtin\_alloca\_with\_align is supposed to be in bits`|
+--------------------------------------------------------------------------------------------------------------------+


-Wambiguous-delete
------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`multiple suitable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`functions for` |nbsp| :placeholder:`B`:diagtext:`; no 'operator delete' function will be invoked if initialization throws an exception`|
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-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`|
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-Wambiguous-reversed-operator
-----------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ISO C++20 considers use of overloaded operator '`:placeholder:`A`:diagtext:`' (with operand types` |nbsp| :placeholder:`B` |nbsp| :diagtext:`and` |nbsp| :placeholder:`C`:diagtext:`) to be ambiguous despite there being a unique best viable function`|+-----------------------------------------------+|
|                                                                                                                                                                                                                                                                                              || |nbsp| :diagtext:`with non-reversed arguments`||
|                                                                                                                                                                                                                                                                                              |+-----------------------------------------------+|
|                                                                                                                                                                                                                                                                                              ||                                               ||
|                                                                                                                                                                                                                                                                                              |+-----------------------------------------------+|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------+


-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`|
+----------------------------------------------------------------------------------------------------------------------------------------+


-Wanon-enum-enum-conversion
---------------------------
Some of the diagnostics controlled by this flag are enabled by default.

Also controls `-Wdeprecated-anon-enum-enum-conversion`_.

**Diagnostic text:**

+---------------------------+--------------------------------------------+-----------------------------------------------+
|:warning:`warning:` |nbsp| |+------------------------------------------+| |nbsp| :diagtext:`different enumeration types`|
|                           ||:diagtext:`arithmetic between`            ||                                               |
|                           |+------------------------------------------+|                                               |
|                           ||:diagtext:`bitwise operation between`     ||                                               |
|                           |+------------------------------------------+|                                               |
|                           ||:diagtext:`comparison of`                 ||                                               |
|                           |+------------------------------------------+|                                               |
|                           ||:diagtext:`conditional expression between`||                                               |
|                           |+------------------------------------------+|                                               |
|                           ||:diagtext:`compound assignment of`        ||                                               |
|                           |+------------------------------------------+|                                               |
+---------------------------+--------------------------------------------+-----------------------------------------------+


-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`|
+-----------------------------------------------------------------------------------------------------------------------------+


-Wargument-outside-range
------------------------
This diagnostic is an error by default, but the flag ``-Wno-argument-outside-range`` can be used to disable the error.

**Diagnostic text:**

+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:error:`error:` |nbsp| :diagtext:`argument value` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is outside the valid range \[`:placeholder:`B`:diagtext:`,` |nbsp| :placeholder:`C`:diagtext:`\]`|
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-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;` |nbsp| |+--------------------------------------------------------------------------+|:diagtext:`, callee requires at least` |nbsp| :placeholder:`B`|
|                                                                           ||+------------------------------------------------------------------------+||                                                              |
|                                                                           |||:diagtext:`contains` |nbsp| :placeholder:`A` |nbsp| :diagtext:`elements`|||                                                              |
|                                                                           ||+------------------------------------------------------------------------+||                                                              |
|                                                                           |+--------------------------------------------------------------------------+|                                                              |
|                                                                           ||+----------------------------------------------+                          ||                                                              |
|                                                                           |||:diagtext:`is of size` |nbsp| :placeholder:`A`|                          ||                                                              |
|                                                                           ||+----------------------------------------------+                          ||                                                              |
|                                                                           |+--------------------------------------------------------------------------+|                                                              |
+---------------------------------------------------------------------------+----------------------------------------------------------------------------+--------------------------------------------------------------+

+-----------------------------------------------------------------------------------+
|: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 flag exists for GCC compatibility, and has no effect in Clang.

-Watimport-in-framework-header
------------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`use of '@import' in framework header is discouraged, including this header requires -fmodules`|
+------------------------------------------------------------------------------------------------------------------------------------+


-Watomic-alignment
------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+---------------------------+------------------------+------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| |+----------------------+| |nbsp| :diagtext:`atomic operation may incur significant performance penalty`|
|                           ||:diagtext:`large`     ||                                                                              |
|                           |+----------------------+|                                                                              |
|                           ||:diagtext:`misaligned`||                                                                              |
|                           |+----------------------+|                                                                              |
+---------------------------+------------------------+------------------------------------------------------------------------------+


-Watomic-implicit-seq-cst
-------------------------
**Diagnostic text:**

+---------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`implicit use of sequentially-consistent atomic may incur stronger memory barriers than necessary`|
+---------------------------------------------------------------------------------------------------------------------------------------+


-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:`ignoring availability attribute` |nbsp| |+--------------------------------------+|
|                                                                              ||:diagtext:`on '+load' method`         ||
|                                                                              |+--------------------------------------+|
|                                                                              ||:diagtext:`with constructor attribute`||
|                                                                              |+--------------------------------------+|
|                                                                              ||:diagtext:`with destructor attribute` ||
|                                                                              |+--------------------------------------+|
+------------------------------------------------------------------------------+----------------------------------------+

+---------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`only 'unavailable' and 'deprecated' are supported for Swift availability`|
+---------------------------------------------------------------------------------------------------------------+

+------------------------------------------------------------------------------------------------------------------------+
|: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`            ||                                |
|                           |+------------------------------+|                                                                                                   |+---------------------------------------------+|                                |
+---------------------------+--------------------------------+---------------------------------------------------------------------------------------------------+-----------------------------------------------+--------------------------------+


-Wavr-rtlib-linking-quirks
--------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+----------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`support for linking stdlibs for microcontroller '`:placeholder:`A`:diagtext:`' is not implemented`|
+----------------------------------------------------------------------------------------------------------------------------------------+

+-------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`no avr-gcc installation can be found on the system, cannot link standard libraries`|
+-------------------------------------------------------------------------------------------------------------------------+

+--------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`no avr-libc installation can be found on the system, cannot link standard libraries`|
+--------------------------------------------------------------------------------------------------------------------------+

+--------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`no target microcontroller specified on command line, cannot link standard libraries, please pass -mmcu=<mcu name>`|
+--------------------------------------------------------------------------------------------------------------------------------------------------------+

+-----------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`standard library not linked and so no interrupt vector table or compiler runtime routines will be linked`|
+-----------------------------------------------------------------------------------------------------------------------------------------------+


-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-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`|
+--------------------------------------------------------------------------------------------------------------------------------------------------------------+


-Wbinary-literal
----------------
Controls `-Wc++14-binary-literal`_, `-Wc++98-c++11-compat-binary-literal`_, `-Wgnu-binary-literal`_.


-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:`initializing statement expression result`||                                                                                                                                          |
|                                                                    |+----------------------------------------------------+|                                                                                                                                          |
|                                                                    ||: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`                         ||                                                                                                                                          |
|                                                                    |+----------------------------------------------------+|                                                                                                                                          |
+--------------------------------------------------------------------+------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+


-Wbinding-in-condition
----------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+--------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ISO C++17 does not permit structured binding declaration in a condition`|
+--------------------------------------------------------------------------------------------------------------+


-Wbitfield-constant-conversion
------------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`implicit truncation from` |nbsp| :placeholder:`C` |nbsp| :diagtext:`to bit-field changes value from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-Wbitfield-enum-conversion
--------------------------
**Diagnostic text:**

+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`bit-field` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not wide enough to store all enumerators of` |nbsp| :placeholder:`B`|
+------------------------------------------------------------------------------------------------------------------------------------------------------------------+

+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`signed bit-field` |nbsp| :placeholder:`A` |nbsp| :diagtext:`needs an extra bit to represent the largest positive enumerators of` |nbsp| :placeholder:`B`|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`assigning value of signed enum type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`to unsigned bit-field` |nbsp| :placeholder:`A`:diagtext:`; negative enumerators of enum` |nbsp| :placeholder:`B` |nbsp| :diagtext:`will be converted to positive values`|
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-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-conditional-parentheses
---------------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`operator '?:' has lower precedence than '`:placeholder:`A`:diagtext:`'; '`:placeholder:`A`:diagtext:`' will be evaluated first`|
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-Wbitwise-op-parentheses
------------------------
**Diagnostic text:**

+-----------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' within '`:placeholder:`B`:diagtext:`'`|
+-----------------------------------------------------------------------------------------------------------+


-Wblock-capture-autoreleasing
-----------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+-----------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`block captures an autoreleasing out-parameter, which may result in use-after-free bugs`|
+-----------------------------------------------------------------------------------------------------------------------------+


-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`_.


-Wbool-operation
----------------
This diagnostic is enabled by default.

**Diagnostic text:**

+-------------------------------------------------------------------------------+-------------------------------------------------+--------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`bitwise negation of a boolean expression`|+-----------------------------------------------+| |nbsp| :diagtext:`did you mean logical negation?`|
|                                                                               ||:diagtext:`;`                                  ||                                                  |
|                                                                               |+-----------------------------------------------+|                                                  |
|                                                                               || |nbsp| :diagtext:`always evaluates to 'true';`||                                                  |
|                                                                               |+-----------------------------------------------+|                                                  |
+-------------------------------------------------------------------------------+-------------------------------------------------+--------------------------------------------------+


-Wbraced-scalar-init
--------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+------------------------------------------------------------+----------------------------+-----------------------+
|:warning:`warning:` |nbsp| :diagtext:`braces around` |nbsp| |+--------------------------+|:diagtext:`initializer`|
|                                                            ||:diagtext:`scalar` |nbsp| ||                       |
|                                                            |+--------------------------+|                       |
|                                                            ||                          ||                       |
|                                                            |+--------------------------+|                       |
+------------------------------------------------------------+----------------------------+-----------------------+


-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-assume-aligned-alignment
----------------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+---------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`requested alignment must be` |nbsp| :placeholder:`A` |nbsp| :diagtext:`bytes or smaller; maximum alignment assumed`|
+---------------------------------------------------------------------------------------------------------------------------------------------------------+


-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| :diagtext:`'`:placeholder:`A`:diagtext:`' will always overflow; destination buffer has size` |nbsp| :placeholder:`B`:diagtext:`, but size argument is` |nbsp| :placeholder:`C`|
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-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-c++17-compat`_, `-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
-----------------------
Some of the diagnostics controlled by this flag are enabled by default.

Controls `-Wc++11-compat`_, `-Wc++98-c++11-c++14-c++17-compat-pedantic`_, `-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:`'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`     ||        |                                                                                                                          |
|                       |+---------------------------------------+|        |                                                                                                                          |
|                       ||:diagtext:`explicit specifier argument`||        |                                                                                                                          |
|                       |+---------------------------------------+|        |                                                                                                                          |
+-----------------------+-----------------------------------------+--------+--------------------------------------------------------------------------------------------------------------------------+

+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|: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
--------------
Controls `-Wc++98-c++11-c++14-c++17-compat`_, `-Wc++98-c++11-c++14-compat`_.


-Wc++14-compat-pedantic
-----------------------
Controls `-Wc++14-compat`_, `-Wc++98-c++11-c++14-c++17-compat-pedantic`_, `-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++17-compat
--------------
Some of the diagnostics controlled by this flag are enabled by default.

Controls `-Wc++17-compat-mangling`_, `-Wc++98-c++11-c++14-c++17-compat`_, `-Wdeprecated-increment-bool`_, `-Wdeprecated-register`_.


-Wc++17-compat-mangling
-----------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`mangled name of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`will change in C++17 due to non-throwing exception specification in function signature`|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-Wc++17-compat-pedantic
-----------------------
Some of the diagnostics controlled by this flag are enabled by default.

Controls `-Wc++17-compat`_, `-Wc++98-c++11-c++14-c++17-compat-pedantic`_.


-Wc++17-extensions
------------------
Some of the diagnostics controlled by this flag are enabled by default.

**Diagnostic text:**

+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ISO C++ standards before C++17 do not allow new expression for type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to use list-initialization`|
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

+------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`constexpr if is a C++17 extension`|
+------------------------------------------------------------------------+

+---------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'constexpr' on lambda expressions is a C++17 extension`|
+---------------------------------------------------------------------------------------------+

+---------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`use of the` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute is a C++17 extension`|
+---------------------------------------------------------------------------------------------------------------------------+

+---------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`decomposition declarations are a C++17 extension`|
+---------------------------------------------------------------------------------------+

+--------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`pack fold expression is a C++17 extension`|
+--------------------------------------------------------------------------------+

+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'begin' and 'end' returning different types (`:placeholder:`A` |nbsp| :diagtext:`and` |nbsp| :placeholder:`B`:diagtext:`) is a C++17 extension`|
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

+----------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`hexadecimal floating literals are a C++17 feature`|
+----------------------------------------------------------------------------------------+

+----------------------------------------+--------------------+-------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'`|+------------------+|:diagtext:`' initialization statements are a C++17 extension`|
|                                        ||:diagtext:`if`    ||                                                             |
|                                        |+------------------+|                                                             |
|                                        ||:diagtext:`switch`||                                                             |
|                                        |+------------------+|                                                             |
+----------------------------------------+--------------------+-------------------------------------------------------------+

+-----------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`inline variables are a C++17 extension`|
+-----------------------------------------------------------------------------+

+---------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`use of multiple declarators in a single using declaration is a C++17 extension`|
+---------------------------------------------------------------------------------------------------------------------+

+-------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`nested namespace definition is a C++17 extension; define each namespace separately`|
+-------------------------------------------------------------------------------------------------------------------------+

+------------------------------------------------------------+---------------------------+-----------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`attributes on` |nbsp| |+-------------------------+| |nbsp| :diagtext:`declaration are a C++17 extension`|
|                                                            ||:diagtext:`a namespace`  ||                                                     |
|                                                            |+-------------------------+|                                                     |
|                                                            ||:diagtext:`an enumerator`||                                                     |
|                                                            |+-------------------------+|                                                     |
+------------------------------------------------------------+---------------------------+-----------------------------------------------------+

+---------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`capture of '\*this' by copy is a C++17 extension`|
+---------------------------------------------------------------------------------------+

+------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`static\_assert with no message is a C++17 extension`|
+------------------------------------------------------------------------------------------+

+--------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`template template parameter using 'typename' is a C++17 extension`|
+--------------------------------------------------------------------------------------------------------+

+--------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`default scope specifier for attributes is a C++17 extension`|
+--------------------------------------------------------------------------------------------------+

+-----------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`pack expansion of using declaration is a C++17 extension`|
+-----------------------------------------------------------------------------------------------+


-Wc++1y-extensions
------------------
Synonym for `-Wc++14-extensions`_.


-Wc++1z-compat
--------------
Synonym for `-Wc++17-compat`_.


-Wc++1z-compat-mangling
-----------------------
Synonym for `-Wc++17-compat-mangling`_.


-Wc++1z-extensions
------------------
Synonym for `-Wc++17-extensions`_.


-Wc++20-compat
--------------
Some of the diagnostics controlled by this flag are enabled by default.

**Diagnostic text:**

+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`aggregate initialization of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`with user-declared constructors is incompatible with C++20`|
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

+------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'consteval' specifier is incompatible with C++ standards before C++20`|
+------------------------------------------------------------------------------------------------------------+

+------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'constinit' specifier is incompatible with C++ standards before C++20`|
+------------------------------------------------------------------------------------------------------------+

+------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`this expression will be parsed as explicit(bool) in C++20`|
+------------------------------------------------------------------------------------------------+

+------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'<=>' is a single token in C++20; add a space to avoid a change in behavior`|
+------------------------------------------------------------------------------------------------------------------+

+--------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`type of UTF-8 string literal will change from array of const char to array of const char8\_t in C++20`|
+--------------------------------------------------------------------------------------------------------------------------------------------+

+-------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' is a keyword in C++20`|
+-------------------------------------------------------------------------------------------+


-Wc++20-compat-pedantic
-----------------------
Synonym for `-Wc++20-compat`_.


-Wc++20-designator
------------------
**Diagnostic text:**

+------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`designated initializers are a C++20 extension`|
+------------------------------------------------------------------------------------+


-Wc++20-extensions
------------------
Some of the diagnostics controlled by this flag are enabled by default.

Also controls `-Wc++20-designator`_.

**Diagnostic text:**

+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`use of function template name with no prior declaration in function call with explicit template arguments is a C++20 extension`|
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+

+----------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`default member initializer for bit-field is a C++20 extension`|
+----------------------------------------------------------------------------------------------------+

+-----------------------------------------------------------------------------------+-------------------------+----------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`use of this statement in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is a C++20 extension`|
|                                                                                   ||:diagtext:`function`   ||                                        |
|                                                                                   |+-----------------------+|                                        |
|                                                                                   ||:diagtext:`constructor`||                                        |
|                                                                                   |+-----------------------+|                                        |
+-----------------------------------------------------------------------------------+-------------------------+----------------------------------------+

+----------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`constexpr constructor that does not initialize all members is a C++20 extension`|
+----------------------------------------------------------------------------------------------------------------------+

+------------------------------------------------------------------------------+-------------------------+----------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`function try block in constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is a C++20 extension`|
|                                                                              ||:diagtext:`function`   ||                                        |
|                                                                              |+-----------------------+|                                        |
|                                                                              ||:diagtext:`constructor`||                                        |
|                                                                              |+-----------------------+|                                        |
+------------------------------------------------------------------------------+-------------------------+----------------------------------------+

+------------------------------------------------------------------------------------+-------------------------+----------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`uninitialized variable in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is a C++20 extension`|
|                                                                                    ||:diagtext:`function`   ||                                        |
|                                                                                    |+-----------------------+|                                        |
|                                                                                    ||:diagtext:`constructor`||                                        |
|                                                                                    |+-----------------------+|                                        |
+------------------------------------------------------------------------------------+-------------------------+----------------------------------------+

+---------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`constexpr union constructor that does not initialize any member is a C++20 extension`|
+---------------------------------------------------------------------------------------------------------------------------+

+---------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`use of the` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute is a C++20 extension`|
+---------------------------------------------------------------------------------------------------------------------------+

+---------------------------------------------------------------------------------+--------------------------------------------------------------+----------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`decomposition declaration declared` |nbsp| |+------------------------------------------------------------+| |nbsp| :diagtext:`is a C++20 extension`|
|                                                                                 ||+------------------------------------------+                ||                                        |
|                                                                                 |||:diagtext:`'`:placeholder:`B`:diagtext:`'`|                ||                                        |
|                                                                                 ||+------------------------------------------+                ||                                        |
|                                                                                 |+------------------------------------------------------------+|                                        |
|                                                                                 ||+----------------------------------------------------------+||                                        |
|                                                                                 |||:diagtext:`with '`:placeholder:`B`:diagtext:`' specifiers`|||                                        |
|                                                                                 ||+----------------------------------------------------------+||                                        |
|                                                                                 |+------------------------------------------------------------+|                                        |
+---------------------------------------------------------------------------------+--------------------------------------------------------------+----------------------------------------+

+-------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`defaulted comparison operators are a C++20 extension`|
+-------------------------------------------------------------------------------------------+

+--------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`explicit capture of 'this' with a capture default of '=' is a C++20 extension`|
+--------------------------------------------------------------------------------------------------------------------+

+--------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`explicit(bool) is a C++20 extension`|
+--------------------------------------------------------------------------+

+-----------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`range-based for loop initialization statements are a C++20 extension`|
+-----------------------------------------------------------------------------------------------------------+

+---------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`initialized lambda pack captures are a C++20 extension`|
+---------------------------------------------------------------------------------------------+

+----------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`inline nested namespace definition is a C++20 extension`|
+----------------------------------------------------------------------------------------------+

+--------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`explicit template parameter list for lambdas is a C++20 extension`|
+--------------------------------------------------------------------------------------------------------+

+--------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`invoking a pointer to a 'const &' member function on an rvalue is a C++20 extension`|
+--------------------------------------------------------------------------------------------------------------------------+


-Wc++2a-compat
--------------
Synonym for `-Wc++20-compat`_.


-Wc++2a-compat-pedantic
-----------------------
Synonym for `-Wc++20-compat-pedantic`_.


-Wc++2a-extensions
------------------
Synonym for `-Wc++20-extensions`_.


-Wc++98-c++11-c++14-c++17-compat
--------------------------------
**Diagnostic text:**

+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`use of function template name with no prior function template declaration in function call with explicit template arguments is incompatible with C++ standards before C++20`|
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

+-------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`default member initializer for bit-field is incompatible with C++ standards before C++20`|
+-------------------------------------------------------------------------------------------------------------------------------+

+-----------------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`use of this statement in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is incompatible with C++ standards before C++20`|
|                                                                                   ||:diagtext:`function`   ||                                                                   |
|                                                                                   |+-----------------------+|                                                                   |
|                                                                                   ||:diagtext:`constructor`||                                                                   |
|                                                                                   |+-----------------------+|                                                                   |
+-----------------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+

+-------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`constexpr constructor that does not initialize all members is incompatible with C++ standards before C++20`|
+-------------------------------------------------------------------------------------------------------------------------------------------------+

+------------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`function try block in constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is incompatible with C++ standards before C++20`|
|                                                                              ||:diagtext:`function`   ||                                                                   |
|                                                                              |+-----------------------+|                                                                   |
|                                                                              ||:diagtext:`constructor`||                                                                   |
|                                                                              |+-----------------------+|                                                                   |
+------------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+

+------------------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`uninitialized variable in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is incompatible with C++ standards before C++20`|
|                                                                                    ||:diagtext:`function`   ||                                                                   |
|                                                                                    |+-----------------------+|                                                                   |
|                                                                                    ||:diagtext:`constructor`||                                                                   |
|                                                                                    |+-----------------------+|                                                                   |
+------------------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+

+------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`constexpr union constructor that does not initialize any member is incompatible with C++ standards before C++20`|
+------------------------------------------------------------------------------------------------------------------------------------------------------+

+-------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`virtual constexpr functions are incompatible with C++ standards before C++20`|
+-------------------------------------------------------------------------------------------------------------------+

+---------------------------------------------------------------------------------+--------------------------------------------------------------+-------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`decomposition declaration declared` |nbsp| |+------------------------------------------------------------+| |nbsp| :diagtext:`is incompatible with C++ standards before C++20`|
|                                                                                 ||+------------------------------------------+                ||                                                                   |
|                                                                                 |||:diagtext:`'`:placeholder:`B`:diagtext:`'`|                ||                                                                   |
|                                                                                 ||+------------------------------------------+                ||                                                                   |
|                                                                                 |+------------------------------------------------------------+|                                                                   |
|                                                                                 ||+----------------------------------------------------------+||                                                                   |
|                                                                                 |||:diagtext:`with '`:placeholder:`B`:diagtext:`' specifiers`|||                                                                   |
|                                                                                 ||+----------------------------------------------------------+||                                                                   |
|                                                                                 |+------------------------------------------------------------+|                                                                   |
+---------------------------------------------------------------------------------+--------------------------------------------------------------+-------------------------------------------------------------------+

+----------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`defaulted comparison operators are incompatible with C++ standards before C++20`|
+----------------------------------------------------------------------------------------------------------------------+

+-------------------------------------------------------------------------+--------------------------------------+----------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`explicitly defaulting this` |nbsp| |+------------------------------------+| |nbsp| :diagtext:`with a type different from the implicit type is incompatible with C++ standards before C++20`|
|                                                                         ||:diagtext:`default constructor`     ||                                                                                                                |
|                                                                         |+------------------------------------+|                                                                                                                |
|                                                                         ||:diagtext:`copy constructor`        ||                                                                                                                |
|                                                                         |+------------------------------------+|                                                                                                                |
|                                                                         ||:diagtext:`move constructor`        ||                                                                                                                |
|                                                                         |+------------------------------------+|                                                                                                                |
|                                                                         ||:diagtext:`copy assignment operator`||                                                                                                                |
|                                                                         |+------------------------------------+|                                                                                                                |
|                                                                         ||:diagtext:`move assignment operator`||                                                                                                                |
|                                                                         |+------------------------------------+|                                                                                                                |
|                                                                         ||:diagtext:`destructor`              ||                                                                                                                |
|                                                                         |+------------------------------------+|                                                                                                                |
+-------------------------------------------------------------------------+--------------------------------------+----------------------------------------------------------------------------------------------------------------+

+-----------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`explicit capture of 'this' with a capture default of '=' is incompatible with C++ standards before C++20`|
+-----------------------------------------------------------------------------------------------------------------------------------------------+

+-----------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`explicit(bool) is incompatible with C++ standards before C++20`|
+-----------------------------------------------------------------------------------------------------+

+--------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`range-based for loop initialization statements are incompatible with C++ standards before C++20`|
+--------------------------------------------------------------------------------------------------------------------------------------+

+------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`initialized lambda capture packs are incompatible with C++ standards before C++20`|
+------------------------------------------------------------------------------------------------------------------------+

+-------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`inline nested namespace definition is incompatible with C++ standards before C++20`|
+-------------------------------------------------------------------------------------------------------------------------+

+---------------------------+----------------------------------+-----------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| |+--------------------------------+| |nbsp| :diagtext:`of lambda is incompatible with C++ standards before C++20`|
|                           ||:diagtext:`default construction`||                                                                             |
|                           |+--------------------------------+|                                                                             |
|                           ||:diagtext:`assignment`          ||                                                                             |
|                           |+--------------------------------+|                                                                             |
+---------------------------+----------------------------------+-----------------------------------------------------------------------------+

+-----------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`explicit template parameter list for lambdas is incompatible with C++ standards before C++20`|
+-----------------------------------------------------------------------------------------------------------------------------------+

+-----------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'<=>' operator is incompatible with C++ standards before C++20`|
+-----------------------------------------------------------------------------------------------------+

+----------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'char8\_t' type specifier is incompatible with C++ standards before C++20`|
+----------------------------------------------------------------------------------------------------------------+


-Wc++98-c++11-c++14-c++17-compat-pedantic
-----------------------------------------
Also controls `-Wc++98-c++11-c++14-c++17-compat`_.

**Diagnostic text:**

+---------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`designated initializers are incompatible with C++ standards before C++20`|
+---------------------------------------------------------------------------------------------------------------+

+-----------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`invoking a pointer to a 'const &' member function on an rvalue is incompatible with C++ standards before C++20`|
+-----------------------------------------------------------------------------------------------------------------------------------------------------+


-Wc++98-c++11-c++14-compat
--------------------------
**Diagnostic text:**

+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`class template argument deduction is incompatible with C++ standards before C++17`|+---------------------------------------------------------------------------------+|
|                                                                                                                        ||                                                                                 ||
|                                                                                                                        |+---------------------------------------------------------------------------------+|
|                                                                                                                        ||+-------------------------------------------------------------------------------+||
|                                                                                                                        |||:diagtext:`; for compatibility, use explicit type name` |nbsp| :placeholder:`B`|||
|                                                                                                                        ||+-------------------------------------------------------------------------------+||
|                                                                                                                        |+---------------------------------------------------------------------------------+|
+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------+

+---------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`constexpr if is incompatible with C++ standards before C++17`|
+---------------------------------------------------------------------------------------------------+

+----------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`constexpr on lambda expressions is incompatible with C++ standards before C++17`|
+----------------------------------------------------------------------------------------------------------------------+

+------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`decomposition declarations are incompatible with C++ standards before C++17`|
+------------------------------------------------------------------------------------------------------------------+

+-----------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`pack fold expression is incompatible with C++ standards before C++17`|
+-----------------------------------------------------------------------------------------------------------+

+---------------------------+--------------------+----------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| |+------------------+| |nbsp| :diagtext:`initialization statements are incompatible with C++ standards before C++17`|
|                           ||:diagtext:`if`    ||                                                                                              |
|                           |+------------------+|                                                                                              |
|                           ||:diagtext:`switch`||                                                                                              |
|                           |+------------------+|                                                                                              |
+---------------------------+--------------------+----------------------------------------------------------------------------------------------+

+--------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`inline variables are incompatible with C++ standards before C++17`|
+--------------------------------------------------------------------------------------------------------+

+------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`nested namespace definition is incompatible with C++ standards before C++17`|
+------------------------------------------------------------------------------------------------------------------+

+-------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`by value capture of '\*this' is incompatible with C++ standards before C++17`|
+-------------------------------------------------------------------------------------------------------------------+

+---------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`static\_assert with no message is incompatible with C++ standards before C++17`|
+---------------------------------------------------------------------------------------------------------------------+

+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`non-type template parameters declared with` |nbsp| :placeholder:`A` |nbsp| :diagtext:`are incompatible with C++ standards before C++17`|
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

+-----------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`template template parameter using 'typename' is incompatible with C++ standards before C++17`|
+-----------------------------------------------------------------------------------------------------------------------------------+

+--------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`unicode literals are incompatible with C++ standards before C++17`|
+--------------------------------------------------------------------------------------------------------+

+-----------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`default scope specifier for attributes is incompatible with C++ standards before C++17`|
+-----------------------------------------------------------------------------------------------------------------------------+

+------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`use of multiple declarators in a single using declaration is incompatible with C++ standards before C++17`|
+------------------------------------------------------------------------------------------------------------------------------------------------+

+-----------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`pack expansion using declaration is incompatible with C++ standards before C++17`|
+-----------------------------------------------------------------------------------------------------------------------+

+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|: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++17`|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-Wc++98-c++11-c++14-compat-pedantic
-----------------------------------
Also controls `-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++17`|
|                                                            ||:diagtext:`a namespace`  ||                                                                                |
|                                                            |+-------------------------+|                                                                                |
|                                                            ||:diagtext:`an enumerator`||                                                                                |
|                                                            |+-------------------------+|                                                                                |
+------------------------------------------------------------+---------------------------+--------------------------------------------------------------------------------+

+---------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`hexadecimal floating literals are incompatible with C++ standards before C++17`|
+---------------------------------------------------------------------------------------------------------------------+


-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:`return type deduction 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:`generic lambdas are incompatible with C++11`|
+----------------------------------------------------------------------------------+

+-------------------------------------------------------------------------------------------------------------------+
|: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-binary-literal
-----------------------------------
**Diagnostic text:**

+---------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`binary integer literals are incompatible with C++ standards before C++14`|
+---------------------------------------------------------------------------------------------------------------+


-Wc++98-c++11-compat-pedantic
-----------------------------
Controls `-Wc++98-c++11-compat`_, `-Wc++98-c++11-compat-binary-literal`_.


-Wc++98-compat
--------------
Also controls `-Wc++98-c++11-c++14-c++17-compat`_, `-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:`initializing` |nbsp| :placeholder:`A` |nbsp| :diagtext:`from an 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` |nbsp| |+--------------------+| |nbsp| :diagtext:`goto statement to one of its possible targets is incompatible with C++98`|
|                                                             ||:diagtext:`indirect`||                                                                                            |
|                                                             |+--------------------+|                                                                                            |
|                                                             ||:diagtext:`asm`     ||                                                                                            |
|                                                             |+--------------------+|                                                                                            |
+-------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------------+

+------------------------------------------------------------------------------------------------------------+
|: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:`default 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| :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:`initializing statement expression result`||                                                                                                                            ||:diagtext:`invoke a deleted constructor`      ||                            |
|                           |+----------------------------------------------------+|                                                                                                                            |+----------------------------------------------+|                            |
|                           ||: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`                         ||                                                                                                                            |                                                |                            |
|                           |+----------------------------------------------------+|                                                                                                                            |                                                |                            |
+---------------------------+------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------+----------------------------+


-Wc++98-compat-extra-semi
-------------------------
**Diagnostic text:**

+-------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`extra ';' outside of a function is incompatible with C++98`|
+-------------------------------------------------------------------------------------------------+


-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-c++17-compat-pedantic`_, `-Wc++98-c++11-c++14-compat-pedantic`_, `-Wc++98-c++11-compat-pedantic`_, `-Wc++98-compat`_, `-Wc++98-compat-bind-to-temporary-copy`_, `-Wc++98-compat-extra-semi`_.

**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:`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| :diagtext:`anonymous structs are a C11 extension`|
+----------------------------------------------------------------------------+

+----------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' is a C11 extension`|
+----------------------------------------------------------------------------------------+


-Wc2x-extensions
----------------
This diagnostic is enabled by default.

**Diagnostic text:**

+--------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`omitting the parameter name in a function definition is a C2x extension`|
+--------------------------------------------------------------------------------------------------------------+


-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-designator
----------------
Some of the diagnostics controlled by this flag are enabled by default.

Also controls `-Wc++20-designator`_.

**Diagnostic text:**

+--------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`designated initializers are a C99 feature`|
+--------------------------------------------------------------------------------+

+----------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`array designators are a C99 extension`|
+----------------------------------------------------------------------------+

+--------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`mixture of designated and non-designated initializers in the same initializer list is a C99 extension`|
+--------------------------------------------------------------------------------------------------------------------------------------------+

+-----------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`nested designators are a C99 extension`|
+-----------------------------------------------------------------------------+


-Wc99-extensions
----------------
Some of the diagnostics controlled by this flag are enabled by default.

Also controls `-Wc99-designator`_.

**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:`'`:placeholder:`A`:diagtext:`' is a C99 extension`|
+----------------------------------------------------------------------------------------+

+-------------------------------------------------------------------------------+
|: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:`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`|
+---------------------------------------------------------------------------------------+


-Wcall-to-pure-virtual-from-ctor-dtor
-------------------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`call to pure virtual member function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has undefined behavior; overrides of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in subclasses are not available in the` |nbsp| |+-----------------------+| |nbsp| :diagtext:`of` |nbsp| :placeholder:`C`|
|                                                                                                                                                                                                                                                     ||:diagtext:`constructor`||                                              |
|                                                                                                                                                                                                                                                     |+-----------------------+|                                              |
|                                                                                                                                                                                                                                                     ||:diagtext:`destructor` ||                                              |
|                                                                                                                                                                                                                                                     |+-----------------------+|                                              |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------+


-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`|
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-Wcast-qual-unrelated
---------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+---------------------------------------------------------------------+-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ISO C++ does not allow` |nbsp| |+---------------------------------+| |nbsp| :diagtext:`from` |nbsp| :placeholder:`B` |nbsp| :diagtext:`to` |nbsp| :placeholder:`C` |nbsp| :diagtext:`because it casts away qualifiers, even though the source and destination types are unrelated`|
|                                                                     ||:diagtext:`const\_cast`          ||                                                                                                                                                                                                              |
|                                                                     |+---------------------------------+|                                                                                                                                                                                                              |
|                                                                     ||:diagtext:`static\_cast`         ||                                                                                                                                                                                                              |
|                                                                     |+---------------------------------+|                                                                                                                                                                                                              |
|                                                                     ||:diagtext:`reinterpret\_cast`    ||                                                                                                                                                                                                              |
|                                                                     |+---------------------------------+|                                                                                                                                                                                                              |
|                                                                     ||:diagtext:`dynamic\_cast`        ||                                                                                                                                                                                                              |
|                                                                     |+---------------------------------+|                                                                                                                                                                                                              |
|                                                                     ||:diagtext:`C-style cast`         ||                                                                                                                                                                                                              |
|                                                                     |+---------------------------------+|                                                                                                                                                                                                              |
|                                                                     ||:diagtext:`functional-style cast`||                                                                                                                                                                                                              |
|                                                                     |+---------------------------------+|                                                                                                                                                                                                              |
+---------------------------------------------------------------------+-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-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:`#pragma hdrstop filename not supported, /Fp can be used to specify precompiled header filename`|
+-------------------------------------------------------------------------------------------------------------------------------------+

+-----------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`definition of macro` |nbsp| :placeholder:`A` |nbsp| :diagtext:`does not match definition in precompiled header`|
+-----------------------------------------------------------------------------------------------------------------------------------------------------+


-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`||                                                                      |
|                                                                                                                                       |+-----------------------+|                                                                      |
+---------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------+


-Wcmse-union-leak
-----------------
This diagnostic is enabled by default.

**Diagnostic text:**

+-----------------------------------------------------------------------------------------+-------------------------------------------------+----------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`passing union across security boundary via` |nbsp| |+-----------------------------------------------+| |nbsp| :diagtext:`may leak information`|
|                                                                                         ||+---------------------------------------------+||                                        |
|                                                                                         |||:diagtext:`parameter` |nbsp| :placeholder:`B`|||                                        |
|                                                                                         ||+---------------------------------------------+||                                        |
|                                                                                         |+-----------------------------------------------+|                                        |
|                                                                                         ||:diagtext:`return value`                       ||                                        |
|                                                                                         |+-----------------------------------------------+|                                        |
+-----------------------------------------------------------------------------------------+-------------------------------------------------+----------------------------------------+


-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`|
+---------------------------------------------------------------------------+


-Wcomplex-component-init
------------------------
**Diagnostic text:**

+----------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`complex initialization specifying real and imaginary components is an extension`|
+----------------------------------------------------------------------------------------------------------------------+


-Wconcepts-ts-compat
--------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+---------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ISO C++20 does not permit the 'bool' keyword after 'concept'`|
+---------------------------------------------------------------------------------------------------+


-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`_, `-Wobjc-bool-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-evaluated
--------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+--------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' will always evaluate to 'true' in a manifestly constant-evaluated expression`|
+--------------------------------------------------------------------------------------------------------------------------------------------------+


-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` |nbsp| :placeholder:`A` |nbsp| :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 `-Wbitfield-enum-conversion`_, `-Wbool-conversion`_, `-Wconstant-conversion`_, `-Wenum-conversion`_, `-Wfloat-conversion`_, `-Wimplicit-float-conversion`_, `-Wimplicit-int-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 turns vector to scalar:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`|
+--------------------------------------------------------------------------------------------------------------------------------------------------------+

+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`passing non-generic address space pointer to` |nbsp| :placeholder:`A` |nbsp| :diagtext:`may cause dynamic conversion affecting performance`|
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|: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`_.


-Wcoroutine
-----------
Synonym for `-Wcoroutine-missing-unhandled-exception`_.


-Wcoroutine-missing-unhandled-exception
---------------------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+-----------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is required to declare the member 'unhandled\_exception()' when exceptions are enabled`|
+-----------------------------------------------------------------------------------------------------------------------------------------------------+


-Wcovered-switch-default
------------------------
**Diagnostic text:**

+--------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`default label in switch which covers all enumeration values`|
+--------------------------------------------------------------------------------------------------+


-Wcpp
-----
Synonym for `-W#warnings`_.


-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`||
|                                                                                                            |+--------------------+|                                                                                            |+----------------------+|
+------------------------------------------------------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------------+------------------------+


-Wctad-maybe-unsupported
------------------------
**Diagnostic text:**

+--------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`may not intend to support class template argument deduction`|
+--------------------------------------------------------------------------------------------------------------------------+


-Wctor-dtor-privacy
-------------------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.

-Wctu
-----
This diagnostic is enabled by default.

**Diagnostic text:**

+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`imported AST from '`:placeholder:`A`:diagtext:`' had been generated for a different target, current:` |nbsp| :placeholder:`B`:diagtext:`, imported:` |nbsp| :placeholder:`C`|
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-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:`nvcc does not allow '\_\_`:placeholder:`A`:diagtext:`\_\_' to appear after '()' in lambdas`|
+---------------------------------------------------------------------------------------------------------------------------------+

+------------------------------------------------------------------------------------------------------------+
|: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
----------
This diagnostic is enabled by default.

Also controls `-Wdangling-field`_, `-Wdangling-gsl`_, `-Wdangling-initializer-list`_, `-Wreturn-stack-address`_.

**Diagnostic text:**

+---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------+----------------------------+---------------------------------------------------------------+
|:warning:`warning:` |nbsp| |+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| |nbsp| |+--------------------------+|:diagtext:`will be destroyed at the end of the full-expression`|
|                           ||+-----------------------------+---------------------------------------------------------+--------+------------------------------------------------------------------------+||        ||+------------------------+||                                                               |
|                           |||:diagtext:`temporary` |nbsp| |+-------------------------------------------------------+| |nbsp| |+----------------------------------------------------------------------+|||        |||:placeholder:`D` |nbsp| |||                                                               |
|                           |||                             ||:diagtext:`whose address is used as value of`          ||        ||+-------------------------------+------------------------------------+||||        ||+------------------------+||                                                               |
|                           |||                             |+-------------------------------------------------------+|        |||+-----------------------------+|:diagtext:`member of local variable`|||||        |+--------------------------+|                                                               |
|                           |||                             ||+--------------------------------+--------------------+||        ||||                             ||                                    |||||        ||                          ||                                                               |
|                           |||                             |||+------------------------------+|:diagtext:`bound to`|||        |||+-----------------------------+|                                    |||||        |+--------------------------+|                                                               |
|                           |||                             ||||                              ||                    |||        ||||:diagtext:`reference` |nbsp| ||                                    |||||        |                            |                                                               |
|                           |||                             |||+------------------------------+|                    |||        |||+-----------------------------+|                                    |||||        |                            |                                                               |
|                           |||                             ||||:diagtext:`implicitly` |nbsp| ||                    |||        ||+-------------------------------+------------------------------------+||||        |                            |                                                               |
|                           |||                             |||+------------------------------+|                    |||        |+----------------------------------------------------------------------+|||        |                            |                                                               |
|                           |||                             ||+--------------------------------+--------------------+||        ||+-------------------------+-----------------------+                   ||||        |                            |                                                               |
|                           |||                             |+-------------------------------------------------------+|        |||:diagtext:`local` |nbsp| |+---------------------+|                   ||||        |                            |                                                               |
|                           |||                             |                                                         |        |||                         ||:diagtext:`variable` ||                   ||||        |                            |                                                               |
|                           |||                             |                                                         |        |||                         |+---------------------+|                   ||||        |                            |                                                               |
|                           |||                             |                                                         |        |||                         ||:diagtext:`reference`||                   ||||        |                            |                                                               |
|                           |||                             |                                                         |        |||                         |+---------------------+|                   ||||        |                            |                                                               |
|                           |||                             |                                                         |        ||+-------------------------+-----------------------+                   ||||        |                            |                                                               |
|                           |||                             |                                                         |        |+----------------------------------------------------------------------+|||        |                            |                                                               |
|                           ||+-----------------------------+---------------------------------------------------------+--------+------------------------------------------------------------------------+||        |                            |                                                               |
|                           |+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|        |                            |                                                               |
|                           ||+---------------------------------+----------------------------------------------------------+                                                                             ||        |                            |                                                               |
|                           |||:diagtext:`array backing` |nbsp| |+--------------------------------------------------------+|                                                                             ||        |                            |                                                               |
|                           |||                                 ||:diagtext:`initializer list subobject of local variable`||                                                                             ||        |                            |                                                               |
|                           |||                                 |+--------------------------------------------------------+|                                                                             ||        |                            |                                                               |
|                           |||                                 ||:diagtext:`local initializer list`                      ||                                                                             ||        |                            |                                                               |
|                           |||                                 |+--------------------------------------------------------+|                                                                             ||        |                            |                                                               |
|                           ||+---------------------------------+----------------------------------------------------------+                                                                             ||        |                            |                                                               |
|                           |+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|        |                            |                                                               |
+---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------+----------------------------+---------------------------------------------------------------+

+---------------------------------------------------------------------------+-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+---------------------------+--------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`sorry, lifetime extension of` |nbsp| |+---------------------------------------------+| |nbsp| :diagtext:`created by aggregate initialization using default member initializer is not supported; lifetime of` |nbsp| |+-------------------------+| |nbsp| :diagtext:`will end at the end of the full-expression`|
|                                                                           ||:diagtext:`temporary`                        ||                                                                                                                              ||:diagtext:`temporary`    ||                                                              |
|                                                                           |+---------------------------------------------+|                                                                                                                              |+-------------------------+|                                                              |
|                                                                           ||:diagtext:`backing array of initializer list`||                                                                                                                              ||:diagtext:`backing array`||                                                              |
|                                                                           |+---------------------------------------------+|                                                                                                                              |+-------------------------+|                                                              |
+---------------------------------------------------------------------------+-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+---------------------------+--------------------------------------------------------------+


-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` |nbsp| |+---------------------+| |nbsp| :placeholder:`B`|
|                                                                                                                                     ||:diagtext:`variable` ||                        |
|                                                                                                                                     |+---------------------+|                        |
|                                                                                                                                     ||:diagtext:`parameter`||                        |
|                                                                                                                                     |+---------------------+|                        |
+-------------------------------------------------------------------------------------------------------------------------------------+-----------------------+------------------------+

+---------------------------+--------------------------------------------------------+--------+----------------------------------+--------------------------------------------------+----------------------+------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| |+------------------------------------------------------+| |nbsp| |+--------------------------------+|:diagtext:`member` |nbsp| :placeholder:`A` |nbsp| |+--------------------+| |nbsp| :diagtext:`a temporary object whose lifetime is shorter than the lifetime of the constructed object`|
|                           ||:diagtext:`reference`                                 ||        ||                                ||                                                  ||:diagtext:`binds to`||                                                                                                            |
|                           |+------------------------------------------------------+|        |+--------------------------------+|                                                  |+--------------------+|                                                                                                            |
|                           ||:diagtext:`backing array for 'std::initializer\_list'`||        ||:diagtext:`subobject of` |nbsp| ||                                                  ||:diagtext:`is`      ||                                                                                                            |
|                           |+------------------------------------------------------+|        |+--------------------------------+|                                                  |+--------------------+|                                                                                                            |
+---------------------------+--------------------------------------------------------+--------+----------------------------------+--------------------------------------------------+----------------------+------------------------------------------------------------------------------------------------------------+

+-----------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+------------------------+
|:warning:`warning:` |nbsp| :diagtext:`initializing pointer member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`with the stack address of` |nbsp| |+---------------------+| |nbsp| :placeholder:`B`|
|                                                                                                                                               ||:diagtext:`variable` ||                        |
|                                                                                                                                               |+---------------------+|                        |
|                                                                                                                                               ||:diagtext:`parameter`||                        |
|                                                                                                                                               |+---------------------+|                        |
+-----------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+------------------------+

+--------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`temporary bound to reference member of allocated object will be destroyed at the end of the full-expression`|
+--------------------------------------------------------------------------------------------------------------------------------------------------+


-Wdangling-gsl
--------------
This diagnostic is enabled by default.

**Diagnostic text:**

+---------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`object backing the pointer will be destroyed at the end of the full-expression`|
+---------------------------------------------------------------------------------------------------------------------+

+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`initializing pointer member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to point to a temporary object whose lifetime is shorter than the lifetime of the constructed object`|
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-Wdangling-initializer-list
---------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+------------------------------------------------------------+----------------------------------------------------------------+-----------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`array backing` |nbsp| |+--------------------------------------------------------------+| |nbsp| :diagtext:`will be destroyed at the end of the full-expression`|
|                                                            ||:diagtext:`initializer list subobject of the allocated object`||                                                                       |
|                                                            |+--------------------------------------------------------------+|                                                                       |
|                                                            ||:diagtext:`the allocated initializer list`                    ||                                                                       |
|                                                            |+--------------------------------------------------------------+|                                                                       |
+------------------------------------------------------------+----------------------------------------------------------------+-----------------------------------------------------------------------+


-Wdarwin-sdk-settings
---------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+----------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`SDK settings were ignored as 'SDKSettings.json' could not be parsed`|
+----------------------------------------------------------------------------------------------------------+


-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`|
+-----------------------------------------------------------------------------------+


-Wdefaulted-function-deleted
----------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+-------------------------------------------------------------------+------------------------+--------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`explicitly defaulted` |nbsp| |+----------------------+| |nbsp| :diagtext:`comparison operator` |nbsp| :diagtext:`is implicitly deleted`|
|                                                                   ||:diagtext:`<ERROR>`   ||                                                                                |
|                                                                   |+----------------------+|                                                                                |
|                                                                   ||:diagtext:`equality`  ||                                                                                |
|                                                                   |+----------------------+|                                                                                |
|                                                                   ||:diagtext:`three-way` ||                                                                                |
|                                                                   |+----------------------+|                                                                                |
|                                                                   ||:diagtext:`equality`  ||                                                                                |
|                                                                   |+----------------------+|                                                                                |
|                                                                   ||:diagtext:`relational`||                                                                                |
|                                                                   |+----------------------+|                                                                                |
+-------------------------------------------------------------------+------------------------+--------------------------------------------------------------------------------+

+-------------------------------------------------------------------+--------------------------------------+-----------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`explicitly defaulted` |nbsp| |+------------------------------------+| |nbsp| :diagtext:`is implicitly deleted`|
|                                                                   ||:diagtext:`default constructor`     ||                                         |
|                                                                   |+------------------------------------+|                                         |
|                                                                   ||:diagtext:`copy constructor`        ||                                         |
|                                                                   |+------------------------------------+|                                         |
|                                                                   ||:diagtext:`move constructor`        ||                                         |
|                                                                   |+------------------------------------+|                                         |
|                                                                   ||:diagtext:`copy assignment operator`||                                         |
|                                                                   |+------------------------------------+|                                         |
|                                                                   ||:diagtext:`move assignment operator`||                                         |
|                                                                   |+------------------------------------+|                                         |
|                                                                   ||:diagtext:`destructor`              ||                                         |
|                                                                   |+------------------------------------+|                                         |
+-------------------------------------------------------------------+--------------------------------------+-----------------------------------------+


-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-abstract-non-virtual-dtor
----------------------------------
This diagnostic is 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`||                                                                                                                        |
|                           |+----------------------+|                                                                                                                        |
+---------------------------+------------------------+------------------------------------------------------------------------------------------------------------------------+


-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-abstract-non-virtual-dtor
--------------------------------------
**Diagnostic text:**

+---------------------------+------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
|: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`||                                                                                                                                        |
|                           |+----------------------+|                                                                                                                                        |
+---------------------------+------------------------+----------------------------------------------------------------------------------------------------------------------------------------+


-Wdelete-non-virtual-dtor
-------------------------
Some of the diagnostics controlled by this flag are enabled by default.

Controls `-Wdelete-abstract-non-virtual-dtor`_, `-Wdelete-non-abstract-non-virtual-dtor`_.


-Wdeprecated
------------
Some of the diagnostics controlled by this flag are enabled by default.

Also controls `-Wdeprecated-anon-enum-enum-conversion`_, `-Wdeprecated-array-compare`_, `-Wdeprecated-attributes`_, `-Wdeprecated-comma-subscript`_, `-Wdeprecated-copy`_, `-Wdeprecated-copy-dtor`_, `-Wdeprecated-declarations`_, `-Wdeprecated-dynamic-exception-spec`_, `-Wdeprecated-enum-compare`_, `-Wdeprecated-enum-compare-conditional`_, `-Wdeprecated-enum-enum-conversion`_, `-Wdeprecated-enum-float-conversion`_, `-Wdeprecated-increment-bool`_, `-Wdeprecated-register`_, `-Wdeprecated-this-capture`_, `-Wdeprecated-volatile`_, `-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:`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:`-fconcepts-ts is deprecated - use '-std=c++20' for Concepts support`|
+----------------------------------------------------------------------------------------------------------+

+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
|: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-anon-enum-enum-conversion
--------------------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+---------------------------+--------------------------------------------+--------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| |+------------------------------------------+| |nbsp| :diagtext:`different enumeration types` |nbsp| :diagtext:`is deprecated`|
|                           ||:diagtext:`arithmetic between`            ||                                                                                |
|                           |+------------------------------------------+|                                                                                |
|                           ||:diagtext:`bitwise operation between`     ||                                                                                |
|                           |+------------------------------------------+|                                                                                |
|                           ||:diagtext:`comparison of`                 ||                                                                                |
|                           |+------------------------------------------+|                                                                                |
|                           ||:diagtext:`conditional expression between`||                                                                                |
|                           |+------------------------------------------+|                                                                                |
|                           ||:diagtext:`compound assignment of`        ||                                                                                |
|                           |+------------------------------------------+|                                                                                |
+---------------------------+--------------------------------------------+--------------------------------------------------------------------------------+


-Wdeprecated-array-compare
--------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`comparison between two arrays is deprecated; to compare array addresses, use unary '+' to decay operands to pointers`|
+-----------------------------------------------------------------------------------------------------------------------------------------------------------+


-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-comma-subscript
----------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+--------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`top-level comma expression in array subscript is deprecated`|
+--------------------------------------------------------------------------------------------------+


-Wdeprecated-copy
-----------------
**Diagnostic text:**

+--------------------------------------------------------------------------+---------------------------------+----------------------------------------------------------------------------------------------------------------------------+---------------------------------+
|: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 copy` |nbsp| |+-------------------------------+|
|                                                                          ||:diagtext:`constructor`        ||                                                                                                                            ||:diagtext:`assignment operator`||
|                                                                          |+-------------------------------+|                                                                                                                            |+-------------------------------+|
|                                                                          ||:diagtext:`assignment operator`||                                                                                                                            ||:diagtext:`constructor`        ||
|                                                                          |+-------------------------------+|                                                                                                                            |+-------------------------------+|
+--------------------------------------------------------------------------+---------------------------------+----------------------------------------------------------------------------------------------------------------------------+---------------------------------+


-Wdeprecated-copy-dtor
----------------------
**Diagnostic text:**

+--------------------------------------------------------------------------+---------------------------------+--------------------------------------------------------------------------------------------------------------------------+
|: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 destructor`|
|                                                                          ||:diagtext:`constructor`        ||                                                                                                                          |
|                                                                          |+-------------------------------+|                                                                                                                          |
|                                                                          ||:diagtext:`assignment operator`||                                                                                                                          |
|                                                                          |+-------------------------------+|                                                                                                                          |
+--------------------------------------------------------------------------+---------------------------------+--------------------------------------------------------------------------------------------------------------------------+


-Wdeprecated-declarations
-------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+--------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`specifying 'uuid' as an ATL attribute is deprecated; use \_\_declspec instead`|
+--------------------------------------------------------------------------------------------------------------------+

+-----------------------------------------------------------------------------------------------------------------+
|: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-dynamic-exception-spec
-----------------------------------
**Diagnostic text:**

+--------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`dynamic exception specifications are deprecated`|
+--------------------------------------------------------------------------------------+


-Wdeprecated-enum-compare
-------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+---------------------------+--------------------------------------------+--------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| |+------------------------------------------+| |nbsp| :diagtext:`different enumeration types` |nbsp| :diagtext:`is deprecated`|
|                           ||:diagtext:`arithmetic between`            ||                                                                                |
|                           |+------------------------------------------+|                                                                                |
|                           ||:diagtext:`bitwise operation between`     ||                                                                                |
|                           |+------------------------------------------+|                                                                                |
|                           ||:diagtext:`comparison of`                 ||                                                                                |
|                           |+------------------------------------------+|                                                                                |
|                           ||:diagtext:`conditional expression between`||                                                                                |
|                           |+------------------------------------------+|                                                                                |
|                           ||:diagtext:`compound assignment of`        ||                                                                                |
|                           |+------------------------------------------+|                                                                                |
+---------------------------+--------------------------------------------+--------------------------------------------------------------------------------+


-Wdeprecated-enum-compare-conditional
-------------------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+---------------------------+--------------------------------------------+--------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| |+------------------------------------------+| |nbsp| :diagtext:`different enumeration types` |nbsp| :diagtext:`is deprecated`|
|                           ||:diagtext:`arithmetic between`            ||                                                                                |
|                           |+------------------------------------------+|                                                                                |
|                           ||:diagtext:`bitwise operation between`     ||                                                                                |
|                           |+------------------------------------------+|                                                                                |
|                           ||:diagtext:`comparison of`                 ||                                                                                |
|                           |+------------------------------------------+|                                                                                |
|                           ||:diagtext:`conditional expression between`||                                                                                |
|                           |+------------------------------------------+|                                                                                |
|                           ||:diagtext:`compound assignment of`        ||                                                                                |
|                           |+------------------------------------------+|                                                                                |
+---------------------------+--------------------------------------------+--------------------------------------------------------------------------------+


-Wdeprecated-enum-enum-conversion
---------------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+---------------------------+--------------------------------------------+--------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| |+------------------------------------------+| |nbsp| :diagtext:`different enumeration types` |nbsp| :diagtext:`is deprecated`|
|                           ||:diagtext:`arithmetic between`            ||                                                                                |
|                           |+------------------------------------------+|                                                                                |
|                           ||:diagtext:`bitwise operation between`     ||                                                                                |
|                           |+------------------------------------------+|                                                                                |
|                           ||:diagtext:`comparison of`                 ||                                                                                |
|                           |+------------------------------------------+|                                                                                |
|                           ||:diagtext:`conditional expression between`||                                                                                |
|                           |+------------------------------------------+|                                                                                |
|                           ||:diagtext:`compound assignment of`        ||                                                                                |
|                           |+------------------------------------------+|                                                                                |
+---------------------------+--------------------------------------------+--------------------------------------------------------------------------------+


-Wdeprecated-enum-float-conversion
----------------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+---------------------------+--------------------------------------------+--------+----------------------------+--------------------------------------------------------+------------------+--------+----------------------------+---------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| |+------------------------------------------+| |nbsp| |+--------------------------+| |nbsp| :diagtext:`type` |nbsp| :placeholder:`C` |nbsp| |+----------------+| |nbsp| |+--------------------------+| |nbsp| :diagtext:`type` |nbsp| :placeholder:`D` |nbsp| :diagtext:`is deprecated`|
|                           ||:diagtext:`arithmetic between`            ||        ||:diagtext:`floating-point`||                                                        ||:diagtext:`with`||        ||:diagtext:`enumeration`   ||                                                                                 |
|                           |+------------------------------------------+|        |+--------------------------+|                                                        |+----------------+|        |+--------------------------+|                                                                                 |
|                           ||:diagtext:`bitwise operation between`     ||        ||:diagtext:`enumeration`   ||                                                        ||:diagtext:`from`||        ||:diagtext:`floating-point`||                                                                                 |
|                           |+------------------------------------------+|        |+--------------------------+|                                                        |+----------------+|        |+--------------------------+|                                                                                 |
|                           ||:diagtext:`comparison of`                 ||        |                            |                                                        ||:diagtext:`and` ||        |                            |                                                                                 |
|                           |+------------------------------------------+|        |                            |                                                        |+----------------+|        |                            |                                                                                 |
|                           ||:diagtext:`conditional expression between`||        |                            |                                                        |                  |        |                            |                                                                                 |
|                           |+------------------------------------------+|        |                            |                                                        |                  |        |                            |                                                                                 |
|                           ||:diagtext:`compound assignment of`        ||        |                            |                                                        |                  |        |                            |                                                                                 |
|                           |+------------------------------------------+|        |                            |                                                        |                  |        |                            |                                                                                 |
+---------------------------+--------------------------------------------+--------+----------------------------+--------------------------------------------------------+------------------+--------+----------------------------+---------------------------------------------------------------------------------+


-Wdeprecated-implementations
----------------------------
**Diagnostic text:**

+----------------------------------------------------------------------+----------------------+
|:warning:`warning:` |nbsp| :diagtext:`implementing deprecated` |nbsp| |+--------------------+|
|                                                                      ||:diagtext:`method`  ||
|                                                                      |+--------------------+|
|                                                                      ||:diagtext:`class`   ||
|                                                                      |+--------------------+|
|                                                                      ||:diagtext:`category`||
|                                                                      |+--------------------+|
+----------------------------------------------------------------------+----------------------+

+----------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`implementing unavailable method`|
+----------------------------------------------------------------------+


-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++17`|
+---------------------------------------------------------------------------------------------------------------------+


-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++17`|
+-------------------------------------------------------------------------------------------------------------------+


-Wdeprecated-this-capture
-------------------------
**Diagnostic text:**

+-------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`implicit capture of 'this' with a capture default of '=' is deprecated`|
+-------------------------------------------------------------------------------------------------------------+


-Wdeprecated-volatile
---------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+--------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`compound assignment to object of volatile-qualified type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is deprecated`|
+--------------------------------------------------------------------------------------------------------------------------------------------------------+

+---------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| |+---------------------+| |nbsp| :diagtext:`of object of volatile-qualified type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is deprecated`|
|                           ||:diagtext:`decrement`||                                                                                                                 |
|                           |+---------------------+|                                                                                                                 |
|                           ||:diagtext:`increment`||                                                                                                                 |
|                           |+---------------------+|                                                                                                                 |
+---------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------+

+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`use of result of assignment to object of volatile-qualified type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is deprecated`|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------+

+---------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`volatile-qualified parameter type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is deprecated`|
+---------------------------------------------------------------------------------------------------------------------------------+

+------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`volatile-qualified return type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is deprecated`|
+------------------------------------------------------------------------------------------------------------------------------+

+---------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`volatile qualifier in structured binding declaration is deprecated`|
+---------------------------------------------------------------------------------------------------------+


-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:`'`|+--------------+|:placeholder:`B`:diagtext:`' command does not have a valid word argument`|
|                                        ||:diagtext:`\\`||                                                                         |
|                                        |+--------------+|                                                                         |
|                                        ||:diagtext:`@` ||                                                                         |
|                                        |+--------------+|                                                                         |
+----------------------------------------+----------------+-------------------------------------------------------------------------+

+-----------------------------------------------------------------------------------------------------+
|: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 '`|+--------------+|:diagtext:`deprecated' command but does not have a deprecation attribute`|
|                                                                   ||:diagtext:`\\`||                                                                         |
|                                                                   |+--------------+|                                                                         |
|                                                                   ||:diagtext:`@` ||                                                                         |
|                                                                   |+--------------+|                                                                         |
+-------------------------------------------------------------------+----------------+-------------------------------------------------------------------------+


-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`|
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-Wdtor-name
-----------
Some of the diagnostics controlled by this flag are enabled by default.

**Diagnostic text:**

+----------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ISO C++ considers this destructor name lookup to be ambiguous`|
+----------------------------------------------------------------------------------------------------+

+-----------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ISO C++ requires the name after '::~' to be found in the same scope as the name before '::~'`|
+-----------------------------------------------------------------------------------------------------------------------------------+

+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`qualified destructor name only found in lexical scope; omit the qualifier to find this type name by unqualified lookup`|
+-------------------------------------------------------------------------------------------------------------------------------------------------------------+


-Wdtor-typedef
--------------
This diagnostic is an error by default, but the flag ``-Wno-dtor-typedef`` can be used to disable the error.

**Diagnostic text:**

+--------------------------------------------------------------------------------+------------------------+-------------------------------------------------------------+
|:error:`error:` |nbsp| :diagtext:`destructor cannot be declared using a` |nbsp| |+----------------------+| |nbsp| :placeholder:`A` |nbsp| :diagtext:`of the class name`|
|                                                                                ||:diagtext:`typedef`   ||                                                             |
|                                                                                |+----------------------+|                                                             |
|                                                                                ||:diagtext:`type alias`||                                                             |
|                                                                                |+----------------------+|                                                             |
+--------------------------------------------------------------------------------+------------------------+-------------------------------------------------------------+


-Wduplicate-decl-specifier
--------------------------
Some of the diagnostics controlled by this flag are 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`|
+-----------------------------------------------------------------------------------------------------+

+-------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`multiple identical address spaces specified for type`|
+-------------------------------------------------------------------------------------------+

+-----------------------------------------------------------------------------------------------------+
|: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`|
+-----------------------------------------------------------------------------------------------------------------------------------+


-Wduplicate-protocol
--------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+-----------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`duplicate protocol definition of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is 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`   ||
|                           |+-----------------------------+|                                                                                                |                                        |                                                                                             |+-----------------------+|
+---------------------------+-------------------------------+------------------------------------------------------------------------------------------------+----------------------------------------+---------------------------------------------------------------------------------------------+-------------------------+


-Wdynamic-exception-spec
------------------------
Some of the diagnostics controlled by this flag are enabled by default.

Also controls `-Wdeprecated-dynamic-exception-spec`_.

**Diagnostic text:**

+--------------------------------------------------------------------------------------------+
|:error:`error:` |nbsp| :diagtext:`ISO C++17 does not allow dynamic exception specifications`|
+--------------------------------------------------------------------------------------------+


-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++17 does not allow a decomposition group to be empty`|
+-------------------------------------------------------------------------------------------------+


-Wempty-init-stmt
-----------------
**Diagnostic text:**

+--------------------------------------------------------------------------+-----------------------------+---------------------------+
|:warning:`warning:` |nbsp| :diagtext:`empty initialization statement of '`|+---------------------------+|:diagtext:`' has no effect`|
|                                                                          ||:diagtext:`if`             ||                           |
|                                                                          |+---------------------------+|                           |
|                                                                          ||:diagtext:`switch`         ||                           |
|                                                                          |+---------------------------+|                           |
|                                                                          ||:diagtext:`range-based for`||                           |
|                                                                          |+---------------------------+|                           |
+--------------------------------------------------------------------------+-----------------------------+---------------------------+


-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.

Also controls `-Wdeprecated-enum-compare`_, `-Wenum-compare-switch`_.

**Diagnostic text:**

+---------------------------+--------------------------------------------+-----------------------------------------------+
|:warning:`warning:` |nbsp| |+------------------------------------------+| |nbsp| :diagtext:`different enumeration types`|
|                           ||:diagtext:`arithmetic between`            ||                                               |
|                           |+------------------------------------------+|                                               |
|                           ||:diagtext:`bitwise operation between`     ||                                               |
|                           |+------------------------------------------+|                                               |
|                           ||:diagtext:`comparison of`                 ||                                               |
|                           |+------------------------------------------+|                                               |
|                           ||:diagtext:`conditional expression between`||                                               |
|                           |+------------------------------------------+|                                               |
|                           ||:diagtext:`compound assignment of`        ||                                               |
|                           |+------------------------------------------+|                                               |
+---------------------------+--------------------------------------------+-----------------------------------------------+


-Wenum-compare-conditional
--------------------------
Some of the diagnostics controlled by this flag are enabled by default.

Also controls `-Wdeprecated-enum-compare-conditional`_.

**Diagnostic text:**

+---------------------------+--------------------------------------------+-----------------------------------------------+
|:warning:`warning:` |nbsp| |+------------------------------------------+| |nbsp| :diagtext:`different enumeration types`|
|                           ||:diagtext:`arithmetic between`            ||                                               |
|                           |+------------------------------------------+|                                               |
|                           ||:diagtext:`bitwise operation between`     ||                                               |
|                           |+------------------------------------------+|                                               |
|                           ||:diagtext:`comparison of`                 ||                                               |
|                           |+------------------------------------------+|                                               |
|                           ||:diagtext:`conditional expression between`||                                               |
|                           |+------------------------------------------+|                                               |
|                           ||:diagtext:`compound assignment of`        ||                                               |
|                           |+------------------------------------------+|                                               |
+---------------------------+--------------------------------------------+-----------------------------------------------+


-Wenum-compare-switch
---------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+----------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`comparison of different enumeration types in switch statement`|
+----------------------------------------------------------------------------------------------------+


-Wenum-conversion
-----------------
Some of the diagnostics controlled by this flag are enabled by default.

Also controls `-Wenum-compare-conditional`_, `-Wenum-enum-conversion`_, `-Wenum-float-conversion`_.

**Diagnostic text:**

+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`implicit conversion from enumeration type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to different enumeration type` |nbsp| :placeholder:`B`|
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-Wenum-enum-conversion
----------------------
Some of the diagnostics controlled by this flag are enabled by default.

Also controls `-Wdeprecated-enum-enum-conversion`_.

**Diagnostic text:**

+---------------------------+--------------------------------------------+-----------------------------------------------+
|:warning:`warning:` |nbsp| |+------------------------------------------+| |nbsp| :diagtext:`different enumeration types`|
|                           ||:diagtext:`arithmetic between`            ||                                               |
|                           |+------------------------------------------+|                                               |
|                           ||:diagtext:`bitwise operation between`     ||                                               |
|                           |+------------------------------------------+|                                               |
|                           ||:diagtext:`comparison of`                 ||                                               |
|                           |+------------------------------------------+|                                               |
|                           ||:diagtext:`conditional expression between`||                                               |
|                           |+------------------------------------------+|                                               |
|                           ||:diagtext:`compound assignment of`        ||                                               |
|                           |+------------------------------------------+|                                               |
+---------------------------+--------------------------------------------+-----------------------------------------------+


-Wenum-float-conversion
-----------------------
Some of the diagnostics controlled by this flag are enabled by default.

Also controls `-Wdeprecated-enum-float-conversion`_.

**Diagnostic text:**

+---------------------------+--------------------------------------------+--------+----------------------------+--------------------------------------------------------+------------------+--------+----------------------------+------------------------------------------------+
|:warning:`warning:` |nbsp| |+------------------------------------------+| |nbsp| |+--------------------------+| |nbsp| :diagtext:`type` |nbsp| :placeholder:`C` |nbsp| |+----------------+| |nbsp| |+--------------------------+| |nbsp| :diagtext:`type` |nbsp| :placeholder:`D`|
|                           ||:diagtext:`arithmetic between`            ||        ||:diagtext:`floating-point`||                                                        ||:diagtext:`with`||        ||:diagtext:`enumeration`   ||                                                |
|                           |+------------------------------------------+|        |+--------------------------+|                                                        |+----------------+|        |+--------------------------+|                                                |
|                           ||:diagtext:`bitwise operation between`     ||        ||:diagtext:`enumeration`   ||                                                        ||:diagtext:`from`||        ||:diagtext:`floating-point`||                                                |
|                           |+------------------------------------------+|        |+--------------------------+|                                                        |+----------------+|        |+--------------------------+|                                                |
|                           ||:diagtext:`comparison of`                 ||        |                            |                                                        ||:diagtext:`and` ||        |                            |                                                |
|                           |+------------------------------------------+|        |                            |                                                        |+----------------+|        |                            |                                                |
|                           ||:diagtext:`conditional expression between`||        |                            |                                                        |                  |        |                            |                                                |
|                           |+------------------------------------------+|        |                            |                                                        |                  |        |                            |                                                |
|                           ||:diagtext:`compound assignment of`        ||        |                            |                                                        |                  |        |                            |                                                |
|                           |+------------------------------------------+|        |                            |                                                        |                  |        |                            |                                                |
+---------------------------+--------------------------------------------+--------+----------------------------+--------------------------------------------------------+------------------+--------+----------------------------+------------------------------------------------+


-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`|
+-------------------------------------------------------------------------------------------------------------------------------------+

+-----------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has a non-throwing exception specification but can still throw`|
+-----------------------------------------------------------------------------------------------------------------------------+


-Wexcess-initializers
---------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+-----------------------------------------------------------------+--------------------+-------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`excess elements in` |nbsp| |+------------------+| |nbsp| :diagtext:`initializer`|
|                                                                 ||:diagtext:`array` ||                               |
|                                                                 |+------------------+|                               |
|                                                                 ||:diagtext:`vector`||                               |
|                                                                 |+------------------+|                               |
|                                                                 ||:diagtext:`scalar`||                               |
|                                                                 |+------------------+|                               |
|                                                                 ||:diagtext:`union` ||                               |
|                                                                 |+------------------+|                               |
|                                                                 ||:diagtext:`struct`||                               |
|                                                                 |+------------------+|                               |
+-----------------------------------------------------------------+--------------------+-------------------------------+

+---------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`excess elements in initializer for indivisible sizeless type` |nbsp| :placeholder:`A`|
+---------------------------------------------------------------------------------------------------------------------------+

+--------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`excess elements in char array initializer`|
+--------------------------------------------------------------------------------+

+------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`initializer-string for char array is too long`|
+------------------------------------------------------------------------------------+


-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`|
+-------------------------------------------------------------------------------------------------------------------------------------+


-Wexport-unnamed
----------------
This diagnostic is enabled by default.

**Diagnostic text:**

+------------------------------------------------------------------------+------------------------------+------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ISO C++20 does not permit` |nbsp| |+----------------------------+| |nbsp| :diagtext:`declaration to appear in an export block`|
|                                                                        ||:diagtext:`an empty`        ||                                                            |
|                                                                        |+----------------------------+|                                                            |
|                                                                        ||:diagtext:`a static\_assert`||                                                            |
|                                                                        |+----------------------------+|                                                            |
+------------------------------------------------------------------------+------------------------------+------------------------------------------------------------+

+-------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ISO C++20 does not permit a declaration that does not introduce any names to be exported`|
+-------------------------------------------------------------------------------------------------------------------------------+


-Wexport-using-directive
------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+-----------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ISO C++20 does not permit using directive to be exported`|
+-----------------------------------------------------------------------------------------------+


-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.

Also controls `-Wdeprecated-copy`_, `-Wempty-init-stmt`_, `-Wignored-qualifiers`_, `-Winitializer-overrides`_, `-Wmissing-field-initializers`_, `-Wmissing-method-return-type`_, `-Wnull-pointer-arithmetic`_, `-Wsemicolon-before-method-body`_, `-Wsign-compare`_, `-Wunused-parameter`_.

**Diagnostic text:**

+-----------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`call to function without interrupt attribute could clobber interruptee's VFP registers`|
+-----------------------------------------------------------------------------------------------------------------------------+


-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`_, `-Wc++98-compat-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-semi-stmt
-----------------
Also controls `-Wempty-init-stmt`_.

**Diagnostic text:**

+-------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`empty expression statement has no effect; remove unnecessary ';' to silence this warning`|
+-------------------------------------------------------------------------------------------------------------------------------+


-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`|
+------------------------------------------------------------------------------+


-Wfinal-dtor-non-final-class
----------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+---------------------------------------------------------------------+--------------------+--------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`class with destructor marked '`|+------------------+|:diagtext:`' cannot be inherited from`|
|                                                                     ||:diagtext:`final` ||                                      |
|                                                                     |+------------------+|                                      |
|                                                                     ||:diagtext:`sealed`||                                      |
|                                                                     |+------------------+|                                      |
+---------------------------------------------------------------------+--------------------+--------------------------------------+


-Wfixed-enum-extension
----------------------
**Diagnostic text:**

+-----------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`enumeration types with a fixed underlying type are a Clang extension`|
+-----------------------------------------------------------------------------------------------------------+


-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 from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`changes value from` |nbsp| :placeholder:`C` |nbsp| :diagtext:`to` |nbsp| :placeholder:`D`|
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`implicit conversion of out of range value from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is undefined`|
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-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| :diagtext:`using '%%P' format specifier without precision`|
+-------------------------------------------------------------------------------------+

+---------------------------+----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|: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:`using '`:placeholder:`A`:diagtext:`' format specifier, but argument has boolean value`|
+----------------------------------------------------------------------------------------------------------------------------+

+------------------------------------------------------------------------------------------------------------------------------------+-----------------------------+------------------------+
|: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:`using '`:placeholder:`A`:diagtext:`' format specifier annotation outside of os\_log()/os\_trace()`|
+----------------------------------------------------------------------------------------------------------------------------------------+

+-----------------------------------------------------------------------------+-----------------------------+
|: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| |+--------------------------------------------+| |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`||                        |
|                                                                                                                                    |+---------------------------+|                        |
+------------------------------------------------------------------------------------------------------------------------------------+-----------------------------+------------------------+


-Wformat-security
-----------------
This diagnostic is enabled by default.

**Diagnostic text:**

+---------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`format string is not a string literal (potentially insecure)`|
+---------------------------------------------------------------------------------------------------+


-Wformat-type-confusion
-----------------------
**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-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`_.


-Wfortify-source
----------------
This diagnostic is enabled by default.

**Diagnostic text:**

+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' will always overflow; destination buffer has size` |nbsp| :placeholder:`B`:diagtext:`, but format string expands to at least` |nbsp| :placeholder:`C`|
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' will always overflow; destination buffer has size` |nbsp| :placeholder:`B`:diagtext:`, but size argument is` |nbsp| :placeholder:`C`|
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' size argument is too large; destination buffer has size` |nbsp| :placeholder:`B`:diagtext:`, but size argument is` |nbsp| :placeholder:`C`|
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-Wfour-char-constants
---------------------
**Diagnostic text:**

+-------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`multi-character character constant`|
+-------------------------------------------------------------------------+


-Wframe-address
---------------
**Diagnostic text:**

+---------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`calling '`:placeholder:`A`:diagtext:`' with a nonzero argument is unsafe`|
+---------------------------------------------------------------------------------------------------------------+


-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`|
+--------------------------------------------------------------------------------------------------------------------------------------+


-Wframework-include-private-from-public
---------------------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+-------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`public framework header includes private framework header '`:placeholder:`A`:diagtext:`'`|
+-------------------------------------------------------------------------------------------------------------------------------+


-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`|
+--------------------------------------------------------------------------------------------------------+


-Wfunction-multiversion
-----------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+-------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`body of cpu\_dispatch function will be ignored`|
+-------------------------------------------------------------------------------------+

+---------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`CPU list contains duplicate entries; attribute ignored`|
+---------------------------------------------------------------------------------------------+


-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:`'diagnose\_if' is a clang extension`|
+--------------------------------------------------------------------------+

+------------------------------------------------------------------------+
|: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:`GCC does not allow the` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute to be written on a type`|
+------------------------------------------------------------------------------------------------------------------------------------------+

+-------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`GCC does not allow variable declarations in for loop initializers before C99`|
+-------------------------------------------------------------------------------------------------------------------+

+----------------------------------------------------------------------------------------------------------------------------------+
|: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`|
+-------------------------------------------------------------------------------+


-Wglobal-isel
-------------
This diagnostic is enabled by default.

**Diagnostic text:**

+------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`-fglobal-isel support for the '`:placeholder:`A`:diagtext:`' architecture is incomplete`|
+------------------------------------------------------------------------------------------------------------------------------+

+----------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`-fglobal-isel support is incomplete for this architecture at the current optimization level`|
+----------------------------------------------------------------------------------------------------------------------------------+


-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-inline-cpp-without-extern
-------------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'gnu\_inline' attribute without 'extern' in C++ treated as externally available, this changed in Clang 10`|
+------------------------------------------------------------------------------------------------------------------------------------------------+


-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`|
+--------------------------------------------------------------------------------------------+


-Whip-only
----------
This diagnostic is enabled by default.

**Diagnostic text:**

+-------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' is ignored since it is only supported for HIP`|
+-------------------------------------------------------------------------------------------------------------------+


-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| :diagtext:`'trivial\_abi' cannot be applied to` |nbsp| :placeholder:`A`|
+--------------------------------------------------------------------------------------------------+

+---------------------------+-------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|: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| :diagtext:`'cmse\_nonsecure\_entry' cannot be applied to functions with internal linkage`|
+--------------------------------------------------------------------------------------------------------------------+

+---------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'dllexport' attribute ignored on explicit instantiation definition`|
+---------------------------------------------------------------------------------------------------------+

+--------------------------------------------------------------------------------------------------------------------------------+
|: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 for field of type` |nbsp| :placeholder:`B`|
+--------------------------------------------------------------------------------------------------------------------------+

+---------------------------------------------------------------------------------------------------+
|: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 and methods`                ||
|                                                                                                |+-------------------------------------------------+|
|                                                                                                ||:diagtext:`functions, methods and blocks`        ||
|                                                                                                |+-------------------------------------------------+|
|                                                                                                ||:diagtext:`functions, methods, and parameters`   ||
|                                                                                                |+-------------------------------------------------+|
|                                                                                                ||:diagtext:`variables`                            ||
|                                                                                                |+-------------------------------------------------+|
|                                                                                                ||:diagtext:`variables and fields`                 ||
|                                                                                                |+-------------------------------------------------+|
|                                                                                                ||:diagtext:`variables, data members and tag types`||
|                                                                                                |+-------------------------------------------------+|
|                                                                                                ||:diagtext:`types and namespaces`                 ||
|                                                                                                |+-------------------------------------------------+|
|                                                                                                ||:diagtext:`variables, functions and classes`     ||
|                                                                                                |+-------------------------------------------------+|
|                                                                                                ||:diagtext:`kernel functions`                     ||
|                                                                                                |+-------------------------------------------------+|
|                                                                                                ||:diagtext:`non-K&R-style functions`              ||
|                                                                                                |+-------------------------------------------------+|
+------------------------------------------------------------------------------------------------+---------------------------------------------------+

+----------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute only applies to` |nbsp| :placeholder:`B`|
+----------------------------------------------------------------------------------------------------------------+

+--------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`attribute` |nbsp| :placeholder:`A` |nbsp| :diagtext:`ignored, because it cannot be applied to omitted return type`|
+--------------------------------------------------------------------------------------------------------------------------------------------------------+

+----------------------------------------------------------------------------------------------------------+---------------------------------------+
|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`calling convention is not supported` |nbsp| |+-------------------------------------+|
|                                                                                                          ||:diagtext:`for this target`          ||
|                                                                                                          |+-------------------------------------+|
|                                                                                                          ||:diagtext:`on variadic function`     ||
|                                                                                                          |+-------------------------------------+|
|                                                                                                          ||:diagtext:`on constructor/destructor`||
|                                                                                                          |+-------------------------------------+|
|                                                                                                          ||:diagtext:`on builtin function`      ||
|                                                                                                          |+-------------------------------------+|
+----------------------------------------------------------------------------------------------------------+---------------------------------------+

+-------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`attribute` |nbsp| :placeholder:`A` |nbsp| :diagtext:`ignored, because it cannot be applied to a type`|
+-------------------------------------------------------------------------------------------------------------------------------------------+

+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ignoring \_\_declspec(allocator) because the function return type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not a pointer or reference 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:`'objc\_externally\_retained' can only be applied to local variables` |nbsp| |+---------------------------------+|
|                                                                                                                  ||:diagtext:`of retainable type`   ||
|                                                                                                                  |+---------------------------------+|
|                                                                                                                  ||:diagtext:`with strong ownership`||
|                                                                                                                  |+---------------------------------+|
+------------------------------------------------------------------------------------------------------------------+-----------------------------------+

+--------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'internal\_linkage' attribute on a non-static local variable is ignored`|
+--------------------------------------------------------------------------------------------------------------+

+---------------------------+--------------------+-------------------------------------------------------------------------------------+----------------------------------+
|:warning:`warning:` |nbsp| |+------------------+| |nbsp| :diagtext:`'interrupt' attribute only applies to functions that have` |nbsp| |+--------------------------------+|
|                           ||:diagtext:`MIPS`  ||                                                                                     ||:diagtext:`no parameters`       ||
|                           |+------------------+|                                                                                     |+--------------------------------+|
|                           ||:diagtext:`MSP430`||                                                                                     ||:diagtext:`a 'void' return type`||
|                           |+------------------+|                                                                                     |+--------------------------------+|
|                           ||:diagtext:`RISC-V`||                                                                                     |                                  |
|                           |+------------------+|                                                                                     |                                  |
+---------------------------+--------------------+-------------------------------------------------------------------------------------+----------------------------------+

+--------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`qualifiers after comma in declarator list are ignored`|
+--------------------------------------------------------------------------------------------+

+------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'mig\_server\_routine' attribute only applies to routines that return a kern\_return\_t`|
+------------------------------------------------------------------------------------------------------------------------------+

+---------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`unknown attribute '`:placeholder:`A`:diagtext:`'`|
+---------------------------------------------------------------------------------------+

+-------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'nocf\_check' attribute ignored; use -fcf-protection to enable the attribute`|
+-------------------------------------------------------------------------------------------------------------------+

+---------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'noderef' can only be used on an array or pointer type`|
+---------------------------------------------------------------------------------------------+

+--------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'nothrow' attribute conflicts with exception specification; attribute ignored`|
+--------------------------------------------------------------------------------------------------------------------+

+------------------------------------------------------------------------------------------------+---------------------------------------------------+------------------------------+
|: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`                ||                              |
|                                                                                                |+-------------------------------------------------+|                              |
|                                                                                                ||:diagtext:`pointer/reference-to-OSObject-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 isn't implemented by this Objective-C runtime`|
+----------------------------------------------------------------------------------------------------------------------+

+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`direct attribute on property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`ignored (not implemented by this Objective-C runtime)`|
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+

+--------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute is deprecated and ignored in OpenCL version` |nbsp| :placeholder:`B`|
+--------------------------------------------------------------------------------------------------------------------------------------------+

+---------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'require\_constant\_initialization' attribute added after initialization of variable`|
+---------------------------------------------------------------------------------------------------------------------------+

+----------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`repeated RISC-V 'interrupt' attribute`|
+----------------------------------------------------------------------------+

+----------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`template parameter of a function template with the 'sycl\_kernel' attribute cannot be a non-type template parameter`|
+----------------------------------------------------------------------------------------------------------------------------------------------------------+

+-------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`function template with 'sycl\_kernel' attribute must have a single parameter`|
+-------------------------------------------------------------------------------------------------------------------+

+-----------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'sycl\_kernel' attribute only applies to a function template with at least two template parameters`|
+-----------------------------------------------------------------------------------------------------------------------------------------+

+---------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`function template with 'sycl\_kernel' attribute must have a 'void' return type`|
+---------------------------------------------------------------------------------------------------------------------+

+---------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+-------------------------------------------------------------------------------------------------+
|: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| |+-----------------------+|+--------------------------------+| |nbsp| :diagtext:`'`:placeholder:`C`:diagtext:`' in the 'target' attribute string; 'target' attribute ignored`|
|                           ||:diagtext:`unsupported`|||                                ||                                                                                                               |
|                           |+-----------------------+|+--------------------------------+|                                                                                                               |
|                           ||:diagtext:`duplicate`  ||| |nbsp| :diagtext:`architecture`||                                                                                                               |
|                           |+-----------------------+|+--------------------------------+|                                                                                                               |
+---------------------------+-------------------------+----------------------------------+---------------------------------------------------------------------------------------------------------------+

+----------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'\_\_clang\_\_' is a predefined macro name, not an attribute scope specifier; did you mean '\_Clang' instead?`|
+----------------------------------------------------------------------------------------------------------------------------------------------------+


-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-pragma-intrinsic
--------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not a recognized builtin`|+----------------------------------------------------------------------------+|
|                                                                                          ||                                                                            ||
|                                                                                          |+----------------------------------------------------------------------------+|
|                                                                                          ||:diagtext:`; consider including <intrin.h> to access non-builtin intrinsics`||
|                                                                                          |+----------------------------------------------------------------------------+|
+------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+


-Wignored-pragma-optimize
-------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+--------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'#pragma optimize' is not supported`|
+--------------------------------------------------------------------------+


-Wignored-pragmas
-----------------
This diagnostic is enabled by default.

Also controls `-Wignored-pragma-intrinsic`_, `-Wignored-pragma-optimize`_.

**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:`OpenCL extension end directive mismatches begin directive - ignoring`|
+-----------------------------------------------------------------------------------------------------------+

+----------------------------------------------------------------------------------------------------+
|: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:`unknown module '`: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 ',' in '#pragma` |nbsp| :placeholder:`A`:diagtext:`'`|
+----------------------------------------------------------------------------------------------------+

+---------------------------------------------------------------------------------------------------------------------+
|: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` |nbsp| |+-------------------------------------------------+| |nbsp| :diagtext:`- ignoring`|
|                                                       ||:diagtext:`'enable', 'disable', 'begin' or 'end'`||                              |
|                                                       |+-------------------------------------------------+|                              |
|                                                       ||:diagtext:`'disable'`                            ||                              |
|                                                       |+-------------------------------------------------+|                              |
+-------------------------------------------------------+---------------------------------------------------+------------------------------+

+-----------------------------------------------------------------------------------------------------------+
|: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:`expected string literal in '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignoring`|
+--------------------------------------------------------------------------------------------------------------------------+

+---------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`extra tokens at end of '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`|
+---------------------------------------------------------------------------------------------------------------------+

+----------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`incorrect use of #pragma clang force\_cuda\_host\_device begin\|end`|
+----------------------------------------------------------------------------------------------------------+

+-------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'#pragma init\_seg' is only supported when targeting a Microsoft environment`|
+-------------------------------------------------------------------------------------------------------------------+

+-----------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`unknown action for '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`|
+-----------------------------------------------------------------------------------------------------------------+

+------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`unexpected argument '`:placeholder:`A`:diagtext:`' to '#pragma` |nbsp| :placeholder:`B`:diagtext:`'`|+------------------------------------------------+|
|                                                                                                                                          ||                                                ||
|                                                                                                                                          |+------------------------------------------------+|
|                                                                                                                                          ||+----------------------------------------------+||
|                                                                                                                                          |||:diagtext:`; expected` |nbsp| :placeholder:`D`|||
|                                                                                                                                          ||+----------------------------------------------+||
|                                                                                                                                          |+------------------------------------------------+|
+------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------+

+------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`unknown action '`:placeholder:`B`:diagtext:`' for '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`|
+------------------------------------------------------------------------------------------------------------------------------------------------+

+--------------------------------------------------------------------------------------------------------+--------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`missing argument to '#pragma` |nbsp| :placeholder:`A`:diagtext:`'`|+------------------------------------------------+|
|                                                                                                        ||                                                ||
|                                                                                                        |+------------------------------------------------+|
|                                                                                                        ||+----------------------------------------------+||
|                                                                                                        |||:diagtext:`; expected` |nbsp| :placeholder:`C`|||
|                                                                                                        ||+----------------------------------------------+||
|                                                                                                        |+------------------------------------------------+|
+--------------------------------------------------------------------------------------------------------+--------------------------------------------------+

+----------------------------------------------------------------------------------------------+
|: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-const-int-float-conversion
-------------------------------------
This diagnostic is enabled by default.

**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`|
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-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-fixed-point-conversion
---------------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`implicit conversion from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`cannot fit within the range of values for` |nbsp| :placeholder:`B`|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-Wimplicit-float-conversion
---------------------------
Some of the diagnostics controlled by this flag are enabled by default.

Also controls `-Wimplicit-int-float-conversion`_, `-Wobjc-signed-char-bool-implicit-float-conversion`_.

**Diagnostic text:**

+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
|: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 when assigning computation result loses floating-point precision:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`|
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-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-int-conversion
-------------------------
Also controls `-Wobjc-signed-char-bool-implicit-int-conversion`_.

**Diagnostic text:**

+---------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`higher order bits are zeroes after implicit conversion`|
+---------------------------------------------------------------------------------------------+

+---------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`implicit conversion loses integer precision:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`|
+---------------------------------------------------------------------------------------------------------------------------------------------------------+


-Wimplicit-int-float-conversion
-------------------------------
Some of the diagnostics controlled by this flag are enabled by default.

Also controls `-Wimplicit-const-int-float-conversion`_.

**Diagnostic text:**

+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`implicit conversion from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`may lose precision`|
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-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 in file found relative to primary source file or found by absolute path; will search from start of include path`|
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-Winclude-next-outside-header
-----------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+--------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`#include\_next in primary source file; will search from start of include path`|
+--------------------------------------------------------------------------------------------------------------------+


-Wincompatible-exception-spec
-----------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+--------------------------------------------------------------------------+----------------------+--------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`exception specifications of` |nbsp| |+--------------------+| |nbsp| :diagtext:`types differ`|
|                                                                          ||:diagtext:`return`  ||                                |
|                                                                          |+--------------------+|                                |
|                                                                          ||:diagtext:`argument`||                                |
|                                                                          |+--------------------+|                                |
+--------------------------------------------------------------------------+----------------------+--------------------------------+

+-----------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`target exception specification is not superset of source`|
+-----------------------------------------------------------------------------------------------+


-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`|
+---------------------------------------------------------------------------------------------------------------------------------------------+

+------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:error:`error:` |nbsp| :diagtext:`ms\_struct may not produce Microsoft-compatible layouts with fundamental data types with sizes that aren't a power of two`|
+------------------------------------------------------------------------------------------------------------------------------------------------------------+


-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`                             ||                                       |
|                           |+--------------------------------------------------------------+|                                       |
+---------------------------+----------------------------------------------------------------+---------------------------------------+

+---------------------------+-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| |+-----------------------------+| |nbsp| :diagtext:`from` |nbsp| :placeholder:`B` |nbsp| :diagtext:`to` |nbsp| :placeholder:`C` |nbsp| :diagtext:`changes address space of nested pointers`|
|                           ||:diagtext:`reinterpret\_cast`||                                                                                                                                                          |
|                           |+-----------------------------+|                                                                                                                                                          |
|                           ||:diagtext:`C-style cast`     ||                                                                                                                                                          |
|                           |+-----------------------------+|                                                                                                                                                          |
+---------------------------+-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+


-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-framework-module-declaration
-----------------------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`skipping '`:placeholder:`A`:diagtext:`' because module declaration of '`:placeholder:`B`:diagtext:`' lacks the 'framework' qualifier`|
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-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-setjmp-declaration
-------------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`declaration of built-in function '`:placeholder:`A`:diagtext:`' requires the declaration of the 'jmp\_buf' type, commonly provided in the header <setjmp.h>.`|
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-Wincomplete-umbrella
---------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+---------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`missing submodule '`:placeholder:`A`:diagtext:`'`|
+---------------------------------------------------------------------------------------+

+--------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`umbrella directory '`:placeholder:`A`:diagtext:`' not found`|
+--------------------------------------------------------------------------------------------------+

+-------------------------------------------------------------------------------------------------------------------------------------------------------+
|: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-destructor-override
------------------------------------------
**Diagnostic text:**

+------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`overrides a destructor but is not marked 'override'`|
+------------------------------------------------------------------------------------------------------------------+


-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++17 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` |nbsp| |+-----------------------------+|:diagtext:`overrides prior initialization of this subobject`|
|                                                          ||:diagtext:`partially` |nbsp| ||                                                            |
|                                                          |+-----------------------------+|                                                            |
|                                                          ||                             ||                                                            |
|                                                          |+-----------------------------+|                                                            |
+----------------------------------------------------------+-------------------------------+------------------------------------------------------------+

+----------------------------------------------------------+-------------------------------+------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`initializer` |nbsp| |+-----------------------------+|:diagtext:`overrides prior initialization of this subobject`|
|                                                          ||:diagtext:`partially` |nbsp| ||                                                            |
|                                                          |+-----------------------------+|                                                            |
|                                                          ||                             ||                                                            |
|                                                          |+-----------------------------+|                                                            |
+----------------------------------------------------------+-------------------------------+------------------------------------------------------------+


-Winjected-class-name
---------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------+--------------------------------------------------------------+------------------------+---------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ISO C++ specifies that qualified reference to` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a constructor name rather than a` |nbsp| |+-------------------------+| |nbsp| :diagtext:`in this context, despite preceding` |nbsp| |+----------------------+| |nbsp| :diagtext:`keyword`|
|                                                                                                                                                                           ||:diagtext:`template name`||                                                              ||:diagtext:`'typename'`||                           |
|                                                                                                                                                                           |+-------------------------+|                                                              |+----------------------+|                           |
|                                                                                                                                                                           ||:diagtext:`type`         ||                                                              ||:diagtext:`'template'`||                           |
|                                                                                                                                                                           |+-------------------------+|                                                              |+----------------------+|                           |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------+--------------------------------------------------------------+------------------------+---------------------------+


-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-in-bool-context
---------------------
**Diagnostic text:**

+--------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`converting the enum constant to a boolean`|
+--------------------------------------------------------------------------------+

+--------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`converting the result of '<<' to a boolean; did you mean '(`:placeholder:`A`:diagtext:`) != 0'?`|
+--------------------------------------------------------------------------------------------------------------------------------------+


-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:`the given MCU supports` |nbsp| :placeholder:`A` |nbsp| :diagtext:`hardware multiply, but -mhwmult is set to` |nbsp| :placeholder:`B`:diagtext:`.`|
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`no MCU device specified, but '-mhwmult' is set to 'auto', assuming no hardware multiply. Use -mmcu to specify a MSP430 device, or -mhwmult to set hardware multiply type explicitly.`|
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

+----------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`the given MCU does not support hardware multiply, but -mhwmult is set to` |nbsp| :placeholder:`A`:diagtext:`.`|
+----------------------------------------------------------------------------------------------------------------------------------------------------+

+-----------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`the object size sanitizer has no effect at -O0, but is explicitly enabled:` |nbsp| :placeholder:`A`|
+-----------------------------------------------------------------------------------------------------------------------------------------+

+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`optimization level '`:placeholder:`A`:diagtext:`' is not supported; using '`:placeholder:`B`:placeholder:`C`:diagtext:`' instead`|
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+

+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ignoring extension '`:placeholder:`A`:diagtext:`' because the '`:placeholder:`B`:diagtext:`' architecture does not support it`|
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-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| |+---------------------+| |nbsp| |+-----------------------+| |nbsp| :diagtext:`never produces a constant expression`|
|                       ||:diagtext:`constexpr`||        ||:diagtext:`function`   ||                                                        |
|                       |+---------------------+|        |+-----------------------+|                                                        |
|                       ||:diagtext:`consteval`||        ||: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-ios-deployment-target
-------------------------------
This diagnostic is an error by default, but the flag ``-Wno-invalid-ios-deployment-target`` can be used to disable the error.

**Diagnostic text:**

+------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:error:`error:` |nbsp| :diagtext:`invalid iOS deployment version '`:placeholder:`A`:diagtext:`', iOS 10 is the maximum deployment target for 32-bit targets`|
+------------------------------------------------------------------------------------------------------------------------------------------------------------+


-Winvalid-no-builtin-names
--------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+-----------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' is not a valid builtin name for` |nbsp| :placeholder:`B`|
+-----------------------------------------------------------------------------------------------------------------------------+


-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-partial-specialization
--------------------------------
This diagnostic is an error by default, but the flag ``-Wno-invalid-partial-specialization`` can be used to disable the error.

**Diagnostic text:**

+-----------------------+----------------------+-----------------------------------------------------------------------------------------------------+
|:error:`error:` |nbsp| |+--------------------+| |nbsp| :diagtext:`template partial specialization is not more specialized than the primary template`|
|                       ||:diagtext:`class`   ||                                                                                                     |
|                       |+--------------------+|                                                                                                     |
|                       ||:diagtext:`variable`||                                                                                                     |
|                       |+--------------------+|                                                                                                     |
+-----------------------+----------------------+-----------------------------------------------------------------------------------------------------+


-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 flag exists for GCC compatibility, and has no effect in Clang.

-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`|
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`implicit conversion of out of range value from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is undefined`|
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-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` |nbsp| |+----------------------------+|
|                                                                                                        ||:diagtext:`comparison`      ||
|                                                                                                        |+----------------------------+|
|                                                                                                        ||:diagtext:`bitwise operator`||
|                                                                                                        |+----------------------------+|
+--------------------------------------------------------------------------------------------------------+------------------------------+


-Wlogical-op-parentheses
------------------------
**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:`bool literal returned from 'main'`|
+------------------------------------------------------------------------+

+---------------------------------------------------------------------------+
|: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` |nbsp| |+--------------------------+|:diagtext:`initializer`|
|                                                                     ||:diagtext:`scalar` |nbsp| ||                       |
|                                                                     |+--------------------------+|                       |
|                                                                     ||                          ||                       |
|                                                                     |+--------------------------+|                       |
+---------------------------------------------------------------------+----------------------------+-----------------------+


-Wmax-tokens
------------
This diagnostic is enabled by default.

**Diagnostic text:**

+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`the number of preprocessor source tokens (`:placeholder:`A`:diagtext:`) exceeds this token limit (`:placeholder:`B`:diagtext:`)`|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+

+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`the total number of preprocessor source tokens (`:placeholder:`A`:diagtext:`) exceeds the token limit (`:placeholder:`B`:diagtext:`)`|
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


The warning is issued if the number of pre-processor tokens exceeds
the token limit, which can be set in three ways:

1. As a limit at a specific point in a file, using the ``clang max_tokens_here``
   pragma:

   .. code-block: c++
      #pragma clang max_tokens_here 1234

2. As a per-translation unit limit, using the ``-fmax-tokens=`` command-line
   flag:

   .. code-block: console
      clang -c a.cpp -fmax-tokens=1234

3. As a per-translation unit limit using the ``clang max_tokens_total`` pragma,
   which works like and overrides the ``-fmax-tokens=`` flag:

   .. code-block: c++
      #pragma clang max_tokens_total 1234

These limits can be helpful in limiting code growth through included files.

Setting a token limit of zero means no limit.

-Wmax-unsigned-zero
-------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+----------------------------------------------------------------+---------------------------------------+------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`taking the max of` |nbsp| |+-------------------------------------+| |nbsp| :diagtext:`is always equal to the other value`|
|                                                                ||:diagtext:`a value and unsigned zero`||                                                      |
|                                                                |+-------------------------------------+|                                                      |
|                                                                ||:diagtext:`unsigned zero and a value`||                                                      |
|                                                                |+-------------------------------------+|                                                      |
+----------------------------------------------------------------+---------------------------------------+------------------------------------------------------+


-Wmemset-transposed-args
------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+---------------------------+-----------------------------------------------------+---------------------------------------------------------------+
|:warning:`warning:` |nbsp| |+---------------------------------------------------+|:diagtext:`; did you mean to transpose the last two arguments?`|
|                           ||:diagtext:`'size' argument to memset is '0'`       ||                                                               |
|                           |+---------------------------------------------------+|                                                               |
|                           ||:diagtext:`setting buffer to a 'sizeof' expression`||                                                               |
|                           |+---------------------------------------------------+|                                                               |
+---------------------------+-----------------------------------------------------+---------------------------------------------------------------+


-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-drectve-section`_, `-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-drectve-section
---------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`#pragma` |nbsp| :placeholder:`A`:diagtext:`(".drectve") has undefined behavior, use #pragma comment(linker, ...) instead`|
+---------------------------------------------------------------------------------------------------------------------------------------------------------------+


-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
----------------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+---------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`forward references to 'enum' types are a Microsoft extension`|
+---------------------------------------------------------------------------------------------------+


-Wmicrosoft-enum-value
----------------------
**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-inaccessible-base
-----------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`accessing inaccessible direct base` |nbsp| :placeholder:`A` |nbsp| :diagtext:`of` |nbsp| :placeholder:`B` |nbsp| :diagtext:`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.

Also controls `-Wmicrosoft-template-shadow`_.

**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:`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:`not in` |nbsp| |+----------------------------------------------------------------------------------------+| |nbsp| :diagtext:`is a Microsoft extension`|
|                           ||:diagtext:`class template`           ||                                                                                               ||+---------------------------------------------------------+                             ||                                            |
|                           |+-------------------------------------+|                                                                                               |||:diagtext:`a namespace enclosing` |nbsp| :placeholder:`C`|                             ||                                            |
|                           ||:diagtext:`class template partial`   ||                                                                                               ||+---------------------------------------------------------+                             ||                                            |
|                           |+-------------------------------------+|                                                                                               |+----------------------------------------------------------------------------------------+|                                            |
|                           ||:diagtext:`variable template`        ||                                                                                               ||+--------------------------------------------------------------------------------------+||                                            |
|                           |+-------------------------------------+|                                                                                               |||:diagtext:`class` |nbsp| :placeholder:`C` |nbsp| :diagtext:`or an enclosing namespace`|||                                            |
|                           ||: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:`'static' can only be specified inside the class definition`|
+-------------------------------------------------------------------------------------------------+

+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|: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-template-shadow
---------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+---------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`declaration of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`shadows template parameter`|
+---------------------------------------------------------------------------------------------------------------------------+


-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`|
+------------------------------------------------------------------------------------------------+


-Wmisexpect
-----------
**Diagnostic text:**

+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`Potential performance regression from use of \_\_builtin\_expect(): Annotation was correct on` |nbsp| :placeholder:`A` |nbsp| :diagtext:`of profiled executions.`|
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-Wmisleading-indentation
------------------------
**Diagnostic text:**

+------------------------------------------------------------------------------------------------------+-------------------+-------------+
|:warning:`warning:` |nbsp| :diagtext:`misleading indentation; statement is not part of the previous '`|+-----------------+|:diagtext:`'`|
|                                                                                                      ||:diagtext:`if`   ||             |
|                                                                                                      |+-----------------+|             |
|                                                                                                      ||:diagtext:`else` ||             |
|                                                                                                      |+-----------------+|             |
|                                                                                                      ||:diagtext:`for`  ||             |
|                                                                                                      |+-----------------+|             |
|                                                                                                      ||:diagtext:`while`||             |
|                                                                                                      |+-----------------+|             |
+------------------------------------------------------------------------------------------------------+-------------------+-------------+


-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:`; this is valid, but may result in linker errors under the Microsoft C++ ABI`|
|                                                                                 ||: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:`; this is valid, but may result in linker errors under the Microsoft C++ ABI`|
|                           ||: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-constinit
-------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+---------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'constinit' specifier missing on initializing declaration of` |nbsp| :placeholder:`A`|
+---------------------------------------------------------------------------------------------------------------------------+


-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-noescape
------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+----------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`parameter of overriding method should be annotated with \_\_attribute\_\_((noescape))`|
+----------------------------------------------------------------------------------------------------------------------------+


-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:`'`|
+--------------------------------------------------------------------------------------------+

+-----------------------------------------------------------------------------------------------------------------------------------+
|:remark:`remark:` |nbsp| :diagtext:`could not acquire lock file for module '`:placeholder:`A`:diagtext:`':` |nbsp| :placeholder:`B`|
+-----------------------------------------------------------------------------------------------------------------------------------+

+---------------------------------------------------------------------------------------------------------------------+
|:remark:`remark:` |nbsp| :diagtext:`timed out waiting to acquire lock file for 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`|
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`module file '`:placeholder:`A`:diagtext:`' was validated as a system module and is now being imported as a non-system module; any difference in diagnostic options will be ignored`|
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-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:`'`|
+----------------------------------------------------------------------------------------------------------------+


-Rmodule-import
---------------
**Diagnostic text:**

+------------------------------------------------------------------------------------+-----------------------------------------------------------+-------------------------------------------------------+
|:remark:`remark:` |nbsp| :diagtext:`importing module '`:placeholder:`A`:diagtext:`'`|+---------------------------------------------------------+| |nbsp| :diagtext:`from '`:placeholder:`B`:diagtext:`'`|
|                                                                                    ||                                                         ||                                                       |
|                                                                                    |+---------------------------------------------------------+|                                                       |
|                                                                                    ||+-------------------------------------------------------+||                                                       |
|                                                                                    ||| |nbsp| :diagtext:`into '`:placeholder:`D`: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`_, `-Wframe-address`_, `-Wimplicit`_, `-Winfinite-recursion`_, `-Wint-in-bool-context`_, `-Wmismatched-tags`_, `-Wmissing-braces`_, `-Wmove`_, `-Wmultichar`_, `-Wobjc-designated-initializers`_, `-Wobjc-flexible-array`_, `-Wobjc-missing-super-calls`_, `-Woverloaded-virtual`_, `-Wprivate-extern`_, `-Wrange-loop-construct`_, `-Wreorder`_, `-Wreturn-type`_, `-Wself-assign`_, `-Wself-move`_, `-Wsizeof-array-argument`_, `-Wsizeof-array-decay`_, `-Wstring-plus-int`_, `-Wtautological-compare`_, `-Wtrigraphs`_, `-Wuninitialized`_, `-Wunknown-pragmas`_, `-Wunused`_, `-Wuser-defined-warnings`_, `-Wvolatile-register-var`_.


-Wmove
------
Controls `-Wpessimizing-move`_, `-Wredundant-move`_, `-Wreturn-std-move`_, `-Wself-move`_.


-Wmsvc-include
--------------
Synonym for `-Wmicrosoft-include`_.


-Wmsvc-not-found
----------------
This diagnostic is enabled by default.

**Diagnostic text:**

+-------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`unable to find a Visual Studio installation; try running Clang from a developer command prompt`|
+-------------------------------------------------------------------------------------------------------------------------------------+


-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`|
+----------------------------------------------------------------+


-Wnoderef
---------
This diagnostic is enabled by default.

**Diagnostic text:**

+----------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`dereferencing` |nbsp| :placeholder:`A`:diagtext:`; was declared with a 'noderef' type`|
+----------------------------------------------------------------------------------------------------------------------------+

+-----------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`dereferencing expression marked as 'noderef'`|
+-----------------------------------------------------------------------------------+

+-----------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`casting to dereferenceable pointer removes 'noderef' attribute`|
+-----------------------------------------------------------------------------------------------------+


-Wnoexcept-type
---------------
Synonym for `-Wc++17-compat-mangling`_.


-Wnon-c-typedef-for-linkage
---------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+-----------------------------------------------------------------------------------------------------------------+---------------------+----------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`anonymous non-C-compatible type given name for linkage purposes by` |nbsp| |+-------------------+| |nbsp| :diagtext:`declaration; add a tag name here`|
|                                                                                                                 ||:diagtext:`typedef`||                                                    |
|                                                                                                                 |+-------------------+|                                                    |
|                                                                                                                 ||:diagtext:`alias`  ||                                                    |
|                                                                                                                 |+-------------------+|                                                    |
+-----------------------------------------------------------------------------------------------------------------+---------------------+----------------------------------------------------+


-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:`': '`:placeholder:`B`: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:`': '`:placeholder:`B`: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-power-of-two-alignment
----------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`requested alignment is not a power of 2`|
+------------------------------------------------------------------------------+


-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`|
+---------------------------------------------------------------------------------------------------------------------+


-Wnontrivial-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 record` |nbsp| :placeholder:`C` |nbsp| :diagtext:`that is not trivial to` |nbsp| |+----------------------------------------+|
|                           ||:diagtext:`destination for`  ||                                                                                                                                                                         ||:diagtext:`primitive-default-initialize`||
|                           |+-----------------------------+|                                                                                                                                                                         |+----------------------------------------+|
|                           ||:diagtext:`source of`        ||                                                                                                                                                                         ||:diagtext:`primitive-copy`              ||
|                           |+-----------------------------+|                                                                                                                                                                         |+----------------------------------------+|
|                           ||:diagtext:`first operand of` ||                                                                                                                                                                         |                                          |
|                           |+-----------------------------+|                                                                                                                                                                         |                                          |
|                           ||:diagtext:`second operand of`||                                                                                                                                                                         |                                          |
|                           |+-----------------------------+|                                                                                                                                                                         |                                          |
+---------------------------+-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------+


-Wnsconsumed-mismatch
---------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+---------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`overriding method has mismatched ns\_consumed attribute on its parameter`|
+---------------------------------------------------------------------------------------------------------------+


-Wnsreturns-mismatch
--------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+-------------------------------------------------------------------------------------+---------------------------+------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`overriding method has mismatched ns\_returns\_`|+-------------------------+| |nbsp| :diagtext:`attributes`|
|                                                                                     ||:diagtext:`not\_retained`||                              |
|                                                                                     |+-------------------------+|                              |
|                                                                                     ||:diagtext:`retained`     ||                              |
|                                                                                     |+-------------------------+|                              |
+-------------------------------------------------------------------------------------+---------------------------+------------------------------+


-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`|
+---------------------------------------------------------------------------------------------------------+


-Wnull-pointer-arithmetic
-------------------------
**Diagnostic text:**

+--------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`arithmetic on a null pointer treated as a cast from integer to pointer is a GNU extension`|
+--------------------------------------------------------------------------------------------------------------------------------+

+-------------------------------------------------------------------------------------------------------------+----------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`performing pointer arithmetic on a null pointer has undefined behavior`|+--------------------------------------------+|
|                                                                                                             ||                                            ||
|                                                                                                             |+--------------------------------------------+|
|                                                                                                             || |nbsp| :diagtext:`if the offset is nonzero`||
|                                                                                                             |+--------------------------------------------+|
+-------------------------------------------------------------------------------------------------------------+----------------------------------------------+


-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.

Also controls `-Wnullability-completeness-on-arrays`_.

**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-completeness-on-arrays
------------------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+----------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`array parameter is missing a nullability type specifier (\_Nonnull, \_Nullable, or \_Null\_unspecified)`|
+----------------------------------------------------------------------------------------------------------------------------------------------+


-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`|
+---------------------------------------------------------------------------------------------------------------------------------+


-Wnullability-inferred-on-nested-type
-------------------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+--------------------------------------------------------------------------------------------+-----------------------+---------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`inferring '\_Nonnull' for pointer type within` |nbsp| |+---------------------+| |nbsp| :diagtext:`is deprecated`|
|                                                                                            ||:diagtext:`array`    ||                                 |
|                                                                                            |+---------------------+|                                 |
|                                                                                            ||:diagtext:`reference`||                                 |
|                                                                                            |+---------------------+|                                 |
+--------------------------------------------------------------------------------------------+-----------------------+---------------------------------+


-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-bool-constant-conversion
-------------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`implicit conversion from constant value` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to 'BOOL'; the only well defined values for 'BOOL' are YES and NO`|
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-Wobjc-boxing
-------------
This diagnostic is enabled by default.

**Diagnostic text:**

+-------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`string is ill-formed as UTF-8 and will become a null` |nbsp| :placeholder:`A` |nbsp| :diagtext:`when boxed`|
+-------------------------------------------------------------------------------------------------------------------------------------------------+


-Wobjc-circular-container
-------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`adding` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :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-flexible-array
---------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`field` |nbsp| :placeholder:`A` |nbsp| :diagtext:`can overwrite instance variable` |nbsp| :placeholder:`B` |nbsp| :diagtext:`with variable sized type` |nbsp| :placeholder:`C` |nbsp| :diagtext:`in superclass` |nbsp| :placeholder:`D`|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`field` |nbsp| :placeholder:`A` |nbsp| :diagtext:`with variable sized type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is not visible to subclasses and can conflict with their instance variables`|
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-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-messaging-id
-------------------
**Diagnostic text:**

+---------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`messaging unqualified id`|
+---------------------------------------------------------------+


-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-assign-on-object-type
-------------------------------------
**Diagnostic text:**

+--------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'assign' property of object type may become a dangling reference; consider using 'unsafe\_unretained'`|
+--------------------------------------------------------------------------------------------------------------------------------------------+


-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 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-signed-char-bool
-----------------------
Some of the diagnostics controlled by this flag are enabled by default.

Controls `-Wobjc-bool-constant-conversion`_, `-Wobjc-signed-char-bool-implicit-float-conversion`_, `-Wobjc-signed-char-bool-implicit-int-conversion`_, `-Wtautological-objc-bool-compare`_.


-Wobjc-signed-char-bool-implicit-float-conversion
-------------------------------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+----------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`implicit conversion from floating-point type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to 'BOOL'`|
+----------------------------------------------------------------------------------------------------------------------------------------+


-Wobjc-signed-char-bool-implicit-int-conversion
-----------------------------------------------
**Diagnostic text:**

+----------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`implicit conversion from integral type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to 'BOOL'`|
+----------------------------------------------------------------------------------------------------------------------------------+


-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`|
+-------------------------------------------------------------------------------------------------------------------------+


-Wobjc-unsafe-perform-selector
------------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+-------------------------------------------------------------------------------------------------------------------+--------------------+------------------------+
|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is incompatible with selectors that return a` |nbsp| |+------------------+| |nbsp| :diagtext:`type`|
|                                                                                                                   ||:diagtext:`struct`||                        |
|                                                                                                                   |+------------------+|                        |
|                                                                                                                   ||:diagtext:`union` ||                        |
|                                                                                                                   |+------------------+|                        |
|                                                                                                                   ||:diagtext:`vector`||                        |
|                                                                                                                   |+------------------+|                        |
+-------------------------------------------------------------------------------------------------------------------+--------------------+------------------------+


-Wodr
-----
This diagnostic is enabled by default.

**Diagnostic text:**

+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`template parameter lists have a different number of parameters (`:placeholder:`A` |nbsp| :diagtext:`vs` |nbsp| :placeholder:`B`:diagtext:`)`|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

+------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`template parameter has different kinds in different translation units`|
+------------------------------------------------------------------------------------------------------------+

+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`field` |nbsp| :placeholder:`A` |nbsp| :diagtext:`declared with incompatible types in different translation units (`:placeholder:`B` |nbsp| :diagtext:`vs.` |nbsp| :placeholder:`C`:diagtext:`)`|
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`external function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`declared with incompatible types in different translation units (`:placeholder:`B` |nbsp| :diagtext:`vs.` |nbsp| :placeholder:`C`:diagtext:`)`|
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`instance variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`declared with incompatible types in different translation units (`:placeholder:`B` |nbsp| :diagtext:`vs.` |nbsp| :placeholder:`C`:diagtext:`)`|
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`non-type template parameter declared with incompatible types in different translation units (`:placeholder:`A` |nbsp| :diagtext:`vs.` |nbsp| :placeholder:`B`:diagtext:`)`|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

+---------------------------+----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| |+--------------------+| |nbsp| :diagtext:`method` |nbsp| :placeholder:`B` |nbsp| :diagtext:`has a different number of parameters in different translation units (`:placeholder:`C` |nbsp| :diagtext:`vs.` |nbsp| :placeholder:`D`:diagtext:`)`|
|                           ||:diagtext:`class`   ||                                                                                                                                                                                                                       |
|                           |+--------------------+|                                                                                                                                                                                                                       |
|                           ||:diagtext:`instance`||                                                                                                                                                                                                                       |
|                           |+--------------------+|                                                                                                                                                                                                                       |
+---------------------------+----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

+---------------------------+----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| |+--------------------+| |nbsp| :diagtext:`method` |nbsp| :placeholder:`B` |nbsp| :diagtext:`has a parameter with a different types in different translation units (`:placeholder:`C` |nbsp| :diagtext:`vs.` |nbsp| :placeholder:`D`:diagtext:`)`|
|                           ||:diagtext:`class`   ||                                                                                                                                                                                                                         |
|                           |+--------------------+|                                                                                                                                                                                                                         |
|                           ||:diagtext:`instance`||                                                                                                                                                                                                                         |
|                           |+--------------------+|                                                                                                                                                                                                                         |
+---------------------------+----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

+---------------------------+----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| |+--------------------+| |nbsp| :diagtext:`method` |nbsp| :placeholder:`B` |nbsp| :diagtext:`has incompatible result types in different translation units (`:placeholder:`C` |nbsp| :diagtext:`vs.` |nbsp| :placeholder:`D`:diagtext:`)`|
|                           ||:diagtext:`class`   ||                                                                                                                                                                                                                |
|                           |+--------------------+|                                                                                                                                                                                                                |
|                           ||:diagtext:`instance`||                                                                                                                                                                                                                |
|                           |+--------------------+|                                                                                                                                                                                                                |
+---------------------------+----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

+---------------------------+----------------------+-------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| |+--------------------+| |nbsp| :diagtext:`method` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is variadic in one translation unit and not variadic in another`|
|                           ||:diagtext:`class`   ||                                                                                                                                     |
|                           |+--------------------+|                                                                                                                                     |
|                           ||:diagtext:`instance`||                                                                                                                                     |
|                           |+--------------------+|                                                                                                                                     |
+---------------------------+----------------------+-------------------------------------------------------------------------------------------------------------------------------------+

+----------------------------------------------------------------------------------------------------------------------+-------------------------+--------------------------------------------------+-------------------------+-----------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is implemented with` |nbsp| |+-----------------------+| |nbsp| :diagtext:`in one translation but` |nbsp| |+-----------------------+| |nbsp| :diagtext:`in another translation unit`|
|                                                                                                                      ||:diagtext:`@synthesize`||                                                  ||:diagtext:`@dynamic`   ||                                               |
|                                                                                                                      |+-----------------------+|                                                  |+-----------------------+|                                               |
|                                                                                                                      ||:diagtext:`@dynamic`   ||                                                  ||:diagtext:`@synthesize`||                                               |
|                                                                                                                      |+-----------------------+|                                                  |+-----------------------+|                                               |
+----------------------------------------------------------------------------------------------------------------------+-------------------------+--------------------------------------------------+-------------------------+-----------------------------------------------+

+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`declared with incompatible types in different translation units (`:placeholder:`B` |nbsp| :diagtext:`vs.` |nbsp| :placeholder:`C`:diagtext:`)`|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

+---------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`class` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has incompatible superclasses`|
+---------------------------------------------------------------------------------------------------------------------+

+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is synthesized to different ivars in different translation units (`:placeholder:`B` |nbsp| :diagtext:`vs.` |nbsp| :placeholder:`C`:diagtext:`)`|
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

+------------------------------------------------------------------------------------+-------------------+----------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`parameter kind mismatch; parameter is` |nbsp| |+-----------------+| |nbsp| :diagtext:`parameter pack`|
|                                                                                    ||:diagtext:`not a`||                                  |
|                                                                                    |+-----------------+|                                  |
|                                                                                    ||:diagtext:`a`    ||                                  |
|                                                                                    |+-----------------+|                                  |
+------------------------------------------------------------------------------------+-------------------+----------------------------------+

+--------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has incompatible definitions in different translation units`|
+--------------------------------------------------------------------------------------------------------------------------------------------------+

+-----------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`external variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`defined in multiple translation units`|
+-----------------------------------------------------------------------------------------------------------------------------------------+

+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`external variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`declared with incompatible types in different translation units (`:placeholder:`B` |nbsp| :diagtext:`vs.` |nbsp| :placeholder:`C`:diagtext:`)`|
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-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
--------
Some of the diagnostics controlled by this flag are enabled by default.

Controls `-Wopenmp-clauses`_, `-Wopenmp-loop-form`_, `-Wopenmp-mapping`_, `-Wopenmp-target`_, `-Wsource-uses-openmp`_.


-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:`allocator with the 'thread' trait access has unspecified behavior on '`:placeholder:`A`:diagtext:`' directive`|
+----------------------------------------------------------------------------------------------------------------------------------------------------+

+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`the context property '`:placeholder:`A`:diagtext:`' is not valid for the context selector '`:placeholder:`B`:diagtext:`' and the context set '`:placeholder:`C`:diagtext:`'; property ignored`|
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`the context selector '`:placeholder:`A`:diagtext:`' in the context set '`:placeholder:`B`:diagtext:`' cannot have a score ('`:placeholder:`C`:diagtext:`'); score ignored`|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`the context selector '`:placeholder:`A`:diagtext:`' is not valid for the context set '`:placeholder:`B`:diagtext:`'; selector ignored`|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`the context selector '`:placeholder:`A`:diagtext:`' in context set '`:placeholder:`B`:diagtext:`' requires a context property defined in parentheses; selector ignored`|
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

+----------------------------------------------------------+----------------------+------------------------------------------------------------------------------------------------------------------------+----------------------+---------------------------+
|:warning:`warning:` |nbsp| :diagtext:`the context` |nbsp| |+--------------------+| |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' was used already in the same 'omp declare variant' directive;` |nbsp| |+--------------------+| |nbsp| :diagtext:`ignored`|
|                                                          ||:diagtext:`set`     ||                                                                                                                        ||:diagtext:`set`     ||                           |
|                                                          |+--------------------+|                                                                                                                        |+--------------------+|                           |
|                                                          ||:diagtext:`selector`||                                                                                                                        ||:diagtext:`selector`||                           |
|                                                          |+--------------------+|                                                                                                                        |+--------------------+|                           |
|                                                          ||:diagtext:`property`||                                                                                                                        ||:diagtext:`property`||                           |
|                                                          |+--------------------+|                                                                                                                        |+--------------------+|                           |
+----------------------------------------------------------+----------------------+------------------------------------------------------------------------------------------------------------------------+----------------------+---------------------------+

+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' is not a valid context property for the context selector '`:placeholder:`B`:diagtext:`' and the context set '`:placeholder:`C`:diagtext:`'; property ignored`|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' is not a valid context selector for the context set '`:placeholder:`B`:diagtext:`'; selector ignored`|
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

+--------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' is not a valid context set in a \`declare variant\`; set ignored`|
+--------------------------------------------------------------------------------------------------------------------------------------+

+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`expected '`:placeholder:`A`:diagtext:`' after the` |nbsp| :placeholder:`B`:diagtext:`; '`:placeholder:`A`:diagtext:`' assumed`|
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+

+---------------------------------------------------------------------------------------------------------+----------------------+---------------------+----------------------+---------------------------+
|:warning:`warning:` |nbsp| :diagtext:`expected identifier or string literal describing a context` |nbsp| |+--------------------+|:diagtext:`;` |nbsp| |+--------------------+| |nbsp| :diagtext:`skipped`|
|                                                                                                         ||:diagtext:`set`     ||                     ||:diagtext:`set`     ||                           |
|                                                                                                         |+--------------------+|                     |+--------------------+|                           |
|                                                                                                         ||:diagtext:`selector`||                     ||:diagtext:`selector`||                           |
|                                                                                                         |+--------------------+|                     |+--------------------+|                           |
|                                                                                                         ||:diagtext:`property`||                     ||:diagtext:`property`||                           |
|                                                                                                         |+--------------------+|                     |+--------------------+|                           |
+---------------------------------------------------------------------------------------------------------+----------------------+---------------------+----------------------+---------------------------+

+---------------------------------------------------------------------------------+---------------------------------------------------+-------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`zero linear step (`:placeholder:`A` |nbsp| |+-------------------------------------------------+|:diagtext:`should probably be const)`|
|                                                                                 ||                                                 ||                                     |
|                                                                                 |+-------------------------------------------------+|                                     |
|                                                                                 ||:diagtext:`and other variables in clause` |nbsp| ||                                     |
|                                                                                 |+-------------------------------------------------+|                                     |
+---------------------------------------------------------------------------------+---------------------------------------------------+-------------------------------------+

+---------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`more than one 'device\_type' clause is specified`|
+---------------------------------------------------------------------------------------+

+---------------------------------------------------------------------------+----------------------------------------------+-----------------------------------------------------------+----------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`allocate directive specifies` |nbsp| |+--------------------------------------------+| |nbsp| :diagtext:`allocator while previously used` |nbsp| |+--------------------------------------------+|
|                                                                           ||:diagtext:`default`                         ||                                                           ||:diagtext:`default`                         ||
|                                                                           |+--------------------------------------------+|                                                           |+--------------------------------------------+|
|                                                                           ||+------------------------------------------+||                                                           ||+------------------------------------------+||
|                                                                           |||:diagtext:`'`:placeholder:`B`:diagtext:`'`|||                                                           |||:diagtext:`'`:placeholder:`D`:diagtext:`'`|||
|                                                                           ||+------------------------------------------+||                                                           ||+------------------------------------------+||
|                                                                           |+--------------------------------------------+|                                                           |+--------------------------------------------+|
+---------------------------------------------------------------------------+----------------------------------------------+-----------------------------------------------------------+----------------------------------------------+


-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-mapping
----------------
This diagnostic is enabled by default.

**Diagnostic text:**

+----------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`Type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not trivially copyable and not guaranteed to be mapped correctly`|
+----------------------------------------------------------------------------------------------------------------------------------------------------------+


-Wopenmp-target
---------------
This diagnostic is enabled by default.

Also controls `-Wopenmp-mapping`_.

**Diagnostic text:**

+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`The OpenMP offloading target '`:placeholder:`A`:diagtext:`' is similar to target '`:placeholder:`B`:diagtext:`' already specified - will be ignored.`|
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`No library '`:placeholder:`A`:diagtext:`' found in the default clang lib directory or in LIBRARY\_PATH. Expect degraded performance due to no inlining of runtime functions on target devices.`|
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

+-----------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`declaration marked as declare target after first use, it may lead to incorrect results`|
+-----------------------------------------------------------------------------------------------------------------------------+

+-----------------------------------------------------------------------------------------------+
|: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 '-ffine-grained-bitfield-accesses' cannot be enabled together with a sanitizer; flag ignored`|
+------------------------------------------------------------------------------------------------------------------------------------------+

+-------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`The '`:placeholder:`A`:diagtext:`' architecture does not support -moutline; flag ignored`|
+-------------------------------------------------------------------------------------------------------------------------------+

+----------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`option '`:placeholder:`A`:diagtext:`' was ignored by the PS4 toolchain, using '-fPIC'`|
+----------------------------------------------------------------------------------------------------------------------------+

+-------------------------------------------------------------------------------------------------------------------+-------------------------------------------+----------------------+
|:warning:`warning:` |nbsp| :diagtext:`ignoring '-mlong-calls' option as it is not currently supported with` |nbsp| |+-----------------------------------------+|:diagtext:`-mabicalls`|
|                                                                                                                   ||                                         ||                      |
|                                                                                                                   |+-----------------------------------------+|                      |
|                                                                                                                   ||:diagtext:`the implicit usage of` |nbsp| ||                      |
|                                                                                                                   |+-----------------------------------------+|                      |
+-------------------------------------------------------------------------------------------------------------------+-------------------------------------------+----------------------+

+-----------------------------------------------------------------------------------------------------------------------+-------------------------------+----------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ignoring '`:placeholder:`A`:diagtext:`' option as it cannot be used with` |nbsp| |+-----------------------------+| |nbsp| :diagtext:`-mabicalls and the N64 ABI`|
|                                                                                                                       ||:diagtext:`implicit usage of`||                                              |
|                                                                                                                       |+-----------------------------+|                                              |
|                                                                                                                       ||                             ||                                              |
|                                                                                                                       |+-----------------------------+|                                              |
+-----------------------------------------------------------------------------------------------------------------------+-------------------------------+----------------------------------------------+

+-----------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ignoring '-msmall-data-limit=' with -mcmodel=large for -fpic or RV64`|
+-----------------------------------------------------------------------------------------------------------+

+----------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`auto-vectorization requires HVX, use -mhvx to enable it`|
+----------------------------------------------------------------------------------------------+


-Wordered-compare-function-pointers
-----------------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ordered comparison of function pointers (`:placeholder:`A` |nbsp| :diagtext:`and` |nbsp| :placeholder:`B`:diagtext:`)`|
+------------------------------------------------------------------------------------------------------------------------------------------------------------+


-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`|
+-------------------------------------------------------------------------------------------+


-Wout-of-scope-function
-----------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+-------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`use of out-of-scope declaration of` |nbsp| :placeholder:`A`|+-------------------------------------------------------------------------------------+|
|                                                                                                 ||                                                                                     ||
|                                                                                                 |+-------------------------------------------------------------------------------------+|
|                                                                                                 || |nbsp| :diagtext:`whose type is not compatible with that of an implicit declaration`||
|                                                                                                 |+-------------------------------------------------------------------------------------+|
+-------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------+


-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-init
---------------
Synonym for `-Winitializer-overrides`_.


-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
-------------
Some of the diagnostics controlled by this flag are enabled by default.

Also controls `-Wbitwise-conditional-parentheses`_, `-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`_, `-Wc++20-designator`_, `-Wc11-extensions`_, `-Wcomplex-component-init`_, `-Wdeclaration-after-statement`_, `-Wdollar-in-identifier-extension`_, `-Wembedded-directive`_, `-Wempty-translation-unit`_, `-Wfixed-enum-extension`_, `-Wflexible-array-extensions`_, `-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-value`_, `-Wmicrosoft-fixed-enum`_, `-Wmicrosoft-flexible-array`_, `-Wmicrosoft-redeclare-static`_, `-Wnested-anon-types`_, `-Wnullability-extension`_, `-Woverlength-strings`_, `-Wretained-language-linkage`_, `-Wundefined-internal-type`_, `-Wvla-extension`_, `-Wzero-length-array`_.

**Diagnostic text:**

+-----------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`duplicate '`:placeholder:`A`:diagtext:`' declaration specifier`|
+-----------------------------------------------------------------------------------------------------+

+------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'enable\_if' is a clang extension`|
+------------------------------------------------------------------------+

+--------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'diagnose\_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:`ISO C++ requires the name after '::~' to be found in the same scope as the name before '::~'`|
+-----------------------------------------------------------------------------------------------------------------------------------+

+----------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ISO C++ considers this destructor name lookup to be ambiguous`|
+----------------------------------------------------------------------------------------------------+

+--------------------------------------------------------------------+------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+
|: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:`initializing statement expression result`||                                                                                                                                          |
|                                                                    |+----------------------------------------------------+|                                                                                                                                          |
|                                                                    ||:diagtext:`throwing object`                         ||                                                                                                                                          |
|                                                                    |+----------------------------------------------------+|                                                                                                                                          |
|                                                                    ||:diagtext:`copying member subobject`                ||                                                                                                                                          |
|                                                                    |+----------------------------------------------------+|                                                                                                                                          |
|                                                                    ||:diagtext:`copying array element`                   ||                                                                                                                                          |
|                                                                    |+----------------------------------------------------+|                                                                                                                                          |
|                                                                    ||:diagtext:`allocating object`                       ||                                                                                                                                          |
|                                                                    |+----------------------------------------------------+|                                                                                                                                          |
|                                                                    ||:diagtext:`copying temporary`                       ||                                                                                                                                          |
|                                                                    |+----------------------------------------------------+|                                                                                                                                          |
|                                                                    ||:diagtext:`initializing base subobject`             ||                                                                                                                                          |
|                                                                    |+----------------------------------------------------+|                                                                                                                                          |
|                                                                    ||:diagtext:`initializing vector element`             ||                                                                                                                                          |
|                                                                    |+----------------------------------------------------+|                                                                                                                                          |
|                                                                    ||:diagtext:`capturing value`                         ||                                                                                                                                          |
|                                                                    |+----------------------------------------------------+|                                                                                                                                          |
+--------------------------------------------------------------------+------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+

+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ISO C++ standards before C++17 do not allow new expression for type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to use list-initialization`|
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

+--------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`parameter` |nbsp| :placeholder:`A` |nbsp| :diagtext:`was not declared, defaulting to type 'int'`|
+--------------------------------------------------------------------------------------------------------------------------------------+

+--------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`invoking a pointer to a 'const &' member function on an rvalue is a C++20 extension`|
+--------------------------------------------------------------------------------------------------------------------------+

+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`qualifier in explicit instantiation of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`requires a template-id (a typedef is not permitted)`|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

+-----------------------------------------------------+----------------------+-----------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`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`                              ||                                |
|                                                               |+---------------------------------------------------+|                                |
|                                                               ||:diagtext:`\_\_builtin\_omp\_required\_simd\_align`||                                |
|                                                               |+---------------------------------------------------+|                                |
|                                                               ||:diagtext:`\_\_alignof`                            ||                                |
|                                                               |+---------------------------------------------------+|                                |
+---------------------------------------------------------------+-----------------------------------------------------+--------------------------------+

+---------------------------------------------------------------+-----------------------------------------------------+----------------------------+
|:warning:`warning:` |nbsp| :diagtext:`invalid application of '`|+---------------------------------------------------+|:diagtext:`' to a void type`|
|                                                               ||:diagtext:`sizeof`                                 ||                            |
|                                                               |+---------------------------------------------------+|                            |
|                                                               ||:diagtext:`alignof`                                ||                            |
|                                                               |+---------------------------------------------------+|                            |
|                                                               ||:diagtext:`vec\_step`                              ||                            |
|                                                               |+---------------------------------------------------+|                            |
|                                                               ||:diagtext:`\_\_builtin\_omp\_required\_simd\_align`||                            |
|                                                               |+---------------------------------------------------+|                            |
|                                                               ||:diagtext:`\_\_alignof`                            ||                            |
|                                                               |+---------------------------------------------------+|                            |
+---------------------------------------------------------------+-----------------------------------------------------+----------------------------+

+-------------------------------------------------------------------------------------------+
|: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++17 extension`|
+---------------------------------------------------------------------------------------------------------------------------+

+---------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`use of the` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute is a C++20 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:`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:`void` |nbsp| |+--------------------+| |nbsp| :placeholder:`A` |nbsp| :diagtext:`should not return void expression`|
|                                                   ||:diagtext:`function`||                                                                             |
|                                                   |+--------------------+|                                                                             |
|                                                   ||:diagtext:`method`  ||                                                                             |
|                                                   |+--------------------+|                                                                             |
|                                                   ||:diagtext:`block`   ||                                                                             |
|                                                   |+--------------------+|                                                                             |
+---------------------------------------------------+----------------------+-----------------------------------------------------------------------------+

+---------------------------+----------------------------------+------------------------------+-----------------------+----------------------------+
|: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:`'`:placeholder:`A`:diagtext:`' is a C99 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:`attributes on` |nbsp| |+-------------------------+| |nbsp| :diagtext:`declaration are a C++17 extension`|
|                                                            ||:diagtext:`a namespace`  ||                                                     |
|                                                            |+-------------------------+|                                                     |
|                                                            ||:diagtext:`an enumerator`||                                                     |
|                                                            |+-------------------------+|                                                     |
+------------------------------------------------------------+---------------------------+-----------------------------------------------------+

+-----------------------------------------------------------------------------+
|: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++17 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:`variadic macros are a C99 feature`|
+------------------------------------------------------------------------+

+--------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`named variadic macros are a GNU extension`|
+--------------------------------------------------------------------------------+

+------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`empty macro arguments are a C99 feature`|
+------------------------------------------------------------------------------+

+--------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`variadic macros are a Clang extension in OpenCL`|
+--------------------------------------------------------------------------------------+

+----------------------------------------------------------------------------------------------------------------------------------------+
|: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`                              ||                                |
|                                                               |+---------------------------------------------------+|                                |
|                                                               ||:diagtext:`\_\_builtin\_omp\_required\_simd\_align`||                                |
|                                                               |+---------------------------------------------------+|                                |
|                                                               ||:diagtext:`\_\_alignof`                            ||                                |
|                                                               |+---------------------------------------------------+|                                |
+---------------------------------------------------------------+-----------------------------------------------------+--------------------------------+

+---------------------------------------------------------------+-----------------------------------------------------+----------------------------+
|:warning:`warning:` |nbsp| :diagtext:`invalid application of '`|+---------------------------------------------------+|:diagtext:`' to a void type`|
|                                                               ||:diagtext:`sizeof`                                 ||                            |
|                                                               |+---------------------------------------------------+|                            |
|                                                               ||:diagtext:`alignof`                                ||                            |
|                                                               |+---------------------------------------------------+|                            |
|                                                               ||:diagtext:`vec\_step`                              ||                            |
|                                                               |+---------------------------------------------------+|                            |
|                                                               ||:diagtext:`\_\_builtin\_omp\_required\_simd\_align`||                            |
|                                                               |+---------------------------------------------------+|                            |
|                                                               ||:diagtext:`\_\_alignof`                            ||                            |
|                                                               |+---------------------------------------------------+|                            |
+---------------------------------------------------------------+-----------------------------------------------------+----------------------------+

+-----------------------------------------------------------------------------------------------------------------------------------------------------+
|: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-compare
-----------------
This diagnostic is enabled by default.

**Diagnostic text:**

+---------------------------------------------------------------------------------------------------------------------------+------------------------+-------------+
|:warning:`warning:` |nbsp| :diagtext:`comparing a pointer to a null character constant; did you mean to compare to` |nbsp| |+----------------------+|:diagtext:`?`|
|                                                                                                                           ||:diagtext:`NULL`      ||             |
|                                                                                                                           |+----------------------+|             |
|                                                                                                                           ||:diagtext:`(void \*)0`||             |
|                                                                                                                           |+----------------------+|             |
+---------------------------------------------------------------------------------------------------------------------------+------------------------+-------------+


-Wpointer-integer-compare
-------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`comparison between pointer and integer (`:placeholder:`A` |nbsp| :diagtext:`and` |nbsp| :placeholder:`B`:diagtext:`)`|
+-----------------------------------------------------------------------------------------------------------------------------------------------------------+


-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-enum-cast
----------------------
This diagnostic is enabled by default.

Also controls `-Wvoid-pointer-to-enum-cast`_.

**Diagnostic text:**

+-------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`cast to smaller integer type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`from` |nbsp| :placeholder:`A`|
+-------------------------------------------------------------------------------------------------------------------------------------------+


-Wpointer-to-int-cast
---------------------
This diagnostic is enabled by default.

Also controls `-Wpointer-to-enum-cast`_, `-Wvoid-pointer-to-int-cast`_.

**Diagnostic text:**

+-------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`cast to smaller integer type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`from` |nbsp| :placeholder:`A`|
+-------------------------------------------------------------------------------------------------------------------------------------------+


-Wpointer-to-int-cast
---------------------
This diagnostic is enabled by default.

Also controls `-Wpointer-to-enum-cast`_, `-Wvoid-pointer-to-int-cast`_.

**Diagnostic text:**

+-------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`cast to smaller integer type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`from` |nbsp| :placeholder:`A`|
+-------------------------------------------------------------------------------------------------------------------------------------------+


-Wpointer-type-mismatch
-----------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`pointer type mismatch`|
+------------------------------------------------------------+


-Wpoison-system-directories
---------------------------
**Diagnostic text:**

+----------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`include location '`:placeholder:`A`:diagtext:`' is unsafe for cross-compilation`|
+----------------------------------------------------------------------------------------------------------------------+


-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-clang-attribute
------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+-------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`unused attribute` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in '#pragma clang attribute push' region`|
+-------------------------------------------------------------------------------------------------------------------------------------------+


-Wpragma-once-outside-header
----------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+----------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`#pragma once in main file`|
+----------------------------------------------------------------+


-Wpragma-pack
-------------
Some of the diagnostics controlled by this flag are enabled by default.

Also controls `-Wpragma-pack-suspicious-include`_.

**Diagnostic text:**

+----------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`the current #pragma pack alignment value is modified in the included file`|
+----------------------------------------------------------------------------------------------------------------+

+---------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`unterminated '#pragma pack (push, ...)' at end of file`|
+---------------------------------------------------------------------------------------------+


-Wpragma-pack-suspicious-include
--------------------------------
**Diagnostic text:**

+-------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`non-default #pragma pack value changes the alignment of struct or union members in the included 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`_, `-Wpragma-clang-attribute`_, `-Wpragma-pack`_, `-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:`'`|
+----------------------------------------------------------------------------------------------------------------+


-Wprivate-module
----------------
This diagnostic is enabled by default.

**Diagnostic text:**

+----------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`expected canonical name for private module '`:placeholder:`A`:diagtext:`'`|
+----------------------------------------------------------------------------------------------------------------+

+----------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`private submodule '`:placeholder:`A`:diagtext:`' in private module map, expected top-level module`|
+----------------------------------------------------------------------------------------------------------------------------------------+

+----------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`module '`:placeholder:`A`:diagtext:`' already re-exported as '`:placeholder:`B`:diagtext:`'`|
+----------------------------------------------------------------------------------------------------------------------------------+

+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`no submodule named` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in module '`:placeholder:`B`:diagtext:`'; using top level '`:placeholder:`C`:diagtext:`'`|
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-Wprofile-instr-missing
-----------------------
**Diagnostic text:**

+-----------------------------------------------------------------------------------------------------------------------------+---------------+---------------------------------------------+------------------+---------------------------+
|:warning:`warning:` |nbsp| :diagtext:`profile data may be incomplete: of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`function`|+-------------+|:diagtext:`,` |nbsp| :placeholder:`B` |nbsp| |+----------------+| |nbsp| :diagtext:`no data`|
|                                                                                                                             ||             ||                                             ||:diagtext:`has` ||                           |
|                                                                                                                             |+-------------+|                                             |+----------------+|                           |
|                                                                                                                             ||:diagtext:`s`||                                             ||:diagtext:`have`||                           |
|                                                                                                                             |+-------------+|                                             |+----------------+|                           |
+-----------------------------------------------------------------------------------------------------------------------------+---------------+---------------------------------------------+------------------+---------------------------+


-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:`mismatched data that will be ignored`|
|                                                                                                                              ||             ||                                             ||:diagtext:`has` ||                                                        |
|                                                                                                                              |+-------------+|                                             |+----------------+|                                                        |
|                                                                                                                              ||:diagtext:`s`||                                             ||: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` |nbsp| |+--------------------------------------------------------------+| |nbsp| :diagtext:`was selected for synthesis`|
|                                                       ||+-------------------------------------------+                 ||                                              |
|                                                       |||:diagtext:`of type` |nbsp| :placeholder:`B`|                 ||                                              |
|                                                       ||+-------------------------------------------+                 ||                                              |
|                                                       |+--------------------------------------------------------------+|                                              |
|                                                       ||+---------------------------------------------------------+   ||                                              |
|                                                       |||:diagtext:`with attribute '`:placeholder:`B`:diagtext:`'`|   ||                                              |
|                                                       ||+---------------------------------------------------------+   ||                                              |
|                                                       |+--------------------------------------------------------------+|                                              |
|                                                       ||+------------------------------------------------------------+||                                              |
|                                                       |||:diagtext:`without attribute '`:placeholder:`B`:diagtext:`'`|||                                              |
|                                                       ||+------------------------------------------------------------+||                                              |
|                                                       |+--------------------------------------------------------------+|                                              |
|                                                       ||+-----------------------------------------------+             ||                                              |
|                                                       |||:diagtext:`with getter` |nbsp| :placeholder:`B`|             ||                                              |
|                                                       ||+-----------------------------------------------+             ||                                              |
|                                                       |+--------------------------------------------------------------+|                                              |
|                                                       ||+-----------------------------------------------+             ||                                              |
|                                                       |||:diagtext:`with setter` |nbsp| :placeholder:`B`|             ||                                              |
|                                                       ||+-----------------------------------------------+             ||                                              |
|                                                       |+--------------------------------------------------------------+|                                              |
+-------------------------------------------------------+----------------------------------------------------------------+----------------------------------------------+


-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`|
+---------------------------------------------------------------------------------------------------------+


-Wquoted-include-in-framework-header
------------------------------------
**Diagnostic text:**

+-------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`double-quoted include "`:placeholder:`A`:diagtext:`" in framework header, expected angle-bracketed instead`|
+-------------------------------------------------------------------------------------------------------------------------------------------------+


-Wrange-loop-analysis
---------------------
Controls `-Wrange-loop-bind-reference`_, `-Wrange-loop-construct`_.


-Wrange-loop-bind-reference
---------------------------
**Diagnostic text:**

+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`loop variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`binds to a temporary value produced by a range of type` |nbsp| :placeholder:`B`|
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-Wrange-loop-construct
----------------------
**Diagnostic text:**

+------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`loop variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`binds to a temporary constructed from a different type`|
+------------------------------------------------------------------------------------------------------------------------------------------------------+

+------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`loop variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`creates a copy from type` |nbsp| :placeholder:`B`|
+------------------------------------------------------------------------------------------------------------------------------------------------+


-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`|
+-------------------------------------------------------------------------+


-Wredundant-parens
------------------
**Diagnostic text:**

+-----------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`redundant parentheses surrounding declarator`|
+-----------------------------------------------------------------------------------+


-Wregister
----------
This diagnostic is enabled by default.

Also controls `-Wdeprecated-register`_.

**Diagnostic text:**

+----------------------------------------------------------------------------------------------+
|:error:`error:` |nbsp| :diagtext:`ISO C++17 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
---------
Some of the diagnostics controlled by this flag are enabled by default.

Controls `-Wreorder-ctor`_, `-Wreorder-init-list`_.


-Wreorder-ctor
--------------
**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` ||                        |
|                           |+----------------------+|                                                                             |+-----------------+|                        |
+---------------------------+------------------------+-----------------------------------------------------------------------------+-------------------+------------------------+


-Wreorder-init-list
-------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ISO C++ requires field designators to be specified in declaration order; field` |nbsp| :placeholder:`B` |nbsp| :diagtext:`will be initialized after field` |nbsp| :placeholder:`A`|
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-Wrequires-expression
---------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`this requires expression will only be checked for syntactic validity; did you intend to place it in a nested requirement? (add another 'requires' before the expression)`|
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-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` |nbsp| |+--------------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`returned`|
|                           ||:diagtext:`address of`  ||                                                        ||:diagtext:`local variable`||                                                    |
|                           |+------------------------+|                                                        |+--------------------------+|                                                    |
|                           ||:diagtext:`reference to`||                                                        ||:diagtext:`parameter`     ||                                                    |
|                           |+------------------------+|                                                        |+--------------------------+|                                                    |
+---------------------------+--------------------------+--------------------------------------------------------+----------------------------+----------------------------------------------------+


-Wreturn-std-move
-----------------
**Diagnostic text:**

+-------------------------------------------------------------------------------------------------------------------------------------+----------------------+---------------------------+
|:warning:`warning:` |nbsp| :diagtext:`local variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`will be copied despite being` |nbsp| |+--------------------+| |nbsp| :diagtext:`by name`|
|                                                                                                                                     ||:diagtext:`returned`||                           |
|                                                                                                                                     |+--------------------+|                           |
|                                                                                                                                     ||:diagtext:`thrown`  ||                           |
|                                                                                                                                     |+--------------------+|                           |
+-------------------------------------------------------------------------------------------------------------------------------------+----------------------+---------------------------+


-Wreturn-std-move-in-c++11
--------------------------
**Diagnostic text:**

+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`prior to the resolution of a defect report against ISO C++11, local variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`would have been copied despite being returned by name, due to its not matching the function return type`|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-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:`non-void coroutine does not return a value`|
+---------------------------------------------------------------------------------+

+--------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`non-void function does not return a value`|
+--------------------------------------------------------------------------------+

+------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`non-void lambda does not return a value`|
+------------------------------------------------------------------------------+

+------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`non-void coroutine does not return a value in all control paths`|
+------------------------------------------------------------------------------------------------------+

+-----------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`non-void function does not return a value in all control paths`|
+-----------------------------------------------------------------------------------------------------+

+---------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`non-void lambda does not return a value in all control paths`|
+---------------------------------------------------------------------------------------------------+

+---------------------------------------------------+----------------------+-----------------------------------------------------------------+
|: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`|
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-Wrewrite-not-bool
------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ISO C++20 requires return type of selected 'operator==' function for rewritten '`:placeholder:`B`:diagtext:`' comparison to be 'bool', not` |nbsp| :placeholder:`A`|
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-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 attribute is specified on redeclared variable`|
+--------------------------------------------------------------------------------------------+

+------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`duplicate code segment specifiers`|
+------------------------------------------------------------------------+

+---------------------------+---------------------+-------------------------------------------------------+
|:warning:`warning:` |nbsp| |+-------------------+| |nbsp| :diagtext:`does not match previous declaration`|
|                           ||:diagtext:`codeseg`||                                                       |
|                           |+-------------------+|                                                       |
|                           ||:diagtext:`section`||                                                       |
|                           |+-------------------+|                                                       |
+---------------------------+---------------------+-------------------------------------------------------+


-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`_, `-Wself-assign-overloaded`_.

**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-assign-overloaded
------------------------
**Diagnostic text:**

+------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`explicitly assigning value of variable of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to itself`|
+------------------------------------------------------------------------------------------------------------------------------------------+


-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`|             ||
|                                                                    ||+--------------------------------------------+             ||
|                                                                    |+-----------------------------------------------------------+|
|                                                                    ||+----------------------------------------------+           ||
|                                                                    |||:diagtext:`typedef in` |nbsp| :placeholder:`C`|           ||
|                                                                    ||+----------------------------------------------+           ||
|                                                                    |+-----------------------------------------------------------+|
|                                                                    ||+-------------------------------------------------+        ||
|                                                                    |||:diagtext:`type alias in` |nbsp| :placeholder:`C`|        ||
|                                                                    ||+-------------------------------------------------+        ||
|                                                                    |+-----------------------------------------------------------+|
+--------------------------------------------------------------------+-------------------------------------------------------------+


-Wshadow-all
------------
Some of the diagnostics controlled by this flag are enabled by default.

Controls `-Wshadow`_, `-Wshadow-field`_, `-Wshadow-field-in-constructor`_, `-Wshadow-uncaptured-local`_.


-Wshadow-field
--------------
**Diagnostic text:**

+---------------------------+------------------------------------+--------------------------------+--------------------------------------------------+----------------------------------------------------------------------+
|:warning:`warning:` |nbsp| |+----------------------------------+| |nbsp| :placeholder:`A` |nbsp| |+------------------------------------------------+|:diagtext:`shadows member inherited from type` |nbsp| :placeholder:`C`|
|                           ||:diagtext:`parameter`             ||                                ||                                                ||                                                                      |
|                           |+----------------------------------+|                                |+------------------------------------------------+|                                                                      |
|                           ||:diagtext:`non-static data member`||                                ||+----------------------------------------------+||                                                                      |
|                           |+----------------------------------+|                                |||:diagtext:`of` |nbsp| :placeholder:`B` |nbsp| |||                                                                      |
|                           |                                    |                                ||+----------------------------------------------+||                                                                      |
|                           |                                    |                                |+------------------------------------------------+|                                                                      |
+---------------------------+------------------------------------+--------------------------------+--------------------------------------------------+----------------------------------------------------------------------+


-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`|
+------------------------------------------------------------------------------------------------------------------------------+


-Wshadow-uncaptured-local
-------------------------
**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`|             ||
|                                                                    ||+--------------------------------------------+             ||
|                                                                    |+-----------------------------------------------------------+|
|                                                                    ||+----------------------------------------------+           ||
|                                                                    |||:diagtext:`typedef in` |nbsp| :placeholder:`C`|           ||
|                                                                    ||+----------------------------------------------+           ||
|                                                                    |+-----------------------------------------------------------+|
|                                                                    ||+-------------------------------------------------+        ||
|                                                                    |||:diagtext:`type alias in` |nbsp| :placeholder:`C`|        ||
|                                                                    ||+-------------------------------------------------+        ||
|                                                                    |+-----------------------------------------------------------+|
+--------------------------------------------------------------------+-------------------------------------------------------------+


-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`|
+---------------------------------------------------------------------------------------------------------------------------------------------+

+-----------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`the resulting value is always non-negative after implicit conversion`|
+-----------------------------------------------------------------------------------------------------------+


-Wsign-promo
------------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.

-Wsigned-enum-bitfield
----------------------
**Diagnostic text:**

+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`enums in the Microsoft ABI are signed integers by default; consider giving the enum` |nbsp| :placeholder:`A` |nbsp| :diagtext:`an unsigned underlying type to make this code portable`|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-Wsigned-unsigned-wchar
-----------------------
This diagnostic is an error by default, but the flag ``-Wno-signed-unsigned-wchar`` can be used to disable the error.

**Diagnostic text:**

+----------------------------------------------------------------------------------------------+
|:error:`error:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' cannot be signed or unsigned`|
+----------------------------------------------------------------------------------------------+


-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-array-div
------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`expression does not compute the number of elements in this array; element type is` |nbsp| :placeholder:`A`:diagtext:`, not` |nbsp| :placeholder:`B`|
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-Wsizeof-pointer-div
--------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+-------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' will return the size of the pointer, not the array itself`|
+-------------------------------------------------------------------------------------------------------------------------------+


-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`     ||                                                                                       |
|                                                                                                                                                                                                 |+-----------------------+|                                                                                       |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+---------------------------------------------------------------------------------------+


-Wslash-u-filename
------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+--------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'/U`:placeholder:`A`:diagtext:`' treated as the '/U' option`|
+--------------------------------------------------------------------------------------------------+


-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:`nesting \`omp begin/end declare variant\` is not supported yet; nested context ignored`|
+-----------------------------------------------------------------------------------------------------------------------------+

+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'#pragma omp declare variant' cannot be applied to the function that was defined already; the original function might be used`|
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+

+----------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'#pragma omp declare variant' cannot be applied for function after first usage; the original function might be used`|
+----------------------------------------------------------------------------------------------------------------------------------------------------------+

+------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`variant function in '#pragma omp declare variant' is itself marked as '#pragma omp declare variant'`|
+------------------------------------------------------------------------------------------------------------------------------------------+

+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`score expressions in the OpenMP context selector need to be constant;` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not and will be ignored`|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

+------------------------------------------------------------------------------------------------------------------------------+
|: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-exhausted
-----------------
This diagnostic is enabled by default.

**Diagnostic text:**

+----------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`stack nearly exhausted; compilation time may suffer, and crashes due to stack overflow are likely`|
+----------------------------------------------------------------------------------------------------------------------------------------+


-Wstack-protector
-----------------
This diagnostic is enabled by default.

**Diagnostic text:**

+-------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`Unable to protect inline asm that clobbers stack pointer against stack clash`|
+-------------------------------------------------------------------------------------------------------------------+


-Wstack-protector
-----------------
This diagnostic is enabled by default.

**Diagnostic text:**

+-------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`Unable to protect inline asm that clobbers stack pointer against stack clash`|
+-------------------------------------------------------------------------------------------------------------------+


-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`|
+----------------------------------------------------------------------------------------------------------------------------------------------------+


-Wstdlibcxx-not-found
---------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`include path for libstdc++ headers not found; pass '-stdlib=libc++' on the command line to use the libc++ standard library instead`|
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-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
-------------------
**Diagnostic text:**

+---------------------------------------------------+--------------------------------------------------------------+-------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`this` |nbsp| |+------------------------------------------------------------+| |nbsp| :diagtext:`a prototype`|
|                                                   ||:diagtext:`function declaration is not`                     ||                               |
|                                                   |+------------------------------------------------------------+|                               |
|                                                   ||:diagtext:`block declaration is not`                        ||                               |
|                                                   |+------------------------------------------------------------+|                               |
|                                                   ||:diagtext:`old-style function definition is not preceded by`||                               |
|                                                   |+------------------------------------------------------------+|                               |
+---------------------------------------------------+--------------------------------------------------------------+-------------------------------+


-Wstrict-prototypes
-------------------
**Diagnostic text:**

+---------------------------------------------------+--------------------------------------------------------------+-------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`this` |nbsp| |+------------------------------------------------------------+| |nbsp| :diagtext:`a prototype`|
|                                                   ||:diagtext:`function declaration is not`                     ||                               |
|                                                   |+------------------------------------------------------------+|                               |
|                                                   ||:diagtext:`block declaration is not`                        ||                               |
|                                                   |+------------------------------------------------------------+|                               |
|                                                   ||:diagtext:`old-style function definition is not preceded by`||                               |
|                                                   |+------------------------------------------------------------+|                               |
+---------------------------------------------------+--------------------------------------------------------------+-------------------------------+


-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 an explicit string comparison function 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`|
+--------------------------------------------------------------------------------------------------------------------------------+


-Wsuspicious-bzero
------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+----------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'size' argument to bzero is '0'`|
+----------------------------------------------------------------------+


-Wsuspicious-memaccess
----------------------
This diagnostic is enabled by default.

Controls `-Wdynamic-class-memaccess`_, `-Wmemset-transposed-args`_, `-Wnontrivial-memaccess`_, `-Wsizeof-pointer-memaccess`_, `-Wsuspicious-bzero`_.


-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`|                 ||
|                           ||+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+                 ||
|                           |+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|
|                           ||+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+||
|                           |||: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`|                 ||
|                           ||+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+                 ||
|                           |+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|
|                           ||+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+||
|                           |||: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-bitwise-compare
------------------------------
**Diagnostic text:**

+-------------------------------------------------------------------------------------+-------------------+
|:warning:`warning:` |nbsp| :diagtext:`bitwise comparison always evaluates to` |nbsp| |+-----------------+|
|                                                                                     ||:diagtext:`false`||
|                                                                                     |+-----------------+|
|                                                                                     ||:diagtext:`true` ||
|                                                                                     |+-----------------+|
+-------------------------------------------------------------------------------------+-------------------+

+----------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`bitwise or with non-zero value always evaluates to true`|
+----------------------------------------------------------------------------------------------+


-Wtautological-compare
----------------------
Some of the diagnostics controlled by this flag are enabled by default.

Also controls `-Wtautological-bitwise-compare`_, `-Wtautological-constant-compare`_, `-Wtautological-objc-bool-compare`_, `-Wtautological-overlap-compare`_, `-Wtautological-pointer-compare`_, `-Wtautological-undefined-compare`_.

**Diagnostic text:**

+---------------------------+---------------------------------------------------------------+----------------------------------------+-------------------------+
|:warning:`warning:` |nbsp| |+-------------------------------------------------------------+| |nbsp| :diagtext:`to 1 byte is` |nbsp| |+-----------------------+|
|                           ||:diagtext:`aligning a value`                                 ||                                        ||:diagtext:`a no-op`    ||
|                           |+-------------------------------------------------------------+|                                        |+-----------------------+|
|                           ||:diagtext:`the result of checking whether a value is aligned`||                                        ||:diagtext:`always true`||
|                           |+-------------------------------------------------------------+|                                        |+-----------------------+|
+---------------------------+---------------------------------------------------------------+----------------------------------------+-------------------------+

+---------------------------+---------------------------+--------------------------------------------------+--------------------------------------------+
|:warning:`warning:` |nbsp| |+-------------------------+|:diagtext:`comparison always evaluates to` |nbsp| |+------------------------------------------+|
|                           ||:diagtext:`self-`        ||                                                  ||:diagtext:`a constant`                    ||
|                           |+-------------------------+|                                                  |+------------------------------------------+|
|                           ||:diagtext:`array` |nbsp| ||                                                  ||:diagtext:`true`                          ||
|                           |+-------------------------+|                                                  |+------------------------------------------+|
|                           |                           |                                                  ||:diagtext:`false`                         ||
|                           |                           |                                                  |+------------------------------------------+|
|                           |                           |                                                  ||:diagtext:`'std::strong\_ordering::equal'`||
|                           |                           |                                                  |+------------------------------------------+|
+---------------------------+---------------------------+--------------------------------------------------+--------------------------------------------+


-Wtautological-constant-compare
-------------------------------
This diagnostic is enabled by default.

Also controls `-Wtautological-constant-out-of-range-compare`_.

**Diagnostic text:**

+-----------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`converting the result of '?:' with integer constants to a boolean always evaluates to 'true'`|
+-----------------------------------------------------------------------------------------------------------------------------------+

+-------------------------------------------------------------------------------------------------------------+-------------------+
|:warning:`warning:` |nbsp| :diagtext:`converting the result of '<<' to a boolean always evaluates to` |nbsp| |+-----------------+|
|                                                                                                             ||:diagtext:`false`||
|                                                                                                             |+-----------------+|
|                                                                                                             ||:diagtext:`true` ||
|                                                                                                             |+-----------------+|
+-------------------------------------------------------------------------------------------------------------+-------------------+

+----------------------------------------------------------------------+------------------------------------------------+--------------------------------+----------------------------------------------------------+-----------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`result of comparison of` |nbsp| |+----------------------------------------------+| |nbsp| :diagtext:`with` |nbsp| |+--------------------------------------------------------+| |nbsp| :diagtext:`is always` |nbsp| :placeholder:`E`|
|                                                                      ||+--------------------------------------------+||                                ||+------------------------------------------------------+||                                                     |
|                                                                      |||:diagtext:`constant` |nbsp| :placeholder:`A`|||                                |||:diagtext:`expression of type` |nbsp| :placeholder:`C`|||                                                     |
|                                                                      ||+--------------------------------------------+||                                ||+------------------------------------------------------+||                                                     |
|                                                                      |+----------------------------------------------+|                                |+--------------------------------------------------------+|                                                     |
|                                                                      ||:diagtext:`true`                              ||                                ||:diagtext:`boolean expression`                          ||                                                     |
|                                                                      |+----------------------------------------------+|                                |+--------------------------------------------------------+|                                                     |
|                                                                      ||:diagtext:`false`                             ||                                |                                                          |                                                     |
|                                                                      |+----------------------------------------------+|                                |                                                          |                                                     |
+----------------------------------------------------------------------+------------------------------------------------+--------------------------------+----------------------------------------------------------+-----------------------------------------------------+


-Wtautological-constant-in-range-compare
----------------------------------------
Controls `-Wtautological-type-limit-compare`_, `-Wtautological-unsigned-enum-zero-compare`_, `-Wtautological-unsigned-zero-compare`_.


-Wtautological-constant-out-of-range-compare
--------------------------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+----------------------------------------------------------------------+------------------------------------------------+--------------------------------+----------------------------------------------------------+-----------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`result of comparison of` |nbsp| |+----------------------------------------------+| |nbsp| :diagtext:`with` |nbsp| |+--------------------------------------------------------+| |nbsp| :diagtext:`is always` |nbsp| :placeholder:`E`|
|                                                                      ||+--------------------------------------------+||                                ||+------------------------------------------------------+||                                                     |
|                                                                      |||:diagtext:`constant` |nbsp| :placeholder:`A`|||                                |||:diagtext:`expression of type` |nbsp| :placeholder:`C`|||                                                     |
|                                                                      ||+--------------------------------------------+||                                ||+------------------------------------------------------+||                                                     |
|                                                                      |+----------------------------------------------+|                                |+--------------------------------------------------------+|                                                     |
|                                                                      ||:diagtext:`true`                              ||                                ||:diagtext:`boolean expression`                          ||                                                     |
|                                                                      |+----------------------------------------------+|                                |+--------------------------------------------------------+|                                                     |
|                                                                      ||:diagtext:`false`                             ||                                |                                                          |                                                     |
|                                                                      |+----------------------------------------------+|                                |                                                          |                                                     |
+----------------------------------------------------------------------+------------------------------------------------+--------------------------------+----------------------------------------------------------+-----------------------------------------------------+


-Wtautological-objc-bool-compare
--------------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`result of comparison of constant` |nbsp| :placeholder:`A` |nbsp| :diagtext:`with expression of type 'BOOL' is always` |nbsp| :placeholder:`B`:diagtext:`, as the only well defined values for 'BOOL' are YES and NO`|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-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-type-limit-compare
---------------------------------
**Diagnostic text:**

+-------------------------------------------------------------------+------------------+--------------------------------+------------------+-----------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`result of comparison` |nbsp| |+----------------+| |nbsp| :placeholder:`C` |nbsp| |+----------------+| |nbsp| :diagtext:`is always` |nbsp| :placeholder:`E`|
|                                                                   ||:placeholder:`D`||                                ||:placeholder:`B`||                                                     |
|                                                                   |+----------------+|                                |+----------------+|                                                     |
|                                                                   ||:placeholder:`B`||                                ||:placeholder:`D`||                                                     |
|                                                                   |+----------------+|                                |+----------------+|                                                     |
+-------------------------------------------------------------------+------------------+--------------------------------+------------------+-----------------------------------------------------+


-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`||
|                                                                                                                                                      |+-----------------+|
+------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------+


-Wtautological-unsigned-enum-zero-compare
-----------------------------------------
**Diagnostic text:**

+----------------------------------------------------------------------+--------------------------------------+--------------------------------+--------------------------------------+-----------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`result of comparison of` |nbsp| |+------------------------------------+| |nbsp| :placeholder:`C` |nbsp| |+------------------------------------+| |nbsp| :diagtext:`is always` |nbsp| :placeholder:`E`|
|                                                                      ||:placeholder:`D`                    ||                                ||:diagtext:`unsigned enum expression`||                                                     |
|                                                                      |+------------------------------------+|                                |+------------------------------------+|                                                     |
|                                                                      ||:diagtext:`unsigned enum expression`||                                ||:placeholder:`D`                    ||                                                     |
|                                                                      |+------------------------------------+|                                |+------------------------------------+|                                                     |
+----------------------------------------------------------------------+--------------------------------------+--------------------------------+--------------------------------------+-----------------------------------------------------+


-Wtautological-unsigned-zero-compare
------------------------------------
**Diagnostic text:**

+----------------------------------------------------------------------+---------------------------------+--------------------------------+---------------------------------+-----------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`result of comparison of` |nbsp| |+-------------------------------+| |nbsp| :placeholder:`C` |nbsp| |+-------------------------------+| |nbsp| :diagtext:`is always` |nbsp| :placeholder:`E`|
|                                                                      ||:placeholder:`D`               ||                                ||:diagtext:`unsigned expression`||                                                     |
|                                                                      |+-------------------------------+|                                |+-------------------------------+|                                                     |
|                                                                      ||:diagtext:`unsigned expression`||                                ||:placeholder:`D`               ||                                                     |
|                                                                      |+-------------------------------+|                                |+-------------------------------+|                                                     |
+----------------------------------------------------------------------+---------------------------------+--------------------------------+---------------------------------+-----------------------------------------------------+


-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` |nbsp| :placeholder:`B` |nbsp| :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` |nbsp| :placeholder:`A` |nbsp| :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` |nbsp| :placeholder:`B` |nbsp| :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` |nbsp| :placeholder:`A` |nbsp| :diagtext:`requires holding` |nbsp| |+---------------------------------+|
|                           ||:diagtext:`reading`||                                                                                                ||:diagtext:`any mutex`            ||
|                           |+-------------------+|                                                                                                |+---------------------------------+|
|                           ||:diagtext:`writing`||                                                                                                ||:diagtext:`any mutex exclusively`||
|                           |+-------------------+|                                                                                                |+---------------------------------+|
+---------------------------+---------------------+------------------------------------------------------------------------------------------------+-----------------------------------+

+---------------------------+---------------------+------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
|:warning:`warning:` |nbsp| |+-------------------+| |nbsp| :diagtext:`variable` |nbsp| :placeholder:`B` |nbsp| :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| :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' 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`|
+------------------------------------------------------------------------------------------------------------------------------------+

+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute without capability arguments refers to 'this', but` |nbsp| :placeholder:`B` |nbsp| :diagtext:`isn't annotated with 'capability' or 'scoped\_lockable' attribute`|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

+----------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute without capability arguments can only be applied to non-static methods of a class`|
+----------------------------------------------------------------------------------------------------------------------------------------------------------+


-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` |nbsp| :placeholder:`B` |nbsp| :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` |nbsp| :placeholder:`B` |nbsp| :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` |nbsp| :placeholder:`B` |nbsp| :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` |nbsp| :placeholder:`B` |nbsp| :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` |nbsp| :placeholder:`B` |nbsp| :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
-------------
Synonym for `-Wtautological-constant-in-range-compare`_.


-Wtype-limits
-------------
Synonym for `-Wtautological-constant-in-range-compare`_.


-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:`'`|
+-------------------------------------------------------------------------------------------------------------------------------------+


-Wunable-to-open-stats-file
---------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+-------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`unable to open statistics output file '`:placeholder:`A`:diagtext:`': '`: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-internal-type
-------------------------
**Diagnostic text:**

+---------------------------------------------------------------------------------------------------------+----------------------+----------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ISO C++ requires a definition in this translation unit for` |nbsp| |+--------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`because its type does not have linkage`|
|                                                                                                         ||: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`|
+---------------------------------------------------------------------------------------------------------------------------------------------------------+


-Wunderaligned-exception-object
-------------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+---------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`underaligned exception object thrown`|
+---------------------------------------------------------------------------+


-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
------------------------
Some of the diagnostics controlled by this flag are enabled by default.

Also controls `-Wunguarded-availability-new`_.

**Diagnostic text:**

+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is only available on` |nbsp| :placeholder:`B` |nbsp| :placeholder:`C` |nbsp| :diagtext:`or newer`|
+---------------------------------------------------------------------------------------------------------------------------------------------------------------+


-Wunguarded-availability-new
----------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
|: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-homoglyph
-------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`treating Unicode character <U+`:placeholder:`A`:diagtext:`> as identifier character rather than as '`:placeholder:`B`:diagtext:`' symbol`|
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-Wunicode-whitespace
--------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+-------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`treating Unicode character as whitespace`|
+-------------------------------------------------------------------------------+


-Wunicode-zero-width
--------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+----------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`identifier contains Unicode character <U+`:placeholder:`A`:diagtext:`> that is invisible in some environments`|
+----------------------------------------------------------------------------------------------------------------------------------------------------+


-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` |nbsp| |+-------------------------+| |nbsp| :diagtext:`when captured by block`|
|                                                                                                                   ||:diagtext:`uninitialized`||                                          |
|                                                                                                                   |+-------------------------+|                                          |
|                                                                                                                   ||:diagtext:`null`         ||                                          |
|                                                                                                                   |+-------------------------+|                                          |
+-------------------------------------------------------------------------------------------------------------------+---------------------------+------------------------------------------+

+---------------------------------------------------------------------------------------------------------------------------------------------------+
|: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:`'`|
+-----------------------------------------------------------------------------------------------------------+

+--------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`unknown argument ignored in clang-cl '`:placeholder:`A`:diagtext:`'; did you mean '`:placeholder:`B`:diagtext:`'?`|
+--------------------------------------------------------------------------------------------------------------------------------------------------------+


-Wunknown-attributes
--------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+-----------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`unknown attribute` |nbsp| :placeholder:`A` |nbsp| :diagtext:`ignored`|
+-----------------------------------------------------------------------------------------------------------+


-Wunknown-cuda-version
----------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`Unknown CUDA version` |nbsp| :placeholder:`A`:diagtext:`. Assuming the latest supported version` |nbsp| :placeholder:`B`|
+--------------------------------------------------------------------------------------------------------------------------------------------------------------+


-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:`#pragma execution\_character\_set expected '`:placeholder:`A`:diagtext:`'`|
+----------------------------------------------------------------------------------------------------------------+

+------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`#pragma execution\_character\_set invalid value '`:placeholder:`A`:diagtext:`', only 'UTF-8' is supported`|
+------------------------------------------------------------------------------------------------------------------------------------------------+

+-------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`#pragma execution\_character\_set expected 'push' or 'pop'`|
+-------------------------------------------------------------------------------------------------+

+-------------------------------------------------------------+
|: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 warning group '`:placeholder:`A`:diagtext:`', ignored`|
+----------------------------------------------------------------------------------------------------+

+------------------------------------------------------+---------------------+---------------------------------------------------------+--------------------------------------------------------------+
|: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-abs
-----------------
This diagnostic is enabled by default.

**Diagnostic text:**

+-----------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ignoring '-mabs=2008' option because the '`:placeholder:`A`:diagtext:`' architecture does not support it`|
+-----------------------------------------------------------------------------------------------------------------------------------------------+

+-------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ignoring '-mabs=legacy' option because the '`:placeholder:`A`:diagtext:`' architecture does not support it`|
+-------------------------------------------------------------------------------------------------------------------------------------------------+


-Wunsupported-availability-guard
--------------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+---------------------------+------------------------------------+--------------------------------------------------------------+------------------------------------+---------------------+
|:warning:`warning:` |nbsp| |+----------------------------------+| |nbsp| :diagtext:`does not guard availability here; use if (`|+----------------------------------+|:diagtext:`) instead`|
|                           ||:diagtext:`@available`            ||                                                              ||:diagtext:`@available`            ||                     |
|                           |+----------------------------------+|                                                              |+----------------------------------+|                     |
|                           ||:diagtext:`\_\_builtin\_available`||                                                              ||:diagtext:`\_\_builtin\_available`||                     |
|                           |+----------------------------------+|                                                              |+----------------------------------+|                     |
+---------------------------+------------------------------------+--------------------------------------------------------------+------------------------------------+---------------------+


-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-gpopt
-------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+--------------------------------------------------------------------------------------------------+-------------------------------------------+----------------------+
|:warning:`warning:` |nbsp| :diagtext:`ignoring '-mgpopt' option as it cannot be used with` |nbsp| |+-----------------------------------------+|:diagtext:`-mabicalls`|
|                                                                                                  ||                                         ||                      |
|                                                                                                  |+-----------------------------------------+|                      |
|                                                                                                  ||:diagtext:`the implicit usage of` |nbsp| ||                      |
|                                                                                                  |+-----------------------------------------+|                      |
+--------------------------------------------------------------------------------------------------+-------------------------------------------+----------------------+


-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-target-opt
------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+---------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`debug information option '`:placeholder:`A`:diagtext:`' is not supported for target '`:placeholder:`B`:diagtext:`'`|
+---------------------------------------------------------------------------------------------------------------------------------------------------------+


-Wunsupported-visibility
------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`target does not support 'protected' visibility; using 'default'`|
+------------------------------------------------------------------------------------------------------+


-Wunusable-partial-specialization
---------------------------------
This diagnostic is an error by default, but the flag ``-Wno-unusable-partial-specialization`` can be used to disable the error.

**Diagnostic text:**

+-----------------------+----------------------+--------------------------------------------------------------------+----------------------------------+------------------------------------------------------------------------------------------+
|:error:`error:` |nbsp| |+--------------------+| |nbsp| :diagtext:`template partial specialization contains` |nbsp| |+--------------------------------+| |nbsp| :diagtext:`that cannot be deduced; this partial specialization will never be used`|
|                       ||:diagtext:`class`   ||                                                                    ||:diagtext:`a template parameter`||                                                                                          |
|                       |+--------------------+|                                                                    |+--------------------------------+|                                                                                          |
|                       ||:diagtext:`variable`||                                                                    ||:diagtext:`template parameters` ||                                                                                          |
|                       |+--------------------+|                                                                    |+--------------------------------+|                                                                                          |
+-----------------------+----------------------+--------------------------------------------------------------------+----------------------------------+------------------------------------------------------------------------------------------+


-Wunused
--------
Some of the diagnostics controlled by this flag are enabled by default.

Controls `-Wunused-argument`_, `-Wunused-function`_, `-Wunused-label`_, `-Wunused-lambda-capture`_, `-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:`argument '`:placeholder:`A`:diagtext:`' requires profile-guided optimization information`|
+-------------------------------------------------------------------------------------------------------------------------------+

+---------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`joined argument expects additional value: '`:placeholder:`A`:diagtext:`'`|
+---------------------------------------------------------------------------------------------------------------+

+----------------------------------------------------------------------------------------------------+----------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :placeholder:`A`:diagtext:`: '`:placeholder:`B`:diagtext:`' input unused`|+--------------------------------------------------------------------+|
|                                                                                                    ||+------------------------------------------------------------------+||
|                                                                                                    ||| |nbsp| :diagtext:`when '`:placeholder:`D`:diagtext:`' is present`|||
|                                                                                                    ||+------------------------------------------------------------------+||
|                                                                                                    |+--------------------------------------------------------------------+|
|                                                                                                    ||                                                                    ||
|                                                                                                    |+--------------------------------------------------------------------+|
+----------------------------------------------------------------------------------------------------+----------------------------------------------------------------------+

+----------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :placeholder:`A`:diagtext:`: '`:placeholder:`B`:diagtext:`' input unused in cpp mode`|
+----------------------------------------------------------------------------------------------------------------+

+--------------------------------------------------------------------------------------+-----------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :placeholder:`A`:diagtext:`: previously preprocessed input`|+---------------------------------------------------------------------------+|
|                                                                                      ||+-------------------------------------------------------------------------+||
|                                                                                      ||| |nbsp| :diagtext:`unused when '`:placeholder:`C`:diagtext:`' is present`|||
|                                                                                      ||+-------------------------------------------------------------------------+||
|                                                                                      |+---------------------------------------------------------------------------+|
|                                                                                      ||                                                                           ||
|                                                                                      |+---------------------------------------------------------------------------+|
+--------------------------------------------------------------------------------------+-----------------------------------------------------------------------------+

+---------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`argument unused during compilation: '`:placeholder:`A`:diagtext:`'`|
+---------------------------------------------------------------------------------------------------------+

+----------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`the flag '`:placeholder:`A`:diagtext:`' has been deprecated and will be ignored`|
+----------------------------------------------------------------------------------------------------------------------+

+--------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ignoring -fdiscard-value-names for LLVM Bitcode`|
+--------------------------------------------------------------------------------------+


-Wunused-comparison
-------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+---------------------------+------------------------+--------------------------------------------+
|:warning:`warning:` |nbsp| |+----------------------+| |nbsp| :diagtext:`comparison result unused`|
|                           ||:diagtext:`equality`  ||                                            |
|                           |+----------------------+|                                            |
|                           ||:diagtext:`inequality`||                                            |
|                           |+----------------------+|                                            |
|                           ||:diagtext:`relational`||                                            |
|                           |+----------------------+|                                            |
|                           ||:diagtext:`three-way` ||                                            |
|                           |+----------------------+|                                            |
+---------------------------+------------------------+--------------------------------------------+


-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-lambda-capture
-----------------------
**Diagnostic text:**

+---------------------------------------------------------------------------------------------------------------+--------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`lambda capture` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not` |nbsp| |+------------------------------------------------+|
|                                                                                                               ||:diagtext:`used`                                ||
|                                                                                                               |+------------------------------------------------+|
|                                                                                                               ||:diagtext:`required to be captured for this use`||
|                                                                                                               |+------------------------------------------------+|
+---------------------------------------------------------------------------------------------------------------+--------------------------------------------------+


-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`|
+-------------------------------------------------------------------------------------------------------------------------------------------+

+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ignoring return value of function declared with` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute:` |nbsp| :placeholder:`B`|
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-Wunused-template
-----------------
Also controls `-Wunneeded-internal-declaration`_.

**Diagnostic text:**

+-----------------------------------------------------+----------------------+----------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`unused` |nbsp| |+--------------------+| |nbsp| :diagtext:`template` |nbsp| :placeholder:`B`|
|                                                     ||:diagtext:`function`||                                                    |
|                                                     |+--------------------+|                                                    |
|                                                     ||:diagtext:`variable`||                                                    |
|                                                     |+--------------------+|                                                    |
+-----------------------------------------------------+----------------------+----------------------------------------------------+


-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:`ignoring temporary created by a constructor declared with` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute`|
+-----------------------------------------------------------------------------------------------------------------------------------------------------+

+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ignoring temporary created by a constructor declared with` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute:` |nbsp| :placeholder:`B`|
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

+----------------------------------------------------------------------------------------------------------------------------+
|: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`||
|                                                                                                        |+--------------------------------------------------+|
|                                                                                                        ||                                                  ||
|                                                                                                        |+--------------------------------------------------+|
+--------------------------------------------------------------------------------------------------------+----------------------------------------------------+


-Wuser-defined-warnings
-----------------------
This diagnostic is enabled by default.

**Diagnostic text:**

The text of this diagnostic is not controlled by Clang.


-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
-----------------
Some of the diagnostics controlled by this flag are enabled by default.

**Diagnostic text:**

+--------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`named variadic macros are a GNU extension`|
+--------------------------------------------------------------------------------+

+-----------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`\_\_VA\_OPT\_\_ can only appear in the expansion of a variadic macro`|
+-----------------------------------------------------------------------------------------------------------+

+------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`variadic macros are a C99 feature`|
+------------------------------------------------------------------------+


-Wvec-elem-size
---------------
This diagnostic is an error by default, but the flag ``-Wno-vec-elem-size`` can be used to disable the error.

**Diagnostic text:**

+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:error:`error:` |nbsp| :diagtext:`vector operands do not have the same elements sizes (`:placeholder:`A` |nbsp| :diagtext:`and` |nbsp| :placeholder:`B`:diagtext:`)`|
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-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`|
+-----------------------------------------------------------------------------------------------+

+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`parentheses were disambiguated as redundant parentheses around declaration of variable named` |nbsp| :placeholder:`A`|
+-----------------------------------------------------------------------------------------------------------------------------------------------------------+


-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-pointer-to-enum-cast
---------------------------
This diagnostic is enabled by default.

**Diagnostic text:**

+-------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`cast to smaller integer type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`from` |nbsp| :placeholder:`A`|
+-------------------------------------------------------------------------------------------------------------------------------------------+


-Wvoid-pointer-to-int-cast
--------------------------
This diagnostic is enabled by default.

Also controls `-Wvoid-pointer-to-enum-cast`_.

**Diagnostic text:**

+-------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`cast to smaller integer type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`from` |nbsp| :placeholder:`A`|
+-------------------------------------------------------------------------------------------------------------------------------------------+


-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`_.


-Wxor-used-as-pow
-----------------
This diagnostic is enabled by default.

**Diagnostic text:**

+----------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`result of '`:placeholder:`A`:diagtext:`' is` |nbsp| :placeholder:`B`:diagtext:`; did you mean exponentiation?`|
+----------------------------------------------------------------------------------------------------------------------------------------------------+

+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`result of '`:placeholder:`A`:diagtext:`' is` |nbsp| :placeholder:`B`:diagtext:`; did you mean '`:placeholder:`C`:diagtext:`'?`|
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+

+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`result of '`:placeholder:`A`:diagtext:`' is` |nbsp| :placeholder:`B`:diagtext:`; did you mean '`:placeholder:`C`:diagtext:`' (`:placeholder:`D`:diagtext:`)?`|
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


-Wzero-as-null-pointer-constant
-------------------------------
**Diagnostic text:**

+--------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`zero as null pointer constant`|
+--------------------------------------------------------------------+


-Wzero-length-array
-------------------
**Diagnostic text:**

+------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`zero size arrays are an extension`|
+------------------------------------------------------------------------+


-Wwasm-exception-spec
---------------------
**Diagnostic text:**

+----------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`dynamic exception specifications with types are currently ignored in wasm`|
+----------------------------------------------------------------------------------------------------------------+