r281192 - Add a mode to clang-tblgen to generate reference documentation for warning and

Sean Silva via cfe-commits cfe-commits at lists.llvm.org
Wed Sep 28 16:57:52 PDT 2016


This is fantastic Richard. Thank you so much.

-- Sean Silva

On Sun, Sep 11, 2016 at 10:58 PM, Richard Smith via cfe-commits <
cfe-commits at lists.llvm.org> wrote:

> Author: rsmith
> Date: Mon Sep 12 00:58:29 2016
> New Revision: 281192
>
> URL: http://llvm.org/viewvc/llvm-project?rev=281192&view=rev
> Log:
> Add a mode to clang-tblgen to generate reference documentation for warning
> and
> remark flags. For now I'm checking in a copy of the built documentation,
> but we
> can replace this with a placeholder (as we do for the attributes reference
> documentation) once we enable building this server-side.
>
> Added:
>     cfe/trunk/docs/DiagnosticsReference.rst
>     cfe/trunk/include/clang/Basic/DiagnosticDocs.td
> Modified:
>     cfe/trunk/docs/UsersManual.rst
>     cfe/trunk/docs/index.rst
>     cfe/trunk/include/clang/Basic/Diagnostic.td
>     cfe/trunk/include/clang/Basic/DiagnosticParseKinds.td
>     cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td
>     cfe/trunk/utils/TableGen/ClangDiagnosticsEmitter.cpp
>     cfe/trunk/utils/TableGen/TableGen.cpp
>     cfe/trunk/utils/TableGen/TableGenBackends.h
>
> Added: cfe/trunk/docs/DiagnosticsReference.rst
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/
> DiagnosticsReference.rst?rev=281192&view=auto
> ============================================================
> ==================
> --- cfe/trunk/docs/DiagnosticsReference.rst (added)
> +++ cfe/trunk/docs/DiagnosticsReference.rst Mon Sep 12 00:58:29 2016
> @@ -0,0 +1,10538 @@
> +..
> +  -------------------------------------------------------------------
> +  NOTE: This file is automatically generated by running clang-tblgen
> +  -gen-diag-docs. Do not edit this file by hand!!
> +  -------------------------------------------------------------------
> +
> +.. Add custom CSS to output. FIXME: This should be put into <head> rather
> +   than the start of <body>.
> +.. raw:: html
> +
> +    <style>
> +    table.docutils {
> +      width: 1px;
> +    }
> +    table.docutils td {
> +      border: none;
> +      padding: 0;
> +      vertical-align: middle;
> +      white-space: nowrap;
> +      width: 1px;
> +    }
> +    table.docutils tr + tr {
> +      border-top: 0.2em solid #aaa;
> +    }
> +    .error {
> +      font-family: monospace;
> +      font-weight: bold;
> +      color: #c70;
> +    }
> +    .warning {
> +      font-family: monospace;
> +      font-weight: bold;
> +      color: #c70;
> +    }
> +    .remark {
> +      font-family: monospace;
> +      font-weight: bold;
> +      color: #00c;
> +    }
> +    .diagtext {
> +      font-family: monospace;
> +      font-weight: bold;
> +    }
> +    </style>
> +
> +.. FIXME: Format this as .diagtext. rST appears to not support this. :(
> +.. |nbsp| unicode:: 0xA0
> +   :trim:
> +
> +.. Roles generated by clang-tblgen.
> +.. role:: error
> +.. role:: warning
> +.. role:: remark
> +.. role:: diagtext
> +.. role:: placeholder(emphasis)
> +
> +=========================
> +Diagnostic flags in Clang
> +=========================
> +.. contents::
> +   :local:
> +
> +Introduction
> +============
> +
> +This page lists the diagnostic flags currently supported by Clang.
> +
> +Diagnostic flags
> +================
> +
> +-W
> +--
> +Synonym for `-Wextra`_.
> +
> +
> +-W#pragma-messages
> +------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> +The text of this diagnostic is not controlled by Clang.
> +
> +
> +-W#warnings
> +-----------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> +The text of this diagnostic is not controlled by Clang.
> +
> +
> +-WCFString-literal
> +------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------+
> +|:warning:`warning:` |nbsp| :diagtext:`input conversion stopped due to an
> input byte that does not belong to the input codeset UTF-8`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------+
> +
> +
> +-WCL4
> +-----
> +Some of the diagnostics controlled by this flag are enabled by default.
> +
> +Controls `-Wall`_, `-Wextra`_.
> +
> +
> +-WIndependentClass-attribute
> +----------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'objc\_independent\_class'
> attribute may be put on a typedef only; attribute is ignored`|
> ++----------------------------------------------------------
> --------------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'objc\_independent\_class'
> attribute may be put on Objective-C object pointer type only; attribute is
> ignored`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------+
> +
> +
> +-WNSObject-attribute
> +--------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'NSObject' attribute may be put on
> a typedef only; attribute is ignored`|
> ++----------------------------------------------------------
> ----------------------------------------------------+
> +
> +
> +-Wabi
> +-----
> +This diagnostic flag exists for GCC compatibility, and has no effect in
> Clang.
> +
> +-Wabsolute-value
> +----------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`absolute value function` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`given an argument of type` |nbsp|
> :placeholder:`B` |nbsp| :diagtext:`but has parameter of type` |nbsp|
> :placeholder:`C` |nbsp| :diagtext:`which may cause truncation of value`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------------+
> +
> ++----------------------------------------------------------
> -----------------+----------------------+-------------------
> --------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`taking the absolute value of`
> |nbsp| |+--------------------+| |nbsp| :diagtext:`type` |nbsp|
> :placeholder:`B` |nbsp| :diagtext:`is suspicious`|
> +|
>    ||:diagtext:`pointer` ||
>                                  |
> +|
>    |+--------------------+|
>                                  |
> +|
>    ||:diagtext:`function`||
>                                  |
> +|
>    |+--------------------+|
>                                  |
> +|
>    ||:diagtext:`array`   ||
>                                  |
> +|
>    |+--------------------+|
>                                  |
> ++----------------------------------------------------------
> -----------------+----------------------+-------------------
> --------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`taking the absolute value of
> unsigned type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has no effect`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------+
> +
> ++----------------------------------------------------+-----
> -----------------------+------------------------------------
> ------------------------------------------------------------
> ------------------+----------------------------+------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`using` |nbsp|
> |+--------------------------+| |nbsp| :diagtext:`absolute value function`
> |nbsp| :placeholder:`A` |nbsp| :diagtext:`when argument is of` |nbsp|
> |+--------------------------+| |nbsp| :diagtext:`type`|
> +|
> ||:diagtext:`integer`       ||
>
> ||:diagtext:`integer`       ||                        |
> +|
> |+--------------------------+|
>
> |+--------------------------+|                        |
> +|
> ||:diagtext:`floating point`||
>
> ||:diagtext:`floating point`||                        |
> +|
> |+--------------------------+|
>
> |+--------------------------+|                        |
> +|
> ||:diagtext:`complex`       ||
>
> ||:diagtext:`complex`       ||                        |
> +|
> |+--------------------------+|
>
> |+--------------------------+|                        |
> ++----------------------------------------------------+-----
> -----------------------+------------------------------------
> ------------------------------------------------------------
> ------------------+----------------------------+------------------------+
> +
> +
> +-Wabstract-final-class
> +----------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------+--------------------+-------------+
> +|:warning:`warning:` |nbsp| :diagtext:`abstract class is marked
> '`|+------------------+|:diagtext:`'`|
> +|
>  ||:diagtext:`final` ||             |
> +|
>  |+------------------+|             |
> +|
>  ||:diagtext:`sealed`||             |
> +|
>  |+------------------+|             |
> ++----------------------------------------------------------
> -------+--------------------+-------------+
> +
> +
> +-Wabstract-vbase-init
> +---------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`initializer for virtual base
> class` |nbsp| :placeholder:`A` |nbsp| :diagtext:`of abstract class` |nbsp|
> :placeholder:`B` |nbsp| :diagtext:`will never be used`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ------------------+
> +
> +
> +-Waddress
> +---------
> +This diagnostic is enabled by default.
> +
> +Controls `-Wpointer-bool-conversion`_, `-Wstring-compare`_,
> `-Wtautological-pointer-compare`_.
> +
> +
> +-Waddress-of-array-temporary
> +----------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`pointer is initialized by a
> temporary array, which will be destroyed at the end of the full-expression`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------+
> +
> +
> +-Waddress-of-packed-member
> +--------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`taking address of packed member`
> |nbsp| :placeholder:`A` |nbsp| :diagtext:`of class or structure` |nbsp|
> :placeholder:`B` |nbsp| :diagtext:`may result in an unaligned pointer
> value`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------------+
> +
> +
> +-Waddress-of-temporary
> +----------------------
> +This diagnostic is an error by default, but the flag
> ``-Wno-address-of-temporary`` can be used to disable the error.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------------------------------+
> +|:error:`error:` |nbsp| :diagtext:`taking the address of a temporary
> object of type` |nbsp| :placeholder:`A`|
> ++----------------------------------------------------------
> -------------------------------------------------+
> +
> +
> +-Waggregate-return
> +------------------
> +This diagnostic flag exists for GCC compatibility, and has no effect in
> Clang.
> +
> +-Wall
> +-----
> +Some of the diagnostics controlled by this flag are enabled by default.
> +
> +Controls `-Wmost`_, `-Wparentheses`_, `-Wswitch`_, `-Wswitch-bool`_.
> +
> +
> +-Wambiguous-ellipsis
> +--------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------------------------------+---------------------
> ------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'...' in this location creates a
> C-style varargs function`|+-------------------------------------------+|
> +|
>                         ||:diagtext:`, not a function parameter pack`||
> +|
>                         |+-------------------------------------------+|
> +|
>                         ||                                           ||
> +|
>                         |+-------------------------------------------+|
> ++----------------------------------------------------------
> --------------------------------------+---------------------
> ------------------------+
> +
> +
> +-Wambiguous-macro
> +-----------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`ambiguous expansion of macro`
> |nbsp| :placeholder:`A`|
> ++----------------------------------------------------------
> ---------------------------------+
> +
> +
> +-Wambiguous-member-template
> +---------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`lookup of` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`in member access expression is ambiguous; using member
> of` |nbsp| :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------------------------+
> +
> +
> +-Wanalyzer-incompatible-plugin
> +------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`checker plugin
> '`:placeholder:`A`:diagtext:`' is not compatible with this version of the
> analyzer`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------+
> +
> +
> +-Wanonymous-pack-parens
> +-----------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`ISO C++11 requires a parenthesized
> pack declaration to have a name`|
> ++----------------------------------------------------------
> -----------------------------------------------+
> +
> +
> +-Warc
> +-----
> +This diagnostic is enabled by default.
> +
> +Controls `-Warc-unsafe-retained-assign`_, `-Warc-retain-cycles`_,
> `-Warc-non-pod-memaccess`_.
> +
> +
> +-Warc-bridge-casts-disallowed-in-nonarc
> +---------------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`'
> casts have no effect when not using ARC`|
> ++----------------------------------------------------------
> ---------------------------------------------------+
> +
> +
> +-Warc-maybe-repeated-use-of-weak
> +--------------------------------
> +**Diagnostic text:**
> +
> ++---------------------------------------------------+------
> -------------------------+----------------------------------
> --------------------------------------------------------+---
> -------------------+----------------------------------------
> ---------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`weak` |nbsp|
> |+-----------------------------+| |nbsp| :placeholder:`B` |nbsp|
> :diagtext:`may be accessed multiple times in this` |nbsp|
> |+--------------------+| |nbsp| :diagtext:`and may be unpredictably set to
> nil; assign to a strong variable to keep the object alive`|
> +|
>  ||:diagtext:`variable`         ||
>                                                 ||:diagtext:`function`||
>
>                              |
> +|
>  |+-----------------------------+|
>                                                   |+--------------------+|
>
>                                |
> +|
>  ||:diagtext:`property`         ||
>                                                 ||:diagtext:`method`  ||
>
>                              |
> +|
>  |+-----------------------------+|
>                                                   |+--------------------+|
>
>                                |
> +|                                                   ||:diagtext:`implicit
> property`||
>                           ||:diagtext:`block`   ||
>
>        |
> +|
>  |+-----------------------------+|
>                                                   |+--------------------+|
>
>                                |
> +|                                                   ||:diagtext:`instance
> variable`||
>                           ||:diagtext:`lambda`  ||
>
>        |
> +|
>  |+-----------------------------+|
>                                                   |+--------------------+|
>
>                                |
> ++---------------------------------------------------+------
> -------------------------+----------------------------------
> --------------------------------------------------------+---
> -------------------+----------------------------------------
> ---------------------------------------------------------------------+
> +
> +
> +-Warc-non-pod-memaccess
> +-----------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++---------------------------+-----------------------------+
> ------------------------------------------------------------
> ------------------------------------------------------------
> -----------------+
> +|:warning:`warning:` |nbsp| |+---------------------------+| |nbsp|
> :diagtext:`this` |nbsp| :placeholder:`B` |nbsp| :diagtext:`call is a
> pointer to ownership-qualified type` |nbsp| :placeholder:`C`|
> +|                           ||:diagtext:`destination for`||
>
>                                                |
> +|                           |+---------------------------+|
>
>                                                |
> +|                           ||:diagtext:`source of`      ||
>
>                                                |
> +|                           |+---------------------------+|
>
>                                                |
> ++---------------------------+-----------------------------+
> ------------------------------------------------------------
> ------------------------------------------------------------
> -----------------+
> +
> +
> +-Warc-performSelector-leaks
> +---------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`performSelector may cause a leak
> because its selector is unknown`|
> ++----------------------------------------------------------
> ---------------------------------------------+
> +
> +
> +-Warc-repeated-use-of-weak
> +--------------------------
> +Also controls `-Warc-maybe-repeated-use-of-weak`_.
> +
> +**Diagnostic text:**
> +
> ++---------------------------------------------------+------
> -------------------------+----------------------------------
> ----------------------------------------------------+-------
> ---------------+--------------------------------------------
> -----------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`weak` |nbsp|
> |+-----------------------------+| |nbsp| :placeholder:`B` |nbsp|
> :diagtext:`is accessed multiple times in this` |nbsp|
> |+--------------------+| |nbsp| :diagtext:`but may be unpredictably set to
> nil; assign to a strong variable to keep the object alive`|
> +|
>  ||:diagtext:`variable`         ||
>                                             ||:diagtext:`function`||
>
>                          |
> +|
>  |+-----------------------------+|
>                                               |+--------------------+|
>
>                            |
> +|
>  ||:diagtext:`property`         ||
>                                             ||:diagtext:`method`  ||
>
>                          |
> +|
>  |+-----------------------------+|
>                                               |+--------------------+|
>
>                            |
> +|                                                   ||:diagtext:`implicit
> property`||
>                       ||:diagtext:`block`   ||
>
>    |
> +|
>  |+-----------------------------+|
>                                               |+--------------------+|
>
>                            |
> +|                                                   ||:diagtext:`instance
> variable`||
>                       ||:diagtext:`lambda`  ||
>
>    |
> +|
>  |+-----------------------------+|
>                                               |+--------------------+|
>
>                            |
> ++---------------------------------------------------+------
> -------------------------+----------------------------------
> ----------------------------------------------------+-------
> ---------------+--------------------------------------------
> -----------------------------------------------------------------+
> +
> +
> +-Warc-retain-cycles
> +-------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`capturing` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`strongly in this block is likely to lead to a retain
> cycle`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------+
> +
> +
> +-Warc-unsafe-retained-assign
> +----------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++--------------------------------------------------------+-
> --------------------------------+---------------------------
> ----------+----------------------+--------------------------
> ----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`assigning` |nbsp|
> |+-------------------------------+| |nbsp| :diagtext:`to a weak` |nbsp|
> |+--------------------+|:diagtext:`; object will be released after
> assignment`|
> +|
> ||:diagtext:`array literal`      ||
>  ||:diagtext:`property`||
>     |
> +|
> |+-------------------------------+|
>  |+--------------------+|
>     |
> +|
> ||:diagtext:`dictionary literal` ||
>  ||:diagtext:`variable`||
>     |
> +|
> |+-------------------------------+|
>  |+--------------------+|
>     |
> +|
> ||:diagtext:`numeric literal`    ||                                     |
>                     |                                                      |
> +|
> |+-------------------------------+|
>  |                      |
>     |
> +|
> ||:diagtext:`boxed expression`   ||                                     |
>                     |                                                      |
> +|
> |+-------------------------------+|
>  |                      |
>     |
> +|
> ||:diagtext:`<should not happen>`||                                     |
>                     |                                                      |
> +|
> |+-------------------------------+|
>  |                      |
>     |
> +|
> ||:diagtext:`block literal`      ||                                     |
>                     |                                                      |
> +|
> |+-------------------------------+|
>  |                      |
>     |
> ++--------------------------------------------------------+-
> --------------------------------+---------------------------
> ----------+----------------------+--------------------------
> ----------------------------+
> +
> ++----------------------------------------------------------
> -----------------+--------------------------------+--------+
> ----------------------+-------------------------------------
> -----------------+
> +|:warning:`warning:` |nbsp| :diagtext:`assigning retained object to`
> |nbsp| |+------------------------------+| |nbsp| |+--------------------+|:diagtext:`;
> object will be released after assignment`|
> +|
>    ||:diagtext:`weak`              ||        ||:diagtext:`property`||
>                                                 |
> +|
>    |+------------------------------+|        |+--------------------+|
>                                                   |
> +|
>    ||:diagtext:`unsafe\_unretained`||        ||:diagtext:`variable`||
>                                                   |
> +|
>    |+------------------------------+|        |+--------------------+|
>                                                   |
> ++----------------------------------------------------------
> -----------------+--------------------------------+--------+
> ----------------------+-------------------------------------
> -----------------+
> +
> ++----------------------------------------------------------
> -------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`assigning retained object to
> unsafe property; object will be released after assignment`|
> ++----------------------------------------------------------
> -------------------------------------------------------------------+
> +
> +
> +-Warray-bounds
> +--------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -----------+---------------+-------------+
> +|:warning:`warning:` |nbsp| :diagtext:`array index` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`is past the end of the array (which
> contains` |nbsp| :placeholder:`B` |nbsp| :diagtext:`element`|+---------
> ----+|:diagtext:`)`|
> +|
>
>                                          ||             ||             |
> +|
>
>                                          |+-------------+|             |
> +|
>
>                                          ||:diagtext:`s`||             |
> +|
>
>                                          |+-------------+|             |
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -----------+---------------+-------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`array index` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`is before the beginning of the array`|
> ++----------------------------------------------------------
> ------------------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`array argument is too small;
> contains` |nbsp| :placeholder:`A` |nbsp| :diagtext:`elements, callee
> requires at least` |nbsp| :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> -------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'static' has no effect on
> zero-length arrays`|
> ++----------------------------------------------------------
> -------------------------+
> +
> +
> +-Warray-bounds-pointer-arithmetic
> +---------------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------+---------------+-------------+
> +|:warning:`warning:` |nbsp| :diagtext:`the pointer incremented by` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`refers past the end of the array (that
> contains` |nbsp| :placeholder:`B` |nbsp| :diagtext:`element`|+---------
> ----+|:diagtext:`)`|
> +|
>
>                                                            ||
>  ||             |
> +|
>
>
>  |+-------------+|             |
> +|
>
>
>  ||:diagtext:`s`||             |
> +|
>
>
>  |+-------------+|             |
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------+---------------+-------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`the pointer decremented by` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`refers before the beginning of the
> array`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------+
> +
> +
> +-Wasm
> +-----
> +Synonym for `-Wasm-operand-widths`_.
> +
> +
> +-Wasm-operand-widths
> +--------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`value size does not match register
> size specified by the constraint and modifier`|
> ++----------------------------------------------------------
> -------------------------------------------------------------+
> +
> +
> +-Wassign-enum
> +-------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`integer constant not in range of
> enumerated type` |nbsp| :placeholder:`A`|
> ++----------------------------------------------------------
> -----------------------------------------------------+
> +
> +
> +-Wassume
> +--------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`the argument to` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`has side effects that will be discarded`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------+
> +
> +
> +-Wat-protocol
> +-------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`@protocol is using a forward
> protocol declaration of` |nbsp| :placeholder:`A`|
> ++----------------------------------------------------------
> ---------------------------------------------------------+
> +
> +
> +-Watomic-memory-ordering
> +------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`memory order argument to atomic
> operation is invalid`|
> ++----------------------------------------------------------
> ---------------------------------+
> +
> +
> +-Watomic-properties
> +-------------------
> +Controls `-Wimplicit-atomic-properties`_, `-Wcustom-atomic-properties`_.
> +
> +
> +-Watomic-property-with-user-defined-accessor
> +--------------------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------+--------------------+----------------
> -------------------------------+--------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`writable atomic property` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`cannot pair a synthesized` |nbsp|
> |+------------------+| |nbsp| :diagtext:`with a user defined` |nbsp|
> |+------------------+|
> +|
>
> ||:diagtext:`getter`||
>  ||:diagtext:`getter`||
> +|
>
> |+------------------+|
>  |+------------------+|
> +|
>
> ||:diagtext:`setter`||
>  ||:diagtext:`setter`||
> +|
>
> |+------------------+|
>  |+------------------+|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------+--------------------+----------------
> -------------------------------+--------------------+
> +
> +
> +-Wattribute-packed-for-bitfield
> +-------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'packed' attribute was ignored on
> bit-fields with single-byte alignment in older versions of GCC and Clang`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------+
> +
> +
> +-Wattributes
> +------------
> +This diagnostic is enabled by default.
> +
> +Controls `-Wunknown-attributes`_, `-Wignored-attributes`_.
> +
> +
> +-Wauto-disable-vptr-sanitizer
> +-----------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`implicitly disabling vptr
> sanitizer because rtti wasn't enabled`|
> ++----------------------------------------------------------
> --------------------------------------------+
> +
> +
> +-Wauto-import
> +-------------
> +**Diagnostic text:**
> +
> ++-------------------------------------------------+--------
> -------------------------+----------------------------------
> ---------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`treating
> #`|+-------------------------------+| |nbsp| :diagtext:`as an import of
> module '`:placeholder:`B`:diagtext:`'`|
> +|                                                 ||:diagtext:`include`
>           ||
>          |
> +|
>  |+-------------------------------+|
>                                    |
> +|                                                 ||:diagtext:`import`
>          ||
>          |
> +|
>  |+-------------------------------+|
>                                    |
> +|
>  ||:diagtext:`include\_next`      ||
>                                  |
> +|
>  |+-------------------------------+|
>                                    |
> +|
>  ||:diagtext:`\_\_include\_macros`||
>                                    |
> +|
>  |+-------------------------------+|
>                                    |
> ++-------------------------------------------------+--------
> -------------------------+----------------------------------
> ---------------------------------------+
> +
> +
> +-Wauto-storage-class
> +--------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'auto' storage class specifier is
> not permitted in C++11, and will not be supported in future releases`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------+
> +
> +
> +-Wauto-var-id
> +-------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'auto' deduced as 'id' in
> declaration of` |nbsp| :placeholder:`A`|
> ++----------------------------------------------------------
> ---------------------------------------------+
> +
> +
> +-Wavailability
> +--------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'unavailable' availability
> overrides all other availability information`|
> ++----------------------------------------------------------
> ----------------------------------------------------+
> +
> ++----------------------------------------------------------
> --------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`unknown platform` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`in availability macro`|
> ++----------------------------------------------------------
> --------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------+------------------------+----------------------------
> ------------------------------------------------------------
> --------------------------------------------------+---------
> ---------------+--------------------------------------------
> -----------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`feature cannot be` |nbsp|
> |+----------------------+| |nbsp| :diagtext:`in` |nbsp| :placeholder:`B`
> |nbsp| :diagtext:`version` |nbsp| :placeholder:`C` |nbsp| :diagtext:`before
> it was` |nbsp| |+----------------------+| |nbsp| :diagtext:`in version`
> |nbsp| :placeholder:`E`:diagtext:`; attribute ignored`|
> +|
> ||:diagtext:`introduced`||
>
>             ||:diagtext:`introduced`||
>                                                |
> +|
> |+----------------------+|
>
>             |+----------------------+|
>                                                |
> +|
> ||:diagtext:`deprecated`||
>
>             ||:diagtext:`deprecated`||
>                                                |
> +|
> |+----------------------+|
>
>             |+----------------------+|
>                                                |
> +|
> ||:diagtext:`obsoleted` ||
>
>             ||:diagtext:`obsoleted` ||
>                                                |
> +|
> |+----------------------+|
>
>             |+----------------------+|
>                                                |
> ++----------------------------------------------------------
> ------+------------------------+----------------------------
> ------------------------------------------------------------
> --------------------------------------------------+---------
> ---------------+--------------------------------------------
> -----------------------------------------+
> +
> ++----------------------------------------------------------
> -----------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`use same version number separators
> '\_' or '.'; as in 'major\[.minor\[.subminor\]\]'`|
> ++----------------------------------------------------------
> -----------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> -----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`availability does not match
> previous declaration`|
> ++----------------------------------------------------------
> -----------------------------+
> +
> ++---------------------------+------------------------------
> --+--------------------------+------------------------------
> -+--------+-----------------------------------------------+-
> ------------------------------------------------------------
> ------------------------------------------------------------
> ----------------------+
> +|:warning:`warning:` |nbsp| |+------------------------------+|:diagtext:`method`
> |nbsp| |+-----------------------------+| |nbsp|
> |+---------------------------------------------+| |nbsp| :diagtext:`on`
> |nbsp| :placeholder:`B` |nbsp| :diagtext:`(`:placeholder:`C` |nbsp|
> :diagtext:`vs.` |nbsp| :placeholder:`D`:diagtext:`)`|
> +|                           ||                              ||
>               ||:diagtext:`introduced after` ||        ||:diagtext:`the
> protocol method it implements`||
>
>                        |
> +|                           |+------------------------------+|
>                 |+-----------------------------+|
> |+---------------------------------------------+|
>
>                                            |
> +|                           ||:diagtext:`overriding` |nbsp| ||
>               ||:diagtext:`deprecated before`||
> ||:diagtext:`overridden method`                ||
>
>                                          |
> +|                           |+------------------------------+|
>                 |+-----------------------------+|
> |+---------------------------------------------+|
>
>                                            |
> +|                           |                                |
>               ||:diagtext:`obsoleted before` ||        |
>                            |
>
>                    |
> +|                           |                                |
>               |+-----------------------------+|        |
>                              |
>
>                      |
> ++---------------------------+------------------------------
> --+--------------------------+------------------------------
> -+--------+-----------------------------------------------+-
> ------------------------------------------------------------
> ------------------------------------------------------------
> ----------------------+
> +
> ++---------------------------+------------------------------
> --+---------------------------------------------------------
> ------------------------------------------+-----------------
> ------------------------------+--------------------------------+
> +|:warning:`warning:` |nbsp| |+------------------------------+|:diagtext:`method
> cannot be unavailable on` |nbsp| :placeholder:`A` |nbsp| :diagtext:`when`
> |nbsp| |+---------------------------------------------+| |nbsp|
> :diagtext:`is available`|
> +|                           ||                              ||
>
>            ||:diagtext:`the protocol method it implements`||
>                 |
> +|                           |+------------------------------+|
>
>              |+---------------------------------------------+|
>                     |
> +|                           ||:diagtext:`overriding` |nbsp| ||
>
>            ||:diagtext:`its overridden method`            ||
>                 |
> +|                           |+------------------------------+|
>
>              |+---------------------------------------------+|
>                     |
> ++---------------------------+------------------------------
> --+---------------------------------------------------------
> ------------------------------------------+-----------------
> ------------------------------+--------------------------------+
> +
> +
> +-Wbackend-plugin
> +----------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> +The text of this diagnostic is not controlled by Clang.
> +
> +
> +-Wbackslash-newline-escape
> +--------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`backslash and newline separated by
> space`|
> ++----------------------------------------------------------
> ---------------------+
> +
> +
> +-Wbad-array-new-length
> +----------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`array is too large
> (`:placeholder:`A` |nbsp| :diagtext:`elements)`|
> ++----------------------------------------------------------
> ----------------------------------------------+
> +
> ++-------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`array size is negative`|
> ++-------------------------------------------------------------+
> +
> +
> +-Wbad-function-cast
> +-------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`cast from function call of type`
> |nbsp| :placeholder:`A` |nbsp| :diagtext:`to non-matching type` |nbsp|
> :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------+
> +
> +
> +-Wbind-to-temporary-copy
> +------------------------
> +Also controls `-Wc++98-compat-bind-to-temporary-copy`_.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ------------+-----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`C++98 requires an accessible copy
> constructor for class` |nbsp| :placeholder:`C` |nbsp| :diagtext:`when
> binding a reference to a temporary; was` |nbsp| |+---------------------+|
> +|
>
>                                           ||:diagtext:`private`  ||
> +|
>
>                                           |+---------------------+|
> +|
>
>                                           ||:diagtext:`protected`||
> +|
>
>                                           |+---------------------+|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ------------+-----------------------+
> +
> ++----------------------------------------------------------
> ----------+-----------------------------------------+-------
> ------------------------------------------------------------
> -----------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`no viable constructor` |nbsp|
> |+---------------------------------------+| |nbsp| :diagtext:`of type`
> |nbsp| :placeholder:`B`:diagtext:`; C++98 requires a copy constructor when
> binding a reference to a temporary`|
> +|
> ||:diagtext:`copying variable`           ||
>
>                               |
> +|
> |+---------------------------------------+|
>
>                                 |
> +|
> ||:diagtext:`copying parameter`          ||
>
>                               |
> +|
> |+---------------------------------------+|
>
>                                 |
> +|
> ||:diagtext:`returning object`           ||
>
>                               |
> +|
> |+---------------------------------------+|
>
>                                 |
> +|
> ||:diagtext:`throwing object`            ||
>
>                               |
> +|
> |+---------------------------------------+|
>
>                                 |
> +|
> ||:diagtext:`copying member subobject`   ||
>
>                               |
> +|
> |+---------------------------------------+|
>
>                                 |
> +|
> ||:diagtext:`copying array element`      ||
>
>                               |
> +|
> |+---------------------------------------+|
>
>                                 |
> +|
> ||:diagtext:`allocating object`          ||
>
>                               |
> +|
> |+---------------------------------------+|
>
>                                 |
> +|
> ||:diagtext:`copying temporary`          ||
>
>                               |
> +|
> |+---------------------------------------+|
>
>                                 |
> +|
> ||:diagtext:`initializing base subobject`||
>
>                               |
> +|
> |+---------------------------------------+|
>
>                                 |
> +|
> ||:diagtext:`initializing vector element`||
>
>                               |
> +|
> |+---------------------------------------+|
>
>                                 |
> +|
> ||:diagtext:`capturing value`            ||
>
>                               |
> +|
> |+---------------------------------------+|
>
>                                 |
> ++----------------------------------------------------------
> ----------+-----------------------------------------+-------
> ------------------------------------------------------------
> -----------------------------------------------------------------------+
> +
> +
> +-Wbitfield-constant-conversion
> +------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`implicit truncation from` |nbsp|
> :placeholder:`C` |nbsp| :diagtext:`to bitfield changes value from` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------+
> +
> +
> +-Wbitfield-width
> +----------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------+---------------+
> +|:warning:`warning:` |nbsp| :diagtext:`width of anonymous bit-field
> (`:placeholder:`A` |nbsp| :diagtext:`bits) exceeds width of its type; value
> will be truncated to` |nbsp| :placeholder:`B` |nbsp|
> :diagtext:`bit`|+-------------+|
> +|
>
>                                                                ||
>    ||
> +|
>
>
>  |+-------------+|
> +|
>
>
>  ||:diagtext:`s`||
> +|
>
>
>  |+-------------+|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------+---------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ----------+---------------+
> +|:warning:`warning:` |nbsp| :diagtext:`width of bit-field` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`(`:placeholder:`B` |nbsp|
> :diagtext:`bits) exceeds the width of its type; value will be truncated to`
> |nbsp| :placeholder:`C` |nbsp| :diagtext:`bit`|+-------------+|
> +|
>
>
>                         ||             ||
> +|
>
>
>                         |+-------------+|
> +|
>
>
>                         ||:diagtext:`s`||
> +|
>
>
>                         |+-------------+|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ----------+---------------+
> +
> +
> +-Wbitwise-op-parentheses
> +------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`'
> within '`:placeholder:`B`:diagtext:`'`|
> ++----------------------------------------------------------
> -------------------------------------------------+
> +
> +
> +-Wbool-conversion
> +-----------------
> +This diagnostic is enabled by default.
> +
> +Also controls `-Wpointer-bool-conversion`_, `-Wundefined-bool-conversion`_
> .
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`initialization of pointer of type`
> |nbsp| :placeholder:`A` |nbsp| :diagtext:`to null from a constant boolean
> expression`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------+
> +
> +
> +-Wbool-conversions
> +------------------
> +Synonym for `-Wbool-conversion`_.
> +
> +
> +-Wbraced-scalar-init
> +--------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++-----------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`braces around scalar initializer`|
> ++-----------------------------------------------------------------------+
> +
> +
> +-Wbridge-cast
> +-------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`bridges
> to` |nbsp| :placeholder:`B`:diagtext:`, not` |nbsp| :placeholder:`C`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------+
> +
> ++----------------------------------------------------------
> ---------------------------------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`cannot
> bridge to` |nbsp| :placeholder:`B`|
> ++----------------------------------------------------------
> ---------------------------------------------+
> +
> +
> +-Wbuiltin-macro-redefined
> +-------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++---------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`redefining builtin macro`|
> ++---------------------------------------------------------------+
> +
> ++---------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`undefining builtin macro`|
> ++---------------------------------------------------------------+
> +
> +
> +-Wbuiltin-memcpy-chk-size
> +-------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------------------------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`will
> always overflow destination buffer`|
> ++----------------------------------------------------------
> --------------------------------------------+
> +
> +
> +-Wbuiltin-requires-header
> +-------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`declaration of built-in function
> '`:placeholder:`B`:diagtext:`' requires inclusion of the header
> <`:placeholder:`A`:diagtext:`>`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------+
> +
> +
> +-Wc++-compat
> +------------
> +**Diagnostic text:**
> +
> ++---------------------------+---------------------------+--
> ------------------+-----------------------------------------
> ---+---------------------------+--------------------------+
> +|:warning:`warning:` |nbsp| |+-------------------------+|+------------------+|
> |nbsp| :diagtext:`has size 0 in C,` |nbsp| |+-------------------------+|
> |nbsp| :diagtext:`in C++`|
> +|                           ||
>  |||:diagtext:`struct`||
> ||:diagtext:`size 1`       ||                          |
> +|                           |+-------------------------+|+------------------+|
>                                           |+-------------------------+|
>                       |
> +|                           ||:diagtext:`empty` |nbsp|
> |||:diagtext:`union` ||
> ||:diagtext:`non-zero size`||                          |
> +|                           |+-------------------------+|+------------------+|
>                                           |+-------------------------+|
>                       |
> ++---------------------------+---------------------------+--
> ------------------+-----------------------------------------
> ---+---------------------------+--------------------------+
> +
> +
> +-Wc++0x-compat
> +--------------
> +Synonym for `-Wc++11-compat`_.
> +
> +
> +-Wc++0x-extensions
> +------------------
> +Synonym for `-Wc++11-extensions`_.
> +
> +
> +-Wc++0x-narrowing
> +-----------------
> +Synonym for `-Wc++11-narrowing`_.
> +
> +
> +-Wc++11-compat
> +--------------
> +Some of the diagnostics controlled by this flag are enabled by default.
> +
> +Also controls `-Wc++11-narrowing`_, `-Wc++11-compat-reserved-user-defined-literal`_,
> `-Wc++11-compat-deprecated-writable-strings`_, `-Wc++98-c++11-compat`_,
> `-Wc++98-c++11-c++14-compat`_.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------+----------------------------
> -------+------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`integer literal is too large to be
> represented in type 'long' and is subject to undefined behavior under
> C++98, interpreting as 'unsigned long'; this literal will` |nbsp|
> |+---------------------------------+| |nbsp| :diagtext:`in C++11 onwards`|
> +|
>
>
>  ||:diagtext:`have type 'long long'`||                                    |
> +|
>
>
>  |+---------------------------------+|
> |
> +|
>
>
>  ||:diagtext:`be ill-formed`        ||                                    |
> +|
>
>
>  |+---------------------------------+|
> |
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------+----------------------------
> -------+------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'auto' storage class specifier is
> redundant and incompatible with C++11`|
> ++----------------------------------------------------------
> ----------------------------------------------------+
> +
> ++----------------------------------------------------------
> ---------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`identifier after literal will be
> treated as a user-defined literal suffix in C++11`|
> ++----------------------------------------------------------
> ---------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ---------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' is
> a keyword in C++11`|
> ++----------------------------------------------------------
> ---------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`use of right-shift operator ('>>')
> in template argument will require parentheses in C++11`|
> ++----------------------------------------------------------
> ----------------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`explicit instantiation cannot be
> 'inline'`|
> ++----------------------------------------------------------
> ----------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------+
> +|:warning:`warning:` |nbsp| :diagtext:`explicit instantiation of` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`must occur at global scope`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`explicit instantiation of` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`not in a namespace enclosing` |nbsp|
> :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`explicit instantiation of` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`must occur in namespace` |nbsp|
> :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------------------+-------
> ----------------------------+------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`integer literal is too large to be
> represented in type 'long', interpreting as 'unsigned long' per C++98; this
> literal will` |nbsp| |+---------------------------------+| |nbsp|
> :diagtext:`in C++11 onwards`|
> +|
>
>                       ||:diagtext:`have type 'long long'`||
>                     |
> +|
>
>                       |+---------------------------------+|
>                       |
> +|
>
>                       ||:diagtext:`be ill-formed`        ||
>                     |
> +|
>
>                       |+---------------------------------+|
>                       |
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------------------+-------
> ----------------------------+------------------------------------+
> +
> +
> +-Wc++11-compat-deprecated-writable-strings
> +------------------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`conversion from string literal to`
> |nbsp| :placeholder:`A` |nbsp| :diagtext:`is deprecated`|
> ++----------------------------------------------------------
> -----------------------------------------------------------------------+
> +
> +
> +-Wc++11-compat-pedantic
> +-----------------------
> +Controls `-Wc++98-c++11-compat-pedantic`_, `-Wc++98-c++11-c++14-compat-
> pedantic`_.
> +
> +
> +-Wc++11-compat-reserved-user-defined-literal
> +--------------------------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`identifier after literal will be
> treated as a reserved user-defined literal suffix in C++11`|
> ++----------------------------------------------------------
> ------------------------------------------------------------------------+
> +
> +
> +-Wc++11-extensions
> +------------------
> +Some of the diagnostics controlled by this flag are enabled by default.
> +
> +Also controls `-Wc++11-extra-semi`_, `-Wc++11-inline-namespace`_,
> `-Wc++11-long-long`_.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`alias declarations are a C++11
> extension`|
> ++----------------------------------------------------------
> ---------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------+-------------------------+----
> ------------------------------------------------------------
> ------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`implicit conversion from array
> size expression of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to`
> |nbsp| |+-----------------------+| |nbsp| :diagtext:`type` |nbsp|
> :placeholder:`C` |nbsp| :diagtext:`is a C++11 extension`|
> +|
>
>  ||:diagtext:`integral`   ||
>                                         |
> +|
>
>  |+-----------------------+|
>                                         |
> +|
>
>  ||:diagtext:`enumeration`||
>                                         |
> +|
>
>  |+-----------------------+|
>                                         |
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------+-------------------------+----
> ------------------------------------------------------------
> ------------------------+
> +
> ++----------------------------------------------------------
> -----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'auto' type specifier is a C++11
> extension`|
> ++----------------------------------------------------------
> -----------------------+
> +
> ++----------------------------------------------------------
> -------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`enumeration types with a fixed
> underlying type are a C++11 extension`|
> ++----------------------------------------------------------
> -------------------------------------------------+
> +
> ++---------------------------+-----------------------+------
> --------------------------------------------------------+
> +|:warning:`warning:` |nbsp| |+---------------------+| |nbsp|
> :diagtext:`function definitions are a C++11 extension`|
> +|                           ||:diagtext:`defaulted`||
>                                           |
> +|                           |+---------------------+|
>                                           |
> +|                           ||:diagtext:`deleted`  ||
>                                           |
> +|                           |+---------------------+|
>                                           |
> ++---------------------------+-----------------------+------
> --------------------------------------------------------+
> +
> ++----------------------------------------------------------
> -------------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`befriending enumeration type`
> |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a C++11 extension`|
> ++----------------------------------------------------------
> -------------------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`commas at the end of enumerator
> lists are a C++11 extension`|
> ++----------------------------------------------------------
> ----------------------------------------+
> +
> ++----------------------------------------------------------
> --------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`explicit conversion functions are
> a C++11 extension`|
> ++----------------------------------------------------------
> --------------------------------+
> +
> ++----------------------------------------------------------
> -------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`extern templates are a C++11
> extension`|
> ++----------------------------------------------------------
> -------------------+
> +
> ++----------------------------------------------------------
> ----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`range-based for loop is a C++11
> extension`|
> ++----------------------------------------------------------
> ----------------------+
> +
> ++----------------------------------------------------------
> --------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`generalized initializer lists are
> a C++11 extension`|
> ++----------------------------------------------------------
> --------------------------------+
> +
> ++----------------------------------------------------------
> -----------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`use of enumeration in a nested
> name specifier is a C++11 extension`|
> ++----------------------------------------------------------
> -----------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`non-class friend type` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`is a C++11 extension`|
> ++----------------------------------------------------------
> ------------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ---------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`in-class initialization of
> non-static data member is a C++11 extension`|
> ++----------------------------------------------------------
> ---------------------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`'
> keyword is a C++11 extension`|
> ++----------------------------------------------------------
> ----------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`reference qualifiers on functions
> are a C++11 extension`|
> ++----------------------------------------------------------
> ------------------------------------+
> +
> ++----------------------------------------------------------
> --------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`rvalue references are a C++11
> extension`|
> ++----------------------------------------------------------
> --------------------+
> +
> ++----------------------------------------------------------
> ----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`scoped enumerations are a C++11
> extension`|
> ++----------------------------------------------------------
> ----------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`static data member` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`in union is a C++11 extension`|
> ++----------------------------------------------------------
> ------------------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------+----------------------+--------
> ------------------------------------------------------------
> ------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`non-type template argument
> referring to` |nbsp| |+--------------------+| |nbsp| :placeholder:`B`
> |nbsp| :diagtext:`with internal linkage is a C++11 extension`|
> +|
>               ||:diagtext:`function`||
>                                                 |
> +|
>               |+--------------------+|
>                                                 |
> +|
>               ||:diagtext:`object`  ||
>                                                 |
> +|
>               |+--------------------+|
>                                                 |
> ++----------------------------------------------------------
> ----------------------------+----------------------+--------
> ------------------------------------------------------------
> ------------------+
> +
> ++----------------------------------------------------------
> ---------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'template' keyword outside of a
> template`|
> ++----------------------------------------------------------
> ---------------------+
> +
> ++----------------------------------------------------------
> -----------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`default template arguments for a
> function template are a C++11 extension`|
> ++----------------------------------------------------------
> -----------------------------------------------------+
> +
> ++----------------------------------------------------------
> ---------+---------------------------------------+----------
> ------------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`first declaration of` |nbsp|
> |+-------------------------------------+| |nbsp|
> :diagtext:`specialization of` |nbsp| :placeholder:`B` |nbsp|
> :diagtext:`outside namespace` |nbsp| :placeholder:`C` |nbsp| :diagtext:`is
> a C++11 extension`|
> +|
>  ||:diagtext:`class template`           ||
>
>                                                     |
> +|
>  |+-------------------------------------+|
>
>                                                       |
> +|
>  ||:diagtext:`class template partial`   ||
>
>                                                     |
> +|
>  |+-------------------------------------+|
>
>                                                       |
> +|
>  ||:diagtext:`variable template`        ||
>
>                                                     |
> +|
>  |+-------------------------------------+|
>
>                                                       |
> +|
>  ||:diagtext:`variable template partial`||
>
>                                                     |
> +|
>  |+-------------------------------------+|
>
>                                                       |
> +|
>  ||:diagtext:`function template`        ||
>
>                                                     |
> +|
>  |+-------------------------------------+|
>
>                                                       |
> +|
>  ||:diagtext:`member function`          ||
>
>                                                     |
> +|
>  |+-------------------------------------+|
>
>                                                       |
> +|
>  ||:diagtext:`static data member`       ||
>
>                                                     |
> +|
>  |+-------------------------------------+|
>
>                                                       |
> +|
>  ||:diagtext:`member class`             ||
>
>                                                     |
> +|
>  |+-------------------------------------+|
>
>                                                       |
> +|
>  ||:diagtext:`member enumeration`       ||
>
>                                                     |
> +|
>  |+-------------------------------------+|
>
>                                                       |
> ++----------------------------------------------------------
> ---------+---------------------------------------+----------
> ------------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------+
> +
> ++----------------------------------------------------------
> --------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'typename' occurs outside of a
> template`|
> ++----------------------------------------------------------
> --------------------+
> +
> ++----------------------------------------------------------
> --------------------------------------------+---------------
> --------+-------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`unelaborated friend declaration is
> a C++11 extension; specify '`|+---------------------+|:diagtext:`' to
> befriend` |nbsp| :placeholder:`B`|
> +|
>                               ||:diagtext:`struct`   ||
>                              |
> +|
>                               |+---------------------+|
>                              |
> +|
>                               ||:diagtext:`interface`||
>                              |
> +|
>                               |+---------------------+|
>                              |
> +|
>                               ||:diagtext:`union`    ||
>                              |
> +|
>                               |+---------------------+|
>                              |
> +|
>                               ||:diagtext:`class`    ||
>                              |
> +|
>                               |+---------------------+|
>                              |
> +|
>                               ||:diagtext:`enum`     ||
>                              |
> +|
>                               |+---------------------+|
>                              |
> ++----------------------------------------------------------
> --------------------------------------------+---------------
> --------+-------------------------------------------------+
> +
> ++----------------------------------------------------------
> ---------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`variadic templates are a C++11
> extension`|
> ++----------------------------------------------------------
> ---------------------+
> +
> +
> +-Wc++11-extra-semi
> +------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`extra ';' outside of a function is
> a C++11 extension`|
> ++----------------------------------------------------------
> ---------------------------------+
> +
> +
> +-Wc++11-inline-namespace
> +------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`inline namespaces are a C++11
> feature`|
> ++----------------------------------------------------------
> ------------------+
> +
> +
> +-Wc++11-long-long
> +-----------------
> +**Diagnostic text:**
> +
> ++-----------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'long long' is a C++11 extension`|
> ++-----------------------------------------------------------------------+
> +
> +
> +-Wc++11-narrowing
> +-----------------
> +Some of the diagnostics controlled by this flag are enabled by default.
> +
> +**Diagnostic text:**
> +
> ++-----------------------+----------------------------------
> ------+--------+--------------------------------------------
> ------------------------------------------------------------
> ------------------+
> +|:error:`error:` |nbsp| |+--------------------------------------+|
> |nbsp| |+----------------------------------------------------------
> --------------------------------------------------------------+|
> +|                       ||:diagtext:`case value`                ||
> ||+---------------------------------------------------------
> -----------------------------------------------------+        ||
> +|                       |+--------------------------------------+|
>   |||:diagtext:`cannot be narrowed from type` |nbsp| :placeholder:`C`
> |nbsp| :diagtext:`to` |nbsp| :placeholder:`D`|        ||
> +|                       ||:diagtext:`enumerator value`          ||
> ||+---------------------------------------------------------
> -----------------------------------------------------+        ||
> +|                       |+--------------------------------------+|
>   |+----------------------------------------------------------
> --------------------------------------------------------------+|
> +|                       ||:diagtext:`non-type template argument`||
> ||+---------------------------------------------------------
> -------------------------------------------------------------+||
> +|                       |+--------------------------------------+|
>   |||:diagtext:`evaluates to` |nbsp| :placeholder:`C`:diagtext:`, which
> cannot be narrowed to type` |nbsp| :placeholder:`D`|||
> +|                       ||:diagtext:`array size`                ||
> ||+---------------------------------------------------------
> -------------------------------------------------------------+||
> +|                       |+--------------------------------------+|
>   |+----------------------------------------------------------
> --------------------------------------------------------------+|
> +|                       ||:diagtext:`constexpr if condition`    ||
> |
>                                                 |
> +|                       |+--------------------------------------+|
>   |
>                                                   |
> ++-----------------------+----------------------------------
> ------+--------+--------------------------------------------
> ------------------------------------------------------------
> ------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------------------+
> +|:error:`error:` |nbsp| :diagtext:`constant expression evaluates to`
> |nbsp| :placeholder:`A` |nbsp| :diagtext:`which cannot be narrowed to type`
> |nbsp| :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------------------+
> +|:error:`error:` |nbsp| :diagtext:`type` |nbsp| :placeholder:`A` |nbsp|
> :diagtext:`cannot be narrowed to` |nbsp| :placeholder:`B` |nbsp|
> :diagtext:`in initializer list`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ------------------+
> +|:error:`error:` |nbsp| :diagtext:`non-constant-expression cannot be
> narrowed from type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp|
> :placeholder:`B` |nbsp| :diagtext:`in initializer list`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ---------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`constant expression evaluates to`
> |nbsp| :placeholder:`A` |nbsp| :diagtext:`which cannot be narrowed to type`
> |nbsp| :placeholder:`B` |nbsp| :diagtext:`in C++11`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ---------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`type` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`cannot be narrowed to` |nbsp| :placeholder:`B` |nbsp|
> :diagtext:`in initializer list in C++11`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`non-constant-expression cannot be
> narrowed from type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp|
> :placeholder:`B` |nbsp| :diagtext:`in initializer list in C++11`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------+
> +
> +
> +-Wc++14-binary-literal
> +----------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`binary integer literals are a
> C++14 extension`|
> ++----------------------------------------------------------
> --------------------------+
> +
> +
> +-Wc++14-compat
> +--------------
> +Synonym for `-Wc++98-c++11-c++14-compat`_.
> +
> +
> +-Wc++14-compat-pedantic
> +-----------------------
> +Synonym for `-Wc++98-c++11-c++14-compat-pedantic`_.
> +
> +
> +-Wc++14-extensions
> +------------------
> +Some of the diagnostics controlled by this flag are enabled by default.
> +
> +Also controls `-Wc++14-binary-literal`_.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------+-------------------------+--------
> --------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`use of this statement in a
> constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is a C++14
> extension`|
> +|
>            ||:diagtext:`function`   ||
>   |
> +|
>            |+-----------------------+|
>   |
> +|
>            ||:diagtext:`constructor`||
>   |
> +|
>            |+-----------------------+|
>   |
> ++----------------------------------------------------------
> -------------------------+-------------------------+--------
> --------------------------------+
> +
> ++----------------------------------------------------------
> --------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`multiple return statements in
> constexpr function is a C++14 extension`|
> ++----------------------------------------------------------
> --------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------+-------------------------+---------
> -------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`variable declaration in a
> constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is a C++14
> extension`|
> +|
>           ||:diagtext:`function`   ||
>   |
> +|
>           |+-----------------------+|
>   |
> +|
>           ||:diagtext:`constructor`||
>   |
> +|
>           |+-----------------------+|
>   |
> ++----------------------------------------------------------
> ------------------------+-------------------------+---------
> -------------------------------+
> +
> ++----------------------------------------------------------
> -------------------+-------------------------+--------------
> --------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`type definition in a constexpr`
> |nbsp| |+-----------------------+| |nbsp| :diagtext:`is a C++14 extension`|
> +|
>      ||:diagtext:`function`   ||                                        |
> +|
>      |+-----------------------+|                                        |
> +|
>      ||:diagtext:`constructor`||                                        |
> +|
>      |+-----------------------+|                                        |
> ++----------------------------------------------------------
> -------------------+-------------------------+--------------
> --------------------------+
> +
> ++----------------------------------------------------------
> -----------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`use of the` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`attribute is a C++14 extension`|
> ++----------------------------------------------------------
> -----------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ---------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'decltype(auto)' type specifier is
> a C++14 extension`|
> ++----------------------------------------------------------
> ---------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`initialized lambda captures are a
> C++14 extension`|
> ++----------------------------------------------------------
> ------------------------------+
> +
> ++----------------------------------------------------------
> ---------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`variable templates are a C++14
> extension`|
> ++----------------------------------------------------------
> ---------------------+
> +
> +
> +-Wc++1y-extensions
> +------------------
> +Synonym for `-Wc++14-extensions`_.
> +
> +
> +-Wc++1z-compat
> +--------------
> +This diagnostic is enabled by default.
> +
> +Controls `-Wdeprecated-register`_, `-Wdeprecated-increment-bool`_.
> +
> +
> +-Wc++1z-extensions
> +------------------
> +Some of the diagnostics controlled by this flag are enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------+
> +|:warning:`warning:` |nbsp| :diagtext:`constexpr if is a C++1z extension`|
> ++----------------------------------------------------------
> --------------+
> +
> ++----------------------------------------------------------
> -----------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'constexpr' on lambda expressions
> is a C++1z extension`|
> ++----------------------------------------------------------
> -----------------------------------+
> +
> ++----------------------------------------------------------
> -----------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`use of the` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`attribute is a C++1z extension`|
> ++----------------------------------------------------------
> -----------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> -----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`decomposition declarations are a
> C++1z extension`|
> ++----------------------------------------------------------
> -----------------------------+
> +
> ++----------------------------------------------------------
> ----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`pack fold expression is a C++1z
> extension`|
> ++----------------------------------------------------------
> ----------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'begin' and 'end' returning
> different types (`:placeholder:`A` |nbsp| :diagtext:`and` |nbsp|
> :placeholder:`B`:diagtext:`) is a C++1z extension`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`hexadecimal floating literals are
> a C++1z feature`|
> ++----------------------------------------------------------
> ------------------------------+
> +
> ++----------------------------------------------------------
> -------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`inline variables are a C++1z
> extension`|
> ++----------------------------------------------------------
> -------------------+
> +
> ++----------------------------------------------------------
> ---------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`nested namespace definition is a
> C++1z extension; define each namespace separately`|
> ++----------------------------------------------------------
> ---------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> -----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`capture of '\*this' by copy is a
> C++1z extension`|
> ++----------------------------------------------------------
> -----------------------------+
> +
> ++----------------------------------------------------------
> --------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`static\_assert with no message is
> a C++1z extension`|
> ++----------------------------------------------------------
> --------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`template template parameter using
> 'typename' is a C++1z extension`|
> ++----------------------------------------------------------
> ----------------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`default scope specifier for
> attributes is a C++1z extension`|
> ++----------------------------------------------------------
> ----------------------------------------+
> +
> +
> +-Wc++98-c++11-c++14-compat
> +--------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --+---------------------------+-----------------------------
> ---------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`attributes on` |nbsp|
> |+-------------------------+| |nbsp| :diagtext:`declaration are
> incompatible with C++ standards before C++1z`|
> +|
> ||:diagtext:`a namespace`  ||
>                                   |
> +|
> |+-------------------------+|
>                                   |
> +|
> ||:diagtext:`an enumerator`||
>                                   |
> +|
> |+-------------------------+|
>                                   |
> ++----------------------------------------------------------
> --+---------------------------+-----------------------------
> ---------------------------------------------------+
> +
> ++----------------------------------------------------------
> -----------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`constexpr if is incompatible with
> C++ standards before C++1z`|
> ++----------------------------------------------------------
> -----------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`constexpr on lambda expressions is
> incompatible with C++ standards before C++1z`|
> ++----------------------------------------------------------
> ------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> --------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`decomposition declarations are
> incompatible with C++ standards before C++1z`|
> ++----------------------------------------------------------
> --------------------------------------------------------+
> +
> ++----------------------------------------------------------
> -------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`pack fold expression is
> incompatible with C++ standards before C++1z`|
> ++----------------------------------------------------------
> -------------------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`inline variables are incompatible
> with C++ standards before C++1z`|
> ++----------------------------------------------------------
> ----------------------------------------------+
> +
> ++----------------------------------------------------------
> --------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`nested namespace definition is
> incompatible with C++ standards before C++1z`|
> ++----------------------------------------------------------
> --------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ---------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`by value capture of '\*this' is
> incompatible with C++ standards before C++1z`|
> ++----------------------------------------------------------
> ---------------------------------------------------------+
> +
> ++----------------------------------------------------------
> -----------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`static\_assert with no message is
> incompatible with C++ standards before C++1z`|
> ++----------------------------------------------------------
> -----------------------------------------------------------+
> +
> ++----------------------------------------------------------
> -------------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`template template parameter using
> 'typename' is incompatible with C++ standards before C++1z`|
> ++----------------------------------------------------------
> -------------------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`unicode literals are incompatible
> with C++ standards before C++1z`|
> ++----------------------------------------------------------
> ----------------------------------------------+
> +
> ++----------------------------------------------------------
> -------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`default scope specifier for
> attributes is incompatible with C++ standards before C++1z`|
> ++----------------------------------------------------------
> -------------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'begin' and 'end' returning
> different types (`:placeholder:`A` |nbsp| :diagtext:`and` |nbsp|
> :placeholder:`B`:diagtext:`) is incompatible with C++ standards before
> C++1z`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------+
> +
> +
> +-Wc++98-c++11-c++14-compat-pedantic
> +-----------------------------------
> +Also controls `-Wc++98-c++11-c++14-compat`_.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`hexidecimal floating literals are
> incompatible with C++ standards before C++1z`|
> ++----------------------------------------------------------
> -----------------------------------------------------------+
> +
> +
> +-Wc++98-c++11-compat
> +--------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------+-------------------------+--------
> -----------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`use of this statement in a
> constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is
> incompatible with C++ standards before C++14`|
> +|
>            ||:diagtext:`function`   ||
>                              |
> +|
>            |+-----------------------+|
>                              |
> +|
>            ||:diagtext:`constructor`||
>                              |
> +|
>            |+-----------------------+|
>                              |
> ++----------------------------------------------------------
> -------------------------+-------------------------+--------
> -----------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------+
> +|:warning:`warning:` |nbsp| :diagtext:`multiple return statements in
> constexpr function is incompatible with C++ standards before C++14`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------+
> +
> ++----------------------------------------------------------
> -------------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`constexpr function with no return
> statements is incompatible with C++ standards before C++14`|
> ++----------------------------------------------------------
> -------------------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------+-------------------------+---------
> ----------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`variable declaration in a
> constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is
> incompatible with C++ standards before C++14`|
> +|
>           ||:diagtext:`function`   ||
>                              |
> +|
>           |+-----------------------+|
>                              |
> +|
>           ||:diagtext:`constructor`||
>                              |
> +|
>           |+-----------------------+|
>                              |
> ++----------------------------------------------------------
> ------------------------+-------------------------+---------
> ----------------------------------------------------------+
> +
> ++----------------------------------------------------------
> -------------------+-------------------------+--------------
> -----------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`type definition in a constexpr`
> |nbsp| |+-----------------------+| |nbsp| :diagtext:`is incompatible with
> C++ standards before C++14`|
> +|
>      ||:diagtext:`function`   ||
>                        |
> +|
>      |+-----------------------+|
>                        |
> +|
>      ||:diagtext:`constructor`||
>                        |
> +|
>      |+-----------------------+|
>                        |
> ++----------------------------------------------------------
> -------------------+-------------------------+--------------
> -----------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'decltype(auto)' type specifier is
> incompatible with C++ standards before C++14`|
> ++----------------------------------------------------------
> ------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`digit separators are incompatible
> with C++ standards before C++14`|
> ++----------------------------------------------------------
> ----------------------------------------------+
> +
> ++----------------------------------------------------------
> ---------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`initialized lambda captures are
> incompatible with C++ standards before C++14`|
> ++----------------------------------------------------------
> ---------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`variable templates are
> incompatible with C++ standards before C++14`|
> ++----------------------------------------------------------
> ------------------------------------------------+
> +
> +
> +-Wc++98-c++11-compat-pedantic
> +-----------------------------
> +Also controls `-Wc++98-c++11-compat`_.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`binary integer literals are
> incompatible with C++ standards before C++14`|
> ++----------------------------------------------------------
> -----------------------------------------------------+
> +
> +
> +-Wc++98-compat
> +--------------
> +Also controls `-Wc++98-compat-local-type-template-args`_,
> `-Wc++98-compat-unnamed-type-template-args`_, `-Wc++98-c++11-compat`_,
> `-Wc++98-c++11-c++14-compat`_.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`alias declarations are
> incompatible with C++98`|
> ++----------------------------------------------------------
> ---------------------------+
> +
> ++----------------------------------------------------------
> -----------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'alignas' is incompatible with
> C++98`|
> ++----------------------------------------------------------
> -----------------+
> +
> ++----------------------------------------------------------
> ----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`alignof expressions are
> incompatible with C++98`|
> ++----------------------------------------------------------
> ----------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`C++11 attribute syntax is
> incompatible with C++98`|
> ++----------------------------------------------------------
> ------------------------------+
> +
> ++----------------------------------------------------------
> -----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'auto' type specifier is
> incompatible with C++98`|
> ++----------------------------------------------------------
> -----------------------------+
> +
> ++----------------------------------------------------------
> -----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'constexpr' specifier is
> incompatible with C++98`|
> ++----------------------------------------------------------
> -----------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`constructor call from initializer
> list is incompatible with C++98`|
> ++----------------------------------------------------------
> ----------------------------------------------+
> +
> ++----------------------------------------------------------
> ---------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'decltype' type specifier is
> incompatible with C++98`|
> ++----------------------------------------------------------
> ---------------------------------+
> +
> ++---------------------------+-----------------------+------
> --------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| |+---------------------+| |nbsp|
> :diagtext:`function definitions are incompatible with C++98`|
> +|                           ||:diagtext:`defaulted`||
>                                                 |
> +|                           |+---------------------+|
>                                                 |
> +|                           ||:diagtext:`deleted`  ||
>                                                 |
> +|                           |+---------------------+|
>                                                 |
> ++---------------------------+-----------------------+------
> --------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> --------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`delegating constructors are
> incompatible with C++98`|
> ++----------------------------------------------------------
> --------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`scalar initialized from empty
> initializer list is incompatible with C++98`|
> ++----------------------------------------------------------
> ------------------------------------------------------+
> +
> ++----------------------------------------------------------
> -------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`enumeration types with a fixed
> underlying type are incompatible with C++98`|
> ++----------------------------------------------------------
> -------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`befriending enumeration type`
> |nbsp| :placeholder:`A` |nbsp| :diagtext:`is incompatible with C++98`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------+
> +
> ++----------------------------------------------------------
> -------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`enumeration type in nested name
> specifier is incompatible with C++98`|
> ++----------------------------------------------------------
> -------------------------------------------------+
> +
> ++----------------------------------------------------------
> --------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`explicit conversion functions are
> incompatible with C++98`|
> ++----------------------------------------------------------
> --------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`range-based for loop is
> incompatible with C++98`|
> ++----------------------------------------------------------
> ----------------------------+
> +
> ++----------------------------------------------------------
> -----------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`friend declaration naming a member
> of the declaring class is incompatible with C++98`|
> ++----------------------------------------------------------
> -----------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> --------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`generalized initializer lists are
> incompatible with C++98`|
> ++----------------------------------------------------------
> --------------------------------------+
> +
> ++----------------------------------------------------------
> --------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`jump from this goto statement to
> its label is incompatible with C++98`|
> ++----------------------------------------------------------
> --------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------+
> +|:warning:`warning:` |nbsp| :diagtext:`jump from this indirect goto
> statement to one of its possible targets is incompatible with C++98`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------+
> +
> ++----------------------------------------------------------
> --------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`initialization of
> initializer\_list object is incompatible with C++98`|
> ++----------------------------------------------------------
> --------------------------------------------------+
> +
> ++----------------------------------------------------------
> --------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`inline namespaces are incompatible
> with C++98`|
> ++----------------------------------------------------------
> --------------------------+
> +
> ++----------------------------------------------------------
> ---------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`lambda expressions are
> incompatible with C++98`|
> ++----------------------------------------------------------
> ---------------------------+
> +
> ++----------------------------------------------------------
> -------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'<::' is treated as digraph '<:'
> (aka '\[') followed by ':' in C++98`|
> ++----------------------------------------------------------
> -------------------------------------------------+
> +
> ++----------------------------------------------------------
> --------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`literal operators are incompatible
> with C++98`|
> ++----------------------------------------------------------
> --------------------------+
> +
> ++----------------------------------------------------------
> -----------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`universal character name referring
> to a control character is incompatible with C++98`|
> ++----------------------------------------------------------
> -----------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`specifying character
> '`:placeholder:`A`:diagtext:`' with a universal character name is
> incompatible with C++98`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------+
> +
> ++----------------------------------------------------------
> --------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`noexcept specifications are
> incompatible with C++98`|
> ++----------------------------------------------------------
> --------------------------------+
> +
> ++----------------------------------------------------------
> -----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`noexcept expressions are
> incompatible with C++98`|
> ++----------------------------------------------------------
> -----------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`use of non-static data member`
> |nbsp| :placeholder:`A` |nbsp| :diagtext:`in an unevaluated context is
> incompatible with C++98`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`non-class friend type` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`is incompatible with C++98`|
> ++----------------------------------------------------------
> ------------------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`in-class initialization of
> non-static data members is incompatible with C++98`|
> ++----------------------------------------------------------
> ----------------------------------------------------------+
> +
> ++---------------------------+------------------------------
> +-----------------------------------------------------------
> -------------------------------------+----------------------
> ----------------+----------------------------------------------+
> +|:warning:`warning:` |nbsp| |+----------------------------+| |nbsp|
> :diagtext:`member` |nbsp| :placeholder:`B` |nbsp| :diagtext:`with a
> non-trivial` |nbsp| |+------------------------------------+| |nbsp|
> :diagtext:`is incompatible with C++98`|
> +|                           ||:diagtext:`anonymous struct`||
>
>       ||:diagtext:`constructor`             ||
>                 |
> +|                           |+----------------------------+|
>
>         |+------------------------------------+|
>                     |
> +|                           ||:diagtext:`union`           ||
>
>       ||:diagtext:`copy constructor`        ||
>                 |
> +|                           |+----------------------------+|
>
>         |+------------------------------------+|
>                     |
> +|                           |                              |
>
>       ||:diagtext:`move constructor`        ||
>                 |
> +|                           |                              |
>
>       |+------------------------------------+|
>                   |
> +|                           |                              |
>
>       ||:diagtext:`copy assignment operator`||
>                 |
> +|                           |                              |
>
>       |+------------------------------------+|
>                   |
> +|                           |                              |
>
>       ||:diagtext:`move assignment operator`||
>                 |
> +|                           |                              |
>
>       |+------------------------------------+|
>                   |
> +|                           |                              |
>
>       ||:diagtext:`destructor`              ||
>                 |
> +|                           |                              |
>
>       |+------------------------------------+|
>                   |
> ++---------------------------+------------------------------
> +-----------------------------------------------------------
> -------------------------------------+----------------------
> ----------------+----------------------------------------------+
> +
> ++----------------------------------------------------------
> -----------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'nullptr' is incompatible with
> C++98`|
> ++----------------------------------------------------------
> -----------------+
> +
> ++----------------------------------------------------------
> ----------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`'
> keyword is incompatible with C++98`|
> ++----------------------------------------------------------
> ----------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------+-------------------------+--
> --------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`passing object of trivial but
> non-POD type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`through variadic`
> |nbsp| |+-----------------------+| |nbsp| :diagtext:`is incompatible with
> C++98`|
> +|
>
>  ||:diagtext:`function`   ||                                              |
> +|
>
>  |+-----------------------+|                                              |
> +|
>
>  ||:diagtext:`block`      ||                                              |
> +|
>
>  |+-----------------------+|                                              |
> +|
>
>  ||:diagtext:`method`     ||                                              |
> +|
>
>  |+-----------------------+|                                              |
> +|
>
>  ||:diagtext:`constructor`||                                              |
> +|
>
>  |+-----------------------+|                                              |
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------+-------------------------+--
> --------------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`raw string literals are
> incompatible with C++98`|
> ++----------------------------------------------------------
> ----------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`reference qualifiers on functions
> are incompatible with C++98`|
> ++----------------------------------------------------------
> ------------------------------------------+
> +
> ++----------------------------------------------------------
> ---------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`reference initialized from
> initializer list is incompatible with C++98`|
> ++----------------------------------------------------------
> ---------------------------------------------------+
> +
> ++----------------------------------------------------------
> --------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`rvalue references are incompatible
> with C++98`|
> ++----------------------------------------------------------
> --------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`scoped enumerations are
> incompatible with C++98`|
> ++----------------------------------------------------------
> ----------------------------+
> +
> ++----------------------------------------------------------
> --------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`substitution failure due to access
> control is incompatible with C++98`|
> ++----------------------------------------------------------
> --------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`static\_assert declarations are
> incompatible with C++98`|
> ++----------------------------------------------------------
> ------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`static data member` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`in union is incompatible with C++98`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------+
> +
> ++----------------------------------------------------------
> -----------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`jump from switch statement to this
> case label is incompatible with C++98`|
> ++----------------------------------------------------------
> -----------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------+
> +|:warning:`warning:` |nbsp| :diagtext:`redundant parentheses surrounding
> address non-type template argument are incompatible with C++98`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------+
> +
> ++----------------------------------------------------------
> ---------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`use of null pointer as non-type
> template argument is incompatible with C++98`|
> ++----------------------------------------------------------
> ---------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------+----------------------+--------
> ------------------------------------------------------------
> ------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`non-type template argument
> referring to` |nbsp| |+--------------------+| |nbsp| :placeholder:`B`
> |nbsp| :diagtext:`with internal linkage is incompatible with C++98`|
> +|
>               ||:diagtext:`function`||
>                                                       |
> +|
>               |+--------------------+|
>                                                       |
> +|
>               ||:diagtext:`object`  ||
>                                                       |
> +|
>               |+--------------------+|
>                                                       |
> ++----------------------------------------------------------
> ----------------------------+----------------------+--------
> ------------------------------------------------------------
> ------------------------+
> +
> ++----------------------------------------------------------
> -------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`use of 'template' keyword outside
> of a template is incompatible with C++98`|
> ++----------------------------------------------------------
> -------------------------------------------------------+
> +
> ++----------------------------------------------------------
> -----------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`default template arguments for a
> function template are incompatible with C++98`|
> ++----------------------------------------------------------
> -----------------------------------------------------------+
> +
> ++---------------------------+------------------------------
> ---------+--------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------------------------+
> +|:warning:`warning:` |nbsp| |+-------------------------------------+|
> |nbsp| :diagtext:`specialization of` |nbsp| :placeholder:`B` |nbsp|
> :diagtext:`outside namespace` |nbsp| :placeholder:`C` |nbsp| :diagtext:`is
> incompatible with C++98`|
> +|                           ||:diagtext:`class template`           ||
>
>
>             |
> +|                           |+-------------------------------------+|
>
>
>             |
> +|                           ||:diagtext:`class template partial`   ||
>
>
>             |
> +|                           |+-------------------------------------+|
>
>
>             |
> +|                           ||:diagtext:`variable template`        ||
>
>
>             |
> +|                           |+-------------------------------------+|
>
>
>             |
> +|                           ||:diagtext:`variable template partial`||
>
>
>             |
> +|                           |+-------------------------------------+|
>
>
>             |
> +|                           ||:diagtext:`function template`        ||
>
>
>             |
> +|                           |+-------------------------------------+|
>
>
>             |
> +|                           ||:diagtext:`member function`          ||
>
>
>             |
> +|                           |+-------------------------------------+|
>
>
>             |
> +|                           ||:diagtext:`static data member`       ||
>
>
>             |
> +|                           |+-------------------------------------+|
>
>
>             |
> +|                           ||:diagtext:`member class`             ||
>
>
>             |
> +|                           |+-------------------------------------+|
>
>
>             |
> +|                           ||:diagtext:`member enumeration`       ||
>
>
>             |
> +|                           |+-------------------------------------+|
>
>
>             |
> ++---------------------------+------------------------------
> ---------+--------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`trailing return types are
> incompatible with C++98`|
> ++----------------------------------------------------------
> ------------------------------+
> +
> ++----------------------------------------------------------
> -----------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`consecutive right angle brackets
> are incompatible with C++98 (use '> >')`|
> ++----------------------------------------------------------
> -----------------------------------------------------+
> +
> ++----------------------------------------------------------
> -----------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`use of 'typename' outside of a
> template is incompatible with C++98`|
> ++----------------------------------------------------------
> -----------------------------------------------+
> +
> ++----------------------------------------------------------
> ---------------------------------------------+--------------
> ---------+------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`befriending` |nbsp|
> :placeholder:`B` |nbsp| :diagtext:`without '`|+---------------------+|:diagtext:`'
> keyword is incompatible with C++98`|
> +|
>                                ||:diagtext:`struct`   ||
>                             |
> +|
>                                |+---------------------+|
>                             |
> +|
>                                ||:diagtext:`interface`||
>                             |
> +|
>                                |+---------------------+|
>                             |
> +|
>                                ||:diagtext:`union`    ||
>                             |
> +|
>                                |+---------------------+|
>                             |
> +|
>                                ||:diagtext:`class`    ||
>                             |
> +|
>                                |+---------------------+|
>                             |
> +|
>                                ||:diagtext:`enum`     ||
>                             |
> +|
>                                |+---------------------+|
>                             |
> ++----------------------------------------------------------
> ---------------------------------------------+--------------
> ---------+------------------------------------------------+
> +
> ++----------------------------------------------------------
> ---------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`using this character in an
> identifier is incompatible with C++98`|
> ++----------------------------------------------------------
> ---------------------------------------------+
> +
> ++----------------------------------------------------------
> -------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`unicode literals are incompatible
> with C++98`|
> ++----------------------------------------------------------
> -------------------------+
> +
> ++----------------------------------------------------------
> -----------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`'
> type specifier is incompatible with C++98`|
> ++----------------------------------------------------------
> -----------------------------------------------------+
> +
> ++----------------------------------------------------------
> --------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`inheriting constructors are
> incompatible with C++98`|
> ++----------------------------------------------------------
> --------------------------------+
> +
> ++----------------------------------------------------------
> ---------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`variadic templates are
> incompatible with C++98`|
> ++----------------------------------------------------------
> ---------------------------+
> +
> +
> +-Wc++98-compat-bind-to-temporary-copy
> +-------------------------------------
> +**Diagnostic text:**
> +
> ++---------------------------+------------------------------
> -----------+------------------------------------------------
> ------------------------------------------------------------
> ----------------+-------------------------------------------
> -----+----------------------------+
> +|:warning:`warning:` |nbsp| |+---------------------------------------+|
> |nbsp| :diagtext:`of type` |nbsp| :placeholder:`C` |nbsp| :diagtext:`when
> binding a reference to a temporary would` |nbsp|
> |+----------------------------------------------+| |nbsp| :diagtext:`in
> C++98`|
> +|                           ||:diagtext:`copying variable`           ||
>
>                                               ||:diagtext:`invoke an
> inaccessible constructor`||                            |
> +|                           |+---------------------------------------+|
>
>                                               |+----------------------------------------------+|
>                           |
> +|                           ||:diagtext:`copying parameter`          ||
>
>                                               ||:diagtext:`find no viable
> constructor`        ||                            |
> +|                           |+---------------------------------------+|
>
>                                               |+----------------------------------------------+|
>                           |
> +|                           ||:diagtext:`returning object`           ||
>
>                                               ||:diagtext:`find ambiguous
> constructors`       ||                            |
> +|                           |+---------------------------------------+|
>
>                                               |+----------------------------------------------+|
>                           |
> +|                           ||:diagtext:`throwing object`            ||
>
>                                               ||:diagtext:`invoke a deleted
> constructor`      ||                            |
> +|                           |+---------------------------------------+|
>
>                                               |+----------------------------------------------+|
>                           |
> +|                           ||:diagtext:`copying member subobject`   ||
>
>                                               |
>                     |                            |
> +|                           |+---------------------------------------+|
>
>                                               |
>                     |                            |
> +|                           ||:diagtext:`copying array element`      ||
>
>                                               |
>                     |                            |
> +|                           |+---------------------------------------+|
>
>                                               |
>                     |                            |
> +|                           ||:diagtext:`allocating object`          ||
>
>                                               |
>                     |                            |
> +|                           |+---------------------------------------+|
>
>                                               |
>                     |                            |
> +|                           ||:diagtext:`copying temporary`          ||
>
>                                               |
>                     |                            |
> +|                           |+---------------------------------------+|
>
>                                               |
>                     |                            |
> +|                           ||:diagtext:`initializing base subobject`||
>
>                                               |
>                     |                            |
> +|                           |+---------------------------------------+|
>
>                                               |
>                     |                            |
> +|                           ||:diagtext:`initializing vector element`||
>
>                                               |
>                     |                            |
> +|                           |+---------------------------------------+|
>
>                                               |
>                     |                            |
> ++---------------------------+------------------------------
> -----------+------------------------------------------------
> ------------------------------------------------------------
> ----------------+-------------------------------------------
> -----+----------------------------+
> +
> +
> +-Wc++98-compat-local-type-template-args
> +---------------------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`local type` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`as template argument is incompatible
> with C++98`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------+
> +
> +
> +-Wc++98-compat-pedantic
> +-----------------------
> +Also controls `-Wc++98-compat`_, `-Wc++98-compat-bind-to-temporary-copy`_,
> `-Wc++98-c++11-compat-pedantic`_, `-Wc++98-c++11-c++14-compat-pedantic`_.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------+-------------------------+----
> ------------------------------------------------------------
> ------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`implicit conversion from array
> size expression of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to`
> |nbsp| |+-----------------------+| |nbsp| :diagtext:`type` |nbsp|
> :placeholder:`C` |nbsp| :diagtext:`is incompatible with C++98`|
> +|
>
>  ||:diagtext:`integral`   ||
>                                               |
> +|
>
>  |+-----------------------+|
>                                               |
> +|
>
>  ||:diagtext:`enumeration`||
>                                               |
> +|
>
>  |+-----------------------+|
>                                               |
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------+-------------------------+----
> ------------------------------------------------------------
> ------------------------------+
> +
> ++----------------------------------------------------------
> --------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`cast between pointer-to-function
> and pointer-to-object is incompatible with C++98`|
> ++----------------------------------------------------------
> --------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`empty macro arguments are
> incompatible with C++98`|
> ++----------------------------------------------------------
> ------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`commas at the end of enumerator
> lists are incompatible with C++98`|
> ++----------------------------------------------------------
> ----------------------------------------------+
> +
> ++----------------------------------------------------------
> -------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`extern templates are incompatible
> with C++98`|
> ++----------------------------------------------------------
> -------------------------+
> +
> ++----------------------------------------------------------
> -------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'long long' is incompatible with
> C++98`|
> ++----------------------------------------------------------
> -------------------+
> +
> ++----------------------------------------------------------
> ------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`C++98 requires newline at end of
> file`|
> ++----------------------------------------------------------
> ------------------+
> +
> ++----------------------------------------------------------
> ---------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`#line number greater than 32767 is
> incompatible with C++98`|
> ++----------------------------------------------------------
> ---------------------------------------+
> +
> ++----------------------------------------------------------
> ---------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`extra ';' outside of a function is
> incompatible with C++98`|
> ++----------------------------------------------------------
> ---------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`variadic macros are incompatible
> with C++98`|
> ++----------------------------------------------------------
> ------------------------+
> +
> +
> +-Wc++98-compat-unnamed-type-template-args
> +-----------------------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`unnamed type as template argument
> is incompatible with C++98`|
> ++----------------------------------------------------------
> -----------------------------------------+
> +
> +
> +-Wc11-extensions
> +----------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------------+
> +|:warning:`warning:` |nbsp| :diagtext:`anonymous unions are a C11
> extension`|
> ++----------------------------------------------------------
> -----------------+
> +
> ++----------------------------------------------------------
> ------------------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a
> C11-specific feature`|
> ++----------------------------------------------------------
> ------------------------------+
> +
> ++----------------------------------------------------------
> ------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`anonymous structs are a C11
> extension`|
> ++----------------------------------------------------------
> ------------------+
> +
> ++----------------------------------------------------------
> --------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`generic selections are a
> C11-specific feature`|
> ++----------------------------------------------------------
> --------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`\_Noreturn functions are a
> C11-specific feature`|
> ++----------------------------------------------------------
> ----------------------------+
> +
> ++----------------------------------------------------------
> -----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`\_Static\_assert is a C11-specific
> feature`|
> ++----------------------------------------------------------
> -----------------------+
> +
> +
> +-Wc99-compat
> +------------
> +Some of the diagnostics controlled by this flag are enabled by default.
> +
> +**Diagnostic text:**
> +
> ++---------------------------+------------------------------
> --------------------------+--------------------------------------------+
> +|:warning:`warning:` |nbsp| |+------------------------------------------------------+|
> |nbsp| :diagtext:`is incompatible with C99`|
> +|                           ||:diagtext:`using this character in an
> identifier`     ||                                            |
> +|                           |+------------------------------------------------------+|
>                                           |
> +|                           ||:diagtext:`starting an identifier with this
> character`||                                            |
> +|                           |+------------------------------------------------------+|
>                                           |
> ++---------------------------+------------------------------
> --------------------------+--------------------------------------------+
> +
> ++----------------------------------------------------------
> -----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`unicode literals are incompatible
> with C99`|
> ++----------------------------------------------------------
> -----------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------------------------+---------
> --------------------------+----------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`integer literal is too large to be
> represented in type 'long', interpreting as 'unsigned long' per C89; this
> literal will` |nbsp| |+---------------------------------+| |nbsp|
> :diagtext:`in C99 onwards`|
> +|
>
>                     ||:diagtext:`have type 'long long'`||
>                 |
> +|
>
>                     |+---------------------------------+|
>                   |
> +|
>
>                     ||:diagtext:`be ill-formed`        ||
>                 |
> +|
>
>                     |+---------------------------------+|
>                   |
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------------------------+---------
> --------------------------+----------------------------------+
> +
> +
> +-Wc99-extensions
> +----------------
> +Some of the diagnostics controlled by this flag are enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`initializer for aggregate is not a
> compile-time constant`|
> ++----------------------------------------------------------
> -------------------------------------+
> +
> ++---------------------------+------------------------------
> ----+------------------------------+-----------------------+
> ----------------------------+
> +|:warning:`warning:` |nbsp| |+--------------------------------+|:diagtext:`array
> size` |nbsp| |+---------------------+|:diagtext:`is a C99 feature`|
> +|                           ||:diagtext:`qualifier in` |nbsp| ||
>                     ||                     ||                            |
> +|                           |+--------------------------------+|
>                       |+---------------------+|                            |
> +|                           ||:diagtext:`static` |nbsp|       ||
>                     ||                     ||                            |
> +|                           |+--------------------------------+|
>                       |+---------------------+|                            |
> +|                           ||                                ||
>                     ||:diagtext:`'\[\*\] '`||                            |
> +|                           |+--------------------------------+|
>                       |+---------------------+|                            |
> ++---------------------------+------------------------------
> ----+------------------------------+-----------------------+
> ----------------------------+
> +
> ++----------------------------------------------------------
> -------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`compound literals are a
> C99-specific feature`|
> ++----------------------------------------------------------
> -------------------------+
> +
> ++----------------------------------------------------------
> ---------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`flexible array members are a C99
> feature`|
> ++----------------------------------------------------------
> ---------------------+
> +
> ++----------------------------------------------------------
> ---------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`variable declaration in for loop
> is a C99-specific feature`|
> ++----------------------------------------------------------
> ---------------------------------------+
> +
> ++----------------------------------------------------------
> -----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`ISO C99 requires whitespace after
> the macro name`|
> ++----------------------------------------------------------
> -----------------------------+
> +
> ++----------------------------------------------------------
> ----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`designated initializers are a C99
> feature`|
> ++----------------------------------------------------------
> ----------------------+
> +
> ++----------------------------------------------------------
> --------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`empty macro arguments are a C99
> feature`|
> ++----------------------------------------------------------
> --------------------+
> +
> ++----------------------------------------------------------
> ---------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`commas at the end of enumerator
> lists are a C99-specific feature`|
> ++----------------------------------------------------------
> ---------------------------------------------+
> +
> ++----------------------------------------------------------
> -----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`hexadecimal floating constants are
> a C99 feature`|
> ++----------------------------------------------------------
> -----------------------------+
> +
> +
> +-Wcast-align
> +------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`cast from` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`increases
> required alignment from` |nbsp| :placeholder:`C` |nbsp| :diagtext:`to`
> |nbsp| :placeholder:`D`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------------------------------------+
> +
> +
> +-Wcast-calling-convention
> +-------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ---------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`cast between incompatible calling
> conventions '`:placeholder:`A`:diagtext:`' and
> '`:placeholder:`B`:diagtext:`'; calls through this pointer may abort at
> runtime`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ---------------------+
> +
> +
> +-Wcast-of-sel-type
> +------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`cast of type` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp|
> :diagtext:`is deprecated; use sel\_getName instead`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------------------------------------+
> +
> +
> +-Wcast-qual
> +-----------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------+--------------------------
> -----------------+
> +|:warning:`warning:` |nbsp| :diagtext:`cast from` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`drops`
> |nbsp| |+-----------------------------------------+|
> +|
>
>    ||:diagtext:`const and volatile qualifiers`||
> +|
>
>    |+-----------------------------------------+|
> +|
>
>    ||:diagtext:`const qualifier`              ||
> +|
>
>    |+-----------------------------------------+|
> +|
>
>    ||:diagtext:`volatile qualifier`           ||
> +|
>
>    |+-----------------------------------------+|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------+--------------------------
> -----------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`cast from` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`must have
> all intermediate pointers const qualified to be safe`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ----------------------+
> +
> +
> +-Wchar-align
> +------------
> +This diagnostic flag exists for GCC compatibility, and has no effect in
> Clang.
> +
> +-Wchar-subscripts
> +-----------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --+-------------------------+-------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`array section` |nbsp|
> |+-----------------------+| |nbsp| :diagtext:`is of type 'char'`|
> +|
> ||:diagtext:`lower bound`||                                     |
> +|
> |+-----------------------+|                                     |
> +|
> ||:diagtext:`length`     ||                                     |
> +|
> |+-----------------------+|                                     |
> ++----------------------------------------------------------
> --+-------------------------+-------------------------------------+
> +
> ++----------------------------------------------------------
> --------------+
> +|:warning:`warning:` |nbsp| :diagtext:`array subscript is of type 'char'`|
> ++----------------------------------------------------------
> --------------+
> +
> +
> +-Wclang-cl-pch
> +--------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`support for '/Yc' with more than
> one source file not implemented yet; flag ignored`|
> ++----------------------------------------------------------
> ---------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> --------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`support for '/Yc' and '/Yu' with
> different filenames not implemented yet; flags ignored`|
> ++----------------------------------------------------------
> --------------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------+
> +|:warning:`warning:` |nbsp| :diagtext:`support for
> '`:placeholder:`A`:diagtext:`' without a filename not implemented yet; flag
> ignored`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`support for
> '`:placeholder:`A`:diagtext:`' without a corresponding /FI flag not
> implemented yet; flag ignored`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------+
> +
> +
> +-Wclass-varargs
> +---------------
> +Some of the diagnostics controlled by this flag are enabled by default.
> +
> +Also controls `-Wnon-pod-varargs`_.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------+-------------------------+----------------
> ------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`passing object of class type`
> |nbsp| :placeholder:`A` |nbsp| :diagtext:`through variadic` |nbsp|
> |+-----------------------+|+--------------------------------
> ------------------------------------+|
> +|
>
>  ||:diagtext:`function`   |||
>                       ||
> +|
>
>  |+-----------------------+|+--------------------------------
> ------------------------------------+|
> +|
>
>  ||:diagtext:`block`      |||+--------------------------
> ----------------------------------------+||
> +|
>
>  |+-----------------------+|||:diagtext:`; did you mean to call
> '`:placeholder:`D`:diagtext:`'?`|||
> +|
>
>  ||:diagtext:`method`     |||+--------------------------
> ----------------------------------------+||
> +|
>
>  |+-----------------------+|+--------------------------------
> ------------------------------------+|
> +|
>
>  ||:diagtext:`constructor`||
>                       |
> +|
>
>  |+-----------------------+|
>                       |
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------+-------------------------+----------------
> ------------------------------------------------------+
> +
> +
> +-Wcomma
> +-------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`possible misuse of comma operator
> here`|
> ++----------------------------------------------------------
> -------------------+
> +
> +
> +-Wcomment
> +---------
> +Some of the diagnostics controlled by this flag are enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`escaped newline between \*/
> characters at block comment end`|
> ++----------------------------------------------------------
> ----------------------------------------+
> +
> ++----------------------------------------------------------
> -------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`// comments are not allowed in
> this language`|
> ++----------------------------------------------------------
> -------------------------+
> +
> ++------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`multi-line // comment`|
> ++------------------------------------------------------------+
> +
> ++-----------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'/\*' within block comment`|
> ++-----------------------------------------------------------------+
> +
> +
> +-Wcomments
> +----------
> +Synonym for `-Wcomment`_.
> +
> +
> +-Wcompare-distinct-pointer-types
> +--------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------------+
> +|:warning:`warning:` |nbsp| :diagtext:`comparison of distinct pointer
> types`|
> ++----------------------------------------------------------
> -----------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`comparison of distinct pointer
> types (`:placeholder:`A` |nbsp| :diagtext:`and` |nbsp|
> :placeholder:`B`:diagtext:`) uses non-standard composite pointer type`
> |nbsp| :placeholder:`C`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------+
> +
> +
> +-Wcomplex-component-init
> +------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`complex initialization specifying
> real and imaginary components is an extension`|
> ++----------------------------------------------------------
> ------------------------------------------------------------+
> +
> +
> +-Wconditional-type-mismatch
> +---------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`pointer/integer type mismatch in
> conditional expression`|
> ++----------------------------------------------------------
> ------------------------------------+
> +
> +
> +-Wconditional-uninitialized
> +---------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------+-------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`variable` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`may be uninitialized when` |nbsp|
> |+-----------------------------+|
> +|
>                                                     ||:diagtext:`used
> here`        ||
> +|
>
> |+-----------------------------+|
> +|
>                                                     ||:diagtext:`captured
> by block`||
> +|
>
> |+-----------------------------+|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------+-------------------------------+
> +
> +
> +-Wconfig-macros
> +---------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++---------------------------+------------------------+-----
> ------------------------------------------------------------
> ------------------------------------------------------------
> ------------------+-----------------------------------------
> ---------+---------------------------------------------------------+
> +|:warning:`warning:` |nbsp| |+----------------------+| |nbsp|
> :diagtext:`of configuration macro '`:placeholder:`B`:diagtext:`' has no
> effect on the import of '`:placeholder:`C`:diagtext:`'; pass
> '`|+------------------------------------------------+|:diagtext:`' on the
> command line to configure the module`|
> +|                           ||:diagtext:`definition`||
>
>
>  ||+----------------------------------------------+||
>                                      |
> +|                           |+----------------------+|
>
>
>  |||:diagtext:`-D`:placeholder:`B`:diagtext:`=...`|||
>                                      |
> +|                           ||:diagtext:`#undef`    ||
>
>
>  ||+----------------------------------------------+||
>                                      |
> +|                           |+----------------------+|
>
>
>  |+------------------------------------------------+|
>                                      |
> +|                           |                        |
>
>
>  ||+------------------------------+                ||
>                                      |
> +|                           |                        |
>
>
>  |||:diagtext:`-U`:placeholder:`B`|                ||
>                                      |
> +|                           |                        |
>
>
>  ||+------------------------------+                ||
>                                      |
> +|                           |                        |
>
>
>  |+------------------------------------------------+|
>                                      |
> ++---------------------------+------------------------+-----
> ------------------------------------------------------------
> ------------------------------------------------------------
> ------------------+-----------------------------------------
> ---------+---------------------------------------------------------+
> +
> +
> +-Wconstant-conversion
> +---------------------
> +This diagnostic is enabled by default.
> +
> +Also controls `-Wbitfield-constant-conversion`_.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`implicit conversion from` |nbsp|
> :placeholder:`C` |nbsp| :diagtext:`to` |nbsp| :placeholder:`D` |nbsp|
> :diagtext:`changes value from` |nbsp| :placeholder:`A` |nbsp|
> :diagtext:`to` |nbsp| :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------------------------------------+
> +
> +
> +-Wconstant-logical-operand
> +--------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`use of logical
> '`:placeholder:`A`:diagtext:`' with constant operand`|
> ++----------------------------------------------------------
> ------------------------------------------------+
> +
> +
> +-Wconstexpr-not-const
> +---------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'constexpr' non-static member
> function will not be implicitly 'const' in C++14; add 'const' to avoid a
> change in behavior`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------+
> +
> +
> +-Wconsumed
> +----------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`consumed analysis attribute is
> attached to member of class '`:placeholder:`A`:diagtext:`' which isn't
> marked as consumable`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`state of variable
> '`:placeholder:`A`:diagtext:`' must match at the entry and exit of loop`|
> ++----------------------------------------------------------
> ----------------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`parameter
> '`:placeholder:`A`:diagtext:`' not in expected state when the function
> returns: expected '`:placeholder:`B`:diagtext:`', observed
> '`:placeholder:`C`:diagtext:`'`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`argument not in expected state;
> expected '`:placeholder:`A`:diagtext:`', observed
> '`:placeholder:`B`:diagtext:`'`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------+
> +
> ++----------------------------------------------------------
> -----------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`return state set for an
> unconsumable type '`:placeholder:`A`:diagtext:`'`|
> ++----------------------------------------------------------
> -----------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`return value not in expected
> state; expected '`:placeholder:`A`:diagtext:`', observed
> '`:placeholder:`B`:diagtext:`'`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -----------------+
> +|:warning:`warning:` |nbsp| :diagtext:`invalid invocation of method
> '`:placeholder:`A`:diagtext:`' on object '`:placeholder:`B`:diagtext:`'
> while it is in the '`:placeholder:`C`:diagtext:`' state`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -----------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`invalid invocation of method
> '`:placeholder:`A`:diagtext:`' on a temporary object while it is in the
> '`:placeholder:`B`:diagtext:`' state`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------------------------+
> +
> +
> +-Wconversion
> +------------
> +Some of the diagnostics controlled by this flag are enabled by default.
> +
> +Also controls `-Wbool-conversion`_, `-Wconstant-conversion`_,
> `-Wenum-conversion`_, `-Wfloat-conversion`_, `-Wshorten-64-to-32`_,
> `-Wint-conversion`_, `-Wliteral-conversion`_, `-Wnon-literal-null-conversion`_,
> `-Wnull-conversion`_, `-Wobjc-literal-conversion`_, `-Wsign-conversion`_,
> `-Wstring-conversion`_.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`implicit conversion discards
> imaginary component:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp|
> :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`implicit conversion loses
> floating-point precision:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to`
> |nbsp| :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`implicit conversion loses integer
> precision:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp|
> :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`implicit conversion turns vector
> to scalar:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp|
> :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`non-type template argument with
> value '`:placeholder:`A`:diagtext:`' converted to
> '`:placeholder:`B`:diagtext:`' for unsigned template parameter of type`
> |nbsp| :placeholder:`C`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`non-type template argument value
> '`:placeholder:`A`:diagtext:`' truncated to '`:placeholder:`B`:diagtext:`'
> for template parameter of type` |nbsp| :placeholder:`C`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -----------------------+
> +
> +
> +-Wconversion-null
> +-----------------
> +Synonym for `-Wnull-conversion`_.
> +
> +
> +-Wcoreturn-without-coawait
> +--------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'co\_return' used in a function
> that uses neither 'co\_await' nor 'co\_yield'`|
> ++----------------------------------------------------------
> ----------------------------------------------------------+
> +
> +
> +-Wcovered-switch-default
> +------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`default label in switch which
> covers all enumeration values`|
> ++----------------------------------------------------------
> ----------------------------------------+
> +
> +
> +-Wcstring-format-directive
> +--------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------------------------------------------+---------
> -------------+----------------------------------------------
> ----------------------------------------------+------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`using` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`directive in` |nbsp| |+--------------------+| |nbsp|
> :diagtext:`which is being passed as a formatting argument to the
> formatting` |nbsp| |+----------------------+|
> +|
>                                     ||:diagtext:`NSString`||
>
> ||:diagtext:`method`    ||
> +|
>                                     |+--------------------+|
>
> |+----------------------+|
> +|
>                                     ||:diagtext:`CFString`||
>
> ||:diagtext:`CFfunction`||
> +|
>                                     |+--------------------+|
>
> |+----------------------+|
> ++----------------------------------------------------------
> --------------------------------------------------+---------
> -------------+----------------------------------------------
> ----------------------------------------------+------------------------+
> +
> +
> +-Wctor-dtor-privacy
> +-------------------
> +This diagnostic flag exists for GCC compatibility, and has no effect in
> Clang.
> +
> +-Wcuda-compat
> +-------------
> +Some of the diagnostics controlled by this flag are enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute
> parameter` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is negative and will
> be ignored`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------------+
> +
> ++----------------------------------------------------------
> --------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`ignored 'inline' attribute on
> kernel function` |nbsp| :placeholder:`A`|
> ++----------------------------------------------------------
> --------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`kernel function` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`is a member function; this may not be
> accepted by nvcc`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`argument to '#pragma unroll'
> should not be in parentheses in CUDA C/C++`|
> ++----------------------------------------------------------
> ----------------------------------------------------+
> +
> +
> +-Wcustom-atomic-properties
> +--------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------+--------------------+---------------------
> -------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`atomic by default property` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`has a user defined` |nbsp|
> |+------------------+| |nbsp| :diagtext:`(property should be marked
> 'atomic' if this is intended)`|
> +|
>
>  ||:diagtext:`getter`||
>                         |
> +|
>
>  |+------------------+|
>                         |
> +|
>
>  ||:diagtext:`setter`||
>                         |
> +|
>
>  |+------------------+|
>                         |
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------+--------------------+---------------------
> -------------------------------------------------------+
> +
> +
> +-Wdangling-else
> +---------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`add explicit braces to avoid
> dangling else`|
> ++----------------------------------------------------------
> -----------------------+
> +
> +
> +-Wdangling-field
> +----------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`binding reference member` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`to stack allocated parameter` |nbsp|
> :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------------+
> +
> ++----------------------------------------------------------
> ------+----------------------------------+------------------
> ----------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`binding reference` |nbsp|
> |+--------------------------------+|:diagtext:`member` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`to a temporary value`|
> +|                                                                ||
>                           ||
>                                   |
> +|
> |+--------------------------------+|
>                                             |
> +|
> ||:diagtext:`subobject of` |nbsp| ||
>                                           |
> +|
> |+--------------------------------+|
>                                             |
> ++----------------------------------------------------------
> ------+----------------------------------+------------------
> ----------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`initializing pointer member`
> |nbsp| :placeholder:`A` |nbsp| :diagtext:`with the stack address of
> parameter` |nbsp| :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------------------------+
> +
> +
> +-Wdangling-initializer-list
> +---------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------------------------------------+----
> -----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`array backing the initializer list
> will be destroyed at the end of` |nbsp| |+----------------------------
> ---+|
> +|
>                                          ||:diagtext:`the full-expression`||
> +|
>                                          |+----------------------------
> ---+|
> +|
>                                          ||:diagtext:`the constructor`    ||
> +|
>                                          |+----------------------------
> ---+|
> ++----------------------------------------------------------
> -------------------------------------------------------+----
> -----------------------------+
> +
> +
> +-Wdate-time
> +-----------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`expansion of date or time macro is
> not reproducible`|
> ++----------------------------------------------------------
> --------------------------------+
> +
> +
> +-Wdealloc-in-category
> +---------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`-dealloc is being overridden in a
> category`|
> ++----------------------------------------------------------
> -----------------------+
> +
> +
> +-Wdebug-compression-unavailable
> +-------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`cannot compress debug sections
> (zlib not installed)`|
> ++----------------------------------------------------------
> --------------------------------+
> +
> +
> +-Wdeclaration-after-statement
> +-----------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`ISO C90 forbids mixing
> declarations and code`|
> ++----------------------------------------------------------
> -------------------------+
> +
> +
> +-Wdelegating-ctor-cycles
> +------------------------
> +This diagnostic is an error by default, but the flag
> ``-Wno-delegating-ctor-cycles`` can be used to disable the error.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------------------------------------------------------+
> +|:error:`error:` |nbsp| :diagtext:`constructor for` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`creates a delegation cycle`|
> ++----------------------------------------------------------
> --------------------------------------------------------------+
> +
> +
> +-Wdelete-incomplete
> +-------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`cannot delete expression with
> pointer-to-'void' type` |nbsp| :placeholder:`A`|
> ++----------------------------------------------------------
> ---------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`deleting pointer to incomplete
> type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`may cause undefined
> behavior`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------+
> +
> +
> +-Wdelete-non-virtual-dtor
> +-------------------------
> +Some of the diagnostics controlled by this flag are enabled by default.
> +
> +**Diagnostic text:**
> +
> ++---------------------------+------------------------+-----
> ------------------------------------------------------------
> -------------------------------------------------------+
> +|:warning:`warning:` |nbsp| |+----------------------+| |nbsp|
> :diagtext:`called on` |nbsp| :placeholder:`B` |nbsp| :diagtext:`that is
> abstract but has non-virtual destructor`|
> +|                           ||:diagtext:`delete`    ||
>
>                         |
> +|                           |+----------------------+|
>
>                         |
> +|                           ||:diagtext:`destructor`||
>
>                         |
> +|                           |+----------------------+|
>
>                         |
> ++---------------------------+------------------------+-----
> ------------------------------------------------------------
> -------------------------------------------------------+
> +
> ++---------------------------+------------------------+-----
> ------------------------------------------------------------
> -----------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| |+----------------------+| |nbsp|
> :diagtext:`called on non-final` |nbsp| :placeholder:`B` |nbsp|
> :diagtext:`that has virtual functions but non-virtual destructor`|
> +|                           ||:diagtext:`delete`    ||
>
>                                         |
> +|                           |+----------------------+|
>
>                                         |
> +|                           ||:diagtext:`destructor`||
>
>                                         |
> +|                           |+----------------------+|
>
>                                         |
> ++---------------------------+------------------------+-----
> ------------------------------------------------------------
> -----------------------------------------------------------------------+
> +
> +
> +-Wdeprecated
> +------------
> +Some of the diagnostics controlled by this flag are enabled by default.
> +
> +Also controls `-Wdeprecated-attributes`_, `-Wdeprecated-declarations`_,
> `-Wdeprecated-increment-bool`_, `-Wdeprecated-register`_,
> `-Wdeprecated-writable-strings`_.
> +
> +**Diagnostic text:**
> +
> ++---------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`-O4 is equivalent to -O3`|
> ++---------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> -----------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`access declarations are
> deprecated; use using declarations instead`|
> ++----------------------------------------------------------
> -----------------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------+---------------------------------+---------
> ------------------------------------------------------------
> --------------------------------------------------+---------
> -----------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`definition of implicit copy`
> |nbsp| |+-------------------------------+| |nbsp| :diagtext:`for` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`is deprecated because it has a
> user-declared` |nbsp| |+----------------------------
> --------------------------------+|
> +|
>   ||:diagtext:`constructor`        ||
>
>      ||+------------------------+---------------------------------+||
> +|
>   |+-------------------------------+|
>
>        |||:diagtext:`copy` |nbsp| |+-------------------------------+|||
> +|
>   ||:diagtext:`assignment operator`||
>
>      |||                        ||:diagtext:`assignment operator`||||
> +|
>   |+-------------------------------+|
>
>        |||                        |+-------------------------------+|||
> +|
>   |                                 |
>
>      |||                        ||:diagtext:`constructor`        ||||
> +|
>   |                                 |
>
>      |||                        |+-------------------------------+|||
> +|
>   |                                 |
>
>      ||+------------------------+---------------------------------+||
> +|
>   |                                 |
>
>      |+------------------------------------------------------------+|
> +|
>   |                                 |
>
>      ||:diagtext:`destructor`                                      ||
> +|
>   |                                 |
>
>      |+------------------------------------------------------------+|
> ++----------------------------------------------------------
> ----------------+---------------------------------+---------
> ------------------------------------------------------------
> --------------------------------------------------+---------
> -----------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------+
> +|:warning:`warning:` |nbsp| :diagtext:`out-of-line definition of
> constexpr static data member is redundant in C++17 and is deprecated`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`argument
> '`:placeholder:`A`:diagtext:`' is deprecated, use
> '`:placeholder:`B`:diagtext:`' instead`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`treating
> '`:placeholder:`A`:diagtext:`' input as '`:placeholder:`B`:diagtext:`' when
> in C++ mode, this behavior is deprecated`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`dynamic exception specifications
> are deprecated`|
> ++----------------------------------------------------------
> ----------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`OpenCL version` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`does not support the option
> '`:placeholder:`B`:diagtext:`'`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------+
> +
> ++----------------------------------------------------------
> --------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`Use of 'long' with '\_\_vector' is
> deprecated`|
> ++----------------------------------------------------------
> --------------------------+
> +
> +
> +-Wdeprecated-attributes
> +-----------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`specifying vector types with the
> 'mode' attribute is deprecated; use the 'vector\_size' attribute instead`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------+
> +
> +
> +-Wdeprecated-declarations
> +-------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`use of C-style parameters in
> Objective-C method declarations is deprecated`|
> ++----------------------------------------------------------
> -------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is
> deprecated`|
> ++----------------------------------------------------------
> ------------------+
> +
> ++----------------------------------------------------------
> -----------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`may be
> deprecated because the receiver type is unknown`|
> ++----------------------------------------------------------
> -----------------------------------------------------------+
> +
> ++----------------------------------------------------------
> -------------------------------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is
> deprecated:` |nbsp| :placeholder:`B`|
> ++----------------------------------------------------------
> -------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------+
> +|:warning:`warning:` |nbsp| :diagtext:`property access is using` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`method which is deprecated`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------+
> +
> +
> +-Wdeprecated-implementations
> +----------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------+----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`Implementing deprecated` |nbsp|
> |+--------------------+|
> +|
> ||:diagtext:`method`  ||
> +|
> |+--------------------+|
> +|
> ||:diagtext:`class`   ||
> +|
> |+--------------------+|
> +|
> ||:diagtext:`category`||
> +|
> |+--------------------+|
> ++----------------------------------------------------------
> ------------+----------------------+
> +
> +
> +-Wdeprecated-increment-bool
> +---------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`incrementing expression of type
> bool is deprecated and incompatible with C++1z`|
> ++----------------------------------------------------------
> -----------------------------------------------------------+
> +
> +
> +-Wdeprecated-objc-isa-usage
> +---------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`assignment to Objective-C's isa is
> deprecated in favor of object\_setClass()`|
> ++----------------------------------------------------------
> ---------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`direct access to Objective-C's isa
> is deprecated in favor of object\_getClass()`|
> ++----------------------------------------------------------
> ------------------------------------------------------------+
> +
> +
> +-Wdeprecated-objc-pointer-introspection
> +---------------------------------------
> +This diagnostic is enabled by default.
> +
> +Also controls `-Wdeprecated-objc-pointer-introspection-performSelector`_.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`bitmasking for introspection of
> Objective-C object pointers is strongly discouraged`|
> ++----------------------------------------------------------
> ----------------------------------------------------------------+
> +
> +
> +-Wdeprecated-objc-pointer-introspection-performSelector
> +-------------------------------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`bitmasking for introspection of
> Objective-C object pointers is strongly discouraged`|
> ++----------------------------------------------------------
> ----------------------------------------------------------------+
> +
> +
> +-Wdeprecated-register
> +---------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'register' storage class specifier
> is deprecated and incompatible with C++1z`|
> ++----------------------------------------------------------
> ---------------------------------------------------------+
> +
> +
> +-Wdeprecated-writable-strings
> +-----------------------------
> +Synonym for `-Wc++11-compat-deprecated-writable-strings`_.
> +
> +
> +-Wdirect-ivar-access
> +--------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`instance variable` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`is being directly accessed`|
> ++----------------------------------------------------------
> --------------------------------------------------------------------+
> +
> +
> +-Wdisabled-macro-expansion
> +--------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`disabled expansion of recursive
> macro`|
> ++----------------------------------------------------------
> ------------------+
> +
> +
> +-Wdisabled-optimization
> +-----------------------
> +This diagnostic flag exists for GCC compatibility, and has no effect in
> Clang.
> +
> +-Wdiscard-qual
> +--------------
> +This diagnostic flag exists for GCC compatibility, and has no effect in
> Clang.
> +
> +-Wdistributed-object-modifiers
> +------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`conflicting distributed object
> modifiers on parameter type in implementation of` |nbsp| :placeholder:`A`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`conflicting distributed object
> modifiers on return type in implementation of` |nbsp| :placeholder:`A`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------+
> +
> +
> +-Wdiv-by-zero
> +-------------
> +This diagnostic flag exists for GCC compatibility, and has no effect in
> Clang.
> +
> +-Wdivision-by-zero
> +------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++---------------------------+-----------------------+------
> ----------------------------------+
> +|:warning:`warning:` |nbsp| |+---------------------+| |nbsp|
> :diagtext:`by zero is undefined`|
> +|                           ||:diagtext:`remainder`||
>                     |
> +|                           |+---------------------+|
>                     |
> +|                           ||:diagtext:`division` ||
>                     |
> +|                           |+---------------------+|
>                     |
> ++---------------------------+-----------------------+------
> ----------------------------------+
> +
> +
> +-Wdll-attribute-on-redeclaration
> +--------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`redeclaration of` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`should not add` |nbsp| :placeholder:`B`
> |nbsp| :diagtext:`attribute`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------+
> +
> +
> +-Wdllexport-explicit-instantiation-decl
> +---------------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`explicit instantiation declaration
> should not be 'dllexport'`|
> ++----------------------------------------------------------
> -----------------------------------------+
> +
> +
> +-Wdllimport-static-field-def
> +----------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------------+
> +|:warning:`warning:` |nbsp| :diagtext:`definition of dllimport static
> field`|
> ++----------------------------------------------------------
> -----------------+
> +
> +
> +-Wdocumentation
> +---------------
> +Also controls `-Wdocumentation-html`_, `-Wdocumentation-deprecated-
> sync`_.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------+----------------+
> -----------------------+------------------------------------
> ------------------------------------+-----------------------
> +-------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+
> |+---------------------+|:diagtext:`' command should not be used in a
> comment attached to a non-`|+---------------------+| |nbsp|
> :diagtext:`declaration`|
> +|                                        ||:diagtext:`\\`|||:diagtext:`class`
>   ||
> ||:diagtext:`class`    ||                               |
> +|                                        |+--------------+|+---------------------+|
>
> |+---------------------+|                               |
> +|                                        ||:diagtext:`@`
> |||:diagtext:`interface`||
>                       ||:diagtext:`interface`||
>    |
> +|                                        |+--------------+|+---------------------+|
>
> |+---------------------+|                               |
> +|                                        |
> ||:diagtext:`protocol` ||
>                       ||:diagtext:`protocol` ||
>    |
> +|                                        |
> |+---------------------+|
>                       |+---------------------+|
>    |
> +|                                        |
> ||:diagtext:`struct`   ||
>                       ||:diagtext:`struct`   ||
>    |
> +|                                        |
> |+---------------------+|
>                       |+---------------------+|
>    |
> +|                                        |
> ||:diagtext:`union`    ||
>                       ||:diagtext:`union`    ||
>    |
> +|                                        |
> |+---------------------+|
>                       |+---------------------+|
>    |
> ++----------------------------------------+----------------+
> -----------------------+------------------------------------
> ------------------------------------+-----------------------
> +-------------------------------+
> +
> ++----------------------------------------------------------
> -+----------------+-----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`duplicated command
> '`|+--------------+|:placeholder:`B`:diagtext:`'`|
> +|
>  ||:diagtext:`\\`||                             |
> +|
>  |+--------------+|                             |
> +|
>  ||:diagtext:`@` ||                             |
> +|
>  |+--------------+|                             |
> ++----------------------------------------------------------
> -+----------------+-----------------------------+
> +
> ++----------------------------------------------------------
> --------+----------------+-------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`empty paragraph passed to
> '`|+--------------+|:placeholder:`B`:diagtext:`' command`|
> +|
> ||:diagtext:`\\`||                                     |
> +|
> |+--------------+|                                     |
> +|
> ||:diagtext:`@` ||                                     |
> +|
> |+--------------+|                                     |
> ++----------------------------------------------------------
> --------+----------------+-------------------------------------+
> +
> ++----------------------------------------+----------------+
> --------------------------+---------------------------------
> ------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+
> |+------------------------+|:diagtext:`' command should not be used in a
> comment attached to a non-container declaration`|
> +|                                        ||:diagtext:`\\`|||:diagtext:`classdesign`
> ||
>                    |
> +|                                        |+--------------+|+------------------------+|
>
>                |
> +|                                        ||:diagtext:`@`
> |||:diagtext:`coclass`     ||
>                                                |
> +|                                        |+--------------+|+------------------------+|
>
>                |
> +|                                        |
> ||:diagtext:`dependency`  ||
>                                              |
> +|                                        |
> |+------------------------+|
>                                              |
> +|                                        |
> ||:diagtext:`helper`      ||
>                                              |
> +|                                        |
> |+------------------------+|
>                                              |
> +|                                        |
> ||:diagtext:`helperclass` ||
>                                              |
> +|                                        |
> |+------------------------+|
>                                              |
> +|                                        |
> ||:diagtext:`helps`       ||
>                                              |
> +|                                        |
> |+------------------------+|
>                                              |
> +|                                        |
> ||:diagtext:`instancesize`||
>                                              |
> +|                                        |
> |+------------------------+|
>                                              |
> +|                                        |
> ||:diagtext:`ownership`   ||
>                                              |
> +|                                        |
> |+------------------------+|
>                                              |
> +|                                        |
> ||:diagtext:`performance` ||
>                                              |
> +|                                        |
> |+------------------------+|
>                                              |
> +|                                        |
> ||:diagtext:`security`    ||
>                                              |
> +|                                        |
> |+------------------------+|
>                                              |
> +|                                        |
> ||:diagtext:`superclass`  ||
>                                              |
> +|                                        |
> |+------------------------+|
>                                              |
> ++----------------------------------------+----------------+
> --------------------------+---------------------------------
> ------------------------------------------------------------+
> +
> ++----------------------------------------+----------------+
> ---------------------------+--------------------------------
> -------------------------------------+----------------------
> -------------+-------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+
> |+-------------------------+|:diagtext:`' command should be used in a
> comment attached to` |nbsp| |+---------------------------------+| |nbsp|
> :diagtext:`declaration`|
> +|                                        ||:diagtext:`\\`|||:diagtext:`function`
>    ||
>  ||:diagtext:`a function`           ||                               |
> +|                                        |+--------------+|+-------------------------+|
>
>  |+---------------------------------+|                               |
> +|                                        ||:diagtext:`@`
> |||:diagtext:`functiongroup`||
>                        ||:diagtext:`a function`           ||
>                |
> +|                                        |+--------------+|+-------------------------+|
>
>  |+---------------------------------+|                               |
> +|                                        |
> ||:diagtext:`method`       ||
>                        ||:diagtext:`an Objective-C method`||
>                |
> +|                                        |
> |+-------------------------+|
>                        |+---------------------------------+|
>                  |
> +|                                        |
> ||:diagtext:`methodgroup`  ||
>                        ||:diagtext:`an Objective-C method`||
>                |
> +|                                        |
> |+-------------------------+|
>                        |+---------------------------------+|
>                  |
> +|                                        |
> ||:diagtext:`callback`     ||
>                        ||:diagtext:`a pointer to function`||
>                |
> +|                                        |
> |+-------------------------+|
>                        |+---------------------------------+|
>                  |
> ++----------------------------------------+----------------+
> ---------------------------+--------------------------------
> -------------------------------------+----------------------
> -------------+-------------------------------+
> +
> ++----------------------------------------------------------
> ---------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`HTML start tag prematurely ended,
> expected attribute name or '>'`|
> ++----------------------------------------------------------
> ---------------------------------------------+
> +
> ++----------------------------------------------------------
> ---------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`expected quoted string after
> equals sign`|
> ++----------------------------------------------------------
> ---------------------+
> +
> ++----------------------------------------------------------
> -------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`parameter
> '`:placeholder:`A`:diagtext:`' is already documented`|
> ++----------------------------------------------------------
> -------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`unrecognized parameter passing
> direction, valid directions are '\[in\]', '\[out\]' and '\[in,out\]'`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------+
> +
> ++----------------------------------------+----------------+
> ------------------------------------------------------------
> -------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|:diagtext:`param'
> command used in a comment that is not attached to a function declaration`|
> +|                                        ||:diagtext:`\\`||
>
>  |
> +|                                        |+--------------+|
>
>  |
> +|                                        ||:diagtext:`@` ||
>
>  |
> +|                                        |+--------------+|
>
>  |
> ++----------------------------------------+----------------+
> ------------------------------------------------------------
> -------------------------------+
> +
> ++----------------------------------------------------------
> -----------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`parameter
> '`:placeholder:`A`:diagtext:`' not found in the function declaration`|
> ++----------------------------------------------------------
> -----------------------------------------------------------+
> +
> ++----------------------------------------+----------------+
> ------------------------------------------------------------
> -------------------------+-------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|:placeholder:`B`:diagtext:`'
> command used in a comment that is attached to a` |nbsp|
> |+-----------------------------------+|
> +|                                        ||:diagtext:`\\`||
>
>  ||:diagtext:`function returning void`||
> +|                                        |+--------------+|
>
>  |+-----------------------------------+|
> +|                                        ||:diagtext:`@` ||
>
>  ||:diagtext:`constructor`            ||
> +|                                        |+--------------+|
>
>  |+-----------------------------------+|
> +|                                        |                |
>
>  ||:diagtext:`destructor`             ||
> +|                                        |                |
>
>  |+-----------------------------------+|
> +|                                        |                |
>
>  ||:diagtext:`method returning void`  ||
> +|                                        |                |
>
>  |+-----------------------------------+|
> ++----------------------------------------+----------------+
> ------------------------------------------------------------
> -------------------------+-------------------------------------+
> +
> ++----------------------------------------+----------------+
> ------------------------------------------------------------
> ----------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|:placeholder:`B`:diagtext:`'
> command used in a comment that is not attached to a function or method
> declaration`|
> +|                                        ||:diagtext:`\\`||
>
>                       |
> +|                                        |+--------------+|
>
>                       |
> +|                                        ||:diagtext:`@` ||
>
>                       |
> +|                                        |+--------------+|
>
>                       |
> ++----------------------------------------+----------------+
> ------------------------------------------------------------
> ----------------------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`template parameter
> '`:placeholder:`A`:diagtext:`' is already documented`|
> ++----------------------------------------------------------
> ----------------------------------------------------+
> +
> ++----------------------------------------+----------------+
> ------------------------------------------------------------
> --------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|:diagtext:`tparam'
> command used in a comment that is not attached to a template declaration`|
> +|                                        ||:diagtext:`\\`||
>
>   |
> +|                                        |+--------------+|
>
>   |
> +|                                        ||:diagtext:`@` ||
>
>   |
> +|                                        |+--------------+|
>
>   |
> ++----------------------------------------+----------------+
> ------------------------------------------------------------
> --------------------------------+
> +
> ++----------------------------------------------------------
> --------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`template parameter
> '`:placeholder:`A`:diagtext:`' not found in the template declaration`|
> ++----------------------------------------------------------
> --------------------------------------------------------------------+
> +
> ++---------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`not a Doxygen trailing comment`|
> ++---------------------------------------------------------------------+
> +
> ++----------------------------------------+----------------+
> ------------------------------------------------------------
> ------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|:placeholder:`B`:diagtext:`'
> command does not terminate a verbatim text block`|
> +|                                        ||:diagtext:`\\`||
>                                                                 |
> +|                                        |+--------------+|
>                                                                 |
> +|                                        ||:diagtext:`@` ||
>                                                                 |
> +|                                        |+--------------+|
>                                                                 |
> ++----------------------------------------+----------------+
> ------------------------------------------------------------
> ------------------+
> +
> +
> +-Wdocumentation-deprecated-sync
> +-------------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`declaration is marked with
> '\\deprecated' command but does not have a deprecation attribute`|
> ++----------------------------------------------------------
> ------------------------------------------------------------------------+
> +
> +
> +-Wdocumentation-html
> +--------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`HTML end tag
> '`:placeholder:`A`:diagtext:`' is forbidden`|
> ++----------------------------------------------------------
> -------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`HTML end tag does not match any
> start tag`|
> ++----------------------------------------------------------
> ----------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`HTML tag
> '`:placeholder:`A`:diagtext:`' requires an end tag`|
> ++----------------------------------------------------------
> ----------------------------------------+
> +
> ++----------------------------------------------------------
> -------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`HTML start tag
> '`:placeholder:`A`:diagtext:`' closed by '`:placeholder:`B`:diagtext:`'`|
> ++----------------------------------------------------------
> -------------------------------------------------------------------+
> +
> +
> +-Wdocumentation-pedantic
> +------------------------
> +Also controls `-Wdocumentation-unknown-command`_.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`whitespace is not allowed in
> parameter passing direction`|
> ++----------------------------------------------------------
> -------------------------------------+
> +
> +
> +-Wdocumentation-unknown-command
> +-------------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`unknown command tag name
> '`:placeholder:`A`:diagtext:`'; did you mean
> '`:placeholder:`B`:diagtext:`'?`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------+
> +
> ++---------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`unknown command tag name`|
> ++---------------------------------------------------------------+
> +
> +
> +-Wdollar-in-identifier-extension
> +--------------------------------
> +**Diagnostic text:**
> +
> ++--------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'$' in identifier`|
> ++--------------------------------------------------------+
> +
> +
> +-Wdouble-promotion
> +------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`implicit conversion increases
> floating-point precision:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to`
> |nbsp| :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------------+
> +
> +
> +-Wduplicate-decl-specifier
> +--------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`duplicate
> '`:placeholder:`A`:diagtext:`' declaration specifier`|
> ++----------------------------------------------------------
> -------------------------------------------+
> +
> ++----------------------------------------------------------
> -------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`duplicate
> '`:placeholder:`A`:diagtext:`' declaration specifier`|
> ++----------------------------------------------------------
> -------------------------------------------+
> +
> +
> +-Wduplicate-enum
> +----------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`element` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`has been implicitly assigned` |nbsp| :placeholder:`B`
> |nbsp| :diagtext:`which another element has been assigned`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -----------------------+
> +
> +
> +-Wduplicate-method-arg
> +----------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`redeclaration of method parameter`
> |nbsp| :placeholder:`A`|
> ++----------------------------------------------------------
> --------------------------------------+
> +
> +
> +-Wduplicate-method-match
> +------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`multiple declarations of method`
> |nbsp| :placeholder:`A` |nbsp| :diagtext:`found and ignored`|
> ++----------------------------------------------------------
> -------------------------------------------------------------------------+
> +
> +
> +-Wdynamic-class-memaccess
> +-------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++---------------------------+------------------------------
> -+----------------------------------------------------------
> --------------------------------------+---------------------
> -------------------+----------------------------------------
> -----------------------------------------------------+------
> -------------------+
> +|:warning:`warning:` |nbsp| |+-----------------------------+| |nbsp|
> :diagtext:`this` |nbsp| :placeholder:`B` |nbsp| :diagtext:`call is a
> pointer to` |nbsp| |+--------------------------------------+|:diagtext:`dynamic
> class` |nbsp| :placeholder:`D`:diagtext:`; vtable pointer will be` |nbsp|
> |+-----------------------+|
> +|                           ||:diagtext:`destination for`  ||
>
>         ||                                      ||
>
>  ||:diagtext:`overwritten`||
> +|                           |+-----------------------------+|
>
>         |+--------------------------------------+|
>
>  |+-----------------------+|
> +|                           ||:diagtext:`source of`        ||
>
>         ||:diagtext:`class containing a` |nbsp| ||
>
>  ||:diagtext:`copied`     ||
> +|                           |+-----------------------------+|
>
>         |+--------------------------------------+|
>
>  |+-----------------------+|
> +|                           ||:diagtext:`first operand of` ||
>
>         |                                        |
>
>  ||:diagtext:`moved`      ||
> +|                           |+-----------------------------+|
>
>         |                                        |
>
>  |+-----------------------+|
> +|                           ||:diagtext:`second operand of`||
>
>         |                                        |
>
>  ||:diagtext:`compared`   ||
> +|                           |+-----------------------------+|
>
>         |                                        |
>
>  |+-----------------------+|
> ++---------------------------+------------------------------
> -+----------------------------------------------------------
> --------------------------------------+---------------------
> -------------------+----------------------------------------
> -----------------------------------------------------+------
> -------------------+
> +
> +
> +-Weffc++
> +--------
> +This diagnostic flag exists for GCC compatibility, and has no effect in
> Clang.
> +
> +-Wembedded-directive
> +--------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`embedding a directive within macro
> arguments has undefined behavior`|
> ++----------------------------------------------------------
> ------------------------------------------------+
> +
> +
> +-Wempty-body
> +------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++--------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`for loop has empty body`|
> ++--------------------------------------------------------------+
> +
> ++------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`if statement has empty body`|
> ++------------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------+
> +|:warning:`warning:` |nbsp| :diagtext:`range-based for loop has empty
> body`|
> ++----------------------------------------------------------
> ----------------+
> +
> ++----------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`switch statement has empty body`|
> ++----------------------------------------------------------------------+
> +
> ++----------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`while loop has empty body`|
> ++----------------------------------------------------------------+
> +
> +
> +-Wempty-decomposition
> +---------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`ISO C++1z does not allow a
> decomposition group to be empty`|
> ++----------------------------------------------------------
> ---------------------------------------+
> +
> +
> +-Wempty-translation-unit
> +------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`ISO C requires a translation unit
> to contain at least one declaration`|
> ++----------------------------------------------------------
> --------------------------------------------------+
> +
> +
> +-Wencode-type
> +-------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ----------------+
> +|:warning:`warning:` |nbsp| :diagtext:`encoding of` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`type is incomplete because` |nbsp|
> :placeholder:`B` |nbsp| :diagtext:`component has unknown encoding`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ----------------+
> +
> +
> +-Wendif-labels
> +--------------
> +Synonym for `-Wextra-tokens`_.
> +
> +
> +-Wenum-compare
> +--------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`comparison of two values with
> different enumeration types`|
> ++----------------------------------------------------------
> --------------------------------------+
> +
> +
> +-Wenum-conversion
> +-----------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`implicit conversion from
> enumeration type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to different
> enumeration type` |nbsp| :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------------------------------+
> +
> +
> +-Wenum-too-large
> +----------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`enumeration values exceed range of
> largest integer`|
> ++----------------------------------------------------------
> -------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`incremented enumerator value`
> |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not representable in the
> largest integer type`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------------+
> +
> +
> +-Wexceptions
> +------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------------------------------------+-------------
> ------------+--------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`cannot refer to a non-static
> member from the handler of a` |nbsp| |+-----------------------+| |nbsp|
> :diagtext:`function try block`|
> +|
>                                 ||:diagtext:`constructor`||
>                       |
> +|
>                                 |+-----------------------+|
>                       |
> +|
>                                 ||:diagtext:`destructor` ||
>                       |
> +|
>                                 |+-----------------------+|
>                       |
> ++----------------------------------------------------------
> ----------------------------------------------+-------------
> ------------+--------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------+
> +|:warning:`warning:` |nbsp| :diagtext:`exception of type` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`will be caught by earlier handler`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------+
> +
> +
> +-Wexit-time-destructors
> +-----------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`declaration requires an exit-time
> destructor`|
> ++----------------------------------------------------------
> -------------------------+
> +
> +
> +-Wexpansion-to-defined
> +----------------------
> +Some of the diagnostics controlled by this flag are enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`macro expansion producing
> 'defined' has undefined behavior`|
> ++----------------------------------------------------------
> ---------------------------------------+
> +
> ++----------------------------------------------------------
> ---------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`macro expansion producing
> 'defined' has undefined behavior`|
> ++----------------------------------------------------------
> ---------------------------------------+
> +
> +
> +-Wexplicit-initialize-call
> +--------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`explicit call to +initialize
> results in duplicate call to +initialize`|
> ++----------------------------------------------------------
> --------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`explicit call to \[super
> initialize\] should only be in implementation of +initialize`|
> ++----------------------------------------------------------
> ------------------------------------------------------------------+
> +
> +
> +-Wexplicit-ownership-type
> +-------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------+
> +|:warning:`warning:` |nbsp| :diagtext:`method parameter of type` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`with no explicit ownership`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------+
> +
> +
> +-Wextended-offsetof
> +-------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`using extended field designator is
> an extension`|
> ++----------------------------------------------------------
> ----------------------------+
> +
> +
> +-Wextern-c-compat
> +-----------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++---------------------------+---------------------------+--
> ------------------+-----------------------------------------
> ---+---------------------------+--------------------------+
> +|:warning:`warning:` |nbsp| |+-------------------------+|+------------------+|
> |nbsp| :diagtext:`has size 0 in C,` |nbsp| |+-------------------------+|
> |nbsp| :diagtext:`in C++`|
> +|                           ||
>  |||:diagtext:`struct`||
> ||:diagtext:`size 1`       ||                          |
> +|                           |+-------------------------+|+------------------+|
>                                           |+-------------------------+|
>                       |
> +|                           ||:diagtext:`empty` |nbsp|
> |||:diagtext:`union` ||
> ||:diagtext:`non-zero size`||                          |
> +|                           |+-------------------------+|+------------------+|
>                                           |+-------------------------+|
>                       |
> ++---------------------------+---------------------------+--
> ------------------+-----------------------------------------
> ---+---------------------------+--------------------------+
> +
> +
> +-Wextern-initializer
> +--------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'extern' variable has an
> initializer`|
> ++----------------------------------------------------------
> -----------------+
> +
> +
> +-Wextra
> +-------
> +Some of the diagnostics controlled by this flag are enabled by default.
> +
> +Controls `-Wmissing-field-initializers`_, `-Wignored-qualifiers`_,
> `-Winitializer-overrides`_, `-Wsemicolon-before-method-body`_,
> `-Wmissing-method-return-type`_, `-Wsign-compare`_, `-Wunused-parameter`_.
> +
> +
> +-Wextra-qualification
> +---------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`extra qualification on member`
> |nbsp| :placeholder:`A`|
> ++----------------------------------------------------------
> ----------------------------------+
> +
> +
> +-Wextra-semi
> +------------
> +Also controls `-Wc++11-extra-semi`_.
> +
> +**Diagnostic text:**
> +
> ++--------------------------------------------------------+-
> -----------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`extra ';'` |nbsp|
> |+----------------------------------------------+|
> +|
> ||:diagtext:`outside of a function`             ||
> +|
> |+----------------------------------------------+|
> +|
> ||+--------------------------------------------+||
> +|
> |||:diagtext:`inside a` |nbsp| :placeholder:`B`|||
> +|
> ||+--------------------------------------------+||
> +|
> |+----------------------------------------------+|
> +|
> ||:diagtext:`inside instance variable list`     ||
> +|
> |+----------------------------------------------+|
> +|
> ||:diagtext:`after member function definition`  ||
> +|
> |+----------------------------------------------+|
> ++--------------------------------------------------------+-
> -----------------------------------------------+
> +
> ++----------------------------------------------------------
> -----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`extra ';' after member function
> definition`|
> ++----------------------------------------------------------
> -----------------------+
> +
> +
> +-Wextra-tokens
> +--------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`extra tokens at end of
> #`:placeholder:`A` |nbsp| :diagtext:`directive`|
> ++----------------------------------------------------------
> --------------------------------------------------+
> +
> ++----------------------------------------------------------
> ---------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`extra tokens at the end of
> '#pragma omp` |nbsp| :placeholder:`A`:diagtext:`' are ignored`|
> ++----------------------------------------------------------
> ---------------------------------------------------------------------+
> +
> +
> +-Wfallback
> +----------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`falling back to` |nbsp|
> :placeholder:`A`|
> ++----------------------------------------------------------
> --------------------+
> +
> +
> +-Wflag-enum
> +-----------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`enumeration value` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`is out of range of flags in enumeration
> type` |nbsp| :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------------------------+
> +
> +
> +-Wflexible-array-extensions
> +---------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`may not be
> used as an array element due to flexible array member`|
> ++----------------------------------------------------------
> ---------------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ---------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`may not be
> nested in a struct due to flexible array member`|
> ++----------------------------------------------------------
> ---------------------------------------------------------------+
> +
> +
> +-Wfloat-conversion
> +------------------
> +Also controls `-Wfloat-overflow-conversion`_, `-Wfloat-zero-conversion`_.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`implicit conversion turns
> floating-point number into integer:` |nbsp| :placeholder:`A` |nbsp|
> :diagtext:`to` |nbsp| :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------------------+
> +
> +
> +-Wfloat-equal
> +-------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`comparing floating point with ==
> or != is unsafe`|
> ++----------------------------------------------------------
> -----------------------------+
> +
> +
> +-Wfloat-overflow-conversion
> +---------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`implicit conversion of out of
> range value from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp|
> :placeholder:`B` |nbsp| :diagtext:`changes value from` |nbsp|
> :placeholder:`C` |nbsp| :diagtext:`to` |nbsp| :placeholder:`D`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -------------------------+
> +
> +
> +-Wfloat-zero-conversion
> +-----------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`implicit conversion from` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp|
> :diagtext:`changes non-zero value from` |nbsp| :placeholder:`C` |nbsp|
> :diagtext:`to` |nbsp| :placeholder:`D`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------------------+
> +
> +
> +-Wfor-loop-analysis
> +-------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------------------------+----------------
> ---------+--------------------------------------------------
> --------------+
> +|:warning:`warning:` |nbsp| :diagtext:`variable` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`is` |nbsp| |+-----------------------+| |nbsp|
> :diagtext:`both in the loop header and in the loop body`|
> +|
>                              ||:diagtext:`decremented`||
>                                             |
> +|
>                              |+-----------------------+|
>                                             |
> +|
>                              ||:diagtext:`incremented`||
>                                             |
> +|
>                              |+-----------------------+|
>                                             |
> ++----------------------------------------------------------
> -------------------------------------------+----------------
> ---------+--------------------------------------------------
> --------------+
> +
> ++-----------------------------------------------+----------
> ------------------------------------------------------------
> ------------------------------------------------------------
> --------------------------+---------------------------------
> -----------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`variable`|+--------
> ------------------------------------------------------------
> --------------------------------------------------------------------------------------+|
> |nbsp| :diagtext:`used in loop condition not modified in loop body`|
> +|                                               ||:diagtext:`s`
>
>                                                        ||
>                                                   |
> +|
>  |+----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------+|
>                                 |
> +|
>  ||+------------------------+
>
>       ||
> |
> +|                                               ||| |nbsp|
> :placeholder:`B`|
>                                                                       ||
>                                                                 |
> +|
>  ||+------------------------+
>
>       ||
> |
> +|
>  |+----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------+|
>                                 |
> +|
>  ||+------------------------------------------------------------------------------------+
>                                                                   ||
>                                                             |
> +|                                               |||:diagtext:`s` |nbsp|
> :placeholder:`B` |nbsp| :diagtext:`and` |nbsp| :placeholder:`C`|
>                                                         ||
>                                                   |
> +|
>  ||+------------------------------------------------------------------------------------+
>                                                                   ||
>                                                             |
> +|
>  |+----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------+|
>                                 |
> +|
>  ||+---------------------------------------------------------
> ----------------------------------------------------------+
>                        ||
>                   |
> +|                                               |||:diagtext:`s` |nbsp|
> :placeholder:`B`:diagtext:`,` |nbsp| :placeholder:`C`:diagtext:`, and`
> |nbsp| :placeholder:`D`|                                     ||
>                                                         |
> +|
>  ||+---------------------------------------------------------
> ----------------------------------------------------------+
>                        ||
>                   |
> +|
>  |+----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------+|
>                                 |
> +|
>  ||+---------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------+||
>                                 |
> +|                                               |||:diagtext:`s` |nbsp|
> :placeholder:`B`:diagtext:`,` |nbsp| :placeholder:`C`:diagtext:`,` |nbsp|
> :placeholder:`D`:diagtext:`, and` |nbsp| :placeholder:`E`|||
>                                                     |
> +|
>  ||+---------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------+||
>                                 |
> +|
>  |+----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------+|
>                                 |
> ++-----------------------------------------------+----------
> ------------------------------------------------------------
> ------------------------------------------------------------
> --------------------------+---------------------------------
> -----------------------------------+
> +
> +
> +-Wformat
> +--------
> +This diagnostic is enabled by default.
> +
> +Also controls `-Wformat-extra-args`_, `-Wformat-zero-length`_,
> `-Wnonnull`_, `-Wformat-security`_, `-Wformat-y2k`_,
> `-Wformat-invalid-specifier`_.
> +
> +**Diagnostic text:**
> +
> ++---------------------------+------------------------------
> ----------------+-------------------------------------------
> ------------------------------------------------------------
> --------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| |+--------------------------------------------+|
> |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' should not be used as
> format arguments; add an explicit cast to` |nbsp| :placeholder:`B` |nbsp|
> :diagtext:`instead`|
> +|                           ||:diagtext:`values of type`
> ||
>
>                |
> +|                           |+--------------------------------------------+|
>
>
>            |
> +|                           ||:diagtext:`enum values with underlying
> type`||
>
>                      |
> +|                           |+--------------------------------------------+|
>
>
>            |
> ++---------------------------+------------------------------
> ----------------+-------------------------------------------
> ------------------------------------------------------------
> --------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------+-----------------------------+------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`format specifies type` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`but the argument has` |nbsp|
> |+---------------------------+| |nbsp| :placeholder:`B`|
> +|
>
> ||:diagtext:`type`           ||                        |
> +|
>
> |+---------------------------+|                        |
> +|
>
> ||:diagtext:`underlying type`||                        |
> +|
>
> |+---------------------------+|                        |
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------+-----------------------------+------------------------+
> +
> ++----------------------------------------------------------
> -------------------+-----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`invalid position specified for`
> |nbsp| |+---------------------------+|
> +|
>      ||:diagtext:`field width`    ||
> +|
>      |+---------------------------+|
> +|
>      ||:diagtext:`field precision`||
> +|
>      |+---------------------------+|
> ++----------------------------------------------------------
> -------------------+-----------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`cannot mix positional and
> non-positional arguments in format string`|
> ++----------------------------------------------------------
> ------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`length modifier
> '`:placeholder:`A`:diagtext:`' results in undefined behavior or no effect
> with '`:placeholder:`B`:diagtext:`' conversion specifier`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`format string should not be a wide
> string`|
> ++----------------------------------------------------------
> ----------------------+
> +
> ++----------------------------------------------------------
> ---------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`position arguments in format
> strings start counting at 1 (not 0)`|
> ++----------------------------------------------------------
> ---------------------------------------------+
> +
> ++------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`format string missing`|
> ++------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`object format flags cannot be used
> with '`:placeholder:`A`:diagtext:`' conversion specifier`|
> ++----------------------------------------------------------
> ------------------------------------------------------------------------+
> +
> ++----------------------------------------+-----------------
> +-------------------------------------+---------------------
> --+--------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'`|+---------------+|:diagtext:`'
> specified field` |nbsp| |+---------------------+| |nbsp| :diagtext:`is
> missing a matching 'int' argument`|
> +|                                        ||:diagtext:`\*` ||
>                        ||:diagtext:`width`    ||
>                             |
> +|                                        |+---------------+|
>                        |+---------------------+|
>                             |
> +|                                        ||:diagtext:`.\*`||
>                        ||:diagtext:`precision`||
>                             |
> +|                                        |+---------------+|
>                        |+---------------------+|
>                             |
> ++----------------------------------------+-----------------
> +-------------------------------------+---------------------
> --+--------------------------------------------------------+
> +
> ++----------------------------------------------------+-----
> ------------------+-----------------------------------------
> ------------------------------------------------------------
> ------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`field` |nbsp|
> |+---------------------+| |nbsp| :diagtext:`should have type` |nbsp|
> :placeholder:`B`:diagtext:`, but argument has type` |nbsp| :placeholder:`C`|
> +|                                                    ||:diagtext:`width`
>   ||
>                                                |
> +|
> |+---------------------+|
>                                                                      |
> +|
> ||:diagtext:`precision`||
>                                                                      |
> +|
> |+---------------------+|
>                                                                      |
> ++----------------------------------------------------+-----
> ------------------+-----------------------------------------
> ------------------------------------------------------------
> ------------------+
> +
> ++-----------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`missing object format flag`|
> ++-----------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> --------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`format string contains '\\0'
> within the string body`|
> ++----------------------------------------------------------
> --------------------------------+
> +
> ++----------------------------------------------------------
> -----------------+
> +|:warning:`warning:` |nbsp| :diagtext:`format string is not
> null-terminated`|
> ++----------------------------------------------------------
> -----------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`flag
> '`:placeholder:`A`:diagtext:`' is ignored when flag
> '`:placeholder:`B`:diagtext:`' is present`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------+
> +
> ++------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`incomplete format specifier`|
> ++------------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`more '%%' conversions than data
> arguments`|
> ++----------------------------------------------------------
> ----------------------+
> +
> ++----------------------------------------------------------
> ---------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' is
> not a valid object format flag`|
> ++----------------------------------------------------------
> ---------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`flag
> '`:placeholder:`A`:diagtext:`' results in undefined behavior with
> '`:placeholder:`B`:diagtext:`' conversion specifier`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------------+
> +
> ++---------------------------+-------------------------+----
> ------------------------------------------------------------
> --------------------------------------------------+
> +|:warning:`warning:` |nbsp| |+-----------------------+| |nbsp|
> :diagtext:`used with '`:placeholder:`B`:diagtext:`' conversion specifier,
> resulting in undefined behavior`|
> +|                           ||:diagtext:`field width`||
>
>                     |
> +|                           |+-----------------------+|
>
>                     |
> +|                           ||:diagtext:`precision`  ||
>
>                     |
> +|                           |+-----------------------+|
>
>                     |
> ++---------------------------+-------------------------+----
> ------------------------------------------------------------
> --------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`data argument position
> '`:placeholder:`A`:diagtext:`' exceeds the number of data arguments
> (`:placeholder:`B`:diagtext:`)`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`zero field width in scanf format
> string is unused`|
> ++----------------------------------------------------------
> ------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`no closing '\]' for '%%\[' in
> scanf format string`|
> ++----------------------------------------------------------
> ------------------------------+
> +
> +
> +-Wformat-extra-args
> +-------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`data argument not used by format
> string`|
> ++----------------------------------------------------------
> --------------------+
> +
> +
> +-Wformat-invalid-specifier
> +--------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`invalid conversion specifier
> '`:placeholder:`A`:diagtext:`'`|
> ++----------------------------------------------------------
> ----------------------------------------+
> +
> +
> +-Wformat-non-iso
> +----------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------+----------------------------------+-----
> ----------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`'`
> |nbsp| |+--------------------------------+| |nbsp| :diagtext:`is not
> supported by ISO C`|
> +|
>      ||:diagtext:`length modifier`     ||
>            |
> +|
>      |+--------------------------------+|
>              |
> +|
>      ||:diagtext:`conversion specifier`||
>            |
> +|
>      |+--------------------------------+|
>              |
> ++----------------------------------------------------------
> -------------------+----------------------------------+-----
> ----------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`using length modifier
> '`:placeholder:`A`:diagtext:`' with conversion specifier
> '`:placeholder:`B`:diagtext:`' is not supported by ISO C`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`positional arguments are not
> supported by ISO C`|
> ++----------------------------------------------------------
> ----------------------------+
> +
> +
> +-Wformat-nonliteral
> +-------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`format string is not a string
> literal`|
> ++----------------------------------------------------------
> ------------------+
> +
> +
> +-Wformat-pedantic
> +-----------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------+-----------------------------+------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`format specifies type` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`but the argument has` |nbsp|
> |+---------------------------+| |nbsp| :placeholder:`B`|
> +|
>
> ||:diagtext:`type`           ||                        |
> +|
>
> |+---------------------------+|                        |
> +|
>
> ||:diagtext:`underlying type`||                        |
> +|
>
> |+---------------------------+|                        |
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------+-----------------------------+------------------------+
> +
> +
> +-Wformat-security
> +-----------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`format string is not a string
> literal (potentially insecure)`|
> ++----------------------------------------------------------
> -----------------------------------------+
> +
> +
> +-Wformat-y2k
> +------------
> +This diagnostic flag exists for GCC compatibility, and has no effect in
> Clang.
> +
> +-Wformat-zero-length
> +--------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++-------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`format string is empty`|
> ++-------------------------------------------------------------+
> +
> +
> +-Wformat=2
> +----------
> +Some of the diagnostics controlled by this flag are enabled by default.
> +
> +Controls `-Wformat-nonliteral`_, `-Wformat-security`_, `-Wformat-y2k`_.
> +
> +
> +-Wfour-char-constants
> +---------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------+
> +|:warning:`warning:` |nbsp| :diagtext:`multi-character character
> constant`|
> ++----------------------------------------------------------
> ---------------+
> +
> +
> +-Wframe-larger-than=
> +--------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> +The text of this diagnostic is not controlled by Clang.
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------+
> +|:warning:`warning:` |nbsp| :diagtext:`stack frame size of` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`bytes in` |nbsp| :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------+
> +
> +
> +-Wfunction-def-in-objc-container
> +--------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`function definition inside an
> Objective-C container is deprecated`|
> ++----------------------------------------------------------
> ----------------------------------------------+
> +
> +
> +-Wfuture-compat
> +---------------
> +This diagnostic flag exists for GCC compatibility, and has no effect in
> Clang.
> +
> +-Wgcc-compat
> +------------
> +Some of the diagnostics controlled by this flag are enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'enable\_if' is a clang extension`|
> ++----------------------------------------------------------
> --------------+
> +
> ++----------------------------------------------------------
> -------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`\_\_final is a GNU extension,
> consider using C++11 final`|
> ++----------------------------------------------------------
> -------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`GCC does not allow` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`attribute in this position on a function
> definition`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------+
> +
> ++----------------------------------------------------------
> -----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'break' is bound to loop, GCC
> binds it to switch`|
> ++----------------------------------------------------------
> -----------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`GCC does not allow the 'cleanup'
> attribute argument to be anything other than a simple identifier`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------+
> +
> ++----------------------------------------------------------
> -------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`GCC does not allow an attribute in
> this position on a function declaration`|
> ++----------------------------------------------------------
> -------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' is
> bound to current loop, GCC binds it to the enclosing loop`|
> ++----------------------------------------------------------
> ------------------------------------------------------------------------+
> +
> +
> +-Wglobal-constructors
> +---------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`declaration requires a global
> constructor`|
> ++----------------------------------------------------------
> ----------------------+
> +
> ++----------------------------------------------------------
> ---------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`declaration requires a global
> destructor`|
> ++----------------------------------------------------------
> ---------------------+
> +
> +
> +-Wgnu
> +-----
> +Some of the diagnostics controlled by this flag are enabled by default.
> +
> +Controls `-Wgnu-alignof-expression`_, `-Wgnu-anonymous-struct`_,
> `-Wgnu-auto-type`_, `-Wgnu-binary-literal`_, `-Wgnu-case-range`_,
> `-Wgnu-complex-integer`_, `-Wgnu-compound-literal-initializer`_,
> `-Wgnu-conditional-omitted-operand`_, `-Wgnu-designator`_,
> `-Wgnu-empty-initializer`_, `-Wgnu-empty-struct`_, `-Wvla-extension`_,
> `-Wgnu-flexible-array-initializer`_, `-Wgnu-flexible-array-union-member`_,
> `-Wgnu-folding-constant`_, `-Wgnu-imaginary-constant`_,
> `-Wgnu-include-next`_, `-Wgnu-label-as-value`_,
> `-Wredeclared-class-member`_, `-Wgnu-redeclared-enum`_,
> `-Wgnu-statement-expression`_, `-Wgnu-static-float-init`_,
> `-Wgnu-string-literal-operator-template`_, `-Wgnu-union-cast`_,
> `-Wgnu-variable-sized-type-not-at-end`_, `-Wzero-length-array`_,
> `-Wgnu-zero-line-directive`_, `-Wgnu-zero-variadic-macro-arguments`_.
> +
> +
> +-Wgnu-alignof-expression
> +------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`applied to
> an expression is a GNU extension`|
> ++----------------------------------------------------------
> ------------------------------------------------+
> +
> +
> +-Wgnu-anonymous-struct
> +----------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`anonymous structs are a GNU
> extension`|
> ++----------------------------------------------------------
> ------------------+
> +
> +
> +-Wgnu-array-member-paren-init
> +-----------------------------
> +This diagnostic is an error by default, but the flag
> ``-Wno-gnu-array-member-paren-init`` can be used to disable the error.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------+
> +|:error:`error:` |nbsp| :diagtext:`parenthesized initialization of a
> member array is a GNU extension`|
> ++----------------------------------------------------------
> ------------------------------------------+
> +
> +
> +-Wgnu-auto-type
> +---------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'\_\_auto\_type' is a GNU
> extension`|
> ++----------------------------------------------------------
> ----------------+
> +
> +
> +-Wgnu-binary-literal
> +--------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`binary integer literals are a GNU
> extension`|
> ++----------------------------------------------------------
> ------------------------+
> +
> +
> +-Wgnu-case-range
> +----------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`use of GNU case range extension`|
> ++----------------------------------------------------------------------+
> +
> +
> +-Wgnu-complex-integer
> +---------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`complex integer types are a GNU
> extension`|
> ++----------------------------------------------------------
> ----------------------+
> +
> +
> +-Wgnu-compound-literal-initializer
> +----------------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`initialization of an array` |nbsp|
> :diagtext:`from a compound literal` |nbsp| :diagtext:`is a GNU extension`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------+
> +
> +
> +-Wgnu-conditional-omitted-operand
> +---------------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`use of GNU ?: conditional
> expression extension, omitting middle operand`|
> ++----------------------------------------------------------
> ----------------------------------------------------+
> +
> +
> +-Wgnu-designator
> +----------------
> +Some of the diagnostics controlled by this flag are enabled by default.
> +
> +**Diagnostic text:**
> +
> ++-----------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`use of GNU array range extension`|
> ++-----------------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ---------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`use of GNU 'missing =' extension
> in designator`|
> ++----------------------------------------------------------
> ---------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`use of GNU old-style field
> designator extension`|
> ++----------------------------------------------------------
> ----------------------------+
> +
> +
> +-Wgnu-empty-initializer
> +-----------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`use of GNU empty initializer
> extension`|
> ++----------------------------------------------------------
> -------------------+
> +
> +
> +-Wgnu-empty-struct
> +------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------+-----
> ---------------+--------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`empty` |nbsp|
> |+------------------+| |nbsp| :diagtext:`is a GNU extension`|
> +|
> ||:diagtext:`struct`||                                      |
> +|
> |+------------------+|                                      |
> +|                                                    ||:diagtext:`union`
> ||                                      |
> +|
> |+------------------+|                                      |
> ++----------------------------------------------------+-----
> ---------------+--------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------+-----------------------+-----------------------
> ---------------+
> +|:warning:`warning:` |nbsp| :diagtext:`flexible array member` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`in otherwise empty` |nbsp|
> |+---------------------+| |nbsp| :diagtext:`is a GNU extension`|
> +|
>
> ||:diagtext:`struct`   ||                                      |
> +|
>
> |+---------------------+|                                      |
> +|
>
> ||:diagtext:`interface`||                                      |
> +|
>
> |+---------------------+|                                      |
> +|
>
> ||:diagtext:`union`    ||                                      |
> +|
>
> |+---------------------+|                                      |
> +|
>
> ||:diagtext:`class`    ||                                      |
> +|
>
> |+---------------------+|                                      |
> +|
>
> ||:diagtext:`enum`     ||                                      |
> +|
>
> |+---------------------+|                                      |
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------+-----------------------+-----------------------
> ---------------+
> +
> ++---------------------------+--------------------+---------
> ---------------------------------------------------+
> +|:warning:`warning:` |nbsp| |+------------------+| |nbsp|
> :diagtext:`without named members is a GNU extension`|
> +|                           ||:diagtext:`struct`||
>                                     |
> +|                           |+------------------+|
>                                     |
> +|                           ||:diagtext:`union` ||
>                                     |
> +|                           |+------------------+|
>                                     |
> ++---------------------------+--------------------+---------
> ---------------------------------------------------+
> +
> +
> +-Wgnu-flexible-array-initializer
> +--------------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`flexible array initialization is a
> GNU extension`|
> ++----------------------------------------------------------
> -----------------------------+
> +
> +
> +-Wgnu-flexible-array-union-member
> +---------------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------+
> +|:warning:`warning:` |nbsp| :diagtext:`flexible array member` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`in a union is a GNU extension`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------+
> +
> +
> +-Wgnu-folding-constant
> +----------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------+----------------------+---------------------------
> ---------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`expression is not an` |nbsp|
> |+--------------------+| |nbsp| :diagtext:`constant expression; folding it
> to a constant is a GNU extension`|
> +|
>  ||:diagtext:`integer` ||
>                                   |
> +|
>  |+--------------------+|
>                                   |
> +|
>  ||:diagtext:`integral`||
>                                   |
> +|
>  |+--------------------+|
>                                   |
> ++----------------------------------------------------------
> ---------+----------------------+---------------------------
> ---------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`in-class initializer for static
> data member is not a constant expression; folding it to a constant is a GNU
> extension`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------------+
> +
> ++----------------------------------------------------------
> -------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`variable length array folded to
> constant array as an extension`|
> ++----------------------------------------------------------
> -------------------------------------------+
> +
> +
> +-Wgnu-imaginary-constant
> +------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`imaginary constants are a GNU
> extension`|
> ++----------------------------------------------------------
> --------------------+
> +
> +
> +-Wgnu-include-next
> +------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`#include\_next is a language
> extension`|
> ++----------------------------------------------------------
> -------------------+
> +
> +
> +-Wgnu-label-as-value
> +--------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`use of GNU address-of-label
> extension`|
> ++----------------------------------------------------------
> ------------------+
> +
> ++----------------------------------------------------------
> ---------------+
> +|:warning:`warning:` |nbsp| :diagtext:`use of GNU indirect-goto
> extension`|
> ++----------------------------------------------------------
> ---------------+
> +
> +
> +-Wgnu-redeclared-enum
> +---------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`redeclaration of already-defined
> enum` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a GNU extension`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------+
> +
> +
> +-Wgnu-statement-expression
> +--------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`use of GNU statement expression
> extension`|
> ++----------------------------------------------------------
> ----------------------+
> +
> +
> +-Wgnu-static-float-init
> +-----------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`in-class initializer for static
> data member of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a GNU
> extension`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------+
> +
> +
> +-Wgnu-string-literal-operator-template
> +--------------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`string literal operator templates
> are a GNU extension`|
> ++----------------------------------------------------------
> ----------------------------------+
> +
> +
> +-Wgnu-union-cast
> +----------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`cast to union type is a GNU
> extension`|
> ++----------------------------------------------------------
> ------------------+
> +
> +
> +-Wgnu-variable-sized-type-not-at-end
> +------------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`field` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`with variable sized type` |nbsp| :placeholder:`B` |nbsp|
> :diagtext:`not at the end of a struct or class is a GNU extension`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------+
> +
> +
> +-Wgnu-zero-line-directive
> +-------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`#line directive with zero argument
> is a GNU extension`|
> ++----------------------------------------------------------
> ----------------------------------+
> +
> +
> +-Wgnu-zero-variadic-macro-arguments
> +-----------------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`must specify at least one argument
> for '...' parameter of variadic macro`|
> ++----------------------------------------------------------
> -----------------------------------------------------+
> +
> ++----------------------------------------------------------
> -----------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`token pasting of ',' and
> \_\_VA\_ARGS\_\_ is a GNU extension`|
> ++----------------------------------------------------------
> -----------------------------------------+
> +
> +
> +-Wheader-guard
> +--------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is used as
> a header guard here, followed by #define of a different macro`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------+
> +
> +
> +-Wheader-hygiene
> +----------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`using namespace directive in
> global context in header`|
> ++----------------------------------------------------------
> ----------------------------------+
> +
> +
> +-Widiomatic-parentheses
> +-----------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`using the result of an assignment
> as a condition without parentheses`|
> ++----------------------------------------------------------
> -------------------------------------------------+
> +
> +
> +-Wignored-attributes
> +--------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++---------------------------+-------------------+----------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------------+
> +|:warning:`warning:` |nbsp| |+-----------------+| |nbsp| :diagtext:`will
> always resolve to` |nbsp| :placeholder:`A` |nbsp| :diagtext:`even if weak
> definition of` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is overridden`|
> +|                           ||:diagtext:`alias`||
>
>                                                                      |
> +|                           |+-----------------+|
>
>                                                                      |
> +|                           ||:diagtext:`ifunc`||
>
>                                                                      |
> +|                           |+-----------------+|
>
>                                                                      |
> ++---------------------------+-------------------+----------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------------+
> +
> ++---------------------------+-------------------+----------
> ------------------------------------------------------------
> ------------------------------------------+----------------------+
> +|:warning:`warning:` |nbsp| |+-----------------+| |nbsp| :diagtext:`will
> not be in section '`:placeholder:`A`:diagtext:`' but in the same section as
> the` |nbsp| |+--------------------+|
> +|                           ||:diagtext:`alias`||
>
>             ||:diagtext:`aliasee` ||
> +|                           |+-----------------+|
>
>             |+--------------------+|
> +|                           ||:diagtext:`ifunc`||
>
>             ||:diagtext:`resolver`||
> +|                           |+-----------------+|
>
>             |+--------------------+|
> ++---------------------------+-------------------+----------
> ------------------------------------------------------------
> ------------------------------------------+----------------------+
> +
> ++----------------------------------------------------------
> ------------+------------------------+----------------------
> ---------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'abi\_tag' attribute on` |nbsp|
> |+----------------------+| |nbsp| :diagtext:`namespace ignored`|
> +|
> ||:diagtext:`non-inline`||                                     |
> +|
> |+----------------------+|                                     |
> +|
> ||:diagtext:`anonymous` ||                                     |
> +|
> |+----------------------+|                                     |
> ++----------------------------------------------------------
> ------------+------------------------+----------------------
> ---------------+
> +
> ++----------------------------------------------------------
> -------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`attribute` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`after definition is ignored`|
> ++----------------------------------------------------------
> -------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute
> can only be applied to instance variables or properties`|
> ++----------------------------------------------------------
> ----------------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute
> ignored`|
> ++----------------------------------------------------------
> ----------------------+
> +
> ++----------------------------------------------------------
> -----------------------------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute
> ignored on inline function`|
> ++----------------------------------------------------------
> -----------------------------------------+
> +
> ++----------------------------------------------------------
> ---------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`'
> attribute cannot be specified on a definition`|
> ++----------------------------------------------------------
> ---------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`attribute` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`ignored, because it is not attached to a declaration`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'nonnull' attribute applied to
> function with no pointer arguments`|
> ++----------------------------------------------------------
> ----------------------------------------------+
> +
> ++----------------------------------------------------------
> -------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'nonnull' attribute when used on
> parameters takes no arguments`|
> ++----------------------------------------------------------
> -------------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute
> ignored when parsing type`|
> ++----------------------------------------------------------
> ----------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute
> only applies to a pointer or reference (`:placeholder:`B` |nbsp|
> :diagtext:`is invalid)`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------+-----------------------------
> -+-------------------------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute
> only applies to`|+----------------------------+| |nbsp|
> :diagtext:`pointer arguments`|
> +|
>                 ||                            ||
>          |
> +|
>                 |+----------------------------+|
>            |
> +|
>                 || |nbsp| :diagtext:`constant`||
>          |
> +|
>                 |+----------------------------+|
>            |
> ++----------------------------------------------------------
> ------------------------------+-----------------------------
> -+-------------------------------------+
> +
> ++----------------------------------------------------------
> --------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`attribute declaration must precede
> definition`|
> ++----------------------------------------------------------
> --------------------------+
> +
> ++----------------------------------------------------------
> --------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute
> only applies to return values that are pointers`|
> ++----------------------------------------------------------
> --------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute
> only applies to return values that are pointers or references`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------+
> +
> ++----------------------------------------------------------
> --------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'sentinel' attribute requires
> named arguments`|
> ++----------------------------------------------------------
> --------------------------+
> +
> ++----------------------------------------------------------
> -------------------------------------+-----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'sentinel' attribute only
> supported for variadic` |nbsp| |+---------------------+|
> +|
>                        ||:diagtext:`functions`||
> +|
>                        |+---------------------+|
> +|
>                        ||:diagtext:`blocks`   ||
> +|
>                        |+---------------------+|
> ++----------------------------------------------------------
> -------------------------------------+-----------------------+
> +
> ++----------------------------------------------------------
> --------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute
> argument not supported:` |nbsp| :placeholder:`B`|
> ++----------------------------------------------------------
> --------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> -----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`unknown visibility` |nbsp|
> :placeholder:`A`|
> ++----------------------------------------------------------
> -----------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --+--------------------------------+------------------------
> ----------------+
> +|:warning:`warning:` |nbsp| :diagtext:`attribute` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`cannot be applied to` |nbsp|
> |+------------------------------+| |nbsp| :diagtext:`without return
> value`|
> +|
>                                                 ||:diagtext:`functions`
>      ||                                        |
> +|
>
> |+------------------------------+|
> |
> +|
>                                                 ||:diagtext:`Objective-C
> method`||                                        |
> +|
>
> |+------------------------------+|
> |
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --+--------------------------------+------------------------
> ----------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`\_\_weak attribute cannot be
> specified on a field declaration`|
> ++----------------------------------------------------------
> ------------------------------------------+
> +
> ++----------------------------------------------------------
> --------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`\_\_weak attribute cannot be
> specified on an automatic variable when ARC is not enabled`|
> ++----------------------------------------------------------
> --------------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> --------------------------------------+---------------------
> ------------------------------------------------------------
> ---------------------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute
> only applies to` |nbsp| |+----------------------------
> ------------------------------------------------------------
> ------------------------+|
> +|
>                         ||:diagtext:`functions`
>                                                                ||
> +|
>                         |+----------------------------
> ------------------------------------------------------------
> ------------------------+|
> +|
>                         ||:diagtext:`unions`
>                                                               ||
> +|
>                         |+----------------------------
> ------------------------------------------------------------
> ------------------------+|
> +|
>                         ||:diagtext:`variables and functions`
>                                                                ||
> +|
>                         |+----------------------------
> ------------------------------------------------------------
> ------------------------+|
> +|
>                         ||:diagtext:`functions, variables, and Objective-C
> interfaces`                                                    ||
> +|
>                         |+----------------------------
> ------------------------------------------------------------
> ------------------------+|
> +|
>                         ||:diagtext:`functions and methods`
>                                                                ||
> +|
>                         |+----------------------------
> ------------------------------------------------------------
> ------------------------+|
> +|
>                         ||:diagtext:`parameters`
>                                                               ||
> +|
>                         |+----------------------------
> ------------------------------------------------------------
> ------------------------+|
> +|
>                         ||:diagtext:`functions, methods and blocks`
>                                                                ||
> +|
>                         |+----------------------------
> ------------------------------------------------------------
> ------------------------+|
> +|
>                         ||:diagtext:`functions, methods, and classes`
>                                                                ||
> +|
>                         |+----------------------------
> ------------------------------------------------------------
> ------------------------+|
> +|
>                         ||:diagtext:`functions, methods, and parameters`
>                                                               ||
> +|
>                         |+----------------------------
> ------------------------------------------------------------
> ------------------------+|
> +|
>                         ||:diagtext:`classes`
>                                                                ||
> +|
>                         |+----------------------------
> ------------------------------------------------------------
> ------------------------+|
> +|
>                         ||:diagtext:`enums`
>                                                                ||
> +|
>                         |+----------------------------
> ------------------------------------------------------------
> ------------------------+|
> +|
>                         ||:diagtext:`variables`
>                                                                ||
> +|
>                         |+----------------------------
> ------------------------------------------------------------
> ------------------------+|
> +|
>                         ||:diagtext:`methods`
>                                                                ||
> +|
>                         |+----------------------------
> ------------------------------------------------------------
> ------------------------+|
> +|
>                         ||:diagtext:`fields and global variables`
>                                                                ||
> +|
>                         |+----------------------------
> ------------------------------------------------------------
> ------------------------+|
> +|
>                         ||:diagtext:`structs`
>                                                                ||
> +|
>                         |+----------------------------
> ------------------------------------------------------------
> ------------------------+|
> +|
>                         ||:diagtext:`parameters and typedefs`
>                                                                ||
> +|
>                         |+----------------------------
> ------------------------------------------------------------
> ------------------------+|
> +|
>                         ||:diagtext:`variables and typedefs`
>                                                               ||
> +|
>                         |+----------------------------
> ------------------------------------------------------------
> ------------------------+|
> +|
>                         ||:diagtext:`thread-local variables`
>                                                               ||
> +|
>                         |+----------------------------
> ------------------------------------------------------------
> ------------------------+|
> +|
>                         ||:diagtext:`variables and fields`
>                                                               ||
> +|
>                         |+----------------------------
> ------------------------------------------------------------
> ------------------------+|
> +|
>                         ||:diagtext:`variables, data members and tag
> types`                                                               ||
> +|
>                         |+----------------------------
> ------------------------------------------------------------
> ------------------------+|
> +|
>                         ||:diagtext:`types and namespaces`
>                                                               ||
> +|
>                         |+----------------------------
> ------------------------------------------------------------
> ------------------------+|
> +|
>                         ||:diagtext:`Objective-C interfaces`
>                                                               ||
> +|
>                         |+----------------------------
> ------------------------------------------------------------
> ------------------------+|
> +|
>                         ||:diagtext:`methods and properties`
>                                                               ||
> +|
>                         |+----------------------------
> ------------------------------------------------------------
> ------------------------+|
> +|
>                         ||:diagtext:`struct or union`
>                                                                ||
> +|
>                         |+----------------------------
> ------------------------------------------------------------
> ------------------------+|
> +|
>                         ||:diagtext:`struct, union or class`
>                                                               ||
> +|
>                         |+----------------------------
> ------------------------------------------------------------
> ------------------------+|
> +|
>                         ||:diagtext:`types`
>                                                                ||
> +|
>                         |+----------------------------
> ------------------------------------------------------------
> ------------------------+|
> +|
>                         ||:diagtext:`Objective-C instance methods`
>                                                               ||
> +|
>                         |+----------------------------
> ------------------------------------------------------------
> ------------------------+|
> +|
>                         ||:diagtext:`init methods of interface or class
> extension declarations`                                           ||
> +|
>                         |+----------------------------
> ------------------------------------------------------------
> ------------------------+|
> +|
>                         ||:diagtext:`variables, functions and classes`
>                                                               ||
> +|
>                         |+----------------------------
> ------------------------------------------------------------
> ------------------------+|
> +|
>                         ||:diagtext:`functions, variables, classes, and
> Objective-C interfaces`                                           ||
> +|
>                         |+----------------------------
> ------------------------------------------------------------
> ------------------------+|
> +|
>                         ||:diagtext:`Objective-C protocols`
>                                                                ||
> +|
>                         |+----------------------------
> ------------------------------------------------------------
> ------------------------+|
> +|
>                         ||:diagtext:`functions and global variables`
>                                                               ||
> +|
>                         |+----------------------------
> ------------------------------------------------------------
> ------------------------+|
> +|
>                         ||:diagtext:`structs, unions, and typedefs`
>                                                                ||
> +|
>                         |+----------------------------
> ------------------------------------------------------------
> ------------------------+|
> +|
>                         ||:diagtext:`structs and typedefs`
>                                                               ||
> +|
>                         |+----------------------------
> ------------------------------------------------------------
> ------------------------+|
> +|
>                         ||:diagtext:`interface or protocol declarations`
>                                                               ||
> +|
>                         |+----------------------------
> ------------------------------------------------------------
> ------------------------+|
> +|
>                         ||:diagtext:`kernel functions`
>                                                               ||
> +|
>                         |+----------------------------
> ------------------------------------------------------------
> ------------------------+|
> +|
>                         ||:diagtext:`non-K&R-style functions`
>                                                                ||
> +|
>                         |+----------------------------
> ------------------------------------------------------------
> ------------------------+|
> +|
>                         ||:diagtext:`variables, enums, fields and
> typedefs`                                                               ||
> +|
>                         |+----------------------------
> ------------------------------------------------------------
> ------------------------+|
> +|
>                         ||:diagtext:`functions, methods, enums, and
> classes`                                                              ||
> +|
>                         |+----------------------------
> ------------------------------------------------------------
> ------------------------+|
> +|
>                         ||:diagtext:`structs, classes, variables,
> functions, and inline namespaces`                                       ||
> +|
>                         |+----------------------------
> ------------------------------------------------------------
> ------------------------+|
> +|
>                         ||:diagtext:`variables, functions, methods, types,
> enumerations, enumerators, labels, and non-static data members`||
> +|
>                         |+----------------------------
> ------------------------------------------------------------
> ------------------------+|
> ++----------------------------------------------------------
> --------------------------------------+---------------------
> ------------------------------------------------------------
> ---------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`attribute` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`ignored, because it cannot be applied to omitted return
> type`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`calling convention` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`ignored for this target`|
> ++----------------------------------------------------------
> ------------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ---------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`calling
> convention ignored on constructor/destructor`|
> ++----------------------------------------------------------
> ---------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`calling
> convention ignored on variadic function`|
> ++----------------------------------------------------------
> ----------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`attribute` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`ignored, because it cannot be applied to a type`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --+-----------------------+---------------------------------
> -------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`attribute` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`is ignored, place it after "`|+---------------------+|:diagtext:`"
> to apply attribute to type declaration`|
> +|
>                                                 ||:diagtext:`class`    ||
>                                                   |
> +|
>                                                 |+---------------------+|
>                                                   |
> +|
>                                                 ||:diagtext:`struct`   ||
>                                                   |
> +|
>                                                 |+---------------------+|
>                                                   |
> +|
>                                                 ||:diagtext:`interface`||
>                                                   |
> +|
>                                                 |+---------------------+|
>                                                   |
> +|
>                                                 ||:diagtext:`union`    ||
>                                                   |
> +|
>                                                 |+---------------------+|
>                                                   |
> +|
>                                                 ||:diagtext:`enum`     ||
>                                                   |
> +|
>                                                 |+---------------------+|
>                                                   |
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --+-----------------------+---------------------------------
> -------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'deprecated' attribute on
> anonymous namespace ignored`|
> ++----------------------------------------------------------
> ----------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`redeclared
> inline;` |nbsp| :placeholder:`B` |nbsp| :diagtext:`attribute ignored`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`attribute` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`is already applied with different parameters`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`attribute` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`is already applied`|
> ++----------------------------------------------------------
> ----------------------------------------------------+
> +
> ++----------------------------------------------------------
> --------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`Objective-C GC does not allow weak
> variables on the stack`|
> ++----------------------------------------------------------
> --------------------------------------+
> +
> ++----------------------------------------------------------
> ---------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'gnu\_inline' attribute requires
> function to be marked 'inline', attribute ignored`|
> ++----------------------------------------------------------
> ---------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> -----------------+------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`inheritance model ignored on`
> |nbsp| |+----------------------------------+|
> +|
>    ||:diagtext:`primary template`      ||
> +|
>    |+----------------------------------+|
> +|
>    ||:diagtext:`partial specialization`||
> +|
>    |+----------------------------------+|
> ++----------------------------------------------------------
> -----------------+------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'internal\_linkage' attribute on a
> non-static local variable is ignored`|
> ++----------------------------------------------------------
> ----------------------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`qualifiers after comma in
> declarator list are ignored`|
> ++----------------------------------------------------------
> ----------------------------------+
> +
> ++----------------------------------------------------------
> ---------------------------------------------------+--------
> --------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`MIPS 'interrupt' attribute only
> applies to functions that have` |nbsp| |+----------------------------
> ----+|
> +|
>                                      ||:diagtext:`no parameters`       ||
> +|
>                                      |+--------------------------------+|
> +|
>                                      ||:diagtext:`a 'void' return type`||
> +|
>                                      |+--------------------------------+|
> ++----------------------------------------------------------
> ---------------------------------------------------+--------
> --------------------------+
> +
> ++----------------------------------------------------------
> -----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`unknown attribute
> '`:placeholder:`A`:diagtext:`'`|
> ++----------------------------------------------------------
> -----------------------------+
> +
> ++----------------------------------------------------------
> --------------------------------------+---------------------
> --------------+------------------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute
> only applies to` |nbsp| |+---------------------------------+| |nbsp|
> :diagtext:`parameters`|
> +|
>                         ||:diagtext:`Objective-C object`   ||
>                 |
> +|
>                         |+---------------------------------+|
>                   |
> +|
>                         ||:diagtext:`pointer`              ||
>                 |
> +|
>                         |+---------------------------------+|
>                   |
> +|
>                         ||:diagtext:`pointer-to-CF-pointer`||
>                   |
> +|
>                         |+---------------------------------+|
>                   |
> ++----------------------------------------------------------
> --------------------------------------+---------------------
> --------------+------------------------------+
> +
> ++----------------------------------------------------------
> --------------------------------------+---------------------
> ---+---------------------------------------+----------------
> ----------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute
> only applies to` |nbsp| |+----------------------+| |nbsp| :diagtext:`that
> return` |nbsp| |+------------------------------------+|
> +|
>                         ||:diagtext:`functions` ||
>              ||:diagtext:`an Objective-C object`   ||
> +|
>                         |+----------------------+|
>              |+------------------------------------+|
> +|
>                         ||:diagtext:`methods`   ||
>              ||:diagtext:`a pointer`               ||
> +|
>                         |+----------------------+|
>              |+------------------------------------+|
> +|
>                         ||:diagtext:`properties`||
>              ||:diagtext:`a non-retainable pointer`||
> +|
>                         |+----------------------+|
>              |+------------------------------------+|
> ++----------------------------------------------------------
> --------------------------------------+---------------------
> ---+---------------------------------------+----------------
> ----------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute
> is deprecated and ignored in OpenCL version` |nbsp| :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------+
> +
> ++---------------------------+-----------------------+------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ---------------+-----------------------+--------------------
> ------------------------------------------------------------
> -----------------+
> +|:warning:`warning:` |nbsp| |+---------------------+| |nbsp|
> :diagtext:`of field` |nbsp| :placeholder:`B` |nbsp|
> :diagtext:`(`:placeholder:`C` |nbsp| :diagtext:`bits) does not match the`
> |nbsp| |+---------------------+| |nbsp| :diagtext:`of the first field in
> transparent union; transparent\_union attribute ignored`|
> +|                           ||:diagtext:`alignment`||
>
>                                              ||:diagtext:`alignment`||
>
>                |
> +|                           |+---------------------+|
>
>                                              |+---------------------+|
>
>                |
> +|                           ||:diagtext:`size`     ||
>
>                                              ||:diagtext:`size`     ||
>
>                |
> +|                           |+---------------------+|
>
>                                              |+---------------------+|
>
>                |
> ++---------------------------+-----------------------+------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ---------------+-----------------------+--------------------
> ------------------------------------------------------------
> -----------------+
> +
> ++----------------------------------------------------------
> -----------------------------------+------------------------
> ----+-------------------------------------------------------
> -------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`first field of a transparent union
> cannot have` |nbsp| |+--------------------------+| |nbsp| :diagtext:`type`
> |nbsp| :placeholder:`B`:diagtext:`; transparent\_union attribute ignored`|
> +|
>                      ||:diagtext:`floating point`||
>                                                                           |
> +|
>                      |+--------------------------+|
>                                                                           |
> +|
>                      ||:diagtext:`vector`        ||
>                                                                           |
> +|
>                      |+--------------------------+|
>                                                                           |
> ++----------------------------------------------------------
> -----------------------------------+------------------------
> ----+-------------------------------------------------------
> -------------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`transparent\_union attribute can
> only be applied to a union definition; attribute ignored`|
> ++----------------------------------------------------------
> ----------------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`transparent union definition must
> contain at least one field; transparent\_union attribute ignored`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------+
> +
> ++----------------------------------------------------------
> -----------------------------------+------------------------
> -------------------------+----------------------------------
> -----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`'
> only applies to` |nbsp| |+-----------------------------------------------+|
> |nbsp| :diagtext:`types; type here is` |nbsp| :placeholder:`C`|
> +|
>                      ||:diagtext:`function`                           ||
>                                                            |
> +|
>                      |+-----------------------------------------------+|
>                                                              |
> +|
>                      ||:diagtext:`pointer`                            ||
>                                                            |
> +|
>                      |+-----------------------------------------------+|
>                                                              |
> +|
>                      ||:diagtext:`Objective-C object or block pointer`||
>                                                            |
> +|
>                      |+-----------------------------------------------+|
>                                                              |
> ++----------------------------------------------------------
> -----------------------------------+------------------------
> -------------------------+----------------------------------
> -----------------------------+
> +
> ++----------------------------------------------------------
> ---------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`\_\_declspec attribute` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`is not supported`|
> ++----------------------------------------------------------
> ---------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ---------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`Ignoring unsupported
> '`:placeholder:`A`:diagtext:`' in the target attribute string`|
> ++----------------------------------------------------------
> ---------------------------------------------------------------+
> +
> +
> +-Wignored-optimization-argument
> +-------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`optimization flag
> '`:placeholder:`A`:diagtext:`' is not supported for target
> '`:placeholder:`B`:diagtext:`'`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`optimization flag
> '`:placeholder:`A`:diagtext:`' is not supported`|
> ++----------------------------------------------------------
> ----------------------------------------------+
> +
> +
> +-Wignored-pragmas
> +-----------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------------+---------------------------+-----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`expected '=' following '#pragma`
> |nbsp| |+-------------------------+|:diagtext:`' - ignored`|
> +|
>       ||:diagtext:`align`        ||                       |
> +|
>       |+-------------------------+|                       |
> +|
>       ||:diagtext:`options align`||                       |
> +|
>       |+-------------------------+|                       |
> ++----------------------------------------------------------
> --------------------+---------------------------+-----------------------+
> +
> ++----------------------------------------------------------
> -------------------------+---------------------------+------
> -----------------+
> +|:warning:`warning:` |nbsp| :diagtext:`invalid alignment option in
> '#pragma` |nbsp| |+-------------------------+|:diagtext:`' - ignored`|
> +|
>            ||:diagtext:`align`        ||                       |
> +|
>            |+-------------------------+|                       |
> +|
>            ||:diagtext:`options align`||                       |
> +|
>            |+-------------------------+|                       |
> ++----------------------------------------------------------
> -------------------------+---------------------------+------
> -----------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'#pragma comment` |nbsp|
> :placeholder:`A`:diagtext:`' ignored`|
> ++----------------------------------------------------------
> ------------------------------------------+
> +
> ++----------------------------------------------------------
> ---------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`missing argument to debug command
> '`:placeholder:`A`:diagtext:`'`|
> ++----------------------------------------------------------
> ---------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`unexpected debug command
> '`:placeholder:`A`:diagtext:`'`|
> ++----------------------------------------------------------
> ------------------------------------+
> +
> ++----------------------------------------------------------
> --------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`expected action or ')' in
> '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`|
> ++----------------------------------------------------------
> --------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`missing ':' after` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`- ignoring`|
> ++----------------------------------------------------------
> ----------------------------------------------------+
> +
> ++----------------------------------------------------------
> -----------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`missing ':' or ')' after` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`- ignoring`|
> ++----------------------------------------------------------
> -----------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`expected 'enable' or 'disable' -
> ignoring`|
> ++----------------------------------------------------------
> ----------------------+
> +
> ++----------------------------------------------------------
> -----------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`expected identifier in '#pragma`
> |nbsp| :placeholder:`A`:diagtext:`' - ignored`|
> ++----------------------------------------------------------
> -----------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`expected 'compiler', 'lib',
> 'user', or a string literal for the section name in '#pragma` |nbsp|
> :placeholder:`A`:diagtext:`' - ignored`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`expected integer between` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`and` |nbsp| :placeholder:`B` |nbsp|
> :diagtext:`inclusive in '#pragma` |nbsp| :placeholder:`C`:diagtext:`' -
> ignored`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------------------+
> +
> ++----------------------------------------------------------
> -------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`missing '(' after '#pragma` |nbsp|
> :placeholder:`A`:diagtext:`' - ignoring`|
> ++----------------------------------------------------------
> -------------------------------------------------------+
> +
> ++----------------------------------------------------------
> --------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`expected non-wide string literal
> in '#pragma` |nbsp| :placeholder:`A`:diagtext:`'`|
> ++----------------------------------------------------------
> --------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> -------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`expected ')' or ',' in '#pragma`
> |nbsp| :placeholder:`A`:diagtext:`'`|
> ++----------------------------------------------------------
> -------------------------------------------------+
> +
> ++----------------------------------------------------------
> -------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`missing ')' after '#pragma` |nbsp|
> :placeholder:`A`:diagtext:`' - ignoring`|
> ++----------------------------------------------------------
> -------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`expected a stack label or a string
> literal for the section name in '#pragma` |nbsp|
> :placeholder:`A`:diagtext:`' - ignored`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`expected a string literal for the
> section name in '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`expected push, pop or a string
> literal for the section name in '#pragma` |nbsp|
> :placeholder:`A`:diagtext:`' - ignored`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------------+
> +
> ++----------------------------------------------------------
> -----------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`extra tokens at end of '#pragma`
> |nbsp| :placeholder:`A`:diagtext:`' - ignored`|
> ++----------------------------------------------------------
> -----------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ---------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'#pragma init\_seg' is only
> supported when targeting a Microsoft environment`|
> ++----------------------------------------------------------
> ---------------------------------------------------------+
> +
> ++----------------------------------------------------------
> -------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`unknown action for '#pragma`
> |nbsp| :placeholder:`A`:diagtext:`' - ignored`|
> ++----------------------------------------------------------
> -------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`unknown action
> '`:placeholder:`B`:diagtext:`' for '#pragma` |nbsp|
> :placeholder:`A`:diagtext:`' - ignored`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`incorrect use of '#pragma
> ms\_struct on\|off' - ignored`|
> ++----------------------------------------------------------
> ------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`#pragma options align=reset
> failed:` |nbsp| :placeholder:`A`|
> ++----------------------------------------------------------
> ----------------------------------------+
> +
> ++----------------------------------------------------------
> -----------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`expected 'align' following
> '#pragma options' - ignored`|
> ++----------------------------------------------------------
> -----------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`expected #pragma pack parameter to
> be '1', '2', '4', '8', or '16'`|
> ++----------------------------------------------------------
> ----------------------------------------------+
> +
> ++----------------------------------------------------------
> ---------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`expected integer or identifier in
> '#pragma pack' - ignored`|
> ++----------------------------------------------------------
> ---------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`#pragma` |nbsp|
> :placeholder:`A`:diagtext:`(pop, ...) failed:` |nbsp| :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> --------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`pragma pop\_macro could not pop
> '`:placeholder:`A`:diagtext:`', no matching push\_macro`|
> ++----------------------------------------------------------
> --------------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> -----------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`unknown OpenCL extension` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`- ignoring`|
> ++----------------------------------------------------------
> -----------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`known but unsupported action
> '`:placeholder:`B`:diagtext:`' for '#pragma` |nbsp|
> :placeholder:`A`:diagtext:`' - ignored`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------+
> +
> ++----------------------------------------------------------
> ---------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`unsupported OpenCL extension`
> |nbsp| :placeholder:`A` |nbsp| :diagtext:`- ignoring`|
> ++----------------------------------------------------------
> ---------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> -------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`expected '#pragma unused' argument
> to be a variable name`|
> ++----------------------------------------------------------
> -------------------------------------+
> +
> ++----------------------------------------------------------
> --------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`only variables can be arguments to
> '#pragma unused'`|
> ++----------------------------------------------------------
> --------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`undeclared variable` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`used as an argument for '#pragma
> unused'`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------+
> +
> +
> +-Wignored-qualifiers
> +--------------------
> +Some of the diagnostics controlled by this flag are enabled by default.
> +
> +**Diagnostic text:**
> +
> ++--------------------------------------------------+-------
> -----------------------------+------------------------------
> ----------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`ARC` |nbsp|
> |+----------------------------------+| |nbsp| :diagtext:`lifetime
> qualifier on return type is ignored`|
> +|                                                  ||:diagtext:`unused`
>               ||
>     |
> +|
> |+----------------------------------+|
>                             |
> +|
> ||:diagtext:`\_\_unsafe\_unretained`||
>                             |
> +|
> |+----------------------------------+|
>                             |
> +|
> ||:diagtext:`\_\_strong`            ||
>                           |
> +|
> |+----------------------------------+|
>                             |
> +|
> ||:diagtext:`\_\_weak`              ||
>                           |
> +|
> |+----------------------------------+|
>                             |
> +|                                                  ||:diagtext:`\_\_autoreleasing`
>    ||                                                                |
> +|
> |+----------------------------------+|
>                             |
> ++--------------------------------------------------+-------
> -----------------------------+------------------------------
> ----------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`'
> qualifier on omitted return type` |nbsp| :placeholder:`B` |nbsp|
> :diagtext:`has no effect`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------------+
> +
> ++----------------------------------------------------------
> --------------------------+---------------+-----------------
> -------------------------+-------------------+--------------
> ---------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`'
> type qualifier`|+-------------+| |nbsp| :diagtext:`on return type` |nbsp|
> |+-----------------+| |nbsp| :diagtext:`no effect`|
> +|
>             ||             ||
> ||:diagtext:`:has` ||                             |
> +|
>             |+-------------+|
> |+-----------------+|                             |
> +|
>             ||:diagtext:`s`||
> ||:diagtext:`:have`||                             |
> +|
>             |+-------------+|
> |+-----------------+|                             |
> ++----------------------------------------------------------
> --------------------------+---------------+-----------------
> -------------------------+-------------------+--------------
> ---------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`'
> qualifier on function type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`has
> no effect`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`'
> qualifier on reference type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`has
> no effect`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------+
> +
> +
> +-Wimplicit
> +----------
> +Some of the diagnostics controlled by this flag are enabled by default.
> +
> +Controls `-Wimplicit-function-declaration`_, `-Wimplicit-int`_.
> +
> +
> +-Wimplicit-atomic-properties
> +----------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`property is assumed atomic when
> auto-synthesizing the property`|
> ++----------------------------------------------------------
> -------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`property is assumed atomic by
> default`|
> ++----------------------------------------------------------
> ------------------+
> +
> +
> +-Wimplicit-conversion-floating-point-to-bool
> +--------------------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`implicit conversion turns
> floating-point number into bool:` |nbsp| :placeholder:`A` |nbsp|
> :diagtext:`to` |nbsp| :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------------------+
> +
> +
> +-Wimplicit-exception-spec-mismatch
> +----------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------+----------------------+-----------
> -----------------------------------------------------------+
> ----------------------+-------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`function previously declared with
> an` |nbsp| |+--------------------+| |nbsp| :diagtext:`exception
> specification redeclared with an` |nbsp| |+--------------------+| |nbsp|
> :diagtext:`exception specification`|
> +|
>            ||:diagtext:`explicit`||
>                               ||:diagtext:`implicit`||
>                      |
> +|
>            |+--------------------+|
>                               |+--------------------+|
>                      |
> +|
>            ||:diagtext:`implicit`||
>                               ||:diagtext:`explicit`||
>                      |
> +|
>            |+--------------------+|
>                               |+--------------------+|
>                      |
> ++----------------------------------------------------------
> -------------------------+----------------------+-----------
> -----------------------------------------------------------+
> ----------------------+-------------------------------------------+
> +
> +
> +-Wimplicit-fallthrough
> +----------------------
> +Also controls `-Wimplicit-fallthrough-per-function`_.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`fallthrough annotation in
> unreachable code`|
> ++----------------------------------------------------------
> -----------------------+
> +
> ++----------------------------------------------------------
> ---------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`unannotated fall-through between
> switch labels`|
> ++----------------------------------------------------------
> ---------------------------+
> +
> +
> +-Wimplicit-fallthrough-per-function
> +-----------------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`unannotated fall-through between
> switch labels in partly-annotated function`|
> ++----------------------------------------------------------
> --------------------------------------------------------+
> +
> +
> +-Wimplicit-function-declaration
> +-------------------------------
> +Some of the diagnostics controlled by this flag are enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------+
> +|:warning:`warning:` |nbsp| :diagtext:`implicit declaration of function`
> |nbsp| :placeholder:`A` |nbsp| :diagtext:`is invalid in C99`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`implicitly declaring library
> function '`:placeholder:`A`:diagtext:`' with type` |nbsp| :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------+
> +
> ++----------------------------------------------------------
> -----------------------+
> +|:error:`error:` |nbsp| :diagtext:`use of unknown builtin` |nbsp|
> :placeholder:`A`|
> ++----------------------------------------------------------
> -----------------------+
> +
> ++----------------------------------------------------------
> -------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`implicit declaration of function`
> |nbsp| :placeholder:`A`|
> ++----------------------------------------------------------
> -------------------------------------+
> +
> +
> +-Wimplicit-int
> +--------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`type specifier missing, defaults
> to 'int'`|
> ++----------------------------------------------------------
> ----------------------+
> +
> +
> +-Wimplicit-retain-self
> +----------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------+
> +|:warning:`warning:` |nbsp| :diagtext:`block implicitly retains 'self';
> explicitly mention 'self' to indicate this is intended behavior`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------+
> +
> +
> +-Wimplicitly-unsigned-literal
> +-----------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`integer literal is too large to be
> represented in a signed integer type, interpreting as unsigned`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------+
> +
> +
> +-Wimport
> +--------
> +This diagnostic flag exists for GCC compatibility, and has no effect in
> Clang.
> +
> +-Wimport-preprocessor-directive-pedantic
> +----------------------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`#import is a language extension`|
> ++----------------------------------------------------------------------+
> +
> +
> +-Winaccessible-base
> +-------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`direct base` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`is inaccessible due to
> ambiguity:`:placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------+
> +
> +
> +-Winclude-next-absolute-path
> +----------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------+
> +|:warning:`warning:` |nbsp| :diagtext:`#include\_next with absolute path`|
> ++----------------------------------------------------------
> --------------+
> +
> +
> +-Winclude-next-outside-header
> +-----------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`#include\_next in primary source
> file`|
> ++----------------------------------------------------------
> ------------------+
> +
> +
> +-Wincompatible-function-pointer-types
> +-------------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------+-----------------------------------
> -----------------------------+---------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`incompatible function pointer
> types` |nbsp| |+----------------------------------------------------------
> ----+|+-------------------------------------+|
> +|
>           ||:diagtext:`assigning to different types`
> |||                                     ||
> +|
>           |+----------------------------------------------------------
> ----+|+-------------------------------------+|
> +|
>           ||:diagtext:`passing to parameter of different type`
> |||:diagtext:`; dereference with \*`    ||
> +|
>           |+----------------------------------------------------------
> ----+|+-------------------------------------+|
> +|
>           ||:diagtext:`returning from function with different return
> type`|||:diagtext:`; take the address with &`||
> +|
>           |+----------------------------------------------------------
> ----+|+-------------------------------------+|
> +|
>           ||:diagtext:`converting between types`
> |||:diagtext:`; remove \*`              ||
> +|
>           |+----------------------------------------------------------
> ----+|+-------------------------------------+|
> +|
>           ||:diagtext:`initializing with expression of different type`
> |||:diagtext:`; remove &`               ||
> +|
>           |+----------------------------------------------------------
> ----+|+-------------------------------------+|
> +|
>           ||:diagtext:`sending to parameter of different type`
> ||                                       |
> +|
>           |+--------------------------------------------------------------+|
>                                      |
> +|
>           ||:diagtext:`casting between types`
>  ||                                       |
> +|
>           |+--------------------------------------------------------------+|
>                                      |
> ++----------------------------------------------------------
> ------------------------+-----------------------------------
> -----------------------------+---------------------------------------+
> +
> +
> +-Wincompatible-library-redeclaration
> +------------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`incompatible redeclaration of
> library function` |nbsp| :placeholder:`A`|
> ++----------------------------------------------------------
> ---------------------------------------------------+
> +
> +
> +-Wincompatible-ms-struct
> +------------------------
> +This diagnostic is an error by default, but the flag
> ``-Wno-incompatible-ms-struct`` can be used to disable the error.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------+
> +|:error:`error:` |nbsp| :diagtext:`ms\_struct may not produce
> Microsoft-compatible layouts for classes with base classes or virtual
> functions`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------+
> +
> +
> +-Wincompatible-pointer-types
> +----------------------------
> +This diagnostic is enabled by default.
> +
> +Also controls `-Wincompatible-pointer-types-discards-qualifiers`_,
> `-Wincompatible-function-pointer-types`_.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------+--------------------------------------------
> --------------------+---------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`incompatible pointer types` |nbsp|
> |+----------------------------------------------------------
> ----+|+-------------------------------------+|
> +|
>  ||:diagtext:`assigning to different types`                      |||
>                              ||
> +|
>  |+----------------------------------------------------------
> ----+|+-------------------------------------+|
> +|
>  ||:diagtext:`passing to parameter of different type`
> |||:diagtext:`; dereference with \*`    ||
> +|
>  |+----------------------------------------------------------
> ----+|+-------------------------------------+|
> +|
>  ||:diagtext:`returning from function with different return
> type`|||:diagtext:`; take the address with &`||
> +|
>  |+----------------------------------------------------------
> ----+|+-------------------------------------+|
> +|
>  ||:diagtext:`converting between types`
> |||:diagtext:`; remove \*`              ||
> +|
>  |+----------------------------------------------------------
> ----+|+-------------------------------------+|
> +|
>  ||:diagtext:`initializing with expression of different type`
> |||:diagtext:`; remove &`               ||
> +|
>  |+----------------------------------------------------------
> ----+|+-------------------------------------+|
> +|
>  ||:diagtext:`sending to parameter of different type`            ||
>                                |
> +|
>  |+--------------------------------------------------------------+|
>                                  |
> +|
>  ||:diagtext:`casting between types`                             ||
>                                |
> +|
>  |+--------------------------------------------------------------+|
>                                  |
> ++----------------------------------------------------------
> ---------------+--------------------------------------------
> --------------------+---------------------------------------+
> +
> +
> +-Wincompatible-pointer-types-discards-qualifiers
> +------------------------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++---------------------------+------------------------------
> ----------------------------------+-------------------------
> --------------------------------------+
> +|:warning:`warning:` |nbsp| |+----------------------------
> ----------------------------------+| |nbsp| :diagtext:`discards
> qualifiers in nested pointer types`|
> +|                           ||:diagtext:`assigning to different types`
>                   ||
>        |
> +|                           |+----------------------------
> ----------------------------------+|
>                          |
> +|                           ||:diagtext:`passing to parameter of
> different type`            ||
>                  |
> +|                           |+----------------------------
> ----------------------------------+|
>                          |
> +|                           ||:diagtext:`returning from function with
> different return type`||
>            |
> +|                           |+----------------------------
> ----------------------------------+|
>                          |
> +|                           ||:diagtext:`converting between types`
>                   ||
>        |
> +|                           |+----------------------------
> ----------------------------------+|
>                          |
> +|                           ||:diagtext:`initializing with expression of
> different type`    ||
>          |
> +|                           |+----------------------------
> ----------------------------------+|
>                          |
> +|                           ||:diagtext:`sending to parameter of
> different type`            ||
>                  |
> +|                           |+----------------------------
> ----------------------------------+|
>                          |
> +|                           ||:diagtext:`casting between types`
>                    ||
>          |
> +|                           |+----------------------------
> ----------------------------------+|
>                          |
> ++---------------------------+------------------------------
> ----------------------------------+-------------------------
> --------------------------------------+
> +
> ++---------------------------+------------------------------
> ----------------------------------+-------------------------
> --------------+
> +|:warning:`warning:` |nbsp| |+----------------------------
> ----------------------------------+| |nbsp| :diagtext:`discards
> qualifiers`|
> +|                           ||:diagtext:`assigning to different types`
>                   ||                                       |
> +|                           |+----------------------------
> ----------------------------------+|
>  |
> +|                           ||:diagtext:`passing to parameter of
> different type`            ||                                       |
> +|                           |+----------------------------
> ----------------------------------+|
>  |
> +|                           ||:diagtext:`returning from function with
> different return type`||                                       |
> +|                           |+----------------------------
> ----------------------------------+|
>  |
> +|                           ||:diagtext:`converting between types`
>                   ||                                       |
> +|                           |+----------------------------
> ----------------------------------+|
>  |
> +|                           ||:diagtext:`initializing with expression of
> different type`    ||                                       |
> +|                           |+----------------------------
> ----------------------------------+|
>  |
> +|                           ||:diagtext:`sending to parameter of
> different type`            ||                                       |
> +|                           |+----------------------------
> ----------------------------------+|
>  |
> +|                           ||:diagtext:`casting between types`
>                    ||                                       |
> +|                           |+----------------------------
> ----------------------------------+|
>  |
> ++---------------------------+------------------------------
> ----------------------------------+-------------------------
> --------------+
> +
> +
> +-Wincompatible-property-type
> +----------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`property type` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`is incompatible with type` |nbsp|
> :placeholder:`B` |nbsp| :diagtext:`inherited from` |nbsp| :placeholder:`C`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -------------------------+
> +
> +
> +-Wincompatible-sysroot
> +----------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------+
> +|:warning:`warning:` |nbsp| :diagtext:`using sysroot for
> '`:placeholder:`A`:diagtext:`' but targeting '`:placeholder:`B`:diagtext:`'
> `|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------+
> +
> +
> +-Wincomplete-implementation
> +---------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`method definition for` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`not found`|
> ++----------------------------------------------------------
> -------------------------------------------------------+
> +
> +
> +-Wincomplete-module
> +-------------------
> +Some of the diagnostics controlled by this flag are enabled by default.
> +
> +Controls `-Wincomplete-umbrella`_, `-Wnon-modular-include-in-module`_.
> +
> +
> +-Wincomplete-umbrella
> +---------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`missing submodule
> '`:placeholder:`A`:diagtext:`'`|
> ++----------------------------------------------------------
> -----------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`umbrella header for module
> '`:placeholder:`A`:diagtext:`' does not include header
> '`:placeholder:`B`:diagtext:`'`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------+
> +
> +
> +-Winconsistent-dllimport
> +------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -----------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`redeclared
> without` |nbsp| :placeholder:`B` |nbsp| :diagtext:`attribute: previous`
> |nbsp| :placeholder:`B` |nbsp| :diagtext:`ignored`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -----------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`redeclared
> without 'dllimport' attribute: 'dllexport' attribute added`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------+
> +
> +
> +-Winconsistent-missing-override
> +-------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`overrides
> a member function but is not marked 'override'`|
> ++----------------------------------------------------------
> -------------------------------------------------------------+
> +
> +
> +-Wincrement-bool
> +----------------
> +This diagnostic is enabled by default.
> +
> +Also controls `-Wdeprecated-increment-bool`_.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------------------------------+
> +|:error:`error:` |nbsp| :diagtext:`ISO C++1z does not allow incrementing
> expression of type bool`|
> ++----------------------------------------------------------
> --------------------------------------+
> +
> +
> +-Winfinite-recursion
> +--------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`all paths through this function
> will call itself`|
> ++----------------------------------------------------------
> -----------------------------+
> +
> +
> +-Winit-self
> +-----------
> +This diagnostic flag exists for GCC compatibility, and has no effect in
> Clang.
> +
> +-Winitializer-overrides
> +-----------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`initializer overrides prior
> initialization of this subobject`|
> ++----------------------------------------------------------
> -----------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------+
> +|:warning:`warning:` |nbsp| :diagtext:`subobject initialization overrides
> initialization of other fields within its enclosing subobject`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------+
> +
> +
> +-Winline
> +--------
> +This diagnostic flag exists for GCC compatibility, and has no effect in
> Clang.
> +
> +-Winline-asm
> +------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> +The text of this diagnostic is not controlled by Clang.
> +
> +
> +-Winline-new-delete
> +-------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`replacement function` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`cannot be declared 'inline'`|
> ++----------------------------------------------------------
> ------------------------------------------------------------------------+
> +
> +
> +-Winstantiation-after-specialization
> +------------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`explicit instantiation of` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`that occurs after an explicit
> specialization has no effect`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------+
> +
> +
> +-Wint-conversion
> +----------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------------+----------------------------
> ------------------------------------+-----------------------
> ----------------+
> +|:warning:`warning:` |nbsp| :diagtext:`incompatible integer to pointer
> conversion` |nbsp| |+----------------------------
> ----------------------------------+|+-----------------------
> --------------+|
> +|
>                  ||:diagtext:`assigning to different types`
>       |||                                     ||
> +|
>                  |+----------------------------
> ----------------------------------+|+-----------------------
> --------------+|
> +|
>                  ||:diagtext:`passing to parameter of different type`
>       |||:diagtext:`; dereference with \*`    ||
> +|
>                  |+----------------------------
> ----------------------------------+|+-----------------------
> --------------+|
> +|
>                  ||:diagtext:`returning from function with different return
> type`|||:diagtext:`; take the address with &`||
> +|
>                  |+----------------------------
> ----------------------------------+|+-----------------------
> --------------+|
> +|
>                  ||:diagtext:`converting between types`
>       |||:diagtext:`; remove \*`              ||
> +|
>                  |+----------------------------
> ----------------------------------+|+-----------------------
> --------------+|
> +|
>                  ||:diagtext:`initializing with expression of different
> type`    |||:diagtext:`; remove &`               ||
> +|
>                  |+----------------------------
> ----------------------------------+|+-----------------------
> --------------+|
> +|
>                  ||:diagtext:`sending to parameter of different type`
>       ||                                       |
> +|
>                  |+----------------------------
> ----------------------------------+|
>  |
> +|
>                  ||:diagtext:`casting between types`
>      ||                                       |
> +|
>                  |+----------------------------
> ----------------------------------+|
>  |
> ++----------------------------------------------------------
> -------------------------------+----------------------------
> ------------------------------------+-----------------------
> ----------------+
> +
> ++----------------------------------------------------------
> -------------------------------+----------------------------
> ------------------------------------+-----------------------
> ----------------+
> +|:warning:`warning:` |nbsp| :diagtext:`incompatible pointer to integer
> conversion` |nbsp| |+----------------------------
> ----------------------------------+|+-----------------------
> --------------+|
> +|
>                  ||:diagtext:`assigning to different types`
>       |||                                     ||
> +|
>                  |+----------------------------
> ----------------------------------+|+-----------------------
> --------------+|
> +|
>                  ||:diagtext:`passing to parameter of different type`
>       |||:diagtext:`; dereference with \*`    ||
> +|
>                  |+----------------------------
> ----------------------------------+|+-----------------------
> --------------+|
> +|
>                  ||:diagtext:`returning from function with different return
> type`|||:diagtext:`; take the address with &`||
> +|
>                  |+----------------------------
> ----------------------------------+|+-----------------------
> --------------+|
> +|
>                  ||:diagtext:`converting between types`
>       |||:diagtext:`; remove \*`              ||
> +|
>                  |+----------------------------
> ----------------------------------+|+-----------------------
> --------------+|
> +|
>                  ||:diagtext:`initializing with expression of different
> type`    |||:diagtext:`; remove &`               ||
> +|
>                  |+----------------------------
> ----------------------------------+|+-----------------------
> --------------+|
> +|
>                  ||:diagtext:`sending to parameter of different type`
>       ||                                       |
> +|
>                  |+----------------------------
> ----------------------------------+|
>  |
> +|
>                  ||:diagtext:`casting between types`
>      ||                                       |
> +|
>                  |+----------------------------
> ----------------------------------+|
>  |
> ++----------------------------------------------------------
> -------------------------------+----------------------------
> ------------------------------------+-----------------------
> ----------------+
> +
> +
> +-Wint-conversions
> +-----------------
> +Synonym for `-Wint-conversion`_.
> +
> +
> +-Wint-to-pointer-cast
> +---------------------
> +This diagnostic is enabled by default.
> +
> +Also controls `-Wint-to-void-pointer-cast`_.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`cast to` |nbsp| :placeholder:`B`
> |nbsp| :diagtext:`from smaller integer type` |nbsp| :placeholder:`A`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------+
> +
> +
> +-Wint-to-void-pointer-cast
> +--------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`cast to` |nbsp| :placeholder:`B`
> |nbsp| :diagtext:`from smaller integer type` |nbsp| :placeholder:`A`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------+
> +
> +
> +-Winteger-overflow
> +------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`overflow in expression; result is`
> |nbsp| :placeholder:`A` |nbsp| :diagtext:`with type` |nbsp|
> :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------+
> +
> +
> +-Winvalid-command-line-argument
> +-------------------------------
> +This diagnostic is enabled by default.
> +
> +Also controls `-Wignored-optimization-argument`_.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`optimization level
> '`:placeholder:`A`:diagtext:`' is not supported; using '`:placeholder:`B`:placeholder:`C`:diagtext:`'
> instead`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------------------+
> +
> +
> +-Winvalid-constexpr
> +-------------------
> +This diagnostic is an error by default, but the flag
> ``-Wno-invalid-constexpr`` can be used to disable the error.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------+-----
> --------------------+---------------------------------------
> -----------------+
> +|:error:`error:` |nbsp| :diagtext:`constexpr` |nbsp|
> |+-----------------------+| |nbsp| :diagtext:`never produces a constant
> expression`|
> +|
> ||:diagtext:`function`   ||
>         |
> +|
> |+-----------------------+|
>         |
> +|
> ||:diagtext:`constructor`||
>         |
> +|
> |+-----------------------+|
>         |
> ++----------------------------------------------------+-----
> --------------------+---------------------------------------
> -----------------+
> +
> +
> +-Winvalid-iboutlet
> +------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++---------------------------+------------------------------
> -+----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------+
> +|:warning:`warning:` |nbsp| |+-----------------------------+| |nbsp|
> :diagtext:`with` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute must
> be an object type (invalid` |nbsp| :placeholder:`B`:diagtext:`)`|
> +|                           ||:diagtext:`instance variable`||
>
>                                                           |
> +|                           |+-----------------------------+|
>
>                                                           |
> +|                           ||:diagtext:`property`         ||
>
>                                                           |
> +|                           |+-----------------------------+|
>
>                                                           |
> ++---------------------------+------------------------------
> -+----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------+
> +
> ++----------------------------------------------------------
> -----------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`IBOutletCollection properties
> should be copy/strong and not assign`|
> ++----------------------------------------------------------
> -----------------------------------------------+
> +
> +
> +-Winvalid-initializer-from-system-header
> +----------------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`invalid constructor form class in
> system header, should not be explicit`|
> ++----------------------------------------------------------
> ----------------------------------------------------+
> +
> +
> +-Winvalid-noreturn
> +------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`function declared 'noreturn'
> should not return`|
> ++----------------------------------------------------------
> ---------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`function` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`declared 'noreturn' should not return`|
> ++----------------------------------------------------------
> ----------------------------------------------------------------------+
> +
> +
> +-Winvalid-offsetof
> +------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`offset of on non-POD type` |nbsp|
> :placeholder:`A`|
> ++----------------------------------------------------------
> ------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`offset of on non-standard-layout
> type` |nbsp| :placeholder:`A`|
> ++----------------------------------------------------------
> ------------------------------------------+
> +
> +
> +-Winvalid-or-nonexistent-directory
> +----------------------------------
> +Some of the diagnostics controlled by this flag are enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`environment variable
> SCE\_ORBIS\_SDK\_DIR is set, but points to invalid or nonexistent directory
> '`:placeholder:`A`:diagtext:`'`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`unable to find` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`directory, expected to be in
> '`:placeholder:`B`:diagtext:`'`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------------+
> +
> +
> +-Winvalid-pch
> +-------------
> +This diagnostic flag exists for GCC compatibility, and has no effect in
> Clang.
> +
> +-Winvalid-pp-token
> +------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++---------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`empty character constant`|
> ++---------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> --------+-----------------+-----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`missing terminating` |nbsp|
> |+---------------+| |nbsp| :diagtext:`character`|
> +|
> ||:diagtext:`'`  ||                             |
> +|
> |+---------------+|                             |
> +|
> ||:diagtext:`'"'`||                             |
> +|
> |+---------------+|                             |
> ++----------------------------------------------------------
> --------+-----------------+-----------------------------+
> +
> +
> +-Winvalid-source-encoding
> +-------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`illegal character encoding in
> character literal`|
> ++----------------------------------------------------------
> ----------------------------+
> +
> ++----------------------------------------------------------
> -------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`illegal character encoding in
> string literal`|
> ++----------------------------------------------------------
> -------------------------+
> +
> +
> +-Winvalid-token-paste
> +---------------------
> +This diagnostic is an error by default, but the flag
> ``-Wno-invalid-token-paste`` can be used to disable the error.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------+
> +|:error:`error:` |nbsp| :diagtext:`pasting formed
> '`:placeholder:`A`:diagtext:`', an invalid preprocessing token`|
> ++----------------------------------------------------------
> ------------------------------------------------------+
> +
> +
> +-Wjump-seh-finally
> +------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`jump out of \_\_finally block has
> undefined behavior`|
> ++----------------------------------------------------------
> ---------------------------------+
> +
> +
> +-Wkeyword-compat
> +----------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------+-------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`keyword
> '`:placeholder:`A`:diagtext:`' will be made available as an identifier`
> |nbsp| |+-----------------------------------------------------+|
> +|
>                                                      ||:diagtext:`here`
>                                  ||
> +|
>
>  |+-----------------------------------------------------+|
> +|
>                                                      ||:diagtext:`for the
> remainder of the translation unit`||
> +|
>
>  |+-----------------------------------------------------+|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------+-------------------------------------------------------+
> +
> +
> +-Wkeyword-macro
> +---------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`keyword is hidden by macro
> definition`|
> ++----------------------------------------------------------
> ------------------+
> +
> +
> +-Wknr-promoted-parameter
> +------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`promoted type of K&R function
> parameter is not compatible with parameter type` |nbsp| :diagtext:`declared
> in a previous prototype`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------------------------+
> +
> +
> +-Wlanguage-extension-token
> +--------------------------
> +**Diagnostic text:**
> +
> ++-----------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`extension used`|
> ++-----------------------------------------------------+
> +
> +
> +-Wlarge-by-value-copy
> +---------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a large
> (`:placeholder:`B` |nbsp| :diagtext:`bytes) pass-by-value argument; pass it
> by reference instead ?`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`return value of` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`is a large (`:placeholder:`B` |nbsp|
> :diagtext:`bytes) pass-by-value object; pass it by reference instead ?`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------+
> +
> +
> +-Wliblto
> +--------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------+
> +|:warning:`warning:` |nbsp| :diagtext:`libLTO.dylib relative to clang
> installed dir not found; using 'ld' default search path instead`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------+
> +
> +
> +-Wliteral-conversion
> +--------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`implicit conversion from` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp|
> :diagtext:`changes value from` |nbsp| :placeholder:`C` |nbsp|
> :diagtext:`to` |nbsp| :placeholder:`D`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------------------------------------+
> +
> +
> +-Wliteral-range
> +---------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`magnitude of floating-point
> constant too large for type` |nbsp| :placeholder:`A`:diagtext:`; maximum
> is` |nbsp| :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`magnitude of floating-point
> constant too small for type` |nbsp| :placeholder:`A`:diagtext:`; minimum
> is` |nbsp| :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------+
> +
> +
> +-Wlocal-type-template-args
> +--------------------------
> +Some of the diagnostics controlled by this flag are enabled by default.
> +
> +Also controls `-Wc++98-compat-local-type-template-args`_.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`template argument uses local type`
> |nbsp| :placeholder:`A`|
> ++----------------------------------------------------------
> --------------------------------------+
> +
> +
> +-Wlogical-not-parentheses
> +-------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`logical not is only applied to the
> left hand side of this comparison`|
> ++----------------------------------------------------------
> -------------------------------------------------+
> +
> +
> +-Wlogical-op-parentheses
> +------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++---------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'&&' within '\|\|'`|
> ++---------------------------------------------------------+
> +
> +
> +-Wlong-long
> +-----------
> +Also controls `-Wc++11-long-long`_.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'long long' is an extension when
> C99 mode is not enabled`|
> ++----------------------------------------------------------
> -------------------------------------+
> +
> +
> +-Wloop-analysis
> +---------------
> +Controls `-Wfor-loop-analysis`_, `-Wrange-loop-analysis`_.
> +
> +
> +-Wmacro-redefined
> +-----------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`macro
> redefined`|
> ++----------------------------------------------------------
> --------------------+
> +
> +
> +-Wmain
> +------
> +Some of the diagnostics controlled by this flag are enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`ISO C++ does not allow 'main' to
> be used by a program`|
> ++----------------------------------------------------------
> ----------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'main' is not allowed to be
> declared \_Noreturn`|
> ++----------------------------------------------------------
> ----------------------------+
> +
> ++----------------------------------------------------------
> --------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'main' is not allowed to be
> declared variadic`|
> ++----------------------------------------------------------
> --------------------------+
> +
> ++----------------------------------------------------------
> ---------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`only one parameter on 'main'
> declaration`|
> ++----------------------------------------------------------
> ---------------------+
> +
> ++----------------------------------------------------------
> -----------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`variable named 'main' with
> external linkage has undefined behavior`|
> ++----------------------------------------------------------
> -----------------------------------------------+
> +
> ++----------------------------------------------------------
> -----------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'main' should not be declared
> static`|
> ++----------------------------------------------------------
> -----------------+
> +
> +
> +-Wmain-return-type
> +------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------+
> +|:warning:`warning:` |nbsp| :diagtext:`return type of 'main' is not
> 'int'`|
> ++----------------------------------------------------------
> ---------------+
> +
> +
> +-Wmalformed-warning-check
> +-------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`\_\_has\_warning expected option
> name (e.g. "-Wundef")`|
> ++----------------------------------------------------------
> -----------------------------------+
> +
> +
> +-Wmany-braces-around-scalar-init
> +--------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`too many braces around scalar
> initializer`|
> ++----------------------------------------------------------
> ----------------------+
> +
> +
> +-Wmemsize-comparison
> +--------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`size argument in` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`call is a comparison`|
> ++----------------------------------------------------------
> -------------------------------------------------------------+
> +
> +
> +-Wmethod-signatures
> +-------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ----------------+
> +|:warning:`warning:` |nbsp| :diagtext:`conflicting parameter types in
> implementation of` |nbsp| :placeholder:`A`:diagtext:`:` |nbsp|
> :placeholder:`B` |nbsp| :diagtext:`vs` |nbsp| :placeholder:`C`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ----------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`conflicting return type in
> implementation of` |nbsp| :placeholder:`A`:diagtext:`:` |nbsp|
> :placeholder:`B` |nbsp| :diagtext:`vs` |nbsp| :placeholder:`C`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------------------+
> +
> +
> +-Wmicrosoft
> +-----------
> +Some of the diagnostics controlled by this flag are enabled by default.
> +
> +Controls `-Wmicrosoft-charize`_, `-Wmicrosoft-include`_,
> `-Wmicrosoft-cpp-macro`_, `-Wmicrosoft-fixed-enum`_, `-Wmicrosoft-sealed`_,
> `-Wmicrosoft-unqualified-friend`_, `-Wmicrosoft-exception-spec`_,
> `-Wmicrosoft-using-decl`_, `-Wmicrosoft-mutable-reference`_,
> `-Wmicrosoft-pure-definition`_, `-Wmicrosoft-union-member-reference`_,
> `-Wmicrosoft-explicit-constructor-call`_, `-Wmicrosoft-enum-value`_,
> `-Wmicrosoft-default-arg-redefinition`_, `-Wmicrosoft-template`_,
> `-Wmicrosoft-redeclare-static`_, `-Wmicrosoft-enum-forward-reference`_,
> `-Wmicrosoft-goto`_, `-Wmicrosoft-flexible-array`_, `-Wmicrosoft-extra-qualification`_,
> `-Wmicrosoft-cast`_, `-Wmicrosoft-const-init`_,
> `-Wmicrosoft-void-pseudo-dtor`_, `-Wmicrosoft-anon-tag`_,
> `-Wmicrosoft-comment-paste`_, `-Wmicrosoft-end-of-file`_,
> `-Winconsistent-dllimport`_.
> +
> +
> +-Wmicrosoft-anon-tag
> +--------------------
> +Some of the diagnostics controlled by this flag are enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------+--------------------+-------------------
> --------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`types declared in an anonymous`
> |nbsp| |+------------------+| |nbsp| :diagtext:`are a Microsoft extension`|
> +|
>      ||:diagtext:`struct`||                                             |
> +|
>      |+------------------+|                                             |
> +|
>      ||:diagtext:`union` ||                                             |
> +|
>      |+------------------+|                                             |
> ++----------------------------------------------------------
> -------------------+--------------------+-------------------
> --------------------------+
> +
> ++--------------------------------------------------------+-
> --------------------+---------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`anonymous` |nbsp|
> |+-------------------+| |nbsp| :diagtext:`are a Microsoft extension`|
> +|
> ||:diagtext:`structs`||                                             |
> +|
> |+-------------------+|                                             |
> +|
> ||:diagtext:`unions` ||                                             |
> +|
> |+-------------------+|                                             |
> ++--------------------------------------------------------+-
> --------------------+---------------------------------------------+
> +
> +
> +-Wmicrosoft-cast
> +----------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`static\_cast between
> pointer-to-function and pointer-to-object is a Microsoft extension`|
> ++----------------------------------------------------------
> --------------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------+
> +|:warning:`warning:` |nbsp| :diagtext:`implicit conversion between
> pointer-to-function and pointer-to-object is a Microsoft extension`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------+
> +
> +
> +-Wmicrosoft-charize
> +-------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`charizing operator #@ is a
> Microsoft extension`|
> ++----------------------------------------------------------
> ---------------------------+
> +
> +
> +-Wmicrosoft-comment-paste
> +-------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`pasting two '/' tokens into a '//'
> comment is a Microsoft extension`|
> ++----------------------------------------------------------
> ------------------------------------------------+
> +
> +
> +-Wmicrosoft-const-init
> +----------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------+-----
> ------------------------------------------------------------
> +--------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`default initialization of an
> object of const type` |nbsp| :placeholder:`A`|+------------
> ---------------------------------------------------+| |nbsp|
> :diagtext:`is a Microsoft extension`|
> +|
>                                         ||
>                              ||                                            |
> +|
>                                         |+----------------------------
> -----------------------------------+|
>         |
> +|
>                                         || |nbsp| :diagtext:`without a
> user-provided default constructor`||
>     |
> +|
>                                         |+----------------------------
> -----------------------------------+|
>         |
> ++----------------------------------------------------------
> ------------------------------------------------------+-----
> ------------------------------------------------------------
> +--------------------------------------------+
> +
> +
> +-Wmicrosoft-cpp-macro
> +---------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`C++ operator` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`(aka` |nbsp|
> :placeholder:`B`:diagtext:`) used as a macro name`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------------+
> +
> +
> +-Wmicrosoft-default-arg-redefinition
> +------------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++-----------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`redefinition of default argument`|
> ++-----------------------------------------------------------------------+
> +
> +
> +-Wmicrosoft-end-of-file
> +-----------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`treating Ctrl-Z as end-of-file is
> a Microsoft extension`|
> ++----------------------------------------------------------
> ------------------------------------+
> +
> +
> +-Wmicrosoft-enum-forward-reference
> +----------------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`forward references to 'enum' types
> are a Microsoft extension`|
> ++----------------------------------------------------------
> -----------------------------------------+
> +
> +
> +-Wmicrosoft-enum-value
> +----------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`enumerator value is not
> representable in the underlying type` |nbsp| :placeholder:`A`|
> ++----------------------------------------------------------
> -----------------------------------------------------------------+
> +
> +
> +-Wmicrosoft-exception-spec
> +--------------------------
> +Some of the diagnostics controlled by this flag are enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`exception specification of '...'
> is a Microsoft extension`|
> ++----------------------------------------------------------
> --------------------------------------+
> +
> ++---------------------------+------------------------------
> ----+-------------------------------------------------------
> ---------------------------------------------------------+
> +|:warning:`warning:` |nbsp| |+--------------------------------+|:diagtext:`incomplete
> type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is not allowed in exception
> specification`|
> +|                           ||                                ||
>
>                           |
> +|                           |+--------------------------------+|
>
>                             |
> +|                           ||:diagtext:`pointer to` |nbsp|   ||
>
>                           |
> +|                           |+--------------------------------+|
>
>                             |
> +|                           ||:diagtext:`reference to` |nbsp| ||
>
>                           |
> +|                           |+--------------------------------+|
>
>                             |
> ++---------------------------+------------------------------
> ----+-------------------------------------------------------
> ---------------------------------------------------------+
> +
> ++----------------------------------------------------------
> -------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`exception specification in
> declaration does not match previous declaration`|
> ++----------------------------------------------------------
> -------------------------------------------------------+
> +
> ++----------------------------------------------------------
> --------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`exception specification in
> explicit instantiation does not match instantiated one`|
> ++----------------------------------------------------------
> --------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is missing
> exception specification '`:placeholder:`B`:diagtext:`'`|
> ++----------------------------------------------------------
> ----------------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ---------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`exception specification of
> overriding function is more lax than base version`|
> ++----------------------------------------------------------
> ---------------------------------------------------------+
> +
> +
> +-Wmicrosoft-exists
> +------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++--------------------------------------------------------+-
> --------------------------------+---------------------------
> -----------------+
> +|:warning:`warning:` |nbsp| :diagtext:`dependent` |nbsp|
> |+-------------------------------+| |nbsp| :diagtext:`declarations are
> ignored`|
> +|
> ||:diagtext:`\_\_if\_not\_exists`||
>       |
> +|
> |+-------------------------------+|
>       |
> +|
> ||:diagtext:`\_\_if\_exists`     ||
>     |
> +|
> |+-------------------------------+|
>       |
> ++--------------------------------------------------------+-
> --------------------------------+---------------------------
> -----------------+
> +
> +
> +-Wmicrosoft-explicit-constructor-call
> +-------------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`explicit constructor calls are a
> Microsoft extension`|
> ++----------------------------------------------------------
> ---------------------------------+
> +
> +
> +-Wmicrosoft-extra-qualification
> +-------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`extra qualification on member`
> |nbsp| :placeholder:`A`|
> ++----------------------------------------------------------
> ----------------------------------+
> +
> +
> +-Wmicrosoft-fixed-enum
> +----------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`enumeration types with a fixed
> underlying type are a Microsoft extension`|
> ++----------------------------------------------------------
> -----------------------------------------------------+
> +
> +
> +-Wmicrosoft-flexible-array
> +--------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------+-----------------------+-----------------------
> ---------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`flexible array member` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`in otherwise empty` |nbsp|
> |+---------------------+| |nbsp| :diagtext:`is a Microsoft extension`|
> +|
>
> ||:diagtext:`struct`   ||                                            |
> +|
>
> |+---------------------+|                                            |
> +|
>
> ||:diagtext:`interface`||                                            |
> +|
>
> |+---------------------+|                                            |
> +|
>
> ||:diagtext:`union`    ||                                            |
> +|
>
> |+---------------------+|                                            |
> +|
>
> ||:diagtext:`class`    ||                                            |
> +|
>
> |+---------------------+|                                            |
> +|
>
> ||:diagtext:`enum`     ||                                            |
> +|
>
> |+---------------------+|                                            |
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------+-----------------------+-----------------------
> ---------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`flexible array member` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`in a union is a Microsoft extension`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------+
> +
> +
> +-Wmicrosoft-goto
> +----------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`jump from this goto statement to
> its label is a Microsoft extension`|
> ++----------------------------------------------------------
> ------------------------------------------------+
> +
> +
> +-Wmicrosoft-include
> +-------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`#include resolved using
> non-portable Microsoft search rules as:` |nbsp| :placeholder:`A`|
> ++----------------------------------------------------------
> --------------------------------------------------------------------+
> +
> +
> +-Wmicrosoft-mutable-reference
> +-----------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'mutable' on a reference type is a
> Microsoft extension`|
> ++----------------------------------------------------------
> -----------------------------------+
> +
> +
> +-Wmicrosoft-pure-definition
> +---------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`function definition with
> pure-specifier is a Microsoft extension`|
> ++----------------------------------------------------------
> ---------------------------------------------+
> +
> +
> +-Wmicrosoft-redeclare-static
> +----------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`redeclaring non-static` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`as static is a Microsoft extension`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------+
> +
> +
> +-Wmicrosoft-sealed
> +------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'sealed' keyword is a Microsoft
> extension`|
> ++----------------------------------------------------------
> ----------------------+
> +
> +
> +-Wmicrosoft-template
> +--------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`duplicate explicit instantiation
> of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`ignored as a Microsoft
> extension`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ---------------+
> +|:warning:`warning:` |nbsp| :diagtext:`use of identifier` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`found via unqualified lookup into
> dependent bases of class templates is a Microsoft extension`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ---------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`explicit specialization of` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`within class scope is a Microsoft
> extension`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`using the undeclared type` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`as a default template argument is a
> Microsoft extension`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------------------+
> +
> ++----------------------------------------------------------
> -------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`non-type template argument
> containing a dereference operation is a Microsoft extension`|
> ++----------------------------------------------------------
> -------------------------------------------------------------------+
> +
> ++---------------------------+------------------------------
> ---------+--------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| |+-------------------------------------+|
> |nbsp| :diagtext:`specialization of` |nbsp| :placeholder:`B` |nbsp|
> :diagtext:`outside namespace enclosing` |nbsp| :placeholder:`C` |nbsp|
> :diagtext:`is a Microsoft extension`|
> +|                           ||:diagtext:`class template`           ||
>
>
>                     |
> +|                           |+-------------------------------------+|
>
>
>                     |
> +|                           ||:diagtext:`class template partial`   ||
>
>
>                     |
> +|                           |+-------------------------------------+|
>
>
>                     |
> +|                           ||:diagtext:`variable template`        ||
>
>
>                     |
> +|                           |+-------------------------------------+|
>
>
>                     |
> +|                           ||:diagtext:`variable template partial`||
>
>
>                     |
> +|                           |+-------------------------------------+|
>
>
>                     |
> +|                           ||:diagtext:`function template`        ||
>
>
>                     |
> +|                           |+-------------------------------------+|
>
>
>                     |
> +|                           ||:diagtext:`member function`          ||
>
>
>                     |
> +|                           |+-------------------------------------+|
>
>
>                     |
> +|                           ||:diagtext:`static data member`       ||
>
>
>                     |
> +|                           |+-------------------------------------+|
>
>
>                     |
> +|                           ||:diagtext:`member class`             ||
>
>
>                     |
> +|                           |+-------------------------------------+|
>
>
>                     |
> +|                           ||:diagtext:`member enumeration`       ||
>
>
>                     |
> +|                           |+-------------------------------------+|
>
>
>                     |
> ++---------------------------+------------------------------
> ---------+--------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`template argument for template
> type parameter must be a type; omitted 'typename' is a Microsoft extension`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`use of undeclared identifier`
> |nbsp| :placeholder:`A`:diagtext:`; unqualified lookup into dependent bases
> of class template` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is a Microsoft
> extension`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------------------+
> +
> +
> +-Wmicrosoft-union-member-reference
> +----------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`union member` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`has reference type` |nbsp|
> :placeholder:`B`:diagtext:`, which is a Microsoft extension`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------------------------------------+
> +
> +
> +-Wmicrosoft-unqualified-friend
> +------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`unqualified friend declaration
> referring to type outside of the nearest enclosing namespace is a Microsoft
> extension; add a nested name specifier`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------------+
> +
> +
> +-Wmicrosoft-using-decl
> +----------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`using declaration referring to
> inaccessible member '`:placeholder:`A`:diagtext:`' (which refers to
> accessible member '`:placeholder:`B`:diagtext:`') is a Microsoft
> compatibility extension`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------+
> +
> +
> +-Wmicrosoft-void-pseudo-dtor
> +----------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`pseudo-destructors on type void
> are a Microsoft extension`|
> ++----------------------------------------------------------
> --------------------------------------+
> +
> +
> +-Wmismatched-new-delete
> +-----------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------+-----------
> -------+----------------------------------------------------
> -----------+------------------+-----------------------------
> ------+------------------+--------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'delete`|+----------------+|:diagtext:`'
> applied to a pointer that was allocated with 'new`|+----------------+|:diagtext:`';
> did you mean 'delete`|+----------------+|:diagtext:`'?`|
> +|                                              ||                ||
>
>  ||:diagtext:`\[\]`||
>  ||:diagtext:`\[\]`||              |
> +|                                              |+----------------+|
>
>  |+----------------+|
>  |+----------------+|              |
> +|                                              ||:diagtext:`\[\]`||
>                                                          ||
> ||                                   ||                ||              |
> +|                                              |+----------------+|
>
>  |+----------------+|
>  |+----------------+|              |
> ++----------------------------------------------+-----------
> -------+----------------------------------------------------
> -----------+------------------+-----------------------------
> ------+------------------+--------------+
> +
> +
> +-Wmismatched-parameter-types
> +----------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`conflicting parameter types in
> implementation of` |nbsp| :placeholder:`A`|
> ++----------------------------------------------------------
> -----------------------------------------------------+
> +
> +
> +-Wmismatched-return-types
> +-------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`conflicting return type in
> implementation of` |nbsp| :placeholder:`A`|
> ++----------------------------------------------------------
> -------------------------------------------------+
> +
> +
> +-Wmismatched-tags
> +-----------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------------------+--------------------------+---------
> ---------------------+--------------------------------------
> ---------------------+--------------------------+-----------
> -------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`C` |nbsp| :diagtext:`defined
> as` |nbsp| |+------------------------+|+----------------------------+|
> |nbsp| :diagtext:`here but previously declared as` |nbsp|
> |+------------------------+|+----------------------------+|
> +|
>          ||:diagtext:`a struct`    |||                            ||
>                                                    ||:diagtext:`a struct`
>   |||                            ||
> +|
>          |+------------------------+|+----------------------------+|
>
>  |+------------------------+|+----------------------------+|
> +|
>          ||:diagtext:`an interface`||| |nbsp| :diagtext:`template`||
>                                                    ||:diagtext:`an
> interface`||| |nbsp| :diagtext:`template`||
> +|
>          |+------------------------+|+----------------------------+|
>
>  |+------------------------+|+----------------------------+|
> +|
>          ||:diagtext:`a class`     ||                              |
>                                                    ||:diagtext:`a class`
>  ||                              |
> +|
>          |+------------------------+|                              |
>
>  |+------------------------+|                              |
> ++----------------------------------------------------------
> -----------------------+--------------------------+---------
> ---------------------+--------------------------------------
> ---------------------+--------------------------+-----------
> -------------------+
> +
> ++---------------------------+-----------------------+------
> ------------------------+-----------------------------------
> ---------------------------------------------+--------------
> ---------+------------------------------+
> +|:warning:`warning:` |nbsp| |+---------------------+|+----------------------------+|
> |nbsp| :placeholder:`C` |nbsp| :diagtext:`was previously declared as a`
> |nbsp| |+---------------------+|+----------------------------+|
> +|                           ||:diagtext:`struct`   |||
>         ||
>               ||:diagtext:`struct`   |||                            ||
> +|                           |+---------------------+|+----------------------------+|
>
>   |+---------------------+|+----------------------------+|
> +|                           ||:diagtext:`interface`||| |nbsp|
> :diagtext:`template`||
>                           ||:diagtext:`interface`||| |nbsp|
> :diagtext:`template`||
> +|                           |+---------------------+|+----------------------------+|
>
>   |+---------------------+|+----------------------------+|
> +|                           ||:diagtext:`class`    ||
>           |
>                 ||:diagtext:`class`    ||                              |
> +|                           |+---------------------+|
>           |
>                 |+---------------------+|                              |
> ++---------------------------+-----------------------+------
> ------------------------+-----------------------------------
> ---------------------------------------------+--------------
> ---------+------------------------------+
> +
> +
> +-Wmissing-braces
> +----------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`suggest braces around
> initialization of subobject`|
> ++----------------------------------------------------------
> ------------------------------+
> +
> +
> +-Wmissing-declarations
> +----------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`declaration does not declare
> anything`|
> ++----------------------------------------------------------
> ------------------+
> +
> ++----------------------------------------------------------
> -------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' is
> not permitted on a declaration of a type`|
> ++----------------------------------------------------------
> -------------------------------------------------------+
> +
> ++--------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`typedef requires a name`|
> ++--------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ---------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`'
> ignored on this declaration`|
> ++----------------------------------------------------------
> ---------------------------------------+
> +
> +
> +-Wmissing-exception-spec
> +------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is missing
> exception specification '`:placeholder:`B`:diagtext:`'`|
> ++----------------------------------------------------------
> ----------------------------------------------------------------------+
> +
> +
> +-Wmissing-field-initializers
> +----------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`missing field` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`initializer`|
> ++----------------------------------------------------------
> -------------------------------------------------+
> +
> +
> +-Wmissing-format-attribute
> +--------------------------
> +This diagnostic flag exists for GCC compatibility, and has no effect in
> Clang.
> +
> +-Wmissing-include-dirs
> +----------------------
> +This diagnostic flag exists for GCC compatibility, and has no effect in
> Clang.
> +
> +-Wmissing-method-return-type
> +----------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`method has no return type
> specified; defaults to 'id'`|
> ++----------------------------------------------------------
> ----------------------------------+
> +
> +
> +-Wmissing-noreturn
> +------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`block could be declared with
> attribute 'noreturn'`|
> ++----------------------------------------------------------
> ------------------------------+
> +
> ++---------------------------+----------------------+-------
> ------------------------------------------------------------
> --------------------+
> +|:warning:`warning:` |nbsp| |+--------------------+| |nbsp|
> :placeholder:`B` |nbsp| :diagtext:`could be declared with attribute
> 'noreturn'`|
> +|                           ||:diagtext:`function`||
>                                                                  |
> +|                           |+--------------------+|
>                                                                  |
> +|                           ||:diagtext:`method`  ||
>                                                                  |
> +|                           |+--------------------+|
>                                                                  |
> ++---------------------------+----------------------+-------
> ------------------------------------------------------------
> --------------------+
> +
> +
> +-Wmissing-prototype-for-cc
> +--------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`function with no prototype cannot
> use the` |nbsp| :placeholder:`A` |nbsp| :diagtext:`calling convention`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------+
> +
> +
> +-Wmissing-prototypes
> +--------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`no previous prototype for
> function` |nbsp| :placeholder:`A`|
> ++----------------------------------------------------------
> ---------------------------------------+
> +
> +
> +-Wmissing-selector-name
> +-----------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`used as
> the name of the previous parameter rather than as part of the selector`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------+
> +
> +
> +-Wmissing-sysroot
> +-----------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`no such sysroot directory:
> '`:placeholder:`A`:diagtext:`'`|
> ++----------------------------------------------------------
> --------------------------------------+
> +
> +
> +-Wmissing-variable-declarations
> +-------------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`no previous extern declaration for
> non-static variable` |nbsp| :placeholder:`A`|
> ++----------------------------------------------------------
> -----------------------------------------------------------+
> +
> +
> +-Rmodule-build
> +--------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------------------------------------------------------+
> +|:remark:`remark:` |nbsp| :diagtext:`building module
> '`:placeholder:`A`:diagtext:`' as '`:placeholder:`B`:diagtext:`'`|
> ++----------------------------------------------------------
> -----------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------+
> +|:remark:`remark:` |nbsp| :diagtext:`finished building module
> '`:placeholder:`A`:diagtext:`'`|
> ++----------------------------------------------------------
> ----------------------------------+
> +
> +
> +-Wmodule-conflict
> +-----------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`module
> '`:placeholder:`A`:diagtext:`' conflicts with already-imported module
> '`:placeholder:`B`:diagtext:`':` |nbsp| :placeholder:`C`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------------------------+
> +
> +
> +-Wmodule-file-config-mismatch
> +-----------------------------
> +This diagnostic is an error by default, but the flag
> ``-Wno-module-file-config-mismatch`` can be used to disable the error.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------------------+
> +|:error:`error:` |nbsp| :diagtext:`module file` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`cannot be loaded due to a configuration mismatch with the
> current compilation`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------------------+
> +
> +
> +-Wmodule-file-extension
> +-----------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`duplicate module file extension
> block name '`:placeholder:`A`:diagtext:`'`|
> ++----------------------------------------------------------
> ------------------------------------------------------+
> +
> +
> +-Wmodule-import-in-extern-c
> +---------------------------
> +This diagnostic is an error by default, but the flag
> ``-Wno-module-import-in-extern-c`` can be used to disable the error.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------+
> +|:error:`error:` |nbsp| :diagtext:`import of C++ module
> '`:placeholder:`A`:diagtext:`' appears within extern "C" language linkage
> specification`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------+
> +
> +
> +-Wmodules-ambiguous-internal-linkage
> +------------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`ambiguous use of internal linkage
> declaration` |nbsp| :placeholder:`A` |nbsp| :diagtext:`defined in multiple
> modules`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------+
> +
> +
> +-Wmodules-import-nested-redundant
> +---------------------------------
> +This diagnostic is an error by default, but the flag
> ``-Wno-modules-import-nested-redundant`` can be used to disable the error.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------+
> +|:error:`error:` |nbsp| :diagtext:`redundant #include of module
> '`:placeholder:`A`:diagtext:`' appears within` |nbsp| :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------+
> +
> +
> +-Wmost
> +------
> +Some of the diagnostics controlled by this flag are enabled by default.
> +
> +Controls `-Wchar-subscripts`_, `-Wcomment`_,
> `-Wdelete-non-virtual-dtor`_, `-Wfor-loop-analysis`_, `-Wformat`_,
> `-Wimplicit`_, `-Winfinite-recursion`_, `-Wmismatched-tags`_,
> `-Wmissing-braces`_, `-Wmove`_, `-Wmultichar`_, `-Wreorder`_,
> `-Wreturn-type`_, `-Wself-assign`_, `-Wself-move`_,
> `-Wsizeof-array-argument`_, `-Wsizeof-array-decay`_, `-Wstring-plus-int`_,
> `-Wtrigraphs`_, `-Wuninitialized`_, `-Wunknown-pragmas`_, `-Wunused`_,
> `-Wvolatile-register-var`_, `-Wobjc-missing-super-calls`_,
> `-Wobjc-designated-initializers`_, `-Woverloaded-virtual`_,
> `-Wprivate-extern`_, `-Wcast-of-sel-type`_, `-Wextern-c-compat`_.
> +
> +
> +-Wmove
> +------
> +Controls `-Wpessimizing-move`_, `-Wredundant-move`_, `-Wself-move`_.
> +
> +
> +-Wmsvc-include
> +--------------
> +Synonym for `-Wmicrosoft-include`_.
> +
> +
> +-Wmultichar
> +-----------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------+
> +|:warning:`warning:` |nbsp| :diagtext:`multi-character character
> constant`|
> ++----------------------------------------------------------
> ---------------+
> +
> +
> +-Wmultiple-move-vbase
> +---------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`defaulted move assignment operator
> of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`will move assign virtual base
> class` |nbsp| :placeholder:`B` |nbsp| :diagtext:`multiple times`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------+
> +
> +
> +-Wnarrowing
> +-----------
> +Synonym for `-Wc++11-narrowing`_.
> +
> +
> +-Wnested-anon-types
> +-------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------------------------+--------------------+---------
> ---------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`anonymous types declared in an
> anonymous` |nbsp| |+------------------+| |nbsp| :diagtext:`are an
> extension`|
> +|
>                ||:diagtext:`struct`||                                    |
> +|
>                |+------------------+|                                    |
> +|
>                ||:diagtext:`union` ||                                    |
> +|
>                |+------------------+|                                    |
> ++----------------------------------------------------------
> -----------------------------+--------------------+---------
> ---------------------------+
> +
> +
> +-Wnested-externs
> +----------------
> +This diagnostic flag exists for GCC compatibility, and has no effect in
> Clang.
> +
> +-Wnew-returns-null
> +------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------+-----------------------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`should not
> return a null pointer unless it is declared 'throw()'`|+------------------
> ---------------+|
> +|
>                                                        ||
>                ||
> +|
>
>  |+---------------------------------+|
> +|
>                                                        || |nbsp|
> :diagtext:`or 'noexcept'`||
> +|
>
>  |+---------------------------------+|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------+-----------------------------------+
> +
> +
> +-Wnewline-eof
> +-------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`no newline at end of file`|
> ++----------------------------------------------------------------+
> +
> ++----------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`no newline at end of file`|
> ++----------------------------------------------------------------+
> +
> +
> +-Wnon-gcc
> +---------
> +Some of the diagnostics controlled by this flag are enabled by default.
> +
> +Controls `-Wsign-compare`_, `-Wconversion`_, `-Wliteral-range`_.
> +
> +
> +-Wnon-literal-null-conversion
> +-----------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`expression which evaluates to zero
> treated as a null pointer constant of type` |nbsp| :placeholder:`A`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------+
> +
> +
> +-Wnon-modular-include-in-framework-module
> +-----------------------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`include of non-modular header
> inside framework module '`:placeholder:`A`:diagtext:`'`|
> ++----------------------------------------------------------
> -----------------------------------------------------------------+
> +
> +
> +-Wnon-modular-include-in-module
> +-------------------------------
> +Also controls `-Wnon-modular-include-in-framework-module`_.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`include of non-modular header
> inside module '`:placeholder:`A`:diagtext:`'`|
> ++----------------------------------------------------------
> -------------------------------------------------------+
> +
> +
> +-Wnon-pod-varargs
> +-----------------
> +This diagnostic is an error by default, but the flag
> ``-Wno-non-pod-varargs`` can be used to disable the error.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------+-------------------------+---------------------------
> ------------------------------------------------------------
> -----+-------------------------+----------------------------------------+
> +|:error:`error:` |nbsp| :diagtext:`cannot pass object of` |nbsp|
> |+-----------------------+| |nbsp| :diagtext:`type` |nbsp| :placeholder:`B`
> |nbsp| :diagtext:`through variadic` |nbsp| |+-----------------------+|:diagtext:`;
> call will abort at runtime`|
> +|
> ||:diagtext:`non-POD`    ||
>                                             ||:diagtext:`function`   ||
>                                     |
> +|
> |+-----------------------+|
>                                             |+-----------------------+|
>                                     |
> +|
> ||:diagtext:`non-trivial`||
>                                             ||:diagtext:`block`      ||
>                                     |
> +|
> |+-----------------------+|
>                                             |+-----------------------+|
>                                     |
> +|                                                                |
>                  |
>                                   ||:diagtext:`method`     ||
>                           |
> +|                                                                |
>                  |
>                                   |+-----------------------+|
>                           |
> +|                                                                |
>                  |
>                                   ||:diagtext:`constructor`||
>                           |
> +|                                                                |
>                  |
>                                   |+-----------------------+|
>                           |
> ++----------------------------------------------------------
> ------+-------------------------+---------------------------
> ------------------------------------------------------------
> -----+-------------------------+----------------------------------------+
> +
> ++------------------------------------------------------+---
> ----------------------+-------------------------------------
> ------------------------------------------------------------
> +-------------------------+---------------------------------
> -----------------------------------------+
> +|:error:`error:` |nbsp| :diagtext:`cannot pass` |nbsp|
> |+-----------------------+| |nbsp| :diagtext:`object of type` |nbsp|
> :placeholder:`B` |nbsp| :diagtext:`to variadic` |nbsp|
> |+-----------------------+|:diagtext:`; expected type from format string
> was` |nbsp| :placeholder:`D`|
> +|
> ||:diagtext:`non-POD`    ||
>                                                  ||:diagtext:`function`
>  ||
>   |
> +|
> |+-----------------------+|
>
>  |+-----------------------+|
>                           |
> +|
> ||:diagtext:`non-trivial`||
>                                                  ||:diagtext:`block`
> ||
> |
> +|
> |+-----------------------+|
>
>  |+-----------------------+|
>                           |
> +|                                                      |
>        |
>                              ||:diagtext:`method`     ||
>                                                       |
> +|                                                      |
>        |
>                              |+-----------------------+|
>                                                       |
> +|                                                      |
>        |
>                              ||:diagtext:`constructor`||
>                                                       |
> +|                                                      |
>        |
>                              |+-----------------------+|
>                                                       |
> ++------------------------------------------------------+---
> ----------------------+-------------------------------------
> ------------------------------------------------------------
> +-------------------------+---------------------------------
> -----------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------+
> +|:error:`error:` |nbsp| :diagtext:`second argument to 'va\_arg' is of
> non-POD type` |nbsp| :placeholder:`A`|
> ++----------------------------------------------------------
> ------------------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------------------------------------+
> +|:error:`error:` |nbsp| :diagtext:`second argument to 'va\_arg' is of ARC
> ownership-qualified type` |nbsp| :placeholder:`A`|
> ++----------------------------------------------------------
> ----------------------------------------------------------------+
> +
> +
> +-Wnon-virtual-dtor
> +------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------------------------------------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has
> virtual functions but non-virtual destructor`|
> ++----------------------------------------------------------
> -----------------------------------------------------+
> +
> +
> +-Wnonnull
> +---------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`null passed to a callee that
> requires a non-null argument`|
> ++----------------------------------------------------------
> --------------------------------------+
> +
> ++----------------------------------------------------------
> -------+----------------------+-----------------------------
> ----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`null returned from` |nbsp|
> |+--------------------+| |nbsp| :diagtext:`that requires a non-null return
> value`|
> +|
>  ||:diagtext:`function`||
>        |
> +|
>  |+--------------------+|
>        |
> +|
>  ||:diagtext:`method`  ||
>        |
> +|
>  |+--------------------+|
>        |
> ++----------------------------------------------------------
> -------+----------------------+-----------------------------
> ----------------------------+
> +
> +
> +-Wnonportable-cfstrings
> +-----------------------
> +This diagnostic flag exists for GCC compatibility, and has no effect in
> Clang.
> +
> +-Wnonportable-include-path
> +--------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`non-portable path to file
> '`:placeholder:`A`:diagtext:`'; specified path differs in case from file
> name on disk`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------+
> +
> +
> +-Wnonportable-system-include-path
> +---------------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`non-portable path to file
> '`:placeholder:`A`:diagtext:`'; specified path differs in case from file
> name on disk`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------+
> +
> +
> +-Wnonportable-vector-initialization
> +-----------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`vector initializers are not
> compatible with NEON intrinsics in big endian mode`|
> ++----------------------------------------------------------
> -----------------------------------------------------------+
> +
> +
> +-Wnull-arithmetic
> +-----------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------+
> +|:warning:`warning:` |nbsp| :diagtext:`use of NULL in arithmetic
> operation`|
> ++----------------------------------------------------------
> ----------------+
> +
> ++----------------------------------------------------------
> ----------------------------+-------------------------------
> -------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`comparison between NULL and
> non-pointer` |nbsp| |+----------------------------
> --------------------------------+|
> +|
>               ||+---------------------------------------------------------
> -+||
> +|
>               |||:diagtext:`(`:placeholder:`B` |nbsp| :diagtext:`and
> NULL)`|||
> +|
>               ||+---------------------------------------------------------
> -+||
> +|
>               |+----------------------------------------------------------
> --+|
> +|
>               ||+---------------------------------------------------------
> -+||
> +|
>               |||:diagtext:`(NULL and` |nbsp| :placeholder:`B`:diagtext:`)`|
> ||
> +|
>               ||+---------------------------------------------------------
> -+||
> +|
>               |+----------------------------------------------------------
> --+|
> ++----------------------------------------------------------
> ----------------------------+-------------------------------
> -------------------------------+
> +
> +
> +-Wnull-character
> +----------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------+--------------------+---------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`null character(s) preserved in`
> |nbsp| |+------------------+| |nbsp| :diagtext:`literal`|
> +|
>      ||:diagtext:`char`  ||                           |
> +|
>      |+------------------+|                           |
> +|
>      ||:diagtext:`string`||                           |
> +|
>      |+------------------+|                           |
> ++----------------------------------------------------------
> -------------------+--------------------+---------------------------+
> +
> ++-------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`null character ignored`|
> ++-------------------------------------------------------------+
> +
> +
> +-Wnull-conversion
> +-----------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------+---------------------+--------------------------
> -----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`implicit conversion of` |nbsp|
> |+-------------------+| |nbsp| :diagtext:`constant to` |nbsp|
> :placeholder:`B`|
> +|
>  ||:diagtext:`NULL`   ||
>    |
> +|
>  |+-------------------+|
>    |
> +|
>  ||:diagtext:`nullptr`||
>    |
> +|
>  |+-------------------+|
>    |
> ++----------------------------------------------------------
> -----------+---------------------+--------------------------
> -----------------------------+
> +
> +
> +-Wnull-dereference
> +------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`binding dereferenced null pointer
> to reference has undefined behavior`|
> ++----------------------------------------------------------
> --------------------------------------------------+
> +
> ++----------------------------------------------------------
> -----------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`indirection of non-volatile null
> pointer will be deleted, not trap`|
> ++----------------------------------------------------------
> -----------------------------------------------+
> +
> +
> +-Wnullability
> +-------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ---------------+
> +|:warning:`warning:` |nbsp| :diagtext:`conflicting nullability specifier
> on parameter types,` |nbsp| :placeholder:`A` |nbsp| :diagtext:`conflicts
> with existing specifier` |nbsp| :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ---------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`conflicting nullability specifier
> on return types,` |nbsp| :placeholder:`A` |nbsp| :diagtext:`conflicts with
> existing specifier` |nbsp| :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`nullability specifier` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`conflicts with existing specifier`
> |nbsp| :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ---------------+
> +|:warning:`warning:` |nbsp| :diagtext:`synthesized setter` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`for null\_resettable property` |nbsp|
> :placeholder:`B` |nbsp| :diagtext:`does not handle nil`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ---------------+
> +
> ++----------------------------------------------------------
> ------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`duplicate nullability specifier`
> |nbsp| :placeholder:`A`|
> ++----------------------------------------------------------
> ------------------------------------+
> +
> +
> +-Wnullability-completeness
> +--------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++---------------------------+----------------------------+-
> ------------------------------------------------------------
> ----------------------------------------------+
> +|:warning:`warning:` |nbsp| |+--------------------------+| |nbsp|
> :diagtext:`is missing a nullability type specifier (\_Nonnull, \_Nullable,
> or \_Null\_unspecified)`|
> +|                           ||:diagtext:`pointer`       ||
>
>                |
> +|                           |+--------------------------+|
>
>                |
> +|                           ||:diagtext:`block pointer` ||
>
>                |
> +|                           |+--------------------------+|
>
>                |
> +|                           ||:diagtext:`member pointer`||
>
>                |
> +|                           |+--------------------------+|
>
>                |
> ++---------------------------+----------------------------+-
> ------------------------------------------------------------
> ----------------------------------------------+
> +
> +
> +-Wnullability-declspec
> +----------------------
> +This diagnostic is an error by default, but the flag
> ``-Wno-nullability-declspec`` can be used to disable the error.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------------------+------------
> -------------------------+-------------+
> +|:error:`error:` |nbsp| :diagtext:`nullability specifier` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`cannot be applied to non-pointer type`
> |nbsp| :placeholder:`B`:diagtext:`; did you mean to apply the specifier to
> the` |nbsp| |+-----------------------------------+|:diagtext:`?`|
> +|
>
>
>  ||:diagtext:`pointer`                ||             |
> +|
>
>
>  |+-----------------------------------+|             |
> +|
>
>
>  ||:diagtext:`block pointer`          ||             |
> +|
>
>
>  |+-----------------------------------+|             |
> +|
>
>
>  ||:diagtext:`member pointer`         ||             |
> +|
>
>
>  |+-----------------------------------+|             |
> +|
>
>
>  ||:diagtext:`function pointer`       ||             |
> +|
>
>
>  |+-----------------------------------+|             |
> +|
>
>
>  ||:diagtext:`member function pointer`||             |
> +|
>
>
>  |+-----------------------------------+|             |
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------------------+------------
> -------------------------+-------------+
> +
> +
> +-Wnullability-extension
> +-----------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`type nullability specifier` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`is a Clang extension`|
> ++----------------------------------------------------------
> -----------------------------------------------------------------------+
> +
> +
> +-Wnullable-to-nonnull-conversion
> +--------------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`implicit conversion from nullable
> pointer` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to non-nullable pointer
> type` |nbsp| :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------------------------+
> +
> +
> +-Wobjc-autosynthesis-property-ivar-name-match
> +---------------------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----+-------------------------+----------------------------
> ------------------------------------------------------------
> -----------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`autosynthesized property` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`will use` |nbsp|
> |+-----------------------+| |nbsp| :diagtext:`instance variable` |nbsp|
> :placeholder:`C`:diagtext:`, not existing instance variable` |nbsp|
> :placeholder:`D`|
> +|
>                                                    ||
>  ||
>                                                          |
> +|
>
>  |+-----------------------+|
>
>      |
> +|
>
>  ||:diagtext:`synthesized`||
>
>      |
> +|
>
>  |+-----------------------+|
>
>      |
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----+-------------------------+----------------------------
> ------------------------------------------------------------
> -----------------------------------------+
> +
> +
> +-Wobjc-circular-container
> +-------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`adding
> '`:placeholder:`A`:diagtext:`' to '`:placeholder:`B`:diagtext:`' might
> cause circular dependency in container`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------+
> +
> +
> +-Wobjc-cocoa-api
> +----------------
> +Synonym for `-Wobjc-redundant-api-use`_.
> +
> +
> +-Wobjc-designated-initializers
> +------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`designated initializer missing a
> 'super' call to a designated initializer of the super class`|
> ++----------------------------------------------------------
> -------------------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`designated initializer invoked a
> non-designated initializer`|
> ++----------------------------------------------------------
> ----------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`designated initializer should only
> invoke a designated initializer on 'super'`|
> ++----------------------------------------------------------
> ----------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`method override for the designated
> initializer of the superclass` |nbsp| :placeholder:`A` |nbsp|
> :diagtext:`not found`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------------+
> +
> ++----------------------------------------------------------
> -------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`convenience initializer missing a
> 'self' call to another initializer`|
> ++----------------------------------------------------------
> -------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`convenience initializer should not
> invoke an initializer on 'super'`|
> ++----------------------------------------------------------
> ------------------------------------------------+
> +
> +
> +-Wobjc-forward-class-redefinition
> +---------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`redefinition of forward class`
> |nbsp| :placeholder:`A` |nbsp| :diagtext:`of a typedef name of an object
> type is ignored`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------+
> +
> +
> +-Wobjc-interface-ivars
> +----------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`declaration of instance variables
> in the interface is deprecated`|
> ++----------------------------------------------------------
> ---------------------------------------------+
> +
> +
> +-Wobjc-literal-compare
> +----------------------
> +This diagnostic is enabled by default.
> +
> +Also controls `-Wobjc-string-compare`_.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------+----------------------------------+---------------
> ---------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`direct comparison of` |nbsp|
> |+--------------------------------+| |nbsp| :diagtext:`has undefined
> behavior`|
> +|
>  ||:diagtext:`an array literal`    ||
>     |
> +|
>  |+--------------------------------+|
>       |
> +|
>  ||:diagtext:`a dictionary literal`||
>     |
> +|
>  |+--------------------------------+|
>       |
> +|
>  ||:diagtext:`a numeric literal`   ||
>     |
> +|
>  |+--------------------------------+|
>       |
> +|
>  ||:diagtext:`a boxed expression`  ||
>     |
> +|
>  |+--------------------------------+|
>       |
> +|                                                                   ||
>                             ||                                          |
> +|
>  |+--------------------------------+|
>       |
> ++----------------------------------------------------------
> ---------+----------------------------------+---------------
> ---------------------------+
> +
> +
> +-Wobjc-literal-conversion
> +-------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`implicit boolean conversion of
> Objective-C object literal always evaluates to true`|
> ++----------------------------------------------------------
> ---------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------+-----------------------------------+------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`object of type` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`is not compatible with` |nbsp|
> |+---------------------------------+| |nbsp| :placeholder:`C`|
> +|
>                                                        ||:diagtext:`array
> element type`   ||                        |
> +|
>
>  |+---------------------------------+|                        |
> +|
>
>  ||:diagtext:`dictionary key type`  ||                        |
> +|
>
>  |+---------------------------------+|                        |
> +|
>
>  ||:diagtext:`dictionary value type`||                        |
> +|
>
>  |+---------------------------------+|                        |
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------+-----------------------------------+------------------------+
> +
> +
> +-Wobjc-macro-redefinition
> +-------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`ignoring redefinition of
> Objective-C qualifier macro`|
> ++----------------------------------------------------------
> ---------------------------------+
> +
> +
> +-Wobjc-method-access
> +--------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------+
> +|:warning:`warning:` |nbsp| :diagtext:`class method` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`not found (return type defaults to
> 'id')`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`class method` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`not found (return type defaults to
> 'id'); did you mean` |nbsp| :placeholder:`C`:diagtext:`?`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`instance method` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`not found (return type defaults to
> 'id')`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`instance method` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`not found (return type defaults to
> 'id'); did you mean` |nbsp| :placeholder:`C`:diagtext:`?`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`instance method` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`found instead of class method` |nbsp|
> :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`instance method` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`is being used on 'Class' which is not in
> the root class`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------+
> +
> +
> +-Wobjc-missing-property-synthesis
> +---------------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`auto property synthesis is
> synthesizing property not explicitly synthesized`|
> ++----------------------------------------------------------
> --------------------------------------------------------+
> +
> +
> +-Wobjc-missing-super-calls
> +--------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`method possibly missing a \[super`
> |nbsp| :placeholder:`A`:diagtext:`\] call`|
> ++----------------------------------------------------------
> ---------------------------------------------------------+
> +
> +
> +-Wobjc-multiple-method-names
> +----------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`multiple methods named` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`found`|
> ++----------------------------------------------------------
> ----------------------------------------------------+
> +
> +
> +-Wobjc-noncopy-retain-block-property
> +------------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`retain'ed block property does not
> copy the block - use copy attribute instead`|
> ++----------------------------------------------------------
> ----------------------------------------------------------+
> +
> +
> +-Wobjc-nonunified-exceptions
> +----------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`cannot catch an exception thrown
> with @throw in C++ in the non-unified exception model`|
> ++----------------------------------------------------------
> -------------------------------------------------------------------+
> +
> +
> +-Wobjc-property-implementation
> +------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`class property` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`requires method` |nbsp| :placeholder:`B`
> |nbsp| :diagtext:`to be defined - use @dynamic or provide a method
> implementation in this class implementation`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`class property` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`requires method` |nbsp| :placeholder:`B`
> |nbsp| :diagtext:`to be defined - use @dynamic or provide a method
> implementation in this category`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -----------------+
> +|:warning:`warning:` |nbsp| :diagtext:`property` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`requires method` |nbsp| :placeholder:`B` |nbsp|
> :diagtext:`to be defined - use @synthesize, @dynamic or provide a method
> implementation in this class implementation`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -----------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`property` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`requires method` |nbsp| :placeholder:`B` |nbsp|
> :diagtext:`to be defined - use @dynamic or provide a method implementation
> in this category`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------------------+
> +
> +
> +-Wobjc-property-implicit-mismatch
> +---------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------+
> +|:warning:`warning:` |nbsp| :diagtext:`primary property declaration is
> implicitly strong while redeclaration in class extension is weak`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------+
> +
> +
> +-Wobjc-property-matches-cocoa-ownership-rule
> +--------------------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`property follows Cocoa naming
> convention for returning 'owned' objects`|
> ++----------------------------------------------------------
> ---------------------------------------------------+
> +
> +
> +-Wobjc-property-no-attribute
> +----------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`default property attribute
> 'assign' not appropriate for non-GC object`|
> ++----------------------------------------------------------
> --------------------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`no 'assign', 'retain', or 'copy'
> attribute is specified - 'assign' is assumed`|
> ++----------------------------------------------------------
> ----------------------------------------------------------+
> +
> +
> +-Wobjc-property-synthesis
> +-------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`auto property synthesis will not
> synthesize property` |nbsp| :placeholder:`A`:diagtext:`; it will be
> implemented by its superclass, use @dynamic to acknowledge intention`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`auto property synthesis will not
> synthesize property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`because it
> is 'readwrite' but it will be synthesized 'readonly' via another property`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`auto property synthesis will not
> synthesize property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`because it
> cannot share an ivar with another synthesized property`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ----------------------+
> +
> +
> +-Wobjc-protocol-method-implementation
> +-------------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`category is implementing a method
> which will also be implemented by its primary class`|
> ++----------------------------------------------------------
> ------------------------------------------------------------------+
> +
> +
> +-Wobjc-protocol-property-synthesis
> +----------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`auto property synthesis will not
> synthesize property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`declared in
> protocol` |nbsp| :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------------------------------+
> +
> +
> +-Wobjc-protocol-qualifiers
> +--------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`parameterized class` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`already conforms to the protocols
> listed; did you forget a '\*'?`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------+
> +
> +
> +-Wobjc-readonly-with-setter-property
> +------------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`setter cannot be specified for a
> readonly property`|
> ++----------------------------------------------------------
> -------------------------------+
> +
> +
> +-Wobjc-redundant-api-use
> +------------------------
> +Synonym for `-Wobjc-redundant-literal-use`_.
> +
> +
> +-Wobjc-redundant-literal-use
> +----------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`using` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`with a literal is redundant`|
> ++----------------------------------------------------------
> ---------------------------------------------------------+
> +
> +
> +-Wobjc-root-class
> +-----------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`class` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`defined without specifying a base class`|
> ++----------------------------------------------------------
> ---------------------------------------------------------------------+
> +
> +
> +-Wobjc-string-compare
> +---------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`direct comparison of a string
> literal has undefined behavior`|
> ++----------------------------------------------------------
> -----------------------------------------+
> +
> +
> +-Wobjc-string-concatenation
> +---------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`concatenated NSString literal for
> an NSArray expression - possibly missing a comma`|
> ++----------------------------------------------------------
> ---------------------------------------------------------------+
> +
> +
> +-Wodr
> +-----
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`type` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`has incompatible definitions in different translation
> units`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------+
> +
> +
> +-Wold-style-cast
> +----------------
> +**Diagnostic text:**
> +
> ++------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`use of old-style cast`|
> ++------------------------------------------------------------+
> +
> +
> +-Wold-style-definition
> +----------------------
> +This diagnostic flag exists for GCC compatibility, and has no effect in
> Clang.
> +
> +-Wopencl-unsupported-rgba
> +-------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`vector component name
> '`:placeholder:`A`:diagtext:`' is an OpenCL version 2.2 feature`|
> ++----------------------------------------------------------
> ------------------------------------------------------------------+
> +
> +
> +-Wopenmp-clauses
> +----------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`aligned clause will be ignored
> because the requested alignment is not a power of 2`|
> ++----------------------------------------------------------
> ---------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> -----------------------+------------------------------------
> ---------------+-------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`zero linear step
> (`:placeholder:`A` |nbsp| |+----------------------------
> ---------------------+|:diagtext:`should probably be const)`|
> +|
>          ||                                                 ||
>                        |
> +|
>          |+-------------------------------------------------+|
>                          |
> +|
>          ||:diagtext:`and other variables in clause` |nbsp| ||
>                        |
> +|
>          |+-------------------------------------------------+|
>                          |
> ++----------------------------------------------------------
> -----------------------+------------------------------------
> ---------------+-------------------------------------+
> +
> +
> +-Wopenmp-loop-form
> +------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`initialization clause of OpenMP
> for loop is not in canonical form ('var = init' or 'T var = init')`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------+
> +
> ++----------------------------------------------------------
> -------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`OpenMP loop iteration variable
> cannot have more than 64 bits size and will be narrowed`|
> ++----------------------------------------------------------
> -------------------------------------------------------------------+
> +
> +
> +-Wopenmp-target
> +---------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`declaration is not declared in any
> declare target region`|
> ++----------------------------------------------------------
> -------------------------------------+
> +
> +
> +-Woption-ignored
> +----------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`option
> '`:placeholder:`A`:diagtext:`' was ignored by the PS4 toolchain, using
> '-fPIC'`|
> ++----------------------------------------------------------
> ------------------------------------------------------------------+
> +
> +
> +-Wout-of-line-declaration
> +-------------------------
> +This diagnostic is an error by default, but the flag ``-Wno-out-of-line-declaration``
> can be used to disable the error.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------------------------+
> +|:error:`error:` |nbsp| :diagtext:`out-of-line declaration of a member
> must be a definition`|
> ++----------------------------------------------------------
> ---------------------------------+
> +
> +
> +-Wover-aligned
> +--------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`type` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`requires` |nbsp| :placeholder:`B` |nbsp| :diagtext:`bytes
> of alignment and the default allocator only guarantees` |nbsp|
> :placeholder:`C` |nbsp| :diagtext:`bytes`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------------------------------------+
> +
> +
> +-Woverflow
> +----------
> +This diagnostic flag exists for GCC compatibility, and has no effect in
> Clang.
> +
> +-Woverlength-strings
> +--------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -------+---------------------+------------------------------
> -----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`string literal of length` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`exceeds maximum length` |nbsp|
> :placeholder:`B` |nbsp| :diagtext:`that` |nbsp| |+-------------------+|
> |nbsp| :diagtext:`compilers are required to support`|
> +|
>
>                                      ||:diagtext:`C90`    ||
>                                      |
> +|
>
>                                      |+-------------------+|
>                                      |
> +|
>
>                                      ||:diagtext:`ISO C99`||
>                                      |
> +|
>
>                                      |+-------------------+|
>                                      |
> +|
>
>                                      ||:diagtext:`C++`    ||
>                                      |
> +|
>
>                                      |+-------------------+|
>                                      |
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -------+---------------------+------------------------------
> -----------------------+
> +
> +
> +-Woverloaded-shift-op-parentheses
> +---------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------+----------------+----------------------------------
> --------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`overloaded operator` |nbsp|
> |+--------------+| |nbsp| :diagtext:`has higher precedence than comparison
> operator`|
> +|
> ||:diagtext:`>>`||
>         |
> +|
> |+--------------+|
>         |
> +|
> ||:diagtext:`<<`||
>         |
> +|
> |+--------------+|
>         |
> ++----------------------------------------------------------
> --------+----------------+----------------------------------
> --------------------------------+
> +
> +
> +-Woverloaded-virtual
> +--------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------------------+-----------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`hides
> overloaded virtual` |nbsp| |+---------------------+|
> +|
>                        ||:diagtext:`function` ||
> +|
>                        |+---------------------+|
> +|
>                        ||:diagtext:`functions`||
> +|
>                        |+---------------------+|
> ++----------------------------------------------------------
> -------------------------------------+-----------------------+
> +
> +
> +-Woverride-module
> +-----------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`overriding the module target
> triple with` |nbsp| :placeholder:`A`|
> ++----------------------------------------------------------
> ---------------------------------------------+
> +
> +
> +-Woverriding-method-mismatch
> +----------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`conflicting distributed object
> modifiers on parameter type in declaration of` |nbsp| :placeholder:`A`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------+
> +
> ++----------------------------------------------------------
> --------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`conflicting parameter types in
> declaration of` |nbsp| :placeholder:`A`|
> ++----------------------------------------------------------
> --------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`conflicting distributed object
> modifiers on return type in declaration of` |nbsp| :placeholder:`A`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`conflicting return type in
> declaration of` |nbsp| :placeholder:`A`|
> ++----------------------------------------------------------
> ----------------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`conflicting variadic declaration
> of method and its implementation`|
> ++----------------------------------------------------------
> ----------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`conflicting parameter types in
> declaration of` |nbsp| :placeholder:`A`:diagtext:`:` |nbsp|
> :placeholder:`B` |nbsp| :diagtext:`vs` |nbsp| :placeholder:`C`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`conflicting return type in
> declaration of` |nbsp| :placeholder:`A`:diagtext:`:` |nbsp|
> :placeholder:`B` |nbsp| :diagtext:`vs` |nbsp| :placeholder:`C`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------------------------------------------+
> +
> +
> +-Woverriding-t-option
> +---------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`overriding
> '`:placeholder:`A`:diagtext:`' option with '`:placeholder:`B`:diagtext:`'
> `|
> ++----------------------------------------------------------
> -----------------------------------------------------------------+
> +
> +
> +-Wpacked
> +--------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`packed attribute is unnecessary
> for` |nbsp| :placeholder:`A`|
> ++----------------------------------------------------------
> ----------------------------------------+
> +
> +
> +-Wpadded
> +--------
> +**Diagnostic text:**
> +
> ++------------------------------------------------------+---
> --------------------+---------------------------------------
> -----------------------------------------+------------------
> +---------------+------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`padding` |nbsp|
> |+---------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`with`
> |nbsp| :placeholder:`C` |nbsp| |+----------------+|+-------------+|
> |nbsp| :diagtext:`to align anonymous bit-field`|
> +|
> ||:diagtext:`struct`   ||
>                               ||:diagtext:`byte`|||             ||
>                                       |
> +|
> |+---------------------+|
>                               |+----------------+|+-------------+|
>                                         |
> +|
> ||:diagtext:`interface`||
>                               ||:diagtext:`bit` |||:diagtext:`s`||
>                                       |
> +|
> |+---------------------+|
>                               |+----------------+|+-------------+|
>                                         |
> +|
> ||:diagtext:`class`    ||
>                               |                  |               |
>                                       |
> +|
> |+---------------------+|
>                               |                  |               |
>                                       |
> ++------------------------------------------------------+---
> --------------------+---------------------------------------
> -----------------------------------------+------------------
> +---------------+------------------------------------------------+
> +
> ++------------------------------------------------------+---
> --------------------+---------------------------------------
> -----------------------------------------+------------------
> +---------------+----------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`padding` |nbsp|
> |+---------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`with`
> |nbsp| :placeholder:`C` |nbsp| |+----------------+|+-------------+|
> |nbsp| :diagtext:`to align` |nbsp| :placeholder:`E`|
> +|
> ||:diagtext:`struct`   ||
>                               ||:diagtext:`byte`|||             ||
>                                           |
> +|
> |+---------------------+|
>                               |+----------------+|+-------------+|
>                                             |
> +|
> ||:diagtext:`interface`||
>                               ||:diagtext:`bit` |||:diagtext:`s`||
>                                           |
> +|
> |+---------------------+|
>                               |+----------------+|+-------------+|
>                                             |
> +|
> ||:diagtext:`class`    ||
>                               |                  |               |
>                                           |
> +|
> |+---------------------+|
>                               |                  |               |
>                                           |
> ++------------------------------------------------------+---
> --------------------+---------------------------------------
> -----------------------------------------+------------------
> +---------------+----------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------+------------------+---------------+--------
> ---------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`padding size of` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`with` |nbsp| :placeholder:`B` |nbsp|
> |+----------------+|+-------------+| |nbsp| :diagtext:`to alignment
> boundary`|
> +|
>
> ||:diagtext:`byte`|||             ||
>  |
> +|
>
> |+----------------+|+-------------+|
>    |
> +|
>
> ||:diagtext:`bit` |||:diagtext:`s`||
>  |
> +|
>
> |+----------------+|+-------------+|
>    |
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------+------------------+---------------+--------
> ---------------------------------+
> +
> +
> +-Wparentheses
> +-------------
> +This diagnostic is enabled by default.
> +
> +Also controls `-Wlogical-op-parentheses`_, `-Wlogical-not-parentheses`_,
> `-Wbitwise-op-parentheses`_, `-Wshift-op-parentheses`_,
> `-Woverloaded-shift-op-parentheses`_, `-Wparentheses-equality`_,
> `-Wdangling-else`_.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`using the result of an assignment
> as a condition without parentheses`|
> ++----------------------------------------------------------
> -------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> --------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has lower
> precedence than` |nbsp| :placeholder:`B`:diagtext:`;` |nbsp|
> :placeholder:`B` |nbsp| :diagtext:`will be evaluated first`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> --------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`operator '?:' has lower precedence
> than '`:placeholder:`A`:diagtext:`'; '`:placeholder:`A`:diagtext:`' will
> be evaluated first`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------------------+
> +
> +
> +-Wparentheses-equality
> +----------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`equality comparison with
> extraneous parentheses`|
> ++----------------------------------------------------------
> ----------------------------+
> +
> +
> +-Wpartial-availability
> +----------------------
> +Synonym for `-Wunguarded-availability`_.
> +
> +
> +-Rpass
> +------
> +**Diagnostic text:**
> +
> +The text of this diagnostic is not controlled by Clang.
> +
> +
> +-Rpass-analysis
> +---------------
> +**Diagnostic text:**
> +
> +The text of this diagnostic is not controlled by Clang.
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------+
> +|:remark:`remark:` |nbsp| :placeholder:`A`:diagtext:`; allow reordering
> by specifying '#pragma clang loop vectorize(enable)' before the loop. If
> the arrays will always be independent specify '#pragma clang loop
> vectorize(assume\_safety)' before the loop or provide the
> '\_\_restrict\_\_' qualifier with the independent array arguments.
> Erroneous results will occur if these options are incorrectly applied!`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------------------------------------------+
> +|:remark:`remark:` |nbsp| :placeholder:`A`:diagtext:`; allow reordering
> by specifying '#pragma clang loop vectorize(enable)' before the loop or by
> providing the compiler option '-ffast-math'.`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------------------------------------------+
> +
> +
> +-Wpass-failed
> +-------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> +The text of this diagnostic is not controlled by Clang.
> +
> +
> +-Rpass-missed
> +-------------
> +**Diagnostic text:**
> +
> +The text of this diagnostic is not controlled by Clang.
> +
> +
> +-Wpch-date-time
> +---------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++---------------------------+------------------------------
> --+-----------------------------------------------------+
> +|:warning:`warning:` |nbsp| |+------------------------------+| |nbsp|
> :diagtext:`uses \_\_DATE\_\_ or \_\_TIME\_\_`|
> +|                           ||:diagtext:`precompiled header`||
>                                          |
> +|                           |+------------------------------+|
>                                            |
> +|                           ||:diagtext:`module`            ||
>                                          |
> +|                           |+------------------------------+|
>                                            |
> ++---------------------------+------------------------------
> --+-----------------------------------------------------+
> +
> +
> +-Wpedantic
> +----------
> +Also controls `-Wgnu-union-cast`_, `-Wdollar-in-identifier-extension`_,
> `-Wgnu-zero-line-directive`_, `-Wc11-extensions`_,
> `-Wgnu-flexible-array-union-member`_, `-Wvariadic-macros`_,
> `-Wempty-translation-unit`_, `-Wgnu-include-next`_,
> `-Wembedded-directive`_, `-Wgnu-statement-expression`_,
> `-Wimport-preprocessor-directive-pedantic`_, `-Wfour-char-constants`_,
> `-Wgnu-conditional-omitted-operand`_, `-Wgnu-redeclared-enum`_,
> `-Wmicrosoft-enum-forward-reference`_, `-Wc++14-binary-literal`_,
> `-Wgnu-empty-initializer`_, `-Wmicrosoft-charize`_, `-Wdeclaration-after-statement`_,
> `-Woverlength-strings`_, `-Wcomplex-component-init`_,
> `-Wmicrosoft-end-of-file`_, `-Wgnu-folding-constant`_,
> `-Wmicrosoft-fixed-enum`_, `-Wkeyword-macro`_, `-Wlong-long`_,
> `-Wgnu-compound-literal-initializer`_, `-Wc++11-extra-semi`_,
> `-Wformat-pedantic`_, `-Wnullability-extension`_, `-Wgnu-flexible-array-initializer`_,
> `-Wmicrosoft-flexible-array`_, `-Wmicrosoft-cpp-macro`_,
> `-Wgnu-case-range`_, `-Wvla-extension`_,
>  `-Wgnu-zero-variadic-macro-arguments`_, `-Wlanguage-extension-token`_,
> `-Wgnu-empty-struct`_, `-Wgnu-auto-type`_, `-Wzero-length-array`_,
> `-Wgnu-complex-integer`_, `-Wmicrosoft-redeclare-static`_,
> `-Wc++11-long-long`_, `-Wretained-language-linkage`_,
> `-Wgnu-imaginary-constant`_, `-Wgnu-anonymous-struct`_,
> `-Wflexible-array-extensions`_, `-Wgnu-binary-literal`_,
> `-Wgnu-label-as-value`_, `-Wnested-anon-types`_,
> `-Wmicrosoft-comment-paste`_, `-Wextended-offsetof`_.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------+-----
> ------------------+---------------------------+-------------
> --+----------------------+-------------------------+--------
> -------------------------+---------------+------------------
> ------+---------------------------------------------------+-
> -------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`arithmetic
> on`|+---------------------+| |nbsp| :diagtext:`pointer`|+-------------+|
> |nbsp| :diagtext:`to`|+-----------------------+| |nbsp|
> :diagtext:`function type`|+-------------+| |nbsp|
> :placeholder:`B`|+-------------------------------------------------+|
> |nbsp| :diagtext:`is a GNU extension`|
> +|                                                    || |nbsp|
> :diagtext:`a`||                           ||             ||
>       || |nbsp| :diagtext:`the`||                                 ||
>      ||                        ||
>        ||                                      |
> +|
> |+---------------------+|                           |+-------------+|
>                 |+-----------------------+|
>  |+-------------+|                        |+-------------------------------------------------+|
>                                     |
> +|                                                    ||
>    ||                           ||:diagtext:`s`||                      ||
>                      ||                                 ||:diagtext:`s`||
>                       ||+-----------------------------------------------+||
>                                     |
> +|
> |+---------------------+|                           |+-------------+|
>                 |+-----------------------+|
>  |+-------------+|                        ||| |nbsp| :diagtext:`and` |nbsp|
> :placeholder:`D`|||                                      |
> +|                                                    |
>    |                           |               |                      |
>                      |                                 |               |
>                     ||+-----------------------------------------------+||
>                                     |
> +|                                                    |
>    |                           |               |                      |
>                      |                                 |               |
>                     |+-------------------------------------------------+|
>                                     |
> ++----------------------------------------------------+-----
> ------------------+---------------------------+-------------
> --+----------------------+-------------------------+--------
> -------------------------+---------------+------------------
> ------+---------------------------------------------------+-
> -------------------------------------+
> +
> ++----------------------------------------------------------
> -----+-----------------------+----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`invalid application of
> '`|+---------------------+|:diagtext:`' to a void type`|
> +|
>  ||:diagtext:`sizeof`   ||                            |
> +|
>  |+---------------------+|                            |
> +|
>  ||:diagtext:`alignof`  ||                            |
> +|
>  |+---------------------+|                            |
> +|
>  ||:diagtext:`vec\_step`||                            |
> +|
>  |+---------------------+|                            |
> ++----------------------------------------------------------
> -----+-----------------------+----------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`\_\_VA\_ARGS\_\_ can only appear
> in the expansion of a C99 variadic macro`|
> ++----------------------------------------------------------
> ------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`ordered comparison between pointer
> and zero (`:placeholder:`A` |nbsp| :diagtext:`and` |nbsp|
> :placeholder:`B`:diagtext:`) is an extension`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------------------------+
> +
> ++----------------------------------------------------------
> -----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`ISO C forbids forward references
> to 'enum' types`|
> ++----------------------------------------------------------
> -----------------------------+
> +
> ++----------------------------------------------------------
> -----------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`use of the` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`attribute is a C++1z extension`|
> ++----------------------------------------------------------
> -----------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> --------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`use of non-standard escape
> character '\\`:placeholder:`A`:diagtext:`'`|
> ++----------------------------------------------------------
> --------------------------------------------------+
> +
> ++---------------------------+------------------------------
> ----+------------------------------+-----------------------+
> ----------------------------+
> +|:warning:`warning:` |nbsp| |+--------------------------------+|:diagtext:`array
> size` |nbsp| |+---------------------+|:diagtext:`is a C99 feature`|
> +|                           ||:diagtext:`qualifier in` |nbsp| ||
>                     ||                     ||                            |
> +|                           |+--------------------------------+|
>                       |+---------------------+|                            |
> +|                           ||:diagtext:`static` |nbsp|       ||
>                     ||                     ||                            |
> +|                           |+--------------------------------+|
>                       |+---------------------+|                            |
> +|                           ||                                ||
>                     ||:diagtext:`'\[\*\] '`||                            |
> +|                           |+--------------------------------+|
>                       |+---------------------+|                            |
> ++---------------------------+------------------------------
> ----+------------------------------+-----------------------+
> ----------------------------+
> +
> ++----------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`no newline at end of file`|
> ++----------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ---------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`macro expansion producing
> 'defined' has undefined behavior`|
> ++----------------------------------------------------------
> ---------------------------------------+
> +
> ++----------------------------------------------------------
> --------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`exception specification of '...'
> is a Microsoft extension`|
> ++----------------------------------------------------------
> --------------------------------------+
> +
> ++----------------------------------------------------------
> ---------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`variable declaration in for loop
> is a C99-specific feature`|
> ++----------------------------------------------------------
> ---------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------+-------------------------+----
> ------------------------------------------------------------
> ------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`implicit conversion from array
> size expression of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to`
> |nbsp| |+-----------------------+| |nbsp| :diagtext:`type` |nbsp|
> :placeholder:`C` |nbsp| :diagtext:`is a C++11 extension`|
> +|
>
>  ||:diagtext:`integral`   ||
>                                         |
> +|
>
>  |+-----------------------+|
>                                         |
> +|
>
>  ||:diagtext:`enumeration`||
>                                         |
> +|
>
>  |+-----------------------+|
>                                         |
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------+-------------------------+----
> ------------------------------------------------------------
> ------------------------+
> +
> ++----------------------------------------------------------
> ---------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`cast between pointer-to-function
> and pointer-to-object is an extension`|
> ++----------------------------------------------------------
> ---------------------------------------------------+
> +
> ++----------------------------------------------------------
> --------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'enable\_if' is a clang extension`|
> ++----------------------------------------------------------
> --------------+
> +
> ++----------------------------------------------------------
> -----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`hexadecimal floating constants are
> a C99 feature`|
> ++----------------------------------------------------------
> -----------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------+
> +|:warning:`warning:` |nbsp| :diagtext:`C99 forbids casting nonscalar
> type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to the same type`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------+
> +
> ++----------------------------------------------------------
> ---------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`ISO C forbids taking the address
> of an expression of type 'void'`|
> ++----------------------------------------------------------
> ---------------------------------------------+
> +
> ++---------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`#ident is a language extension`|
> ++---------------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> -------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`initializer for aggregate is not a
> compile-time constant`|
> ++----------------------------------------------------------
> -------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`'
> cannot be signed or unsigned`|
> ++----------------------------------------------------------
> ----------------------------------------+
> +
> ++----------------------------------------------------------
> ---------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`ISO C90 does not allow
> subscripting non-lvalue array`|
> ++----------------------------------------------------------
> ---------------------------------+
> +
> ++----------------------------------------------------------
> ---------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`flexible array members are a C99
> feature`|
> ++----------------------------------------------------------
> ---------------------+
> +
> ++-----------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`use of GNU array range extension`|
> ++-----------------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> --------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`empty macro arguments are a C99
> feature`|
> ++----------------------------------------------------------
> --------------------+
> +
> ++----------------------------------------------------------
> ----------+-----------------------------------------+-------
> ------------------------------------------------------------
> -----------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`no viable constructor` |nbsp|
> |+---------------------------------------+| |nbsp| :diagtext:`of type`
> |nbsp| :placeholder:`B`:diagtext:`; C++98 requires a copy constructor when
> binding a reference to a temporary`|
> +|
> ||:diagtext:`copying variable`           ||
>
>                               |
> +|
> |+---------------------------------------+|
>
>                                 |
> +|
> ||:diagtext:`copying parameter`          ||
>
>                               |
> +|
> |+---------------------------------------+|
>
>                                 |
> +|
> ||:diagtext:`returning object`           ||
>
>                               |
> +|
> |+---------------------------------------+|
>
>                                 |
> +|
> ||:diagtext:`throwing object`            ||
>
>                               |
> +|
> |+---------------------------------------+|
>
>                                 |
> +|
> ||:diagtext:`copying member subobject`   ||
>
>                               |
> +|
> |+---------------------------------------+|
>
>                                 |
> +|
> ||:diagtext:`copying array element`      ||
>
>                               |
> +|
> |+---------------------------------------+|
>
>                                 |
> +|
> ||:diagtext:`allocating object`          ||
>
>                               |
> +|
> |+---------------------------------------+|
>
>                                 |
> +|
> ||:diagtext:`copying temporary`          ||
>
>                               |
> +|
> |+---------------------------------------+|
>
>                                 |
> +|
> ||:diagtext:`initializing base subobject`||
>
>                               |
> +|
> |+---------------------------------------+|
>
>                                 |
> +|
> ||:diagtext:`initializing vector element`||
>
>                               |
> +|
> |+---------------------------------------+|
>
>                                 |
> +|
> ||:diagtext:`capturing value`            ||
>
>                               |
> +|
> |+---------------------------------------+|
>
>                                 |
> ++----------------------------------------------------------
> ----------+-----------------------------------------+-------
> ------------------------------------------------------------
> -----------------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`ISO C does not support '~' for
> complex conjugation of` |nbsp| :placeholder:`A`|
> ++----------------------------------------------------------
> ----------------------------------------------------------+
> +
> ++----------------------------------------------------------
> -------------------+--------------------+-------------------
> --------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`types declared in an anonymous`
> |nbsp| |+------------------+| |nbsp| :diagtext:`are a Microsoft extension`|
> +|
>      ||:diagtext:`struct`||                                             |
> +|
>      |+------------------+|                                             |
> +|
>      ||:diagtext:`union` ||                                             |
> +|
>      |+------------------+|                                             |
> ++----------------------------------------------------------
> -------------------+--------------------+-------------------
> --------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------+
> +|:warning:`warning:` |nbsp| :diagtext:`parameter` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`was not declared, defaulting to type 'int'`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------+
> +
> ++----------------------------------------------------------
> ----------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`ISO C++ does not allow 'main' to
> be used by a program`|
> ++----------------------------------------------------------
> ----------------------------------+
> +
> ++----------------------------------------------------------
> -------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`extern templates are a C++11
> extension`|
> ++----------------------------------------------------------
> -------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`qualifier in explicit
> instantiation of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`requires a
> template-id (a typedef is not permitted)`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------+
> +
> ++----------------------------------------------------+-----
> ------------------+---------------------------+-------------
> --+----------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`arithmetic
> on`|+---------------------+| |nbsp| :diagtext:`pointer`|+-------------+|
> |nbsp| :diagtext:`to void is a GNU extension`|
> +|                                                    || |nbsp|
> :diagtext:`a`||                           ||             ||
>                               |
> +|
> |+---------------------+|                           |+-------------+|
>                                         |
> +|                                                    ||
>    ||                           ||:diagtext:`s`||
>                     |
> +|
> |+---------------------+|                           |+-------------+|
>                                         |
> ++----------------------------------------------------+-----
> ------------------+---------------------------+-------------
> --+----------------------------------------------+
> +
> ++-----------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`comma operator in operand of #if`|
> ++-----------------------------------------------------------------------+
> +
> ++-----------------------------------------------------+----
> ------------------+-----------------------------------------
> ------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`static` |nbsp|
> |+--------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`is used
> in an inline function with external linkage`|
> +|
>  ||:diagtext:`function`||
>                                              |
> +|
>  |+--------------------+|
>                                              |
> +|
>  ||:diagtext:`variable`||
>                                              |
> +|
>  |+--------------------+|
>                                              |
> ++-----------------------------------------------------+----
> ------------------+-----------------------------------------
> ------------------------------------------------------+
> +
> ++--------------------------------------------------------+-
> -------------------+----------------------------------------
> --------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`anonymous` |nbsp|
> |+------------------+| |nbsp| :diagtext:`cannot be
> '`:placeholder:`B`:diagtext:`'`|
> +|
> ||:diagtext:`struct`||
>       |
> +|
> |+------------------+|
>       |
> +|
> ||:diagtext:`union` ||
>       |
> +|
> |+------------------+|
>       |
> ++--------------------------------------------------------+-
> -------------------+----------------------------------------
> --------------------+
> +
> ++----------------------------------------------------------
> -------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`ISO C does not support '++'/'--'
> on complex integer type` |nbsp| :placeholder:`A`|
> ++----------------------------------------------------------
> -------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`commas at the end of enumerator
> lists are a C++11 extension`|
> ++----------------------------------------------------------
> ----------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------+-------------------+-------------+
> +|:warning:`warning:` |nbsp| :diagtext:`ISO C restricts enumerator values
> to range of 'int' (`:placeholder:`A` |nbsp| :diagtext:`is too` |nbsp|
> |+-----------------+|:diagtext:`)`|
> +|
>
> ||:diagtext:`small`||             |
> +|
>
> |+-----------------+|             |
> +|
>
> ||:diagtext:`large`||             |
> +|
>
> |+-----------------+|             |
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------+-------------------+-------------+
> +
> ++----------------------------------------------------------
> -----------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`use of the` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`attribute is a C++14 extension`|
> ++----------------------------------------------------------
> -----------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`hexadecimal floating literals are
> a C++1z feature`|
> ++----------------------------------------------------------
> ------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`kernel function` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`is a member function; this may not be
> accepted by nvcc`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`type-less parameter names in
> function declaration`|
> ++----------------------------------------------------------
> ------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`C requires #line number to be less
> than` |nbsp| :placeholder:`A`:diagtext:`, allowed as extension`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------+
> +
> ++---------------------------------------------------+------
> ----------------+-------------------------------------------
> ----------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`void` |nbsp|
> |+--------------------+| |nbsp| :placeholder:`A` |nbsp| :diagtext:`should
> not return void expression`|
> +|
>  ||:diagtext:`function`||
>                            |
> +|
>  |+--------------------+|
>                            |
> +|                                                   ||:diagtext:`method`
> ||
>    |
> +|
>  |+--------------------+|
>                            |
> +|                                                   ||:diagtext:`block`
>  ||
>      |
> +|
>  |+--------------------+|
>                            |
> ++---------------------------------------------------+------
> ----------------+-------------------------------------------
> ----------------------------------+
> +
> ++----------------------------------------------------------
> --------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`complex numbers are an extension
> in a freestanding C99 implementation`|
> ++----------------------------------------------------------
> --------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`equality comparison between
> function pointer and void pointer (`:placeholder:`A` |nbsp| :diagtext:`and`
> |nbsp| :placeholder:`B`:diagtext:`)`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> -------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'\_\_thread' before
> '`:placeholder:`A`:diagtext:`'`|
> ++----------------------------------------------------------
> -------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`C99 forbids conditional
> expressions with only one void side`|
> ++----------------------------------------------------------
> ----------------------------------------+
> +
> ++------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`multi-line // comment`|
> ++------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ------------+-----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`C++98 requires an accessible copy
> constructor for class` |nbsp| :placeholder:`C` |nbsp| :diagtext:`when
> binding a reference to a temporary; was` |nbsp| |+---------------------+|
> +|
>
>                                           ||:diagtext:`private`  ||
> +|
>
>                                           |+---------------------+|
> +|
>
>                                           ||:diagtext:`protected`||
> +|
>
>                                           |+---------------------+|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ------------+-----------------------+
> +
> ++---------------------------+------------------------------
> ----------------------------------+-------------------------
> ---------------------------------------------+
> +|:warning:`warning:` |nbsp| |+----------------------------
> ----------------------------------+| |nbsp| :diagtext:`converts between
> void pointer and function pointer`|
> +|                           ||:diagtext:`assigning to different types`
>                   ||
>               |
> +|                           |+----------------------------
> ----------------------------------+|
>                                 |
> +|                           ||:diagtext:`passing to parameter of
> different type`            ||
>                         |
> +|                           |+----------------------------
> ----------------------------------+|
>                                 |
> +|                           ||:diagtext:`returning from function with
> different return type`||
>                   |
> +|                           |+----------------------------
> ----------------------------------+|
>                                 |
> +|                           ||:diagtext:`converting between types`
>                   ||
>               |
> +|                           |+----------------------------
> ----------------------------------+|
>                                 |
> +|                           ||:diagtext:`initializing with expression of
> different type`    ||
>                 |
> +|                           |+----------------------------
> ----------------------------------+|
>                                 |
> +|                           ||:diagtext:`sending to parameter of
> different type`            ||
>                         |
> +|                           |+----------------------------
> ----------------------------------+|
>                                 |
> +|                           ||:diagtext:`casting between types`
>                    ||
>                 |
> +|                           |+----------------------------
> ----------------------------------+|
>                                 |
> ++---------------------------+------------------------------
> ----------------------------------+-------------------------
> ---------------------------------------------+
> +
> ++----------------------------------------------------------
> -------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`compound literals are a
> C99-specific feature`|
> ++----------------------------------------------------------
> -------------------------+
> +
> ++--------------------------------------------------------+-
> -----------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`extra ';'` |nbsp|
> |+----------------------------------------------+|
> +|
> ||:diagtext:`outside of a function`             ||
> +|
> |+----------------------------------------------+|
> +|
> ||+--------------------------------------------+||
> +|
> |||:diagtext:`inside a` |nbsp| :placeholder:`B`|||
> +|
> ||+--------------------------------------------+||
> +|
> |+----------------------------------------------+|
> +|
> ||:diagtext:`inside instance variable list`     ||
> +|
> |+----------------------------------------------+|
> +|
> ||:diagtext:`after member function definition`  ||
> +|
> |+----------------------------------------------+|
> ++--------------------------------------------------------+-
> -----------------------------------------------+
> +
> ++-----------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`#warning is a language extension`|
> ++-----------------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`subscript of a pointer to void is
> a GNU extension`|
> ++----------------------------------------------------------
> ------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`size of static array must be an
> integer constant expression`|
> ++----------------------------------------------------------
> ----------------------------------------+
> +
> ++----------------------------------------------------------
> ---------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`commas at the end of enumerator
> lists are a C99-specific feature`|
> ++----------------------------------------------------------
> ---------------------------------------------+
> +
> ++----------------------------------------------------------
> -------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`enumeration types with a fixed
> underlying type are a C++11 extension`|
> ++----------------------------------------------------------
> -------------------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`designated initializers are a C99
> feature`|
> ++----------------------------------------------------------
> ----------------------+
> +
> ++----------------------------------------------------------
> -----+-----------------------+--------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`invalid application of
> '`|+---------------------+|:diagtext:`' to a function type`|
> +|
>  ||:diagtext:`sizeof`   ||                                |
> +|
>  |+---------------------+|                                |
> +|
>  ||:diagtext:`alignof`  ||                                |
> +|
>  |+---------------------+|                                |
> +|
>  ||:diagtext:`vec\_step`||                                |
> +|
>  |+---------------------+|                                |
> ++----------------------------------------------------------
> -----+-----------------------+--------------------------------+
> +
> ++----------------------------------------------------------
> -------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`// comments are not allowed in
> this language`|
> ++----------------------------------------------------------
> -------------------------+
> +
> +
> +-Wpedantic-core-features
> +------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`OpenCL extension` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`is core feature or supported optional
> core feature - ignoring`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------+
> +
> +
> +-Wpessimizing-move
> +------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`moving a temporary object prevents
> copy elision`|
> ++----------------------------------------------------------
> ----------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`moving a local object in a return
> statement prevents copy elision`|
> ++----------------------------------------------------------
> ----------------------------------------------+
> +
> +
> +-Wpointer-arith
> +---------------
> +Some of the diagnostics controlled by this flag are enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------+-----
> ------------------+---------------------------+-------------
> --+----------------------+-------------------------+--------
> -------------------------+---------------+------------------
> ------+---------------------------------------------------+-
> -------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`arithmetic
> on`|+---------------------+| |nbsp| :diagtext:`pointer`|+-------------+|
> |nbsp| :diagtext:`to`|+-----------------------+| |nbsp|
> :diagtext:`function type`|+-------------+| |nbsp|
> :placeholder:`B`|+-------------------------------------------------+|
> |nbsp| :diagtext:`is a GNU extension`|
> +|                                                    || |nbsp|
> :diagtext:`a`||                           ||             ||
>       || |nbsp| :diagtext:`the`||                                 ||
>      ||                        ||
>        ||                                      |
> +|
> |+---------------------+|                           |+-------------+|
>                 |+-----------------------+|
>  |+-------------+|                        |+-------------------------------------------------+|
>                                     |
> +|                                                    ||
>    ||                           ||:diagtext:`s`||                      ||
>                      ||                                 ||:diagtext:`s`||
>                       ||+-----------------------------------------------+||
>                                     |
> +|
> |+---------------------+|                           |+-------------+|
>                 |+-----------------------+|
>  |+-------------+|                        ||| |nbsp| :diagtext:`and` |nbsp|
> :placeholder:`D`|||                                      |
> +|                                                    |
>    |                           |               |                      |
>                      |                                 |               |
>                     ||+-----------------------------------------------+||
>                                     |
> +|                                                    |
>    |                           |               |                      |
>                      |                                 |               |
>                     |+-------------------------------------------------+|
>                                     |
> ++----------------------------------------------------+-----
> ------------------+---------------------------+-------------
> --+----------------------+-------------------------+--------
> -------------------------+---------------+------------------
> ------+---------------------------------------------------+-
> -------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`subscript of a pointer to void is
> a GNU extension`|
> ++----------------------------------------------------------
> ------------------------------+
> +
> ++----------------------------------------------------+-----
> ------------------+---------------------------+-------------
> --+----------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`arithmetic
> on`|+---------------------+| |nbsp| :diagtext:`pointer`|+-------------+|
> |nbsp| :diagtext:`to void is a GNU extension`|
> +|                                                    || |nbsp|
> :diagtext:`a`||                           ||             ||
>                               |
> +|
> |+---------------------+|                           |+-------------+|
>                                         |
> +|                                                    ||
>    ||                           ||:diagtext:`s`||
>                     |
> +|
> |+---------------------+|                           |+-------------+|
>                                         |
> ++----------------------------------------------------+-----
> ------------------+---------------------------+-------------
> --+----------------------------------------------+
> +
> ++----------------------------------------------------------
> -----+-----------------------+--------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`invalid application of
> '`|+---------------------+|:diagtext:`' to a function type`|
> +|
>  ||:diagtext:`sizeof`   ||                                |
> +|
>  |+---------------------+|                                |
> +|
>  ||:diagtext:`alignof`  ||                                |
> +|
>  |+---------------------+|                                |
> +|
>  ||:diagtext:`vec\_step`||                                |
> +|
>  |+---------------------+|                                |
> ++----------------------------------------------------------
> -----+-----------------------+--------------------------------+
> +
> ++----------------------------------------------------------
> -----+-----------------------+----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`invalid application of
> '`|+---------------------+|:diagtext:`' to a void type`|
> +|
>  ||:diagtext:`sizeof`   ||                            |
> +|
>  |+---------------------+|                            |
> +|
>  ||:diagtext:`alignof`  ||                            |
> +|
>  |+---------------------+|                            |
> +|
>  ||:diagtext:`vec\_step`||                            |
> +|
>  |+---------------------+|                            |
> ++----------------------------------------------------------
> -----+-----------------------+----------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`subtraction of pointers to type`
> |nbsp| :placeholder:`A` |nbsp| :diagtext:`of zero size has undefined
> behavior`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------+
> +
> +
> +-Wpointer-bool-conversion
> +-------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++------------------------------------------------------+---
> ------------------------+-----------------------------------
> ----------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`nonnull` |nbsp|
> |+-------------------------+| |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`'
> will evaluate to 'true' on first encounter`|
> +|
> ||:diagtext:`function call`||
>                                                |
> +|
> |+-------------------------+|
>                                                |
> +|
> ||:diagtext:`parameter`    ||
>                                                |
> +|
> |+-------------------------+|
>                                                |
> ++------------------------------------------------------+---
> ------------------------+-----------------------------------
> ----------------------------------------------------------+
> +
> ++-------------------------------------------------+--------
> ----------------------+-------------------------------------
> --------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`address
> of`|+----------------------------+| |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`'
> will always evaluate to 'true'`|
> +|                                                 ||
>       ||
>              |
> +|
>  |+----------------------------+|
>                                          |
> +|                                                 || |nbsp|
> :diagtext:`function`||
>                            |
> +|
>  |+----------------------------+|
>                                          |
> +|                                                 || |nbsp|
> :diagtext:`array`   ||
>                            |
> +|
>  |+----------------------------+|
>                                          |
> ++-------------------------------------------------+--------
> ----------------------+-------------------------------------
> --------------------------------------------+
> +
> +
> +-Wpointer-sign
> +--------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++---------------------------+------------------------------
> ----------------------------------+-------------------------
> ---------------------------------------------------------+
> +|:warning:`warning:` |nbsp| |+----------------------------
> ----------------------------------+| |nbsp| :diagtext:`converts between
> pointers to integer types with different sign`|
> +|                           ||:diagtext:`assigning to different types`
>                   ||
>                           |
> +|                           |+----------------------------
> ----------------------------------+|
>                                             |
> +|                           ||:diagtext:`passing to parameter of
> different type`            ||
>                                     |
> +|                           |+----------------------------
> ----------------------------------+|
>                                             |
> +|                           ||:diagtext:`returning from function with
> different return type`||
>                               |
> +|                           |+----------------------------
> ----------------------------------+|
>                                             |
> +|                           ||:diagtext:`converting between types`
>                   ||
>                           |
> +|                           |+----------------------------
> ----------------------------------+|
>                                             |
> +|                           ||:diagtext:`initializing with expression of
> different type`    ||
>                             |
> +|                           |+----------------------------
> ----------------------------------+|
>                                             |
> +|                           ||:diagtext:`sending to parameter of
> different type`            ||
>                                     |
> +|                           |+----------------------------
> ----------------------------------+|
>                                             |
> +|                           ||:diagtext:`casting between types`
>                    ||
>                             |
> +|                           |+----------------------------
> ----------------------------------+|
>                                             |
> ++---------------------------+------------------------------
> ----------------------------------+-------------------------
> ---------------------------------------------------------+
> +
> +
> +-Wpointer-to-int-cast
> +---------------------
> +This diagnostic flag exists for GCC compatibility, and has no effect in
> Clang.
> +
> +-Wpointer-type-mismatch
> +-----------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`pointer type mismatch`|
> ++------------------------------------------------------------+
> +
> +
> +-Wpotentially-evaluated-expression
> +----------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`expression with side effects will
> be evaluated despite being used as an operand to 'typeid'`|
> ++----------------------------------------------------------
> ------------------------------------------------------------------------+
> +
> +
> +-Wpragma-once-outside-header
> +----------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`#pragma once in main file`|
> ++----------------------------------------------------------------+
> +
> +
> +-Wpragma-system-header-outside-header
> +-------------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`#pragma system\_header ignored in
> main file`|
> ++----------------------------------------------------------
> ------------------------+
> +
> +
> +-Wpragmas
> +---------
> +Some of the diagnostics controlled by this flag are enabled by default.
> +
> +Also controls `-Wunknown-pragmas`_, `-Wignored-pragmas`_.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------+----------------------+------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`#pragma redefine\_extname is
> applicable to external C declarations only; not applied to` |nbsp|
> |+--------------------+| |nbsp| :placeholder:`B`|
> +|
>
> ||:diagtext:`function`||                        |
> +|
>
> |+--------------------+|                        |
> +|
>
> ||:diagtext:`variable`||                        |
> +|
>
> |+--------------------+|                        |
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------+----------------------+------------------------+
> +
> +
> +-Wpredefined-identifier-outside-function
> +----------------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`predefined identifier is only
> valid inside function`|
> ++----------------------------------------------------------
> --------------------------------+
> +
> +
> +-Wprivate-extern
> +----------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`use of \_\_private\_extern\_\_ on
> a declaration may not produce external symbol private to the linkage unit
> and is deprecated`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------------+
> +
> +
> +-Wprivate-header
> +----------------
> +This diagnostic is an error by default, but the flag
> ``-Wno-private-header`` can be used to disable the error.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------+
> +|:error:`error:` |nbsp| :diagtext:`use of private header from outside its
> module: '`:placeholder:`A`:diagtext:`'`|
> ++----------------------------------------------------------
> ------------------------------------------------------+
> +
> +
> +-Wprofile-instr-out-of-date
> +---------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------+---------------+-----------------------------------
> ----------+-------------------+-----------------------------
> ----------------------------------+-------------------+-----
> ---------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`profile data may be out of date:
> of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`function`|+-------------+|:diagtext:`,`
> |nbsp| :placeholder:`B` |nbsp| |+-----------------+| |nbsp| :diagtext:`no
> data and` |nbsp| :placeholder:`C` |nbsp| |+-----------------+| |nbsp|
> :diagtext:`mismatched data that will be ignored`|
> +|
>                                                       ||             ||
>                                          ||:diagtext:`:has` ||
>                                                  ||:diagtext:`:has` ||
>                                                   |
> +|
>                                                       |+-------------+|
>                                          |+-----------------+|
>                                                  |+-----------------+|
>                                                   |
> +|
>                                                       ||:diagtext:`s`||
>                                          ||:diagtext:`:have`||
>                                                  ||:diagtext:`:have`||
>                                                   |
> +|
>                                                       |+-------------+|
>                                          |+-----------------+|
>                                                  |+-----------------+|
>                                                   |
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------+---------------+-----------------------------------
> ----------+-------------------+-----------------------------
> ----------------------------------+-------------------+-----
> ---------------------------------------------------+
> +
> +
> +-Wprofile-instr-unprofiled
> +--------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`no profile data available for file
> "`:placeholder:`A`:diagtext:`"`|
> ++----------------------------------------------------------
> ----------------------------------------------+
> +
> +
> +-Wproperty-access-dot-syntax
> +----------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`property` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`not found on object of type` |nbsp|
> :placeholder:`B`:diagtext:`; did you mean to access property` |nbsp|
> :placeholder:`C`:diagtext:`?`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------------+
> +
> +
> +-Wproperty-attribute-mismatch
> +-----------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`property attribute in class
> extension does not match the primary class`|
> ++----------------------------------------------------------
> ---------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`'
> attribute on property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`does not
> match the property inherited from` |nbsp| :placeholder:`C`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -----------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`getter name mismatch between
> property redeclaration (`:placeholder:`B`:diagtext:`) and its original
> declaration (`:placeholder:`A`:diagtext:`)`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`attribute 'readonly' of property`
> |nbsp| :placeholder:`A` |nbsp| :diagtext:`restricts attribute 'readwrite'
> of property inherited from` |nbsp| :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -------------------+
> +
> +
> +-Wprotocol
> +----------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`method` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`in protocol` |nbsp| :placeholder:`B` |nbsp|
> :diagtext:`not implemented`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------------+
> +
> +
> +-Wprotocol-property-synthesis-ambiguity
> +---------------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`property of type` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`was selected for synthesis`|
> ++----------------------------------------------------------
> -------------------------------------------------------------------+
> +
> +
> +-Wqualified-void-return-type
> +----------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`function cannot return qualified
> void type` |nbsp| :placeholder:`A`|
> ++----------------------------------------------------------
> -----------------------------------------------+
> +
> +
> +-Wrange-loop-analysis
> +---------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`loop variable` |nbsp|
> :placeholder:`A` |nbsp|  |nbsp| :diagtext:`is initialized with a value of a
> different type` |nbsp| :diagtext:`resulting in a copy`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -----------------+
> +|:warning:`warning:` |nbsp| :diagtext:`loop variable` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`of type` |nbsp| :placeholder:`B` |nbsp|
> :diagtext:`creates a copy from type` |nbsp| :placeholder:`C`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -----------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`loop variable` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`is always a copy because the range of
> type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`does not return a
> reference`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------+
> +
> +
> +-Wreadonly-iboutlet-property
> +----------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`readonly IBOutlet property` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`when auto-synthesized may not work
> correctly with 'nib' loader`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------------------------+
> +
> +
> +-Wreceiver-expr
> +---------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`receiver type` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`is not 'id' or interface pointer,
> consider casting it to 'id'`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------------+
> +
> +
> +-Wreceiver-forward-class
> +------------------------
> +Some of the diagnostics controlled by this flag are enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`receiver` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`is a forward class and corresponding @interface may not
> exist`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`receiver type` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`for instance message is a forward
> declaration`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------+
> +
> +
> +-Wredeclared-class-member
> +-------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------+
> +|:warning:`warning:` |nbsp| :diagtext:`class member cannot be redeclared`|
> ++----------------------------------------------------------
> --------------+
> +
> +
> +-Wredundant-decls
> +-----------------
> +This diagnostic flag exists for GCC compatibility, and has no effect in
> Clang.
> +
> +-Wredundant-move
> +----------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------+
> +|:warning:`warning:` |nbsp| :diagtext:`redundant move in return
> statement`|
> ++----------------------------------------------------------
> ---------------+
> +
> +
> +-Wregister
> +----------
> +This diagnostic is enabled by default.
> +
> +Also controls `-Wdeprecated-register`_.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------+
> +|:error:`error:` |nbsp| :diagtext:`ISO C++1z does not allow 'register'
> storage class specifier`|
> ++----------------------------------------------------------
> ------------------------------------+
> +
> +
> +-Wreinterpret-base-class
> +------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------+------------------+--------------------------------
> -------------------------+------------------+---------------
> ----------------+-------------------------------------+-----
> ------------------------------------------------------------
> ------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'reinterpret\_cast'` |nbsp|
> |+----------------+| |nbsp| :diagtext:`class` |nbsp| :placeholder:`A`
> |nbsp| |+----------------+| |nbsp| :diagtext:`its` |nbsp|
> |+-----------------------------------+| |nbsp| :placeholder:`B` |nbsp|
> :diagtext:`behaves differently from 'static\_cast'`|
> +|
> ||:diagtext:`from`||
>  ||:diagtext:`to`  ||                               ||:diagtext:`virtual
> base`           ||
>                          |
> +|
> |+----------------+|
>  |+----------------+|
>  |+-----------------------------------+|
>                                                  |
> +|
> ||:diagtext:`to`  ||
>  ||:diagtext:`from`||                               ||:diagtext:`base at
> non-zero offset`||
>                          |
> +|
> |+----------------+|
>  |+----------------+|
>  |+-----------------------------------+|
>                                                  |
> ++----------------------------------------------------------
> --------+------------------+--------------------------------
> -------------------------+------------------+---------------
> ----------------+-------------------------------------+-----
> ------------------------------------------------------------
> ------------------+
> +
> +
> +-Rremark-backend-plugin
> +-----------------------
> +**Diagnostic text:**
> +
> +The text of this diagnostic is not controlled by Clang.
> +
> +
> +-Wreorder
> +---------
> +**Diagnostic text:**
> +
> ++---------------------------+------------------------+-----
> ------------------------------------------------------------
> ------------+-------------------+------------------------+
> +|:warning:`warning:` |nbsp| |+----------------------+| |nbsp|
> :placeholder:`B` |nbsp| :diagtext:`will be initialized after` |nbsp|
> |+-----------------+| |nbsp| :placeholder:`D`|
> +|                           ||:diagtext:`field`     ||
>
>  ||:diagtext:`field`||                        |
> +|                           |+----------------------+|
>
>  |+-----------------+|                        |
> +|                           ||:diagtext:`base class`||
>                                                          ||:diagtext:`base`
> ||                        |
> +|                           |+----------------------+|
>
>  |+-----------------+|                        |
> ++---------------------------+------------------------+-----
> ------------------------------------------------------------
> ------------+-------------------+------------------------+
> +
> +
> +-Wrequires-super-attribute
> +--------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------------------------+----------------
> ------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute
> cannot be applied to` |nbsp| |+--------------------------------+|
> +|
>                              ||:diagtext:`methods in protocols`||
> +|
>                              |+--------------------------------+|
> +|
>                              ||:diagtext:`dealloc`             ||
> +|
>                              |+--------------------------------+|
> ++----------------------------------------------------------
> -------------------------------------------+----------------
> ------------------+
> +
> +
> +-Wreserved-id-macro
> +-------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------+
> +|:warning:`warning:` |nbsp| :diagtext:`macro name is a reserved
> identifier`|
> ++----------------------------------------------------------
> ----------------+
> +
> +
> +-Wreserved-user-defined-literal
> +-------------------------------
> +Some of the diagnostics controlled by this flag are enabled by default.
> +
> +Also controls `-Wc++11-compat-reserved-user-defined-literal`_.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`invalid suffix on literal; C++11
> requires a space between literal and identifier`|
> ++----------------------------------------------------------
> -------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ---------------------------------------------------------+
> +|:error:`error:` |nbsp| :diagtext:`invalid suffix on literal; C++11
> requires a space between literal and identifier`|
> ++----------------------------------------------------------
> ---------------------------------------------------------+
> +
> +
> +-Wretained-language-linkage
> +---------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`friend function` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`retaining previous language linkage is
> an extension`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------+
> +
> +
> +-Wreturn-stack-address
> +----------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`returning address of label, which
> is local`|
> ++----------------------------------------------------------
> -----------------------+
> +
> ++--------------------------------------------------------+-
> -------------------------+------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`returning` |nbsp|
> |+------------------------+| |nbsp| :diagtext:`local temporary object`|
> +|
> ||:diagtext:`address of`  ||                                          |
> +|
> |+------------------------+|                                          |
> +|
> ||:diagtext:`reference to`||                                          |
> +|
> |+------------------------+|                                          |
> ++--------------------------------------------------------+-
> -------------------------+------------------------------------------+
> +
> ++---------------------------+--------------------------+---
> ------------------------------------------------------------
> ----------------------------------------------------+
> +|:warning:`warning:` |nbsp| |+------------------------+| |nbsp|
> :diagtext:`stack memory associated with local variable` |nbsp|
> :placeholder:`B` |nbsp| :diagtext:`returned`|
> +|                           ||:diagtext:`address of`  ||
>
>                      |
> +|                           |+------------------------+|
>
>                      |
> +|                           ||:diagtext:`reference to`||
>
>                      |
> +|                           |+------------------------+|
>
>                      |
> ++---------------------------+--------------------------+---
> ------------------------------------------------------------
> ----------------------------------------------------+
> +
> +
> +-Wreturn-type
> +-------------
> +This diagnostic is enabled by default.
> +
> +Also controls `-Wreturn-type-c-linkage`_.
> +
> +**Diagnostic text:**
> +
> ++-----------------------+---------------------------+------
> ---------------------------------------------------------------+
> +|:error:`error:` |nbsp| |+-------------------------+| |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`should not return a value`|
> +|                       ||:diagtext:`void function`||
>                                                  |
> +|                       |+-------------------------+|
>                                                  |
> +|                       ||:diagtext:`void method`  ||
>                                                  |
> +|                       |+-------------------------+|
>                                                  |
> +|                       ||:diagtext:`constructor`  ||
>                                                  |
> +|                       |+-------------------------+|
>                                                  |
> +|                       ||:diagtext:`destructor`   ||
>                                                  |
> +|                       |+-------------------------+|
>                                                  |
> ++-----------------------+---------------------------+------
> ---------------------------------------------------------------+
> +
> ++---------------------------------------------------+------
> ----------------+-------------------------------------------
> ----------------------+
> +|:error:`error:` |nbsp| :diagtext:`non-void` |nbsp|
> |+--------------------+| |nbsp| :placeholder:`A` |nbsp| :diagtext:`should
> return a value`|
> +|
>  ||:diagtext:`function`||
>                |
> +|
>  |+--------------------+|
>                |
> +|                                                   ||:diagtext:`method`
> ||                                                                 |
> +|
>  |+--------------------+|
>                |
> ++---------------------------------------------------+------
> ----------------+-------------------------------------------
> ----------------------+
> +
> ++----------------------------------------------------------
> ---------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`control reaches end of non-void
> function`|
> ++----------------------------------------------------------
> ---------------------+
> +
> ++----------------------------------------------------------
> -------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`control reaches end of non-void
> lambda`|
> ++----------------------------------------------------------
> -------------------+
> +
> ++----------------------------------------------------------
> -----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`control may reach end of non-void
> function`|
> ++----------------------------------------------------------
> -----------------------+
> +
> ++----------------------------------------------------------
> ---------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`control may reach end of non-void
> lambda`|
> ++----------------------------------------------------------
> ---------------------+
> +
> ++---------------------------------------------------+------
> ----------------+-------------------------------------------
> ----------------------+
> +|:error:`error:` |nbsp| :diagtext:`non-void` |nbsp|
> |+--------------------+| |nbsp| :placeholder:`A` |nbsp| :diagtext:`should
> return a value`|
> +|
>  ||:diagtext:`function`||
>                |
> +|
>  |+--------------------+|
>                |
> +|                                                   ||:diagtext:`method`
> ||                                                                 |
> +|
>  |+--------------------+|
>                |
> ++---------------------------------------------------+------
> ----------------+-------------------------------------------
> ----------------------+
> +
> +
> +-Wreturn-type-c-linkage
> +-----------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has
> C-linkage specified, but returns user-defined type` |nbsp| :placeholder:`B`
> |nbsp| :diagtext:`which is incompatible with C`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ---------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has
> C-linkage specified, but returns incomplete type` |nbsp| :placeholder:`B`
> |nbsp| :diagtext:`which could be incompatible with C`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ---------------+
> +
> +
> +-Wrtti-for-exceptions
> +---------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`implicitly enabling rtti for
> exception handling`|
> ++----------------------------------------------------------
> ----------------------------+
> +
> +
> +-Rsanitize-address
> +------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------------------------------------+
> +|:remark:`remark:` |nbsp| :diagtext:`-fsanitize-address-field-padding
> applied to` |nbsp| :placeholder:`A`|
> ++----------------------------------------------------------
> ----------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------+--------------------------------------+
> +|:remark:`remark:` |nbsp| :diagtext:`-fsanitize-address-field-padding
> ignored for` |nbsp| :placeholder:`A` |nbsp| :diagtext:`because it` |nbsp|
> |+------------------------------------+|
> +|
>
>  ||:diagtext:`is not C++`              ||
> +|
>
>  |+------------------------------------+|
> +|
>
>  ||:diagtext:`is packed`               ||
> +|
>
>  |+------------------------------------+|
> +|
>
>  ||:diagtext:`is a union`              ||
> +|
>
>  |+------------------------------------+|
> +|
>
>  ||:diagtext:`is trivially copyable`   ||
> +|
>
>  |+------------------------------------+|
> +|
>
>  ||:diagtext:`has trivial destructor`  ||
> +|
>
>  |+------------------------------------+|
> +|
>
>  ||:diagtext:`is standard layout`      ||
> +|
>
>  |+------------------------------------+|
> +|
>
>  ||:diagtext:`is in a blacklisted file`||
> +|
>
>  |+------------------------------------+|
> +|
>
>  ||:diagtext:`is blacklisted`          ||
> +|
>
>  |+------------------------------------+|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------+--------------------------------------+
> +
> +
> +-Wsection
> +---------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`section does not match previous
> declaration`|
> ++----------------------------------------------------------
> ------------------------+
> +
> +
> +-Wselector
> +----------
> +Also controls `-Wselector-type-mismatch`_.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`no method with selector` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`is implemented in this translation unit`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------+
> +
> +
> +-Wselector-type-mismatch
> +------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`several methods with selector`
> |nbsp| :placeholder:`A` |nbsp| :diagtext:`of mismatched types are found for
> the @selector expression`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------------------+
> +
> +
> +-Wself-assign
> +-------------
> +Some of the diagnostics controlled by this flag are enabled by default.
> +
> +Also controls `-Wself-assign-field`_.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`explicitly assigning value of
> variable of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to itself`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------+
> +
> +
> +-Wself-assign-field
> +-------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++--------------------------------------------------------+-
> ------------------------------+-----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`assigning` |nbsp|
> |+-----------------------------+| |nbsp| :diagtext:`to itself`|
> +|
> ||:diagtext:`field`            ||                             |
> +|
> |+-----------------------------+|                             |
> +|
> ||:diagtext:`instance variable`||                             |
> +|
> |+-----------------------------+|                             |
> ++--------------------------------------------------------+-
> ------------------------------+-----------------------------+
> +
> +
> +-Wself-move
> +-----------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`explicitly moving variable of
> type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to itself`|
> ++----------------------------------------------------------
> --------------------------------------------------------------------+
> +
> +
> +-Wsemicolon-before-method-body
> +------------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`semicolon before method body is
> ignored`|
> ++----------------------------------------------------------
> --------------------+
> +
> +
> +-Wsentinel
> +----------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------+-----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`missing sentinel in` |nbsp|
> |+---------------------------+|
> +|
> ||:diagtext:`function call`  ||
> +|
> |+---------------------------+|
> +|
> ||:diagtext:`method dispatch`||
> +|
> |+---------------------------+|
> +|
> ||:diagtext:`block call`     ||
> +|
> |+---------------------------+|
> ++----------------------------------------------------------
> --------+-----------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`not enough variable arguments in`
> |nbsp| :placeholder:`A` |nbsp| :diagtext:`declaration to fit a sentinel`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------+
> +
> +
> +-Wsequence-point
> +----------------
> +Synonym for `-Wunsequenced`_.
> +
> +
> +-Wserialized-diagnostics
> +------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`unable to open file` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`for serializing diagnostics
> (`:placeholder:`B`:diagtext:`)`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`unable to merge a subprocess's
> serialized diagnostics`|
> ++----------------------------------------------------------
> ----------------------------------+
> +
> +
> +-Wshadow
> +--------
> +Also controls `-Wshadow-field-in-constructor-modified`_.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------+-------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`declaration shadows a` |nbsp|
> |+-----------------------------------------------------------+|
> +|
> ||:diagtext:`local variable`                                 ||
> +|
> |+-----------------------------------------------------------+|
> +|
> ||+-----------------------------------------------+          ||
> +|
> |||:diagtext:`variable in` |nbsp| :placeholder:`C`|          ||
> +|
> ||+-----------------------------------------------+          ||
> +|
> |+-----------------------------------------------------------+|
> +|
> ||+---------------------------------------------------------+||
> +|
> |||:diagtext:`static data member of` |nbsp| :placeholder:`C`|||
> +|
> ||+---------------------------------------------------------+||
> +|
> |+-----------------------------------------------------------+|
> +|
> ||+--------------------------------------------+             ||
> +|
> |||:diagtext:`field of` |nbsp| :placeholder:`C`|             ||
> +|
> ||+--------------------------------------------+             ||
> +|
> |+-----------------------------------------------------------+|
> ++----------------------------------------------------------
> ----------+-------------------------------------------------------------+
> +
> +
> +-Wshadow-all
> +------------
> +Controls `-Wshadow`_, `-Wshadow-field-in-constructor`_.
> +
> +
> +-Wshadow-field-in-constructor
> +-----------------------------
> +Also controls `-Wshadow-field-in-constructor-modified`_.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`constructor parameter` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`shadows the field` |nbsp|
> :placeholder:`B` |nbsp| :diagtext:`of` |nbsp| :placeholder:`C`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------------------------------------------+
> +
> +
> +-Wshadow-field-in-constructor-modified
> +--------------------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`modifying constructor parameter`
> |nbsp| :placeholder:`A` |nbsp| :diagtext:`that shadows a field of` |nbsp|
> :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------------+
> +
> +
> +-Wshadow-ivar
> +-------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`local declaration of` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`hides instance variable`|
> ++----------------------------------------------------------
> --------------------------------------------------------------------+
> +
> +
> +-Wshift-count-negative
> +----------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++--------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`shift count is negative`|
> ++--------------------------------------------------------------+
> +
> +
> +-Wshift-count-overflow
> +----------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++-------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`shift count >= width of type`|
> ++-------------------------------------------------------------------+
> +
> +
> +-Wshift-negative-value
> +----------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`shifting a negative signed value
> is undefined`|
> ++----------------------------------------------------------
> --------------------------+
> +
> +
> +-Wshift-op-parentheses
> +----------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`operator
> '`:placeholder:`A`:diagtext:`' has lower precedence than
> '`:placeholder:`B`:diagtext:`'; '`:placeholder:`B`:diagtext:`' will be
> evaluated first`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------------------------------------------+
> +
> +
> +-Wshift-overflow
> +----------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> --------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`signed shift result
> (`:placeholder:`A`:diagtext:`) requires` |nbsp| :placeholder:`B` |nbsp|
> :diagtext:`bits to represent, but` |nbsp| :placeholder:`C` |nbsp|
> :diagtext:`only has` |nbsp| :placeholder:`D` |nbsp| :diagtext:`bits`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> --------------------------+
> +
> +
> +-Wshift-sign-overflow
> +---------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`signed shift result
> (`:placeholder:`A`:diagtext:`) sets the sign bit of the shift expression's
> type (`:placeholder:`B`:diagtext:`) and becomes negative`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------------------+
> +
> +
> +-Wshorten-64-to-32
> +------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`implicit conversion loses integer
> precision:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp|
> :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------+
> +
> +
> +-Wsign-compare
> +--------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`comparison of integers of
> different signs:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`and` |nbsp|
> :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------+
> +
> +
> +-Wsign-conversion
> +-----------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`implicit conversion changes
> signedness:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp|
> :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`operand of ? changes signedness:`
> |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------+
> +
> +
> +-Wsign-promo
> +------------
> +This diagnostic flag exists for GCC compatibility, and has no effect in
> Clang.
> +
> +-Wsizeof-array-argument
> +-----------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`sizeof on array function parameter
> will return size of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`instead of`
> |nbsp| :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------------------------+
> +
> +
> +-Wsizeof-array-decay
> +--------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`sizeof on pointer operation will
> return size of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`instead of`
> |nbsp| :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------------+
> +
> +
> +-Wsizeof-pointer-memaccess
> +--------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`'
> call operates on objects of type` |nbsp| :placeholder:`B` |nbsp|
> :diagtext:`while the size is based on a different type` |nbsp|
> :placeholder:`C`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ---------------+-------------------------+------------------
> ---------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`argument to 'sizeof' in` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`call is the same pointer type` |nbsp|
> :placeholder:`B` |nbsp| :diagtext:`as the` |nbsp|
> |+-----------------------+|:diagtext:`; expected` |nbsp| :placeholder:`D`
> |nbsp| :diagtext:`or an explicit length`|
> +|
>
>                                              ||:diagtext:`destination`||
>
>        |
> +|
>
>                                              |+-----------------------+|
>
>        |
> +|
>
>                                              ||:diagtext:`source`     ||
>
>        |
> +|
>
>                                              |+-----------------------+|
>
>        |
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ---------------+-------------------------+------------------
> ---------------------------------------------------------------------+
> +
> +
> +-Wsometimes-uninitialized
> +-------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------------------------+----------------
> ------+--------------------------------------------------+--
> ------------------------------------------------------------
> ------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`variable` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`is` |nbsp| |+--------------------+| |nbsp|
> :diagtext:`uninitialized whenever` |nbsp| |+----------------------------
> ------------------------------------------------------------
> --------------------+|
> +|
>                              ||:diagtext:`used`    ||
>                             ||+---------------------------
> ------------------------------------+-------------------+
>        ||
> +|
>                              |+--------------------+|
>                             |||:diagtext:`'`:placeholder:`D`:diagtext:`'
> condition is` |nbsp| |+-----------------+|                       ||
> +|
>                              ||:diagtext:`captured`||
>                             |||
>                    ||:diagtext:`true` ||                       ||
> +|
>                              |+--------------------+|
>                             |||
>                    |+-----------------+|                       ||
> +|
>                              |                      |
>                             |||
>                    ||:diagtext:`false`||                       ||
> +|
>                              |                      |
>                             |||
>                    |+-----------------+|                       ||
> +|
>                              |                      |
>                             ||+---------------------------
> ------------------------------------+-------------------+
>        ||
> +|
>                              |                      |
>                             |+----------------------------
> ------------------------------------------------------------
> --------------------+|
> +|
>                              |                      |
>                             ||+---------------------------
> ----------------------------+-------------------------------
> -------------------+||
> +|
>                              |                      |
>                             |||:diagtext:`'`:placeholder:`D`:diagtext:`'
> loop` |nbsp| |+------------------------------------------------+|||
> +|
>                              |                      |
>                             |||
>            ||:diagtext:`is entered`                          ||||
> +|
>                              |                      |
>                             |||
>            |+------------------------------------------------+|||
> +|
>                              |                      |
>                             |||
>            ||:diagtext:`exits because its condition is false`||||
> +|
>                              |                      |
>                             |||
>            |+------------------------------------------------+|||
> +|
>                              |                      |
>                             ||+---------------------------
> ----------------------------+-------------------------------
> -------------------+||
> +|
>                              |                      |
>                             |+----------------------------
> ------------------------------------------------------------
> --------------------+|
> +|
>                              |                      |
>                             ||+---------------------------
> ----------------------------+-------------------------------
> -------------------+||
> +|
>                              |                      |
>                             |||:diagtext:`'`:placeholder:`D`:diagtext:`'
> loop` |nbsp| |+------------------------------------------------+|||
> +|
>                              |                      |
>                             |||
>            ||:diagtext:`condition is true`                   ||||
> +|
>                              |                      |
>                             |||
>            |+------------------------------------------------+|||
> +|
>                              |                      |
>                             |||
>            ||:diagtext:`exits because its condition is false`||||
> +|
>                              |                      |
>                             |||
>            |+------------------------------------------------+|||
> +|
>                              |                      |
>                             ||+---------------------------
> ----------------------------+-------------------------------
> -------------------+||
> +|
>                              |                      |
>                             |+----------------------------
> ------------------------------------------------------------
> --------------------+|
> +|
>                              |                      |
>                             ||+---------------------------
> -------------------------------------------+
>       ||
> +|
>                              |                      |
>                             |||:diagtext:`switch` |nbsp| :placeholder:`D`
> |nbsp| :diagtext:`is taken`|                                    ||
> +|
>                              |                      |
>                             ||+---------------------------
> -------------------------------------------+
>       ||
> +|
>                              |                      |
>                             |+----------------------------
> ------------------------------------------------------------
> --------------------+|
> +|
>                              |                      |
>                             ||:diagtext:`its declaration is reached`
>                                                               ||
> +|
>                              |                      |
>                             |+----------------------------
> ------------------------------------------------------------
> --------------------+|
> +|
>                              |                      |
>                             ||+---------------------------------------------+
>                                                            ||
> +|
>                              |                      |
>                             |||:placeholder:`D` |nbsp| :diagtext:`is
> called`|                                                             ||
> +|
>                              |                      |
>                             ||+---------------------------------------------+
>                                                            ||
> +|
>                              |                      |
>                             |+----------------------------
> ------------------------------------------------------------
> --------------------+|
> ++----------------------------------------------------------
> -------------------------------------------+----------------
> ------+--------------------------------------------------+--
> ------------------------------------------------------------
> ------------------------------------------------+
> +
> +
> +-Wsource-uses-openmp
> +--------------------
> +Some of the diagnostics controlled by this flag are enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`OpenMP only allows an ordered
> construct with the simd clause nested in a simd construct`|
> ++----------------------------------------------------------
> --------------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> --------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`unexpected '#pragma omp ...' in
> program`|
> ++----------------------------------------------------------
> --------------------+
> +
> +
> +-Wspir-compat
> +-------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`sampler initializer has invalid`
> |nbsp| :placeholder:`A` |nbsp| :diagtext:`bits`|
> ++----------------------------------------------------------
> ------------------------------------------------------------+
> +
> +
> +-Wstack-protector
> +-----------------
> +This diagnostic flag exists for GCC compatibility, and has no effect in
> Clang.
> +
> +-Wstatic-float-init
> +-------------------
> +This diagnostic is enabled by default.
> +
> +Also controls `-Wgnu-static-float-init`_.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------+
> +|:error:`error:` |nbsp| :diagtext:`in-class initializer for static data
> member of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`requires
> 'constexpr' specifier`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------+
> +
> +
> +-Wstatic-in-inline
> +------------------
> +Some of the diagnostics controlled by this flag are enabled by default.
> +
> +**Diagnostic text:**
> +
> ++-----------------------------------------------------+----
> ------------------+-----------------------------------------
> ------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`static` |nbsp|
> |+--------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`is used
> in an inline function with external linkage`|
> +|
>  ||:diagtext:`function`||
>                                              |
> +|
>  |+--------------------+|
>                                              |
> +|
>  ||:diagtext:`variable`||
>                                              |
> +|
>  |+--------------------+|
>                                              |
> ++-----------------------------------------------------+----
> ------------------+-----------------------------------------
> ------------------------------------------------------+
> +
> ++-----------------------------------------------------+----
> ------------------+-----------------------------------------
> ------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`static` |nbsp|
> |+--------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`is used
> in an inline function with external linkage`|
> +|
>  ||:diagtext:`function`||
>                                              |
> +|
>  |+--------------------+|
>                                              |
> +|
>  ||:diagtext:`variable`||
>                                              |
> +|
>  |+--------------------+|
>                                              |
> ++-----------------------------------------------------+----
> ------------------+-----------------------------------------
> ------------------------------------------------------+
> +
> +
> +-Wstatic-inline-explicit-instantiation
> +--------------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++-------------------------------------------------+--------
> ------------+--------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`ignoring '`|+------------------+|:diagtext:`'
> keyword on explicit template instantiation`|
> +|                                                 ||:diagtext:`static`||
>                                                       |
> +|                                                 |+------------------+|
>                                                       |
> +|                                                 ||:diagtext:`inline`||
>                                                       |
> +|                                                 |+------------------+|
>                                                       |
> ++-------------------------------------------------+--------
> ------------+--------------------------------------------------------+
> +
> +
> +-Wstatic-local-in-inline
> +------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`non-constant static local variable
> in inline function may be different in different files`|
> ++----------------------------------------------------------
> ----------------------------------------------------------------------+
> +
> +
> +-Wstatic-self-init
> +------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`static variable` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`is suspiciously used within its own
> initialization`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------+
> +
> +
> +-Wstrict-aliasing
> +-----------------
> +This diagnostic flag exists for GCC compatibility, and has no effect in
> Clang.
> +
> +-Wstrict-aliasing=0
> +-------------------
> +This diagnostic flag exists for GCC compatibility, and has no effect in
> Clang.
> +
> +-Wstrict-aliasing=1
> +-------------------
> +This diagnostic flag exists for GCC compatibility, and has no effect in
> Clang.
> +
> +-Wstrict-aliasing=2
> +-------------------
> +This diagnostic flag exists for GCC compatibility, and has no effect in
> Clang.
> +
> +-Wstrict-overflow
> +-----------------
> +This diagnostic flag exists for GCC compatibility, and has no effect in
> Clang.
> +
> +-Wstrict-overflow=0
> +-------------------
> +This diagnostic flag exists for GCC compatibility, and has no effect in
> Clang.
> +
> +-Wstrict-overflow=1
> +-------------------
> +This diagnostic flag exists for GCC compatibility, and has no effect in
> Clang.
> +
> +-Wstrict-overflow=2
> +-------------------
> +This diagnostic flag exists for GCC compatibility, and has no effect in
> Clang.
> +
> +-Wstrict-overflow=3
> +-------------------
> +This diagnostic flag exists for GCC compatibility, and has no effect in
> Clang.
> +
> +-Wstrict-overflow=4
> +-------------------
> +This diagnostic flag exists for GCC compatibility, and has no effect in
> Clang.
> +
> +-Wstrict-overflow=5
> +-------------------
> +This diagnostic flag exists for GCC compatibility, and has no effect in
> Clang.
> +
> +-Wstrict-prototypes
> +-------------------
> +This diagnostic flag exists for GCC compatibility, and has no effect in
> Clang.
> +
> +-Wstrict-selector-match
> +-----------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`multiple methods named` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`found`|
> ++----------------------------------------------------------
> ----------------------------------------------------+
> +
> +
> +-Wstring-compare
> +----------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------------+------------------------------+-----------
> ---------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`result of comparison against`
> |nbsp| |+----------------------------+| |nbsp| :diagtext:`is unspecified
> (use strncmp instead)`|
> +|
>    ||:diagtext:`a string literal`||
>                 |
> +|
>    |+----------------------------+|
>                   |
> +|
>    ||:diagtext:`@encode`         ||
>                 |
> +|
>    |+----------------------------+|
>                   |
> ++----------------------------------------------------------
> -----------------+------------------------------+-----------
> ---------------------------------------------+
> +
> +
> +-Wstring-conversion
> +-------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`implicit conversion turns string
> literal into bool:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp|
> :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------+
> +
> +
> +-Wstring-plus-char
> +------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`adding` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`to a string pointer does not append to the string`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------+
> +
> +
> +-Wstring-plus-int
> +-----------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`adding` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`to a string does not append to the string`|
> ++----------------------------------------------------------
> ------------------------------------------------------------------------+
> +
> +
> +-Wstrlcpy-strlcat-size
> +----------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`size argument in` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`call appears to be size of the source;
> expected the size of the destination`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------------------------------+
> +
> +
> +-Wstrncat-size
> +--------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`the value of the size argument in
> 'strncat' is too large, might lead to a buffer overflow`|
> ++----------------------------------------------------------
> ----------------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ---------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`size argument in 'strncat' call
> appears to be size of the source`|
> ++----------------------------------------------------------
> ---------------------------------------------+
> +
> ++----------------------------------------------------------
> ---------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`the value of the size argument to
> 'strncat' is wrong`|
> ++----------------------------------------------------------
> ---------------------------------+
> +
> +
> +-Wsuper-class-method-mismatch
> +-----------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`method parameter type` |nbsp|
> :diagtext:`does not match super class method parameter type`|
> ++----------------------------------------------------------
> ----------------------------------------------------------------------+
> +
> +
> +-Wswitch
> +--------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`overflow converting case value to
> switch condition type (`:placeholder:`A` |nbsp| :diagtext:`to` |nbsp|
> :placeholder:`B`:diagtext:`)`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------------------------+
> +
> ++---------------------------+------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------------------------------+
> +|:warning:`warning:` |nbsp| |+----------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------------------------------+|
> +|                           ||+---------------------------
> --------------------------------------------------------------------+
>
>                             ||
> +|                           |||:diagtext:`:enumeration value` |nbsp|
> :placeholder:`B` |nbsp| :diagtext:`not handled in switch`|
>
>               ||
> +|                           ||+---------------------------
> --------------------------------------------------------------------+
>
>                             ||
> +|                           |+----------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------------------------------+|
> +|                           ||+---------------------------
> ------------------------------------------------------------
> --------------------------------------------------------+
>                                             ||
> +|                           |||:diagtext:`:enumeration values` |nbsp|
> :placeholder:`B` |nbsp| :diagtext:`and` |nbsp| :placeholder:`C` |nbsp|
> :diagtext:`not handled in switch`|
>                   ||
> +|                           ||+---------------------------
> ------------------------------------------------------------
> --------------------------------------------------------+
>                                             ||
> +|                           |+----------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------------------------------+|
> +|                           ||+---------------------------
> ------------------------------------------------------------
> ---------------------------------------------------------------------------------------+
>                            ||
> +|                           |||:diagtext:`:enumeration values` |nbsp|
> :placeholder:`B`:diagtext:`,` |nbsp| :placeholder:`C`:diagtext:`, and`
> |nbsp| :placeholder:`D` |nbsp| :diagtext:`not handled in switch`|
>                    ||
> +|                           ||+---------------------------
> ------------------------------------------------------------
> ---------------------------------------------------------------------------------------+
>                            ||
> +|                           |+----------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------------------------------+|
> +|                           ||+---------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------------------------------+||
> +|                           |||:diagtext:`:`:placeholder:`A` |nbsp|
> :diagtext:`enumeration values not handled in switch:` |nbsp|
> :placeholder:`B`:diagtext:`,` |nbsp| :placeholder:`C`:diagtext:`,` |nbsp|
> :placeholder:`D`:diagtext:`...`|||
> +|                           ||+---------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------------------------------+||
> +|                           |+----------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------------------------------+|
> ++---------------------------+------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------------------------------+
> +
> ++----------------------------------------------------------
> --------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`case value not in enumerated type`
> |nbsp| :placeholder:`A`|
> ++----------------------------------------------------------
> --------------------------------------+
> +
> +
> +-Wswitch-bool
> +-------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------+
> +|:warning:`warning:` |nbsp| :diagtext:`switch condition has boolean
> value`|
> ++----------------------------------------------------------
> ---------------+
> +
> +
> +-Wswitch-default
> +----------------
> +This diagnostic flag exists for GCC compatibility, and has no effect in
> Clang.
> +
> +-Wswitch-enum
> +-------------
> +**Diagnostic text:**
> +
> ++---------------------------+------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| |+----------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------------------------------------------+|
> +|                           ||+---------------------------
> -------------------------------------------------------------------------------+
>
>                               ||
> +|                           |||:diagtext:`:enumeration value` |nbsp|
> :placeholder:`B` |nbsp| :diagtext:`not explicitly handled in switch`|
>
>                           ||
> +|                           ||+---------------------------
> -------------------------------------------------------------------------------+
>
>                               ||
> +|                           |+----------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------------------------------------------+|
> +|                           ||+---------------------------
> ------------------------------------------------------------
> -------------------------------------------------------------------+
>                                                       ||
> +|                           |||:diagtext:`:enumeration values` |nbsp|
> :placeholder:`B` |nbsp| :diagtext:`and` |nbsp| :placeholder:`C` |nbsp|
> :diagtext:`not explicitly handled in switch`|
>                               ||
> +|                           ||+---------------------------
> ------------------------------------------------------------
> -------------------------------------------------------------------+
>                                                       ||
> +|                           |+----------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------------------------------------------+|
> +|                           ||+---------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------------+                             ||
> +|                           |||:diagtext:`:enumeration values` |nbsp|
> :placeholder:`B`:diagtext:`,` |nbsp| :placeholder:`C`:diagtext:`, and`
> |nbsp| :placeholder:`D` |nbsp| :diagtext:`not explicitly handled in
> switch`|                             ||
> +|                           ||+---------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------------+                             ||
> +|                           |+----------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------------------------------------------+|
> +|                           ||+---------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------------------------------------+||
> +|                           |||:diagtext:`:`:placeholder:`A` |nbsp|
> :diagtext:`enumeration values not explicitly handled in switch:` |nbsp|
> :placeholder:`B`:diagtext:`,` |nbsp| :placeholder:`C`:diagtext:`,` |nbsp|
> :placeholder:`D`:diagtext:`...`|||
> +|                           ||+---------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------------------------------------+||
> +|                           |+----------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------------------------------------------+|
> ++---------------------------+------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------------------------------------------+
> +
> +
> +-Wsync-fetch-and-nand-semantics-changed
> +---------------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`the semantics of this intrinsic
> changed with GCC version 4.4 - the newer semantics are provided here`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------+
> +
> +
> +-Wsynth
> +-------
> +This diagnostic flag exists for GCC compatibility, and has no effect in
> Clang.
> +
> +-Wtautological-compare
> +----------------------
> +Some of the diagnostics controlled by this flag are enabled by default.
> +
> +Also controls `-Wtautological-constant-out-of-range-compare`_,
> `-Wtautological-pointer-compare`_, `-Wtautological-overlap-compare`_,
> `-Wtautological-undefined-compare`_.
> +
> +**Diagnostic text:**
> +
> ++---------------------------+---------------------------+--
> ------------------------------------------------+------------------------+
> +|:warning:`warning:` |nbsp| |+-------------------------+|:diagtext:`comparison
> always evaluates to` |nbsp| |+----------------------+|
> +|                           ||:diagtext:`self-`        ||
>                                   ||:diagtext:`false`     ||
> +|                           |+-------------------------+|
>                                   |+----------------------+|
> +|                           ||:diagtext:`array` |nbsp| ||
>                                   ||:diagtext:`true`      ||
> +|                           |+-------------------------+|
>                                   |+----------------------+|
> +|                           |                           |
>                                   ||:diagtext:`a constant`||
> +|                           |                           |
>                                   |+----------------------+|
> ++---------------------------+---------------------------+--
> ------------------------------------------------+------------------------+
> +
> ++----------------------------------------------------------
> ---------------------------+-------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`bitwise comparison always
> evaluates to` |nbsp| |+-----------------+|
> +|
>              ||:diagtext:`false`||
> +|
>              |+-----------------+|
> +|
>              ||:diagtext:`true` ||
> +|
>              |+-----------------+|
> ++----------------------------------------------------------
> ---------------------------+-------------------+
> +
> ++----------------------------------------------------------
> ---+--------------------------+-----------------------------
> ------------------------------------------------------------
> ------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`comparison of
> unsigned`|+------------------------+| |nbsp| :diagtext:`expression`
> |nbsp| :placeholder:`A` |nbsp| :diagtext:`is always` |nbsp|
> :placeholder:`B`|
> +|                                                             ||
>               ||
>                                                |
> +|
>  |+------------------------+|
>                                                              |
> +|                                                             || |nbsp|
> :diagtext:`enum`||
>                                                  |
> +|
>  |+------------------------+|
>                                                              |
> ++----------------------------------------------------------
> ---+--------------------------+-----------------------------
> ------------------------------------------------------------
> ------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------------------+-------------
> -------------+----------------------------------------------
> ------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`comparison of` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`unsigned`|+------------------------+|
> |nbsp| :diagtext:`expression is always` |nbsp| :placeholder:`B`|
> +|
>                                 ||                        ||
>                                                 |
> +|
>                                 |+------------------------+|
>                                                 |
> +|
>                                 || |nbsp| :diagtext:`enum`||
>                                                 |
> +|
>                                 |+------------------------+|
>                                                 |
> ++----------------------------------------------------------
> ----------------------------------------------+-------------
> -------------+----------------------------------------------
> ------------------+
> +
> +
> +-Wtautological-constant-out-of-range-compare
> +--------------------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --+------------------------------------------------+--------
> ------------------------+-----------------------------------
> -----------------------+------------------------------------
> -+-------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`comparison of` |nbsp|
> |+----------------------------------------------+| |nbsp|
> :diagtext:`with` |nbsp| |+--------------------------------------------------------+|
> |nbsp| :diagtext:`is always` |nbsp| |+-----------------+|
> +|
> ||+--------------------------------------------+||
>         ||+------------------------------------------------------+||
>                                ||:diagtext:`false`||
> +|
> |||:diagtext:`constant` |nbsp| :placeholder:`A`|||
>       |||:diagtext:`expression of type` |nbsp| :placeholder:`C`|||
>                            |+-----------------+|
> +|
> ||+--------------------------------------------+||
>         ||+------------------------------------------------------+||
>                                ||:diagtext:`true` ||
> +|
> |+----------------------------------------------+|
>         |+--------------------------------------------------------+|
>                                |+-----------------+|
> +|
> ||:diagtext:`true`                              ||
>       ||:diagtext:`boolean expression`                          ||
>                            |                   |
> +|
> |+----------------------------------------------+|
>         |+--------------------------------------------------------+|
>                                |                   |
> +|
> ||:diagtext:`false`                             ||
>       |                                                          |
>                            |                   |
> +|
> |+----------------------------------------------+|
>         |                                                          |
>                              |                   |
> ++----------------------------------------------------------
> --+------------------------------------------------+--------
> ------------------------+-----------------------------------
> -----------------------+------------------------------------
> -+-------------------+
> +
> +
> +-Wtautological-overlap-compare
> +------------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------------+-------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`overlapping comparisons always
> evaluate to` |nbsp| |+-----------------+|
> +|
>                  ||:diagtext:`false`||
> +|
>                  |+-----------------+|
> +|
>                  ||:diagtext:`true` ||
> +|
>                  |+-----------------+|
> ++----------------------------------------------------------
> -------------------------------+-------------------+
> +
> +
> +-Wtautological-pointer-compare
> +------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------+---------------------------+---------------------
> -------------------------------------+----------------------
> ---+----------------------------------------+---------------
> ----+--------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`comparison of nonnull` |nbsp|
> |+-------------------------+| |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`'`
> |nbsp| |+-----------------------+|:diagtext:`equal to a null pointer is
> '`|+-----------------+|:diagtext:`' on first encounter`|
> +|
> ||:diagtext:`function call`||
>             ||:diagtext:`not` |nbsp| ||
>     ||:diagtext:`true` ||                                |
> +|
> |+-------------------------+|
>             |+-----------------------+|
>     |+-----------------+|                                |
> +|
> ||:diagtext:`parameter`    ||
>             ||                       ||
>     ||:diagtext:`false`||                                |
> +|
> |+-------------------------+|
>             |+-----------------------+|
>     |+-----------------+|                                |
> ++----------------------------------------------------------
> ----------+---------------------------+---------------------
> -------------------------------------+----------------------
> ---+----------------------------------------+---------------
> ----+--------------------------------+
> +
> ++----------------------------------------------------------
> --+------------------------+--------------------------------
> --------------------------+-------------------------+-------
> ----------------------------------------------+-------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`comparison of` |nbsp|
> |+----------------------+| |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`'`
> |nbsp| |+-----------------------+|:diagtext:`equal to a null pointer is
> always` |nbsp| |+-----------------+|
> +|
> ||:diagtext:`address of`||
>         ||:diagtext:`not` |nbsp| ||
>              ||:diagtext:`true` ||
> +|
> |+----------------------+|
>         |+-----------------------+|
>              |+-----------------+|
> +|
> ||:diagtext:`function`  ||
>         ||                       ||
>              ||:diagtext:`false`||
> +|
> |+----------------------+|
>         |+-----------------------+|
>              |+-----------------+|
> +|
> ||:diagtext:`array`     ||
>         |                         |
>              |                   |
> +|
> |+----------------------+|
>         |                         |
>              |                   |
> ++----------------------------------------------------------
> --+------------------------+--------------------------------
> --------------------------+-------------------------+-------
> ----------------------------------------------+-------------------+
> +
> +
> +-Wtautological-undefined-compare
> +--------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------------------------------+--
> -----------------+
> +|:warning:`warning:` |nbsp| :diagtext:`reference cannot be bound to
> dereferenced null pointer in well-defined C++ code; comparison may be
> assumed to always evaluate to` |nbsp| |+-----------------+|
> +|
>
>                            ||:diagtext:`true` ||
> +|
>
>                            |+-----------------+|
> +|
>
>                            ||:diagtext:`false`||
> +|
>
>                            |+-----------------+|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------------------------------+--
> -----------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------+-------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'this' pointer cannot be null in
> well-defined C++ code; comparison may be assumed to always evaluate to`
> |nbsp| |+-----------------+|
> +|
>
>   ||:diagtext:`true` ||
> +|
>
>   |+-----------------+|
> +|
>
>   ||:diagtext:`false`||
> +|
>
>   |+-----------------+|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------+-------------------+
> +
> +
> +-Wtentative-definition-incomplete-type
> +--------------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`tentative definition of variable
> with internal linkage has incomplete non-array type` |nbsp|
> :placeholder:`A`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------+
> +
> +
> +-Wthread-safety
> +---------------
> +Controls `-Wthread-safety-attributes`_, `-Wthread-safety-analysis`_,
> `-Wthread-safety-precise`_, `-Wthread-safety-reference`_.
> +
> +
> +-Wthread-safety-analysis
> +------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp|
> :diagtext:`'`:placeholder:`B`:diagtext:`' must be acquired before
> '`:placeholder:`C`:diagtext:`'`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------+
> +
> ++----------------------------------------------------------
> -----------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`Cycle in acquired\_before/after
> dependencies, starting with '`:placeholder:`A`:diagtext:`'`|
> ++----------------------------------------------------------
> -----------------------------------------------------------------------+
> +
> ++---------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`cannot resolve lock expression`|
> ++---------------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`acquiring` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' that is already held`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`expecting` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' to be held at start of
> each loop`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`expecting` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' to be held at the end of
> function`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`cannot call function
> '`:placeholder:`B`:diagtext:`' while` |nbsp| :placeholder:`A` |nbsp|
> :diagtext:`'`:placeholder:`C`:diagtext:`' is held`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------+------------------------------------------
> ----------------+
> +|:warning:`warning:` |nbsp| :diagtext:`calling function
> '`:placeholder:`B`:diagtext:`' requires holding` |nbsp| :placeholder:`A`
> |nbsp| |+--------------------------------------------------------+|
> +|
>
>  ||+------------------------------------------+            ||
> +|
>
>  |||:diagtext:`'`:placeholder:`C`:diagtext:`'`|            ||
> +|
>
>  ||+------------------------------------------+            ||
> +|
>
>  |+--------------------------------------------------------+|
> +|
>
>  ||+------------------------------------------------------+||
> +|
>
>  |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`|||
> +|
>
>  ||+------------------------------------------------------+||
> +|
>
>  |+--------------------------------------------------------+|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------+------------------------------------------
> ----------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp|
> :diagtext:`'`:placeholder:`B`:diagtext:`' is acquired exclusively and
> shared in the same scope`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp|
> :diagtext:`'`:placeholder:`B`:diagtext:`' is not held on every path
> through here`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp|
> :diagtext:`'`:placeholder:`B`:diagtext:`' is still held at the end of
> function`|
> ++----------------------------------------------------------
> ------------------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`releasing` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' that was not held`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------+-----------------------+-----------------
> ---------------------------+-----------------------+--------
> ------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`releasing` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' using` |nbsp|
> |+---------------------+| |nbsp| :diagtext:`access, expected` |nbsp|
> |+---------------------+| |nbsp| :diagtext:`access`|
> +|
>
> ||:diagtext:`shared`   ||
> ||:diagtext:`shared`   ||                          |
> +|
>
> |+---------------------+|
> |+---------------------+|                          |
> +|
>
> ||:diagtext:`exclusive`||
> ||:diagtext:`exclusive`||                          |
> +|
>
> |+---------------------+|
> |+---------------------+|                          |
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------+-----------------------+-----------------
> ---------------------------+-----------------------+--------
> ------------------+
> +
> ++---------------------------+---------------------+--------
> ------------------------------------------------------------
> -------------------------------+-----------------------------------+
> +|:warning:`warning:` |nbsp| |+-------------------+| |nbsp| :diagtext:`the
> value pointed to by '`:placeholder:`A`:diagtext:`' requires holding` |nbsp|
> |+---------------------------------+|
> +|                           ||:diagtext:`reading`||
>
>  ||:diagtext:`any mutex`            ||
> +|                           |+-------------------+|
>
>  |+---------------------------------+|
> +|                           ||:diagtext:`writing`||
>
>  ||:diagtext:`any mutex exclusively`||
> +|                           |+-------------------+|
>
>  |+---------------------------------+|
> ++---------------------------+---------------------+--------
> ------------------------------------------------------------
> -------------------------------+-----------------------------------+
> +
> ++---------------------------+---------------------+--------
> ------------------------------------------------------------
> -------------------------------------------------------+----
> ------------------------------------------------------+
> +|:warning:`warning:` |nbsp| |+-------------------+| |nbsp| :diagtext:`the
> value pointed to by '`:placeholder:`B`:diagtext:`' requires holding` |nbsp|
> :placeholder:`A` |nbsp| |+----------------------------
> ----------------------------+|
> +|                           ||:diagtext:`reading`||
>
>                          ||+------------------------------------------+
>           ||
> +|                           |+-------------------+|
>
>                          |||:diagtext:`'`:placeholder:`C`:diagtext:`'`|
>           ||
> +|                           ||:diagtext:`writing`||
>
>                          ||+------------------------------------------+
>           ||
> +|                           |+-------------------+|
>
>                          |+----------------------------
> ----------------------------+|
> +|                           |                     |
>
>                          ||+---------------------------
> ---------------------------+||
> +|                           |                     |
>
>                          |||:diagtext:`'`:placeholder:`C`:diagtext:`'
> exclusively`|||
> +|                           |                     |
>
>                          ||+---------------------------
> ---------------------------+||
> +|                           |                     |
>
>                          |+----------------------------
> ----------------------------+|
> ++---------------------------+---------------------+--------
> ------------------------------------------------------------
> -------------------------------------------------------+----
> ------------------------------------------------------+
> +
> ++---------------------------+---------------------+--------
> ------------------------------------------------------------
> ----------------+-----------------------------------+
> +|:warning:`warning:` |nbsp| |+-------------------+| |nbsp|
> :diagtext:`variable '`:placeholder:`A`:diagtext:`' requires holding` |nbsp|
> |+---------------------------------+|
> +|                           ||:diagtext:`reading`||
>
> ||:diagtext:`any mutex`            ||
> +|                           |+-------------------+|
>
> |+---------------------------------+|
> +|                           ||:diagtext:`writing`||
>
> ||:diagtext:`any mutex exclusively`||
> +|                           |+-------------------+|
>
> |+---------------------------------+|
> ++---------------------------+---------------------+--------
> ------------------------------------------------------------
> ----------------+-----------------------------------+
> +
> ++---------------------------+---------------------+--------
> ------------------------------------------------------------
> ----------------------------------------+-------------------
> ---------------------------------------+
> +|:warning:`warning:` |nbsp| |+-------------------+| |nbsp|
> :diagtext:`variable '`:placeholder:`B`:diagtext:`' requires holding` |nbsp|
> :placeholder:`A` |nbsp| |+----------------------------
> ----------------------------+|
> +|                           ||:diagtext:`reading`||
>
>           ||+------------------------------------------+            ||
> +|                           |+-------------------+|
>
>           |||:diagtext:`'`:placeholder:`C`:diagtext:`'`|            ||
> +|                           ||:diagtext:`writing`||
>
>           ||+------------------------------------------+            ||
> +|                           |+-------------------+|
>
>           |+--------------------------------------------------------+|
> +|                           |                     |
>
>           ||+------------------------------------------------------+||
> +|                           |                     |
>
>           |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`|||
> +|                           |                     |
>
>           ||+------------------------------------------------------+||
> +|                           |                     |
>
>           |+--------------------------------------------------------+|
> ++---------------------------+---------------------+--------
> ------------------------------------------------------------
> ----------------------------------------+-------------------
> ---------------------------------------+
> +
> +
> +-Wthread-safety-attributes
> +--------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`invalid capability name
> '`:placeholder:`A`:diagtext:`'; capability name must be 'mutex' or
> 'role'`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute
> requires arguments whose type is annotated with 'capability' attribute;
> type here is` |nbsp| :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute
> can only be applied in a context annotated with 'capability("mutex")'
> attribute`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`only
> applies to pointer types; type here is` |nbsp| :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------+
> +|:warning:`warning:` |nbsp| :diagtext:`ignoring` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`attribute because its argument is invalid`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------+
> +
> +
> +-Wthread-safety-beta
> +--------------------
> +**Diagnostic text:**
> +
> ++------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`Thread safety beta warning.`|
> ++------------------------------------------------------------------+
> +
> +
> +-Wthread-safety-negative
> +------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`acquiring` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' requires negative
> capability '`:placeholder:`C`:diagtext:`'`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------------------------------+
> +
> +
> +-Wthread-safety-precise
> +-----------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------+------------------------------------------
> ----------------+
> +|:warning:`warning:` |nbsp| :diagtext:`calling function
> '`:placeholder:`B`:diagtext:`' requires holding` |nbsp| :placeholder:`A`
> |nbsp| |+--------------------------------------------------------+|
> +|
>
>  ||+------------------------------------------+            ||
> +|
>
>  |||:diagtext:`'`:placeholder:`C`:diagtext:`'`|            ||
> +|
>
>  ||+------------------------------------------+            ||
> +|
>
>  |+--------------------------------------------------------+|
> +|
>
>  ||+------------------------------------------------------+||
> +|
>
>  |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`|||
> +|
>
>  ||+------------------------------------------------------+||
> +|
>
>  |+--------------------------------------------------------+|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------+------------------------------------------
> ----------------+
> +
> ++---------------------------+---------------------+--------
> ------------------------------------------------------------
> -------------------------------------------------------+----
> ------------------------------------------------------+
> +|:warning:`warning:` |nbsp| |+-------------------+| |nbsp| :diagtext:`the
> value pointed to by '`:placeholder:`B`:diagtext:`' requires holding` |nbsp|
> :placeholder:`A` |nbsp| |+----------------------------
> ----------------------------+|
> +|                           ||:diagtext:`reading`||
>
>                          ||+------------------------------------------+
>           ||
> +|                           |+-------------------+|
>
>                          |||:diagtext:`'`:placeholder:`C`:diagtext:`'`|
>           ||
> +|                           ||:diagtext:`writing`||
>
>                          ||+------------------------------------------+
>           ||
> +|                           |+-------------------+|
>
>                          |+----------------------------
> ----------------------------+|
> +|                           |                     |
>
>                          ||+---------------------------
> ---------------------------+||
> +|                           |                     |
>
>                          |||:diagtext:`'`:placeholder:`C`:diagtext:`'
> exclusively`|||
> +|                           |                     |
>
>                          ||+---------------------------
> ---------------------------+||
> +|                           |                     |
>
>                          |+----------------------------
> ----------------------------+|
> ++---------------------------+---------------------+--------
> ------------------------------------------------------------
> -------------------------------------------------------+----
> ------------------------------------------------------+
> +
> ++---------------------------+---------------------+--------
> ------------------------------------------------------------
> ----------------------------------------+-------------------
> ---------------------------------------+
> +|:warning:`warning:` |nbsp| |+-------------------+| |nbsp|
> :diagtext:`variable '`:placeholder:`B`:diagtext:`' requires holding` |nbsp|
> :placeholder:`A` |nbsp| |+----------------------------
> ----------------------------+|
> +|                           ||:diagtext:`reading`||
>
>           ||+------------------------------------------+            ||
> +|                           |+-------------------+|
>
>           |||:diagtext:`'`:placeholder:`C`:diagtext:`'`|            ||
> +|                           ||:diagtext:`writing`||
>
>           ||+------------------------------------------+            ||
> +|                           |+-------------------+|
>
>           |+--------------------------------------------------------+|
> +|                           |                     |
>
>           ||+------------------------------------------------------+||
> +|                           |                     |
>
>           |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`|||
> +|                           |                     |
>
>           ||+------------------------------------------------------+||
> +|                           |                     |
>
>           |+--------------------------------------------------------+|
> ++---------------------------+---------------------+--------
> ------------------------------------------------------------
> ----------------------------------------+-------------------
> ---------------------------------------+
> +
> +
> +-Wthread-safety-reference
> +-------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------+-----------------------------
> -----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`passing variable
> '`:placeholder:`B`:diagtext:`' by reference requires holding` |nbsp|
> :placeholder:`A` |nbsp| |+----------------------------
> ----------------------------+|
> +|
>
> ||+------------------------------------------+            ||
> +|
>
> |||:diagtext:`'`:placeholder:`C`:diagtext:`'`|            ||
> +|
>
> ||+------------------------------------------+            ||
> +|
>
> |+--------------------------------------------------------+|
> +|
>
> ||+------------------------------------------------------+||
> +|
>
> |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`|||
> +|
>
> ||+------------------------------------------------------+||
> +|
>
> |+--------------------------------------------------------+|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------+-----------------------------
> -----------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------------+-------------
> ---------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`passing the value that
> '`:placeholder:`B`:diagtext:`' points to by reference requires holding`
> |nbsp| :placeholder:`A` |nbsp| |+----------------------------
> ----------------------------+|
> +|
>
>                 ||+------------------------------------------+
> ||
> +|
>
>                 |||:diagtext:`'`:placeholder:`C`:diagtext:`'`|
> ||
> +|
>
>                 ||+------------------------------------------+
> ||
> +|
>
>                 |+----------------------------
> ----------------------------+|
> +|
>
>                 ||+---------------------------
> ---------------------------+||
> +|
>
>                 |||:diagtext:`'`:placeholder:`C`:diagtext:`'
> exclusively`|||
> +|
>
>                 ||+---------------------------
> ---------------------------+||
> +|
>
>                 |+----------------------------
> ----------------------------+|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------------+-------------
> ---------------------------------------------+
> +
> +
> +-Wthread-safety-verbose
> +-----------------------
> +**Diagnostic text:**
> +
> ++---------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`Thread safety verbose warning.`|
> ++---------------------------------------------------------------------+
> +
> +
> +-Wtrigraphs
> +-----------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`trigraph converted to
> '`:placeholder:`A`:diagtext:`' character`|
> ++----------------------------------------------------------
> -------------------------------------------+
> +
> ++------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`trigraph ends block comment`|
> ++------------------------------------------------------------------+
> +
> ++-------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`trigraph ignored`|
> ++-------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ---------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`ignored trigraph would end block
> comment`|
> ++----------------------------------------------------------
> ---------------------+
> +
> +
> +-Wtype-limits
> +-------------
> +This diagnostic flag exists for GCC compatibility, and has no effect in
> Clang.
> +
> +-Wtype-safety
> +-------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`specified` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`type tag requires a null pointer`|
> ++----------------------------------------------------------
> ------------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -+-----------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`argument type` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`doesn't match specified` |nbsp|
> :placeholder:`B` |nbsp| :diagtext:`type tag` |nbsp|
> |+---------------------------------------------------+|
> +|
>
>                                ||+---------------------------
> ----------------------+||
> +|
>
>                                |||:diagtext:`that requires` |nbsp|
> :placeholder:`D`|||
> +|
>
>                                ||+---------------------------
> ----------------------+||
> +|
>
>                                |+----------------------------
> -----------------------+|
> +|
>
>                                ||
>          ||
> +|
>
>                                |+----------------------------
> -----------------------+|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -+-----------------------------------------------------+
> +
> ++----------------------------------------------------------
> -----------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`this type tag was not designed to
> be used with this function`|
> ++----------------------------------------------------------
> -----------------------------------------+
> +
> +
> +-Wtypedef-redefinition
> +----------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`redefinition of typedef` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`is a C11 feature`|
> ++----------------------------------------------------------
> ----------------------------------------------------------------+
> +
> +
> +-Wtypename-missing
> +------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------+
> +|:warning:`warning:` |nbsp| :diagtext:`missing 'typename' prior to
> dependent type name '`:placeholder:`A`:placeholder:`B`:diagtext:`'`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------+
> +
> +
> +-Wunavailable-declarations
> +--------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`may be
> unavailable because the receiver type is unknown`|
> ++----------------------------------------------------------
> ------------------------------------------------------------+
> +
> +
> +-Wundeclared-selector
> +---------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`undeclared selector` |nbsp|
> :placeholder:`A`|
> ++----------------------------------------------------------
> ------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`undeclared selector` |nbsp|
> :placeholder:`A`:diagtext:`; did you mean` |nbsp|
> :placeholder:`B`:diagtext:`?`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------+
> +
> +
> +-Wundef
> +-------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------------------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not
> defined, evaluates to 0`|
> ++----------------------------------------------------------
> -----------------------------------+
> +
> +
> +-Wundefined-bool-conversion
> +---------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`reference cannot be bound to
> dereferenced null pointer in well-defined C++ code; pointer may be assumed
> to always convert to true`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'this' pointer cannot be null in
> well-defined C++ code; pointer may be assumed to always convert to true`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------+
> +
> +
> +-Wundefined-func-template
> +-------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`instantiation of function` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`required here, but no definition is
> available`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------+
> +
> +
> +-Wundefined-inline
> +------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`inline function` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`is not defined`|
> ++----------------------------------------------------------
> ------------------------------------------------------+
> +
> +
> +-Wundefined-internal
> +--------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++---------------------------+----------------------+-------
> ------------------------------------------------------------
> ----------------+
> +|:warning:`warning:` |nbsp| |+--------------------+| |nbsp|
> :placeholder:`B` |nbsp| :diagtext:`has internal linkage but is not defined`|
> +|                           ||:diagtext:`function`||
>                                                              |
> +|                           |+--------------------+|
>                                                              |
> +|                           ||:diagtext:`variable`||
>                                                              |
> +|                           |+--------------------+|
>                                                              |
> ++---------------------------+----------------------+-------
> ------------------------------------------------------------
> ----------------+
> +
> +
> +-Wundefined-reinterpret-cast
> +----------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> --------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`dereference of type` |nbsp|
> :placeholder:`B` |nbsp| :diagtext:`that was reinterpret\_cast from type`
> |nbsp| :placeholder:`A` |nbsp| :diagtext:`has undefined behavior`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> --------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`reinterpret\_cast from` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp|
> :diagtext:`has undefined behavior`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------------------------+
> +
> +
> +-Wundefined-var-template
> +------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`instantiation of variable` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`required here, but no definition is
> available`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------+
> +
> +
> +-Wunevaluated-expression
> +------------------------
> +This diagnostic is enabled by default.
> +
> +Also controls `-Wpotentially-evaluated-expression`_.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`expression with side effects has
> no effect in an unevaluated context`|
> ++----------------------------------------------------------
> -------------------------------------------------+
> +
> +
> +-Wunguarded-availability
> +------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is only
> available conditionally`|
> ++----------------------------------------------------------
> ------------------------------------+
> +
> ++----------------------------------------------------------
> --------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`may be
> partial because the receiver type is unknown`|
> ++----------------------------------------------------------
> --------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is
> partial:` |nbsp| :placeholder:`B`|
> ++----------------------------------------------------------
> ----------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is only
> available on` |nbsp| :placeholder:`B` |nbsp| :placeholder:`C` |nbsp|
> :diagtext:`or newer`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------------+
> +
> +
> +-Wunicode
> +---------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`incomplete universal character
> name; treating as '\\' followed by identifier`|
> ++----------------------------------------------------------
> ---------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`\\`:placeholder:`A` |nbsp|
> :diagtext:`used with no following hex digits; treating as '\\' followed by
> identifier`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------+
> +
> ++----------------------------------------------------------
> -------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`universal character name refers to
> a surrogate character`|
> ++----------------------------------------------------------
> -------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------+
> +|:warning:`warning:` |nbsp| :diagtext:`universal character names are only
> valid in C99 or C++; treating as '\\' followed by identifier`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------+
> +
> ++----------------------------------------------------------
> -----------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`universal character names are only
> valid in C99 or C++`|
> ++----------------------------------------------------------
> -----------------------------------+
> +
> +
> +-Wunicode-whitespace
> +--------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`treating Unicode character as
> whitespace`|
> ++----------------------------------------------------------
> ---------------------+
> +
> +
> +-Wuninitialized
> +---------------
> +Some of the diagnostics controlled by this flag are enabled by default.
> +
> +Also controls `-Wsometimes-uninitialized`_, `-Wstatic-self-init`_.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`base class` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`is uninitialized when used here to
> access` |nbsp| :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------+
> +
> ++----------------------------------------------------------
> -------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`field` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`is uninitialized when used here`|
> ++----------------------------------------------------------
> -------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------+
> +|:warning:`warning:` |nbsp| :diagtext:`reference` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`is not yet bound to a value when used here`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`block pointer variable` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`is uninitialized when captured by block`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`variable` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`is uninitialized when used within its own initialization`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`reference` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`is not yet bound to a value when used within its own
> initialization`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --+-------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`variable` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`is uninitialized when` |nbsp|
> |+-----------------------------+|
> +|
>                                                 ||:diagtext:`used here`
>     ||
> +|
>
> |+-----------------------------+|
> +|
>                                                 ||:diagtext:`captured by
> block`||
> +|
>
> |+-----------------------------+|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --+-------------------------------+
> +
> +
> +-Wunknown-argument
> +------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`unknown argument ignored in
> clang-cl: '`:placeholder:`A`:diagtext:`'`|
> ++----------------------------------------------------------
> -------------------------------------------------+
> +
> +
> +-Wunknown-attributes
> +--------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`unknown attribute` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`ignored`|
> ++----------------------------------------------------------
> -------------------------------------------------+
> +
> +
> +-Wunknown-escape-sequence
> +-------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`unknown escape sequence
> '\\`:placeholder:`A`:diagtext:`'`|
> ++----------------------------------------------------------
> -------------------------------------+
> +
> +
> +-Wunknown-pragmas
> +-----------------
> +Some of the diagnostics controlled by this flag are enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`expected 'ON' or 'OFF' or
> 'DEFAULT' in pragma`|
> ++----------------------------------------------------------
> --------------------------+
> +
> ++----------------------------------------------------------
> ----------------+
> +|:warning:`warning:` |nbsp| :diagtext:`expected end of directive in
> pragma`|
> ++----------------------------------------------------------
> ----------------+
> +
> ++-----------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`unknown pragma in STDC namespace`|
> ++-----------------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`pragma diagnostic pop could not
> pop, no matching push`|
> ++----------------------------------------------------------
> ----------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`pragma diagnostic expected
> 'error', 'warning', 'ignored', 'fatal', 'push', or 'pop'`|
> ++----------------------------------------------------------
> ----------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`pragma diagnostic expected option
> name (e.g. "-Wundef")`|
> ++----------------------------------------------------------
> ------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`unexpected token in pragma
> diagnostic`|
> ++----------------------------------------------------------
> ------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`unknown warning group
> '`:placeholder:`A`:diagtext:`', ignored`|
> ++----------------------------------------------------------
> ------------------------------------------+
> +
> ++-------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`unknown pragma ignored`|
> ++-------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`pragma include\_alias expected
> '`:placeholder:`A`:diagtext:`'`|
> ++----------------------------------------------------------
> ------------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`pragma include\_alias expected
> include filename`|
> ++----------------------------------------------------------
> ----------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`angle-bracketed include
> <`:placeholder:`A`:diagtext:`> cannot be aliased to double-quoted include
> "`:placeholder:`B`:diagtext:`"`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`double-quoted include
> "`:placeholder:`A`:diagtext:`" cannot be aliased to angle-bracketed include
> <`:placeholder:`B`:diagtext:`>`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`#pragma warning expected
> '`:placeholder:`A`:diagtext:`'`|
> ++----------------------------------------------------------
> ------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`#pragma warning expected a warning
> number`|
> ++----------------------------------------------------------
> ----------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`#pragma warning(push, level)
> requires a level between 0 and 4`|
> ++----------------------------------------------------------
> ------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`#pragma warning expected 'push',
> 'pop', 'default', 'disable', 'error', 'once', 'suppress', 1, 2, 3, or 4`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`pragma STDC FENV\_ACCESS ON is not
> supported, ignoring pragma`|
> ++----------------------------------------------------------
> ------------------------------------------+
> +
> +
> +-Wunknown-sanitizers
> +--------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`unknown sanitizer
> '`:placeholder:`A`:diagtext:`' ignored`|
> ++----------------------------------------------------------
> -------------------------------------+
> +
> +
> +-Wunknown-warning-option
> +------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++------------------------------------------------------+---
> ------------------+-----------------------------------------
> ----------------+-------------------------------------------
> -------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`unknown` |nbsp|
> |+-------------------+| |nbsp| :diagtext:`option
> '`:placeholder:`B`:diagtext:`'`|+---------------------------
> ---------------------------------+|
> +|
> ||:diagtext:`warning`||
>      ||                                                            ||
> +|
> |+-------------------+|
>      |+------------------------------------------------------------+|
> +|
> ||:diagtext:`remark` ||
>      ||+----------------------------------------------------------+||
> +|
> |+-------------------+|
>      |||:diagtext:`; did you mean '`:placeholder:`D`:diagtext:`'?`|||
> +|                                                      |
>    |
>  ||+----------------------------------------------------------+||
> +|                                                      |
>    |
>  |+------------------------------------------------------------+|
> ++------------------------------------------------------+---
> ------------------+-----------------------------------------
> ----------------+-------------------------------------------
> -------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`unknown` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`warning specifier: '`:placeholder:`B`:diagtext:`'`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------+
> +
> +
> +-Wunnamed-type-template-args
> +----------------------------
> +Some of the diagnostics controlled by this flag are enabled by default.
> +
> +Also controls `-Wc++98-compat-unnamed-type-template-args`_.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------+
> +|:warning:`warning:` |nbsp| :diagtext:`template argument uses unnamed
> type`|
> ++----------------------------------------------------------
> ----------------+
> +
> +
> +-Wunneeded-internal-declaration
> +-------------------------------
> +**Diagnostic text:**
> +
> ++---------------------------+----------------------+-------
> ------------------------------------------------------------
> --------------+
> +|:warning:`warning:` |nbsp| |+--------------------+| |nbsp|
> :placeholder:`B` |nbsp| :diagtext:`is not needed and will not be emitted`|
> +|                           ||:diagtext:`function`||
>                                                            |
> +|                           |+--------------------+|
>                                                            |
> +|                           ||:diagtext:`variable`||
>                                                            |
> +|                           |+--------------------+|
>                                                            |
> ++---------------------------+----------------------+-------
> ------------------------------------------------------------
> --------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'static' function` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`declared in header file should be
> declared 'static inline'`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------+
> +
> +
> +-Wunneeded-member-function
> +--------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------+
> +|:warning:`warning:` |nbsp| :diagtext:`member function` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`is not needed and will not be emitted`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------+
> +
> +
> +-Wunreachable-code
> +------------------
> +Also controls `-Wunreachable-code-loop-increment`_.
> +
> +**Diagnostic text:**
> +
> ++------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`code will never be executed`|
> ++------------------------------------------------------------------+
> +
> +
> +-Wunreachable-code-aggressive
> +-----------------------------
> +Controls `-Wunreachable-code`_, `-Wunreachable-code-break`_,
> `-Wunreachable-code-return`_.
> +
> +
> +-Wunreachable-code-break
> +------------------------
> +**Diagnostic text:**
> +
> ++---------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'break' will never be executed`|
> ++---------------------------------------------------------------------+
> +
> +
> +-Wunreachable-code-loop-increment
> +---------------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`loop will run at most once (loop
> increment never executed)`|
> ++----------------------------------------------------------
> ---------------------------------------+
> +
> +
> +-Wunreachable-code-return
> +-------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`'return' will never be executed`|
> ++----------------------------------------------------------------------+
> +
> +
> +-Wunsequenced
> +-------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`multiple unsequenced modifications
> to` |nbsp| :placeholder:`A`|
> ++----------------------------------------------------------
> ------------------------------------------+
> +
> ++----------------------------------------------------------
> -------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`unsequenced modification and
> access to` |nbsp| :placeholder:`A`|
> ++----------------------------------------------------------
> -------------------------------------------+
> +
> +
> +-Wunsupported-cb
> +----------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`ignoring '-mcompact-branches='
> option because the '`:placeholder:`A`:diagtext:`' architecture does not
> support it`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------+
> +
> +
> +-Wunsupported-dll-base-class-template
> +-------------------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------------+------------------------------------+-----
> -------------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`propagating dll attribute to`
> |nbsp| |+----------------------------------+| |nbsp| :diagtext:`base
> class template without dll attribute is not supported`|
> +|
>    ||:diagtext:`already instantiated`  ||
>                                             |
> +|
>    |+----------------------------------+|
>                                               |
> +|
>    ||:diagtext:`explicitly specialized`||
>                                             |
> +|
>    |+----------------------------------+|
>                                               |
> ++----------------------------------------------------------
> -----------------+------------------------------------+-----
> -------------------------------------------------------------------------+
> +
> +
> +-Wunsupported-friend
> +--------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`dependent nested name specifier
> '`:placeholder:`A`:diagtext:`' for friend template declaration is not
> supported; ignoring this friend declaration`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`dependent nested name specifier
> '`:placeholder:`A`:diagtext:`' for friend class declaration is not
> supported; turning off access control for` |nbsp| :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -------------------------+
> +
> +
> +-Wunsupported-nan
> +-----------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`ignoring '-mnan=2008' option
> because the '`:placeholder:`A`:diagtext:`' architecture does not support
> it`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`ignoring '-mnan=legacy' option
> because the '`:placeholder:`A`:diagtext:`' architecture does not support
> it`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------+
> +
> +
> +-Wunsupported-visibility
> +------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`target does not support
> 'protected' visibility; using 'default'`|
> ++----------------------------------------------------------
> --------------------------------------------+
> +
> +
> +-Wunused
> +--------
> +Some of the diagnostics controlled by this flag are enabled by default.
> +
> +Controls `-Wunused-argument`_, `-Wunused-function`_, `-Wunused-label`_,
> `-Wunused-private-field`_, `-Wunused-local-typedef`_, `-Wunused-value`_,
> `-Wunused-variable`_, `-Wunused-property-ivar`_.
> +
> +
> +-Wunused-argument
> +-----------------
> +This diagnostic flag exists for GCC compatibility, and has no effect in
> Clang.
> +
> +-Wunused-command-line-argument
> +------------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`joined argument expects additional
> value: '`:placeholder:`A`:diagtext:`'`|
> ++----------------------------------------------------------
> -----------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------+-----------------
> -----------------------------------------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A`:diagtext:`:
> '`:placeholder:`B`:diagtext:`' input unused`|+---------------------
> -----------------------------------------------+|
> +|
>                             ||+---------------------------
> ---------------------------------------+||
> +|
>                             ||| |nbsp| :diagtext:`when
> '`:placeholder:`D`:diagtext:`' is present`|||
> +|
>                             ||+---------------------------
> ---------------------------------------+||
> +|
>                             |+----------------------------
> ----------------------------------------+|
> +|
>                             ||
>                       ||
> +|
>                             |+----------------------------
> ----------------------------------------+|
> ++----------------------------------------------------------
> ------------------------------------------+-----------------
> -----------------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A`:diagtext:`:
> '`:placeholder:`B`:diagtext:`' input unused in cpp mode`|
> ++----------------------------------------------------------
> ------------------------------------------------------+
> +
> ++----------------------------------------------------------
> ----------------------------+-------------------------------
> ----------------------------------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A`:diagtext:`: previously
> preprocessed input`|+----------------------------------------------------
> -----------------------+|
> +|
>               ||+---------------------------------------------------------
> ----------------+||
> +|
>               ||| |nbsp| :diagtext:`unused when
> '`:placeholder:`C`:diagtext:`' is present`|||
> +|
>               ||+---------------------------------------------------------
> ----------------+||
> +|
>               |+----------------------------------------------------------
> -----------------+|
> +|
>               ||
>                ||
> +|
>               |+----------------------------------------------------------
> -----------------+|
> ++----------------------------------------------------------
> ----------------------------+-------------------------------
> ----------------------------------------------+
> +
> ++----------------------------------------------------------
> -----------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`argument unused during
> compilation: '`:placeholder:`A`:diagtext:`'`|
> ++----------------------------------------------------------
> -----------------------------------------------+
> +
> +
> +-Wunused-comparison
> +-------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++---------------------------+------------------------------
> -----------+--------------------------------------------+
> +|:warning:`warning:` |nbsp| |+---------------------------------------+|
> |nbsp| :diagtext:`comparison result unused`|
> +|                           ||+----------------+--------------------+||
>                                           |
> +|                           |||+--------------+|:diagtext:`equality`|||
>                                           |
> +|                           ||||              ||                    |||
>                                           |
> +|                           |||+--------------+|                    |||
>                                           |
> +|                           ||||:diagtext:`in`||                    |||
>                                           |
> +|                           |||+--------------+|                    |||
>                                           |
> +|                           ||+----------------+--------------------+||
>                                           |
> +|                           |+---------------------------------------+|
>                                           |
> +|                           ||:diagtext:`relational`                 ||
>                                           |
> +|                           |+---------------------------------------+|
>                                           |
> ++---------------------------+------------------------------
> -----------+--------------------------------------------+
> +
> +
> +-Wunused-const-variable
> +-----------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`unused variable` |nbsp|
> :placeholder:`A`|
> ++----------------------------------------------------------
> --------------------+
> +
> +
> +-Wunused-exception-parameter
> +----------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`unused exception parameter` |nbsp|
> :placeholder:`A`|
> ++----------------------------------------------------------
> -------------------------------+
> +
> +
> +-Wunused-function
> +-----------------
> +Also controls `-Wunneeded-internal-declaration`_.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`unused function` |nbsp|
> :placeholder:`A`|
> ++----------------------------------------------------------
> --------------------+
> +
> +
> +-Wunused-getter-return-value
> +----------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`property access result unused -
> getters should not be used for side effects`|
> ++----------------------------------------------------------
> --------------------------------------------------------+
> +
> +
> +-Wunused-label
> +--------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------------+
> +|:warning:`warning:` |nbsp| :diagtext:`unused label` |nbsp|
> :placeholder:`A`|
> ++----------------------------------------------------------
> -----------------+
> +
> +
> +-Wunused-local-typedef
> +----------------------
> +**Diagnostic text:**
> +
> ++-----------------------------------------------------+----
> --------------------+------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`unused` |nbsp|
> |+----------------------+| |nbsp| :placeholder:`B`|
> +|
>  ||:diagtext:`typedef`   ||                        |
> +|
>  |+----------------------+|                        |
> +|                                                     ||:diagtext:`type
> alias`||                        |
> +|
>  |+----------------------+|                        |
> ++-----------------------------------------------------+----
> --------------------+------------------------+
> +
> +
> +-Wunused-local-typedefs
> +-----------------------
> +Synonym for `-Wunused-local-typedef`_.
> +
> +
> +-Wunused-macros
> +---------------
> +**Diagnostic text:**
> +
> ++--------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`macro is not used`|
> ++--------------------------------------------------------+
> +
> +
> +-Wunused-member-function
> +------------------------
> +Also controls `-Wunneeded-member-function`_.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`unused member function` |nbsp|
> :placeholder:`A`|
> ++----------------------------------------------------------
> ---------------------------+
> +
> +
> +-Wunused-parameter
> +------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`unused parameter` |nbsp|
> :placeholder:`A`|
> ++----------------------------------------------------------
> ---------------------+
> +
> +
> +-Wunused-private-field
> +----------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`private field` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`is not used`|
> ++----------------------------------------------------------
> -------------------------------------------------+
> +
> +
> +-Wunused-property-ivar
> +----------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`ivar` |nbsp| :placeholder:`A`
> |nbsp| :diagtext:`which backs the property is not referenced in this
> property's accessor`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------------+
> +
> +
> +-Wunused-result
> +---------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`ignoring return value of function
> declared with` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------+
> +
> +
> +-Wunused-value
> +--------------
> +This diagnostic is enabled by default.
> +
> +Also controls `-Wunused-comparison`_, `-Wunused-result`_,
> `-Wunevaluated-expression`_.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`ignoring return value of function
> declared with` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ---------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`container access result unused -
> container access should not be used for side effects`|
> ++----------------------------------------------------------
> ------------------------------------------------------------------+
> +
> ++---------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`expression result unused`|
> ++---------------------------------------------------------------+
> +
> ++----------------------------------------------------------
> -------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`expression result unused; should
> this cast be to 'void'?`|
> ++----------------------------------------------------------
> -------------------------------------+
> +
> +
> +-Wunused-variable
> +-----------------
> +Also controls `-Wunused-const-variable`_.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`unused variable` |nbsp|
> :placeholder:`A`|
> ++----------------------------------------------------------
> --------------------+
> +
> +
> +-Wunused-volatile-lvalue
> +------------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`expression result unused; assign
> into a variable to force a volatile load`|
> ++----------------------------------------------------------
> ------------------------------------------------------+
> +
> +
> +-Wused-but-marked-unused
> +------------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -----------------------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`was marked
> unused but was used`|
> ++----------------------------------------------------------
> -----------------------------------+
> +
> +
> +-Wuser-defined-literals
> +-----------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------------------------------------+-------------
> ---------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`user-defined literal suffixes not
> starting with '\_' are reserved`|+-------------------
> -------------------------------+|
> +|
>                                 ||:diagtext:`; no literal will invoke this
> operator`||
> +|
>                                 |+----------------------------
> ----------------------+|
> +|
>                                 ||
>         ||
> +|
>                                 |+----------------------------
> ----------------------+|
> ++----------------------------------------------------------
> ----------------------------------------------+-------------
> ---------------------------------------+
> +
> +
> +-Wvarargs
> +---------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> -------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`second argument to 'va\_start' is
> not the last named parameter`|
> ++----------------------------------------------------------
> -------------------------------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`second argument to 'va\_arg' is of
> promotable type` |nbsp| :placeholder:`A`:diagtext:`; this va\_arg has
> undefined behavior because arguments will be promoted to` |nbsp|
> :placeholder:`B`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------------+
> +
> ++------------------------------------------------------+---
> ------------------------------------------------------------
> --+---------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`passing` |nbsp|
> |+---------------------------------------------------------------+|
> |nbsp| :diagtext:`to 'va\_start' has undefined behavior`|
> +|                                                      ||:diagtext:`an
> object that undergoes default argument promotion`||
>                                  |
> +|
> |+---------------------------------------------------------------+|
>                                                    |
> +|                                                      ||:diagtext:`an
> object of reference type`                        ||
>                                  |
> +|
> |+---------------------------------------------------------------+|
>                                                    |
> +|                                                      ||:diagtext:`a
> parameter declared with the 'register' keyword`   ||
>                                  |
> +|
> |+---------------------------------------------------------------+|
>                                                    |
> ++------------------------------------------------------+---
> ------------------------------------------------------------
> --+---------------------------------------------------------+
> +
> +
> +-Wvariadic-macros
> +-----------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`named variadic macros are a GNU
> extension`|
> ++----------------------------------------------------------
> ----------------------+
> +
> ++----------------------------------------------------------
> --------------+
> +|:warning:`warning:` |nbsp| :diagtext:`variadic macros are a C99 feature`|
> ++----------------------------------------------------------
> --------------+
> +
> +
> +-Wvector-conversion
> +-------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------+---------------------------------------------
> -------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`incompatible vector types` |nbsp|
> |+--------------------------------------------------------------+|
> +|
> ||:diagtext:`assigning to different types`                      ||
> +|
> |+--------------------------------------------------------------+|
> +|
> ||:diagtext:`passing to parameter of different type`            ||
> +|
> |+--------------------------------------------------------------+|
> +|
> ||:diagtext:`returning from function with different return type`||
> +|
> |+--------------------------------------------------------------+|
> +|
> ||:diagtext:`converting between types`                          ||
> +|
> |+--------------------------------------------------------------+|
> +|
> ||:diagtext:`initializing with expression of different type`    ||
> +|
> |+--------------------------------------------------------------+|
> +|
> ||:diagtext:`sending to parameter of different type`            ||
> +|
> |+--------------------------------------------------------------+|
> +|
> ||:diagtext:`casting between types`                             ||
> +|
> |+--------------------------------------------------------------+|
> ++----------------------------------------------------------
> --------------+---------------------------------------------
> -------------------+
> +
> +
> +-Wvector-conversions
> +--------------------
> +Synonym for `-Wvector-conversion`_.
> +
> +
> +-Wvexing-parse
> +--------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`empty parentheses interpreted as a
> function declaration`|
> ++----------------------------------------------------------
> ------------------------------------+
> +
> ++----------------------------------------------------------
> -------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`parentheses were disambiguated as
> a function declaration`|
> ++----------------------------------------------------------
> -------------------------------------+
> +
> +
> +-Wvisibility
> +------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`declaration of` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`will not be visible outside of this
> function`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> -----------------------+
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`redefinition of` |nbsp|
> :placeholder:`A` |nbsp| :diagtext:`will not be visible outside of this
> function`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ------------------------+
> +
> +
> +-Wvla
> +-----
> +**Diagnostic text:**
> +
> ++-----------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`variable length array used`|
> ++-----------------------------------------------------------------+
> +
> +
> +-Wvla-extension
> +---------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`variable length arrays are a C99
> feature`|
> ++----------------------------------------------------------
> ---------------------+
> +
> +
> +-Wvoid-ptr-dereference
> +----------------------
> +This diagnostic is enabled by default.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ----------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`ISO C++ does not allow indirection
> on operand of type` |nbsp| :placeholder:`A`|
> ++----------------------------------------------------------
> ----------------------------------------------------------+
> +
> +
> +-Wvolatile-register-var
> +-----------------------
> +This diagnostic flag exists for GCC compatibility, and has no effect in
> Clang.
> +
> +-Wweak-template-vtables
> +-----------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`explicit template instantiation`
> |nbsp| :placeholder:`A` |nbsp| :diagtext:`will emit a vtable in every
> translation unit`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------------+
> +
> +
> +-Wweak-vtables
> +--------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------------------+
> +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has no
> out-of-line virtual method definitions; its vtable will be emitted in every
> translation unit`|
> ++----------------------------------------------------------
> ------------------------------------------------------------
> --------------------------------------------+
> +
> +
> +-Wwritable-strings
> +------------------
> +This diagnostic is enabled by default.
> +
> +Also controls `-Wdeprecated-writable-strings`_.
> +
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> ---------------------------------------------------------------+
> +|:warning:`warning:` |nbsp| :diagtext:`ISO C++11 does not allow
> conversion from string literal to` |nbsp| :placeholder:`A`|
> ++----------------------------------------------------------
> ---------------------------------------------------------------+
> +
> +
> +-Wwrite-strings
> +---------------
> +Synonym for `-Wwritable-strings`_.
> +
> +
> +-Wzero-length-array
> +-------------------
> +**Diagnostic text:**
> +
> ++----------------------------------------------------------
> --------------+
> +|:warning:`warning:` |nbsp| :diagtext:`zero size arrays are an extension`|
> ++----------------------------------------------------------
> --------------+
> +
> +
>
> Modified: cfe/trunk/docs/UsersManual.rst
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/
> UsersManual.rst?rev=281192&r1=281191&r2=281192&view=diff
> ============================================================
> ==================
> --- cfe/trunk/docs/UsersManual.rst (original)
> +++ cfe/trunk/docs/UsersManual.rst Mon Sep 12 00:58:29 2016
> @@ -107,6 +107,8 @@ Options to Control Error and Warning Mes
>  .. option:: -Wfoo
>
>    Enable warning "foo".
> +  See the :doc:`diagnostics reference <DiagnosticsReference>` for a
> complete
> +  list of the warning flags that can be specified in this way.
>
>  .. option:: -Wno-foo
>
>
> Modified: cfe/trunk/docs/index.rst
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/index.
> rst?rev=281192&r1=281191&r2=281192&view=diff
> ============================================================
> ==================
> --- cfe/trunk/docs/index.rst (original)
> +++ cfe/trunk/docs/index.rst Mon Sep 12 00:58:29 2016
> @@ -19,6 +19,7 @@ Using Clang as a Compiler
>     UsersManual
>     LanguageExtensions
>     AttributeReference
> +   DiagnosticsReference
>     CrossCompilation
>     ThreadSafetyAnalysis
>     AddressSanitizer
>
> Modified: cfe/trunk/include/clang/Basic/Diagnostic.td
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/
> clang/Basic/Diagnostic.td?rev=281192&r1=281191&r2=281192&view=diff
> ============================================================
> ==================
> --- cfe/trunk/include/clang/Basic/Diagnostic.td (original)
> +++ cfe/trunk/include/clang/Basic/Diagnostic.td Mon Sep 12 00:58:29 2016
> @@ -48,10 +48,13 @@ class DiagGroup<string Name, list<DiagGr
>    string GroupName = Name;
>    list<DiagGroup> SubGroups = subgroups;
>    string CategoryName = "";
> +  code Documentation = [{}];
>  }
>  class InGroup<DiagGroup G> { DiagGroup Group = G; }
>  //class IsGroup<string Name> { DiagGroup Group = DiagGroup<Name>; }
>
> +// This defines documentation for diagnostic groups.
> +include "DiagnosticDocs.td"
>
>  // This defines all of the named diagnostic categories.
>  include "DiagnosticCategories.td"
>
> Added: cfe/trunk/include/clang/Basic/DiagnosticDocs.td
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/
> clang/Basic/DiagnosticDocs.td?rev=281192&view=auto
> ============================================================
> ==================
> --- cfe/trunk/include/clang/Basic/DiagnosticDocs.td (added)
> +++ cfe/trunk/include/clang/Basic/DiagnosticDocs.td Mon Sep 12 00:58:29
> 2016
> @@ -0,0 +1,82 @@
> +//==--- DiagnosticDocs.td - Diagnostic documentation
> ---------------------===//
> +//
> +//                     The LLVM Compiler Infrastructure
> +//
> +// This file is distributed under the University of Illinois Open Source
> +// License. See LICENSE.TXT for details.
> +//
> +//===------------------------------------------------------
> ---------------===//
> +
> +def GlobalDocumentation {
> +  code Intro =[{..
> +  -------------------------------------------------------------------
> +  NOTE: This file is automatically generated by running clang-tblgen
> +  -gen-diag-docs. Do not edit this file by hand!!
> +  -------------------------------------------------------------------
> +
> +.. Add custom CSS to output. FIXME: This should be put into <head> rather
> +   than the start of <body>.
> +.. raw:: html
> +
> +    <style>
> +    table.docutils {
> +      width: 1px;
> +    }
> +    table.docutils td {
> +      border: none;
> +      padding: 0;
> +      vertical-align: middle;
> +      white-space: nowrap;
> +      width: 1px;
> +    }
> +    table.docutils tr + tr {
> +      border-top: 0.2em solid #aaa;
> +    }
> +    .error {
> +      font-family: monospace;
> +      font-weight: bold;
> +      color: #c70;
> +    }
> +    .warning {
> +      font-family: monospace;
> +      font-weight: bold;
> +      color: #c70;
> +    }
> +    .remark {
> +      font-family: monospace;
> +      font-weight: bold;
> +      color: #00c;
> +    }
> +    .diagtext {
> +      font-family: monospace;
> +      font-weight: bold;
> +    }
> +    </style>
> +
> +.. FIXME: Format this as .diagtext. rST appears to not support this. :(
> +.. |nbsp| unicode:: 0xA0
> +   :trim:
> +
> +.. Roles generated by clang-tblgen.
> +.. role:: error
> +.. role:: warning
> +.. role:: remark
> +.. role:: diagtext
> +.. role:: placeholder(emphasis)
> +
> +=========================
> +Diagnostic flags in Clang
> +=========================
> +.. contents::
> +   :local:
> +
> +Introduction
> +============
> +
> +This page lists the diagnostic flags currently supported by Clang.
> +
> +Diagnostic flags
> +================
> +}];
> +}
> +
>
> Modified: cfe/trunk/include/clang/Basic/DiagnosticParseKinds.td
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/
> DiagnosticParseKinds.td?rev=281192&r1=281191&r2=281192&view=diff
> ============================================================
> ==================
> --- cfe/trunk/include/clang/Basic/DiagnosticParseKinds.td (original)
> +++ cfe/trunk/include/clang/Basic/DiagnosticParseKinds.td Mon Sep 12
> 00:58:29 2016
> @@ -427,7 +427,7 @@ def err_synthesized_property_name : Erro
>    "expected a property name in @synthesize">;
>  def warn_semicolon_before_method_body : Warning<
>    "semicolon before method body is ignored">,
> -  InGroup<DiagGroup<"semicolon-before-method-body">>, DefaultIgnore;
> +  InGroup<SemiBeforeMethodBody>, DefaultIgnore;
>  def note_extra_comma_message_arg : Note<
>    "comma separating Objective-C messaging arguments">;
>
>
> Modified: cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/
> DiagnosticSemaKinds.td?rev=281192&r1=281191&r2=281192&view=diff
> ============================================================
> ==================
> --- cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td (original)
> +++ cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td Mon Sep 12
> 00:58:29 2016
> @@ -5464,7 +5464,7 @@ def err_typecheck_invalid_lvalue_addrof
>    "cannot take the address of an rvalue of type %0">;
>  def ext_typecheck_addrof_temporary : ExtWarn<
>    "taking the address of a temporary object of type %0">,
> -  InGroup<DiagGroup<"address-of-temporary">>, DefaultError;
> +  InGroup<AddressOfTemporary>, DefaultError;
>  def err_typecheck_addrof_temporary : Error<
>    "taking the address of a temporary object of type %0">;
>  def err_typecheck_addrof_dtor : Error<
> @@ -6821,7 +6821,7 @@ def warn_side_effects_typeid : Warning<
>    "operand to 'typeid'">, InGroup<PotentiallyEvaluatedExpression>;
>  def warn_unused_result : Warning<
>    "ignoring return value of function declared with %0 attribute">,
> -  InGroup<DiagGroup<"unused-result">>;
> +  InGroup<UnusedResult>;
>  def warn_unused_volatile : Warning<
>    "expression result unused; assign into a variable to force a volatile
> load">,
>    InGroup<DiagGroup<"unused-volatile-lvalue">>;
>
> Modified: cfe/trunk/utils/TableGen/ClangDiagnosticsEmitter.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/TableGen/
> ClangDiagnosticsEmitter.cpp?rev=281192&r1=281191&r2=281192&view=diff
> ============================================================
> ==================
> --- cfe/trunk/utils/TableGen/ClangDiagnosticsEmitter.cpp (original)
> +++ cfe/trunk/utils/TableGen/ClangDiagnosticsEmitter.cpp Mon Sep 12
> 00:58:29 2016
> @@ -18,6 +18,7 @@
>  #include "llvm/ADT/SmallString.h"
>  #include "llvm/ADT/SmallVector.h"
>  #include "llvm/ADT/StringMap.h"
> +#include "llvm/ADT/STLExtras.h"
>  #include "llvm/ADT/Twine.h"
>  #include "llvm/TableGen/Error.h"
>  #include "llvm/TableGen/Record.h"
> @@ -27,6 +28,7 @@
>  #include <cctype>
>  #include <functional>
>  #include <map>
> +#include <set>
>  using namespace llvm;
>
>  //===-------------------------------------------------------
> ---------------===//
> @@ -141,6 +143,11 @@ static bool beforeThanCompare(const Reco
>      LHS->getLoc().front().getPointer() < RHS->getLoc().front().
> getPointer();
>  }
>
> +static bool diagGroupBeforeByName(const Record *LHS, const Record *RHS) {
> +  return LHS->getValueAsString("GroupName") <
> +         RHS->getValueAsString("GroupName");
> +}
> +
>  static bool beforeThanCompareGroups(const GroupInfo *LHS, const GroupInfo
> *RHS){
>    assert(!LHS->DiagsInGroup.empty() && !RHS->DiagsInGroup.empty());
>    return beforeThanCompare(LHS->DiagsInGroup.front(),
> @@ -892,4 +899,421 @@ void EmitClangDiagsIndexName(RecordKeepe
>      OS << "DIAG_NAME_INDEX(" << R.Name << ")\n";
>    }
>  }
> +
> +//===------------------------------------------------------
> ----------------===//
> +// Diagnostic documentation generation
> +//===------------------------------------------------------
> ----------------===//
> +
> +namespace docs {
> +namespace {
> +
> +/// Diagnostic text, parsed into pieces.
> +struct DiagText {
> +  struct Piece {
> +    virtual void print(std::vector<std::string> &RST) = 0;
> +  };
> +  struct TextPiece : Piece {
> +    StringRef Role;
> +    std::string Text;
> +    void print(std::vector<std::string> &RST) override;
> +  };
> +  struct PlaceholderPiece : Piece {
> +    int Index;
> +    void print(std::vector<std::string> &RST) override;
> +  };
> +  struct SelectPiece : Piece {
> +    std::vector<DiagText> Options;
> +    void print(std::vector<std::string> &RST) override;
> +  };
> +
> +  std::vector<std::unique_ptr<Piece>> Pieces;
> +
> +  DiagText() {}
> +  DiagText(StringRef Text);
> +  DiagText(StringRef Kind, StringRef Text);
> +
> +  template<typename P> void add(P Piece) {
> +    Pieces.push_back(llvm::make_unique<P>(std::move(Piece)));
> +  }
> +  void print(std::vector<std::string> &RST);
> +};
> +
> +DiagText parseDiagText(StringRef &Text, bool Nested = false) {
> +  DiagText Parsed;
> +
> +  while (!Text.empty()) {
> +    size_t End = (size_t)-2;
> +    do
> +      End = Nested ? Text.find_first_of("%|}", End + 2)
> +                   : Text.find_first_of('%', End + 2);
> +    while (End < Text.size() - 1 && Text[End] == '%' && Text[End + 1] ==
> '%');
> +
> +    if (End) {
> +      DiagText::TextPiece Piece;
> +      Piece.Role = "diagtext";
> +      Piece.Text = Text.slice(0, End);
> +      Parsed.add(std::move(Piece));
> +      Text = Text.slice(End, StringRef::npos);
> +      if (Text.empty()) break;
> +    }
> +
> +    if (Text[0] == '|' || Text[0] == '}')
> +      break;
> +
> +    // Drop the '%'.
> +    Text = Text.drop_front();
> +
> +    // Extract the (optional) modifier.
> +    size_t ModLength = Text.find_first_of("0123456789{");
> +    StringRef Modifier = Text.slice(0, ModLength);
> +    Text = Text.slice(ModLength, StringRef::npos);
> +
> +    // FIXME: Handle %ordinal here.
> +    if (Modifier == "select" || Modifier == "plural") {
> +      DiagText::SelectPiece Select;
> +      do {
> +        Text = Text.drop_front();
> +        if (Modifier == "plural")
> +          while (Text[0] != ':')
> +            Text = Text.drop_front();
> +        Select.Options.push_back(parseDiagText(Text, true));
> +        assert(!Text.empty() && "malformed %select");
> +      } while (Text.front() == '|');
> +      Parsed.add(std::move(Select));
> +
> +      // Drop the trailing '}n'.
> +      Text = Text.drop_front(2);
> +      continue;
> +    }
> +
> +    // For %diff, just take the second alternative (tree diagnostic). It
> would
> +    // be preferable to take the first one, and replace the $ with the
> suitable
> +    // placeholders.
> +    if (Modifier == "diff") {
> +      Text = Text.drop_front(); // '{'
> +      parseDiagText(Text, true);
> +      Text = Text.drop_front(); // '|'
> +
> +      DiagText D = parseDiagText(Text, true);
> +      for (auto &P : D.Pieces)
> +        Parsed.Pieces.push_back(std::move(P));
> +
> +      Text = Text.drop_front(4); // '}n,m'
> +      continue;
> +    }
> +
> +    if (Modifier == "s") {
> +      Text = Text.drop_front();
> +      DiagText::SelectPiece Select;
> +      Select.Options.push_back(DiagText(""));
> +      Select.Options.push_back(DiagText("s"));
> +      Parsed.add(std::move(Select));
> +      continue;
> +    }
> +
> +    assert(!Text.empty() && isdigit(Text[0]) && "malformed placeholder");
> +    DiagText::PlaceholderPiece Placeholder;
> +    Placeholder.Index = Text[0] - '0';
> +    Parsed.add(std::move(Placeholder));
> +    Text = Text.drop_front();
> +    continue;
> +  }
> +  return Parsed;
> +}
> +
> +DiagText::DiagText(StringRef Text) : DiagText(parseDiagText(Text, false))
> {}
> +
> +DiagText::DiagText(StringRef Kind, StringRef Text) :
> DiagText(parseDiagText(Text, false)) {
> +  TextPiece Prefix;
> +  Prefix.Role = Kind;
> +  Prefix.Text = Kind;
> +  Prefix.Text += ": ";
> +  Pieces.insert(Pieces.begin(), llvm::make_unique<TextPiece>(
> std::move(Prefix)));
> +}
> +
> +void escapeRST(StringRef Str, std::string &Out) {
> +  for (auto K : Str) {
> +    if (StringRef("`*|_[]\\").count(K))
> +      Out.push_back('\\');
> +    Out.push_back(K);
> +  }
> +}
> +
> +template<typename It> void padToSameLength(It Begin, It End) {
> +  size_t Width = 0;
> +  for (It I = Begin; I != End; ++I)
> +    Width = std::max(Width, I->size());
> +  for (It I = Begin; I != End; ++I)
> +    (*I) += std::string(Width - I->size(), ' ');
> +}
> +
> +template<typename It> void makeTableRows(It Begin, It End) {
> +  if (Begin == End) return;
> +  padToSameLength(Begin, End);
> +  for (It I = Begin; I != End; ++I)
> +    *I = "|" + *I + "|";
> +}
> +
> +void makeRowSeparator(std::string &Str) {
> +  for (char &K : Str)
> +    K = (K == '|' ? '+' : '-');
> +}
> +
> +void DiagText::print(std::vector<std::string> &RST) {
> +  if (Pieces.empty()) {
> +    RST.push_back("");
> +    return;
> +  }
> +
> +  if (Pieces.size() == 1)
> +    return Pieces[0]->print(RST);
> +
> +  std::string EmptyLinePrefix;
> +  size_t Start = RST.size();
> +  bool HasMultipleLines = true;
> +  for (auto &P : Pieces) {
> +    std::vector<std::string> Lines;
> +    P->print(Lines);
> +    if (Lines.empty())
> +      continue;
> +
> +    // We need a vertical separator if either this or the previous piece
> is a
> +    // multi-line piece, or this is the last piece.
> +    const char *Separator = (Lines.size() > 1 || HasMultipleLines) ? "|"
> : "";
> +    HasMultipleLines = Lines.size() > 1;
> +
> +    if (Start + Lines.size() > RST.size())
> +      RST.resize(Start + Lines.size(), EmptyLinePrefix);
> +
> +    padToSameLength(Lines.begin(), Lines.end());
> +    for (size_t I = 0; I != Lines.size(); ++I)
> +      RST[Start + I] += Separator + Lines[I];
> +    std::string Empty(Lines[0].size(), ' ');
> +    for (size_t I = Start + Lines.size(); I != RST.size(); ++I)
> +      RST[I] += Separator + Empty;
> +    EmptyLinePrefix += Separator + Empty;
> +  }
> +  for (size_t I = Start; I != RST.size(); ++I)
> +    RST[I] += "|";
> +  EmptyLinePrefix += "|";
> +
> +  makeRowSeparator(EmptyLinePrefix);
> +  RST.insert(RST.begin() + Start, EmptyLinePrefix);
> +  RST.insert(RST.end(), EmptyLinePrefix);
> +}
> +
> +void DiagText::TextPiece::print(std::vector<std::string> &RST) {
> +  RST.push_back("");
> +  auto &S = RST.back();
> +
> +  StringRef T = Text;
> +  while (!T.empty() && T.front() == ' ') {
> +    RST.back() += " |nbsp| ";
> +    T = T.drop_front();
> +  }
> +
> +  std::string Suffix;
> +  while (!T.empty() && T.back() == ' ') {
> +    Suffix += " |nbsp| ";
> +    T = T.drop_back();
> +  }
> +
> +  if (!T.empty()) {
> +    S += ':';
> +    S += Role;
> +    S += ":`";
> +    escapeRST(T, S);
> +    S += '`';
> +  }
> +
> +  S += Suffix;
> +}
> +
> +void DiagText::PlaceholderPiece::print(std::vector<std::string> &RST) {
> +  RST.push_back(std::string(":placeholder:`") + char('A' + Index) + "`");
> +}
> +
> +void DiagText::SelectPiece::print(std::vector<std::string> &RST) {
> +  std::vector<size_t> SeparatorIndexes;
> +  SeparatorIndexes.push_back(RST.size());
> +  RST.emplace_back();
> +  for (auto &O : Options) {
> +    O.print(RST);
> +    SeparatorIndexes.push_back(RST.size());
> +    RST.emplace_back();
> +  }
> +
> +  makeTableRows(RST.begin() + SeparatorIndexes.front(),
> +                RST.begin() + SeparatorIndexes.back() + 1);
> +  for (size_t I : SeparatorIndexes)
> +    makeRowSeparator(RST[I]);
> +}
> +
> +bool isRemarkGroup(const Record *DiagGroup,
> +                   const std::map<std::string, GroupInfo> &DiagsInGroup) {
> +  bool AnyRemarks = false, AnyNonRemarks = false;
> +
> +  std::function<void(StringRef)> Visit = [&](StringRef GroupName) {
> +    auto &GroupInfo = DiagsInGroup.find(GroupName)->second;
> +    for (const Record *Diag : GroupInfo.DiagsInGroup)
> +      (isRemark(*Diag) ? AnyRemarks : AnyNonRemarks) = true;
> +    for (const auto &Name : GroupInfo.SubGroups)
> +      Visit(Name);
> +  };
> +  Visit(DiagGroup->getValueAsString("GroupName"));
> +
> +  if (AnyRemarks && AnyNonRemarks)
> +    PrintFatalError(
> +        DiagGroup->getLoc(),
> +        "Diagnostic group contains both remark and non-remark
> diagnostics");
> +  return AnyRemarks;
> +}
> +
> +std::string getDefaultSeverity(const Record *Diag) {
> +  return Diag->getValueAsDef("DefaultSeverity")->
> getValueAsString("Name");
> +}
> +
> +std::set<std::string>
> +getDefaultSeverities(const Record *DiagGroup,
> +                     const std::map<std::string, GroupInfo>
> &DiagsInGroup) {
> +  std::set<std::string> States;
> +
> +  std::function<void(StringRef)> Visit = [&](StringRef GroupName) {
> +    auto &GroupInfo = DiagsInGroup.find(GroupName)->second;
> +    for (const Record *Diag : GroupInfo.DiagsInGroup)
> +      States.insert(getDefaultSeverity(Diag));
> +    for (const auto &Name : GroupInfo.SubGroups)
> +      Visit(Name);
> +  };
> +  Visit(DiagGroup->getValueAsString("GroupName"));
> +  return States;
> +}
> +
> +void writeHeader(StringRef Str, raw_ostream &OS, char Kind = '-') {
> +  OS << Str << "\n" << std::string(Str.size(), Kind) << "\n";
> +}
> +
> +void writeDiagnosticText(StringRef Role, StringRef Text, raw_ostream &OS)
> {
> +  if (Text == "%0")
> +    OS << "The text of this diagnostic is not controlled by Clang.\n\n";
> +  else {
> +    std::vector<std::string> Out;
> +    DiagText(Role, Text).print(Out);
> +    for (auto &Line : Out)
> +      OS << Line << "\n";
> +    OS << "\n";
> +  }
> +}
> +
> +}  // namespace
> +}  // namespace docs
> +
> +void EmitClangDiagDocs(RecordKeeper &Records, raw_ostream &OS) {
> +  using namespace docs;
> +
> +  // Get the documentation introduction paragraph.
> +  const Record *Documentation = Records.getDef("GlobalDocumentation");
> +  if (!Documentation) {
> +    PrintFatalError("The Documentation top-level definition is missing, "
> +                    "no documentation will be generated.");
> +    return;
> +  }
> +
> +  OS << Documentation->getValueAsString("Intro") << "\n";
> +
> +  std::vector<Record*> Diags =
> +      Records.getAllDerivedDefinitions("Diagnostic");
> +  std::vector<Record*> DiagGroups =
> +      Records.getAllDerivedDefinitions("DiagGroup");
> +  std::sort(DiagGroups.begin(), DiagGroups.end(), diagGroupBeforeByName);
> +
> +  DiagGroupParentMap DGParentMap(Records);
> +
> +  std::map<std::string, GroupInfo> DiagsInGroup;
> +  groupDiagnostics(Diags, DiagGroups, DiagsInGroup);
> +
> +  // Compute the set of diagnostics that are in -Wpedantic.
> +  {
> +    RecordSet DiagsInPedantic;
> +    RecordSet GroupsInPedantic;
> +    InferPedantic inferPedantic(DGParentMap, Diags, DiagGroups,
> DiagsInGroup);
> +    inferPedantic.compute(&DiagsInPedantic, &GroupsInPedantic);
> +    auto &PedDiags = DiagsInGroup["pedantic"];
> +    PedDiags.DiagsInGroup.insert(PedDiags.DiagsInGroup.end(),
> +                                 DiagsInPedantic.begin(),
> +                                 DiagsInPedantic.end());
> +    for (auto *Group : GroupsInPedantic)
> +      PedDiags.SubGroups.push_back(Group->getValueAsString("GroupName"));
> +  }
> +
> +  // FIXME: Write diagnostic categories and link to diagnostic groups in
> each.
> +
> +  // Write out the diagnostic groups.
> +  for (const Record *G : DiagGroups) {
> +    bool IsRemarkGroup = isRemarkGroup(G, DiagsInGroup);
> +    auto &GroupInfo = DiagsInGroup[G->getValueAsString("GroupName")];
> +    bool IsSynonym = GroupInfo.DiagsInGroup.empty() &&
> +                     GroupInfo.SubGroups.size() == 1;
> +
> +    writeHeader((IsRemarkGroup ? "-R" : "-W") +
> +                    G->getValueAsString("GroupName"),
> +                OS);
> +
> +    if (!IsSynonym) {
> +      // FIXME: Ideally, all the diagnostics in a group should have the
> same
> +      // default state, but that is not currently the case.
> +      auto DefaultSeverities = getDefaultSeverities(G, DiagsInGroup);
> +      if (!DefaultSeverities.empty() && !DefaultSeverities.count("Ignored"))
> {
> +        bool AnyNonErrors = DefaultSeverities.count("Warning") ||
> +                            DefaultSeverities.count("Remark");
> +        if (!AnyNonErrors)
> +          OS << "This diagnostic is an error by default, but the flag
> ``-Wno-"
> +             << G->getValueAsString("GroupName") << "`` can be used to
> disable "
> +             << "the error.\n\n";
> +        else
> +          OS << "This diagnostic is enabled by default.\n\n";
> +      } else if (DefaultSeverities.size() > 1) {
> +        OS << "Some of the diagnostics controlled by this flag are
> enabled "
> +           << "by default.\n\n";
> +      }
> +    }
> +
> +    if (!GroupInfo.SubGroups.empty()) {
> +      if (IsSynonym)
> +        OS << "Synonym for ";
> +      else if (GroupInfo.DiagsInGroup.empty())
> +        OS << "Controls ";
> +      else
> +        OS << "Also controls ";
> +
> +      bool First = true;
> +      for (const auto &Name : GroupInfo.SubGroups) {
> +        if (!First) OS << ", ";
> +        OS << "`" << (IsRemarkGroup ? "-R" : "-W") << Name << "`_";
> +        First = false;
> +      }
> +      OS << ".\n\n";
> +    }
> +
> +    if (!GroupInfo.DiagsInGroup.empty()) {
> +      OS << "**Diagnostic text:**\n\n";
> +      for (const Record *D : GroupInfo.DiagsInGroup) {
> +        auto Severity = getDefaultSeverity(D);
> +        Severity[0] = tolower(Severity[0]);
> +        if (Severity == "ignored")
> +          Severity = IsRemarkGroup ? "remark" : "warning";
> +        writeDiagnosticText(Severity, D->getValueAsString("Text"), OS);
> +      }
> +    }
> +
> +    auto Doc = G->getValueAsString("Documentation");
> +    if (!Doc.empty())
> +      OS << Doc;
> +    else if (GroupInfo.SubGroups.empty() && GroupInfo.DiagsInGroup.empty()
> )
> +      OS << "This diagnostic flag exists for GCC compatibility, and has
> no "
> +            "effect in Clang.\n";
> +    OS << "\n";
> +  }
> +}
> +
>  } // end namespace clang
>
> Modified: cfe/trunk/utils/TableGen/TableGen.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/
> TableGen/TableGen.cpp?rev=281192&r1=281191&r2=281192&view=diff
> ============================================================
> ==================
> --- cfe/trunk/utils/TableGen/TableGen.cpp (original)
> +++ cfe/trunk/utils/TableGen/TableGen.cpp Mon Sep 12 00:58:29 2016
> @@ -52,7 +52,8 @@ enum ActionType {
>    GenArmNeon,
>    GenArmNeonSema,
>    GenArmNeonTest,
> -  GenAttrDocs
> +  GenAttrDocs,
> +  GenDiagDocs
>  };
>
>  namespace {
> @@ -133,6 +134,8 @@ cl::opt<ActionType> Action(
>                     "Generate ARM NEON tests for clang"),
>          clEnumValN(GenAttrDocs, "gen-attr-docs",
>                     "Generate attribute documentation"),
> +        clEnumValN(GenDiagDocs, "gen-diag-docs",
> +                   "Generate attribute documentation"),
>          clEnumValEnd));
>
>  cl::opt<std::string>
> @@ -233,6 +236,9 @@ bool ClangTableGenMain(raw_ostream &OS,
>    case GenAttrDocs:
>      EmitClangAttrDocs(Records, OS);
>      break;
> +  case GenDiagDocs:
> +    EmitClangDiagDocs(Records, OS);
> +    break;
>    }
>
>    return false;
>
> Modified: cfe/trunk/utils/TableGen/TableGenBackends.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/
> TableGen/TableGenBackends.h?rev=281192&r1=281191&r2=281192&view=diff
> ============================================================
> ==================
> --- cfe/trunk/utils/TableGen/TableGenBackends.h (original)
> +++ cfe/trunk/utils/TableGen/TableGenBackends.h Mon Sep 12 00:58:29 2016
> @@ -69,6 +69,7 @@ void EmitNeonSema2(RecordKeeper &Records
>  void EmitNeonTest2(RecordKeeper &Records, raw_ostream &OS);
>
>  void EmitClangAttrDocs(RecordKeeper &Records, raw_ostream &OS);
> +void EmitClangDiagDocs(RecordKeeper &Records, raw_ostream &OS);
>
>  } // end namespace clang
>
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20160928/12762bc2/attachment-0001.html>


More information about the cfe-commits mailing list