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