| .. |
| ------------------------------------------------------------------- |
| NOTE: This file is automatically generated by running clang-tblgen |
| -gen-diag-docs. Do not edit this file by hand!! |
| ------------------------------------------------------------------- |
| |
| .. Add custom CSS to output. FIXME: This should be put into <head> rather |
| than the start of <body>. |
| .. raw:: html |
| |
| <style> |
| table.docutils { |
| width: 1px; |
| } |
| table.docutils td { |
| border: none; |
| padding: 0 0 0 0.2em; |
| vertical-align: middle; |
| white-space: nowrap; |
| width: 1px; |
| font-family: monospace; |
| } |
| table.docutils tr + tr { |
| border-top: 0.2em solid #aaa; |
| } |
| .error { |
| font-family: monospace; |
| font-weight: bold; |
| color: #c00; |
| } |
| .warning { |
| font-family: monospace; |
| font-weight: bold; |
| color: #80a; |
| } |
| .remark { |
| font-family: monospace; |
| font-weight: bold; |
| color: #00c; |
| } |
| .diagtext { |
| font-family: monospace; |
| font-weight: bold; |
| } |
| </style> |
| |
| .. FIXME: rST doesn't support formatting this, so we format all <td> elements |
| as monospace font face instead. |
| .. |nbsp| unicode:: 0xA0 |
| :trim: |
| |
| .. Roles generated by clang-tblgen. |
| .. role:: error |
| .. role:: warning |
| .. role:: remark |
| .. role:: diagtext |
| .. role:: placeholder(emphasis) |
| |
| ========================= |
| Diagnostic flags in Clang |
| ========================= |
| .. contents:: |
| :local: |
| |
| Introduction |
| ============ |
| |
| This page lists the diagnostic flags currently supported by Clang. |
| |
| Diagnostic flags |
| ================ |
| |
| -W |
| -- |
| Synonym for `-Wextra`_. |
| |
| |
| -W#pragma-messages |
| ------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| The text of this diagnostic is not controlled by Clang. |
| |
| |
| -W#warnings |
| ----------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| The text of this diagnostic is not controlled by Clang. |
| |
| |
| -WCFString-literal |
| ------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`input conversion stopped due to an input byte that does not belong to the input codeset UTF-8`| |
| +------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -WCL4 |
| ----- |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| Controls `-Wall`_, `-Wextra`_. |
| |
| |
| -WIndependentClass-attribute |
| ---------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'objc\_independent\_class' attribute may be put on a typedef only; attribute is ignored`| |
| +------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'objc\_independent\_class' attribute may be put on Objective-C object pointer type only; attribute is ignored`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -WNSObject-attribute |
| -------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'NSObject' attribute may be put on a typedef only; attribute is ignored`| |
| +--------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wabi |
| ----- |
| This diagnostic flag exists for GCC compatibility, and has no effect in Clang. |
| |
| -Wabsolute-value |
| ---------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`absolute value function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`given an argument of type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`but has parameter of type` |nbsp| :placeholder:`C` |nbsp| :diagtext:`which may cause truncation of value`| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------+----------------------+---------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`taking the absolute value of` |nbsp| |+--------------------+| |nbsp| :diagtext:`type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is suspicious`| |
| | ||:diagtext:`pointer` || | |
| | |+--------------------+| | |
| | ||:diagtext:`function`|| | |
| | |+--------------------+| | |
| | ||:diagtext:`array` || | |
| | |+--------------------+| | |
| +---------------------------------------------------------------------------+----------------------+---------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`taking the absolute value of unsigned type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has no effect`| |
| +------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------+----------------------------+------------------------------------------------------------------------------------------------------------------+----------------------------+------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`using` |nbsp| |+--------------------------+| |nbsp| :diagtext:`absolute value function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`when argument is of` |nbsp| |+--------------------------+| |nbsp| :diagtext:`type`| |
| | ||:diagtext:`integer` || ||:diagtext:`integer` || | |
| | |+--------------------------+| |+--------------------------+| | |
| | ||:diagtext:`floating point`|| ||:diagtext:`floating point`|| | |
| | |+--------------------------+| |+--------------------------+| | |
| | ||:diagtext:`complex` || ||:diagtext:`complex` || | |
| | |+--------------------------+| |+--------------------------+| | |
| +----------------------------------------------------+----------------------------+------------------------------------------------------------------------------------------------------------------+----------------------------+------------------------+ |
| |
| |
| -Wabstract-final-class |
| ---------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------+--------------------+-------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`abstract class is marked '`|+------------------+|:diagtext:`'`| |
| | ||:diagtext:`final` || | |
| | |+------------------+| | |
| | ||:diagtext:`sealed`|| | |
| | |+------------------+| | |
| +-----------------------------------------------------------------+--------------------+-------------+ |
| |
| |
| -Wabstract-vbase-init |
| --------------------- |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`initializer for virtual base class` |nbsp| :placeholder:`A` |nbsp| :diagtext:`of abstract class` |nbsp| :placeholder:`B` |nbsp| :diagtext:`will never be used`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Waddress |
| --------- |
| This diagnostic is enabled by default. |
| |
| Controls `-Wpointer-bool-conversion`_, `-Wstring-compare`_, `-Wtautological-pointer-compare`_. |
| |
| |
| -Waddress-of-packed-member |
| -------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`taking address of packed member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`of class or structure` |nbsp| :placeholder:`B` |nbsp| :diagtext:`may result in an unaligned pointer value`| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Waddress-of-temporary |
| ---------------------- |
| This diagnostic is an error by default, but the flag ``-Wno-address-of-temporary`` can be used to disable the error. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------+ |
| |:error:`error:` |nbsp| :diagtext:`taking the address of a temporary object of type` |nbsp| :placeholder:`A`| |
| +-----------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Waggregate-return |
| ------------------ |
| This diagnostic flag exists for GCC compatibility, and has no effect in Clang. |
| |
| -Wall |
| ----- |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| Controls `-Wmost`_, `-Wparentheses`_, `-Wswitch`_, `-Wswitch-bool`_. |
| |
| |
| -Walloca-with-align-alignof |
| --------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`second argument to \_\_builtin\_alloca\_with\_align is supposed to be in bits`| |
| +--------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wambiguous-delete |
| ------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`multiple suitable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`functions for` |nbsp| :placeholder:`B`:diagtext:`; no 'operator delete' function will be invoked if initialization throws an exception`| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wambiguous-ellipsis |
| -------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------+---------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'...' in this location creates a C-style varargs function`|+-------------------------------------------+| |
| | ||:diagtext:`, not a function parameter pack`|| |
| | |+-------------------------------------------+| |
| | || || |
| | |+-------------------------------------------+| |
| +------------------------------------------------------------------------------------------------+---------------------------------------------+ |
| |
| |
| -Wambiguous-macro |
| ----------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ambiguous expansion of macro` |nbsp| :placeholder:`A`| |
| +-------------------------------------------------------------------------------------------+ |
| |
| |
| -Wambiguous-member-template |
| --------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`lookup of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in member access expression is ambiguous; using member of` |nbsp| :placeholder:`B`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wanalyzer-incompatible-plugin |
| ------------------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`checker plugin '`:placeholder:`A`:diagtext:`' is not compatible with this version of the analyzer`| |
| +----------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wanonymous-pack-parens |
| ----------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ISO C++11 requires a parenthesized pack declaration to have a name`| |
| +---------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Warc |
| ----- |
| This diagnostic is enabled by default. |
| |
| Controls `-Warc-non-pod-memaccess`_, `-Warc-retain-cycles`_, `-Warc-unsafe-retained-assign`_. |
| |
| |
| -Warc-bridge-casts-disallowed-in-nonarc |
| --------------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' casts have no effect when not using ARC`| |
| +-------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Warc-maybe-repeated-use-of-weak |
| -------------------------------- |
| **Diagnostic text:** |
| |
| +---------------------------------------------------+-------------------------------+------------------------------------------------------------------------------------------+----------------------+-------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`weak` |nbsp| |+-----------------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`may be accessed multiple times in this` |nbsp| |+--------------------+| |nbsp| :diagtext:`and may be unpredictably set to nil; assign to a strong variable to keep the object alive`| |
| | ||:diagtext:`variable` || ||:diagtext:`function`|| | |
| | |+-----------------------------+| |+--------------------+| | |
| | ||:diagtext:`property` || ||:diagtext:`method` || | |
| | |+-----------------------------+| |+--------------------+| | |
| | ||:diagtext:`implicit property`|| ||:diagtext:`block` || | |
| | |+-----------------------------+| |+--------------------+| | |
| | ||:diagtext:`instance variable`|| ||:diagtext:`lambda` || | |
| | |+-----------------------------+| |+--------------------+| | |
| +---------------------------------------------------+-------------------------------+------------------------------------------------------------------------------------------+----------------------+-------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Warc-non-pod-memaccess |
| ----------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------+-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| |+---------------------------+| |nbsp| :diagtext:`this` |nbsp| :placeholder:`B` |nbsp| :diagtext:`call is a pointer to ownership-qualified type` |nbsp| :placeholder:`C`| |
| | ||:diagtext:`destination for`|| | |
| | |+---------------------------+| | |
| | ||:diagtext:`source of` || | |
| | |+---------------------------+| | |
| +---------------------------+-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Warc-performSelector-leaks |
| --------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`performSelector may cause a leak because its selector is unknown`| |
| +-------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Warc-repeated-use-of-weak |
| -------------------------- |
| Also controls `-Warc-maybe-repeated-use-of-weak`_. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------+-------------------------------+--------------------------------------------------------------------------------------+----------------------+-------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`weak` |nbsp| |+-----------------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`is accessed multiple times in this` |nbsp| |+--------------------+| |nbsp| :diagtext:`but may be unpredictably set to nil; assign to a strong variable to keep the object alive`| |
| | ||:diagtext:`variable` || ||:diagtext:`function`|| | |
| | |+-----------------------------+| |+--------------------+| | |
| | ||:diagtext:`property` || ||:diagtext:`method` || | |
| | |+-----------------------------+| |+--------------------+| | |
| | ||:diagtext:`implicit property`|| ||:diagtext:`block` || | |
| | |+-----------------------------+| |+--------------------+| | |
| | ||:diagtext:`instance variable`|| ||:diagtext:`lambda` || | |
| | |+-----------------------------+| |+--------------------+| | |
| +---------------------------------------------------+-------------------------------+--------------------------------------------------------------------------------------+----------------------+-------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Warc-retain-cycles |
| ------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`capturing` |nbsp| :placeholder:`A` |nbsp| :diagtext:`strongly in this block is likely to lead to a retain cycle`| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Warc-unsafe-retained-assign |
| ---------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------+---------------------------------+-------------------------------------+----------------------+------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`assigning` |nbsp| |+-------------------------------+| |nbsp| :diagtext:`to a weak` |nbsp| |+--------------------+|:diagtext:`; object will be released after assignment`| |
| | ||:diagtext:`array literal` || ||:diagtext:`property`|| | |
| | |+-------------------------------+| |+--------------------+| | |
| | ||:diagtext:`dictionary literal` || ||:diagtext:`variable`|| | |
| | |+-------------------------------+| |+--------------------+| | |
| | ||:diagtext:`numeric literal` || | | | |
| | |+-------------------------------+| | | | |
| | ||:diagtext:`boxed expression` || | | | |
| | |+-------------------------------+| | | | |
| | ||:diagtext:`<should not happen>`|| | | | |
| | |+-------------------------------+| | | | |
| | ||:diagtext:`block literal` || | | | |
| | |+-------------------------------+| | | | |
| +--------------------------------------------------------+---------------------------------+-------------------------------------+----------------------+------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------+--------------------------------+--------+----------------------+------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`assigning retained object to` |nbsp| |+------------------------------+| |nbsp| |+--------------------+|:diagtext:`; object will be released after assignment`| |
| | ||:diagtext:`weak` || ||:diagtext:`property`|| | |
| | |+------------------------------+| |+--------------------+| | |
| | ||:diagtext:`unsafe\_unretained`|| ||:diagtext:`variable`|| | |
| | |+------------------------------+| |+--------------------+| | |
| +---------------------------------------------------------------------------+--------------------------------+--------+----------------------+------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`assigning retained object to unsafe property; object will be released after assignment`| |
| +-----------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wargument-outside-range |
| ------------------------ |
| This diagnostic is an error by default, but the flag ``-Wno-argument-outside-range`` can be used to disable the error. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:error:`error:` |nbsp| :diagtext:`argument value` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is outside the valid range \[`:placeholder:`B`:diagtext:`,` |nbsp| :placeholder:`C`:diagtext:`\]`| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Warray-bounds |
| -------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+-------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`array index` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is past the end of the array (which contains` |nbsp| :placeholder:`B` |nbsp| :diagtext:`element`|+-------------+|:diagtext:`)`| |
| | || || | |
| | |+-------------+| | |
| | ||:diagtext:`s`|| | |
| | |+-------------+| | |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+-------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`array index` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is before the beginning of the array`| |
| +----------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`array argument is too small; 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 |
| ----- |
| This diagnostic is enabled by default. |
| |
| Controls `-Wasm-ignored-qualifier`_, `-Wasm-operand-widths`_. |
| |
| |
| -Wasm-ignored-qualifier |
| ----------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ignored` |nbsp| :placeholder:`A` |nbsp| :diagtext:`qualifier on asm`| |
| +----------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`meaningless 'volatile' on asm outside function`| |
| +-------------------------------------------------------------------------------------+ |
| |
| |
| -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`| |
| +-------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Watimport-in-framework-header |
| ------------------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`use of '@import' in framework header is discouraged, including this header requires -fmodules`| |
| +------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Watomic-alignment |
| ------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`misaligned or large atomic operation may incur significant performance penalty`| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Watomic-memory-ordering |
| ------------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`memory order argument to atomic operation is invalid`| |
| +-------------------------------------------------------------------------------------------+ |
| |
| |
| -Watomic-properties |
| ------------------- |
| Controls `-Wcustom-atomic-properties`_, `-Wimplicit-atomic-properties`_. |
| |
| |
| -Watomic-property-with-user-defined-accessor |
| -------------------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------+--------------------+-----------------------------------------------+--------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`writable atomic property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`cannot pair a synthesized` |nbsp| |+------------------+| |nbsp| :diagtext:`with a user defined` |nbsp| |+------------------+| |
| | ||:diagtext:`getter`|| ||:diagtext:`getter`|| |
| | |+------------------+| |+------------------+| |
| | ||:diagtext:`setter`|| ||:diagtext:`setter`|| |
| | |+------------------+| |+------------------+| |
| +--------------------------------------------------------------------------------------------------------------------------------------------+--------------------+-----------------------------------------------+--------------------+ |
| |
| |
| -Wattribute-packed-for-bitfield |
| ------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'packed' attribute was ignored on bit-fields with single-byte alignment in older versions of GCC and Clang`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wattributes |
| ------------ |
| This diagnostic is enabled by default. |
| |
| Controls `-Wignored-attributes`_, `-Wunknown-attributes`_. |
| |
| |
| -Wauto-disable-vptr-sanitizer |
| ----------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`implicitly disabling vptr sanitizer because rtti wasn't enabled`| |
| +------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wauto-import |
| ------------- |
| **Diagnostic text:** |
| |
| +-------------------------------------------------+---------------------------------+-------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`treating #`|+-------------------------------+| |nbsp| :diagtext:`as an import of module '`:placeholder:`B`:diagtext:`'`| |
| | ||:diagtext:`include` || | |
| | |+-------------------------------+| | |
| | ||:diagtext:`import` || | |
| | |+-------------------------------+| | |
| | ||:diagtext:`include\_next` || | |
| | |+-------------------------------+| | |
| | ||:diagtext:`\_\_include\_macros`|| | |
| | |+-------------------------------+| | |
| +-------------------------------------------------+---------------------------------+-------------------------------------------------------------------------+ |
| |
| |
| -Wauto-storage-class |
| -------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'auto' storage class specifier is not permitted in C++11, and will not be supported in future releases`| |
| +---------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wauto-var-id |
| ------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'auto' deduced as 'id' in declaration of` |nbsp| :placeholder:`A`| |
| +-------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wavailability |
| -------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'unavailable' availability overrides all other availability information`| |
| +--------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------+----------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ignoring availability attribute` |nbsp| |+--------------------------------------+| |
| | ||:diagtext:`on '+load' method` || |
| | |+--------------------------------------+| |
| | ||:diagtext:`with constructor attribute`|| |
| | |+--------------------------------------+| |
| | ||:diagtext:`with destructor attribute` || |
| | |+--------------------------------------+| |
| +------------------------------------------------------------------------------+----------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`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-function-cast |
| ------------------- |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`cast from function call of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to non-matching type` |nbsp| :placeholder:`B`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wbinary-literal |
| ---------------- |
| Controls `-Wc++14-binary-literal`_, `-Wc++98-c++11-compat-binary-literal`_, `-Wgnu-binary-literal`_. |
| |
| |
| -Wbind-to-temporary-copy |
| ------------------------ |
| Also controls `-Wc++98-compat-bind-to-temporary-copy`_. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`C++98 requires an accessible copy constructor for class` |nbsp| :placeholder:`C` |nbsp| :diagtext:`when binding a reference to a temporary; was` |nbsp| |+---------------------+| |
| | ||:diagtext:`private` || |
| | |+---------------------+| |
| | ||:diagtext:`protected`|| |
| | |+---------------------+| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+ |
| |
| +--------------------------------------------------------------------+------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`no viable constructor` |nbsp| |+----------------------------------------------------+| |nbsp| :diagtext:`of type` |nbsp| :placeholder:`B`:diagtext:`; C++98 requires a copy constructor when binding a reference to a temporary`| |
| | ||:diagtext:`copying variable` || | |
| | |+----------------------------------------------------+| | |
| | ||:diagtext:`copying parameter` || | |
| | |+----------------------------------------------------+| | |
| | ||:diagtext:`returning object` || | |
| | |+----------------------------------------------------+| | |
| | ||:diagtext:`initializing statement expression result`|| | |
| | |+----------------------------------------------------+| | |
| | ||:diagtext:`throwing object` || | |
| | |+----------------------------------------------------+| | |
| | ||:diagtext:`copying member subobject` || | |
| | |+----------------------------------------------------+| | |
| | ||:diagtext:`copying array element` || | |
| | |+----------------------------------------------------+| | |
| | ||:diagtext:`allocating object` || | |
| | |+----------------------------------------------------+| | |
| | ||:diagtext:`copying temporary` || | |
| | |+----------------------------------------------------+| | |
| | ||:diagtext:`initializing base subobject` || | |
| | |+----------------------------------------------------+| | |
| | ||:diagtext:`initializing vector element` || | |
| | |+----------------------------------------------------+| | |
| | ||:diagtext:`capturing value` || | |
| | |+----------------------------------------------------+| | |
| +--------------------------------------------------------------------+------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wbinding-in-condition |
| ---------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ISO C++17 does not permit structured binding declaration in a condition`| |
| +--------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wbitfield-constant-conversion |
| ------------------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`implicit truncation from` |nbsp| :placeholder:`C` |nbsp| :diagtext:`to bit-field changes value from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wbitfield-enum-conversion |
| -------------------------- |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`bit-field` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not wide enough to store all enumerators of` |nbsp| :placeholder:`B`| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`signed bit-field` |nbsp| :placeholder:`A` |nbsp| :diagtext:`needs an extra bit to represent the largest positive enumerators of` |nbsp| :placeholder:`B`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`assigning value of signed enum type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`to unsigned bit-field` |nbsp| :placeholder:`A`:diagtext:`; negative enumerators of enum` |nbsp| :placeholder:`B` |nbsp| :diagtext:`will be converted to positive values`| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wbitfield-width |
| ---------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`width of anonymous bit-field (`:placeholder:`A` |nbsp| :diagtext:`bits) exceeds width of its type; value will be truncated to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`bit`|+-------------+| |
| | || || |
| | |+-------------+| |
| | ||:diagtext:`s`|| |
| | |+-------------+| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`width of bit-field` |nbsp| :placeholder:`A` |nbsp| :diagtext:`(`:placeholder:`B` |nbsp| :diagtext:`bits) exceeds the width of its type; value will be truncated to` |nbsp| :placeholder:`C` |nbsp| :diagtext:`bit`|+-------------+| |
| | || || |
| | |+-------------+| |
| | ||:diagtext:`s`|| |
| | |+-------------+| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+ |
| |
| |
| -Wbitwise-op-parentheses |
| ------------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' within '`:placeholder:`B`:diagtext:`'`| |
| +-----------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wblock-capture-autoreleasing |
| ----------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`block captures an autoreleasing out-parameter, which may result in use-after-free bugs`| |
| +-----------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wbool-conversion |
| ----------------- |
| This diagnostic is enabled by default. |
| |
| Also controls `-Wpointer-bool-conversion`_, `-Wundefined-bool-conversion`_. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`initialization of pointer of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to null from a constant boolean expression`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wbool-conversions |
| ------------------ |
| Synonym for `-Wbool-conversion`_. |
| |
| |
| -Wbraced-scalar-init |
| -------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`braces around scalar initializer`| |
| +-----------------------------------------------------------------------+ |
| |
| |
| -Wbridge-cast |
| ------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`bridges to` |nbsp| :placeholder:`B`:diagtext:`, not` |nbsp| :placeholder:`C`| |
| +------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`cannot bridge to` |nbsp| :placeholder:`B`| |
| +-------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wbuiltin-macro-redefined |
| ------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`redefining builtin macro`| |
| +---------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`undefining builtin macro`| |
| +---------------------------------------------------------------+ |
| |
| |
| -Wbuiltin-memcpy-chk-size |
| ------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`will always overflow destination buffer`| |
| +------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wbuiltin-requires-header |
| ------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`declaration of built-in function '`:placeholder:`B`:diagtext:`' requires inclusion of the header <`:placeholder:`A`:diagtext:`>`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wc++-compat |
| ------------ |
| **Diagnostic text:** |
| |
| +---------------------------+---------------------------+--------------------+--------------------------------------------+---------------------------+--------------------------+ |
| |:warning:`warning:` |nbsp| |+-------------------------+|+------------------+| |nbsp| :diagtext:`has size 0 in C,` |nbsp| |+-------------------------+| |nbsp| :diagtext:`in C++`| |
| | || |||:diagtext:`struct`|| ||:diagtext:`size 1` || | |
| | |+-------------------------+|+------------------+| |+-------------------------+| | |
| | ||:diagtext:`empty` |nbsp| |||:diagtext:`union` || ||:diagtext:`non-zero size`|| | |
| | |+-------------------------+|+------------------+| |+-------------------------+| | |
| +---------------------------+---------------------------+--------------------+--------------------------------------------+---------------------------+--------------------------+ |
| |
| |
| -Wc++0x-compat |
| -------------- |
| Synonym for `-Wc++11-compat`_. |
| |
| |
| -Wc++0x-extensions |
| ------------------ |
| Synonym for `-Wc++11-extensions`_. |
| |
| |
| -Wc++0x-narrowing |
| ----------------- |
| Synonym for `-Wc++11-narrowing`_. |
| |
| |
| -Wc++11-compat |
| -------------- |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| Also controls `-Wc++11-compat-deprecated-writable-strings`_, `-Wc++11-compat-reserved-user-defined-literal`_, `-Wc++11-narrowing`_, `-Wc++98-c++11-c++14-c++17-compat`_, `-Wc++98-c++11-c++14-compat`_, `-Wc++98-c++11-compat`_. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`integer literal is too large to be represented in type 'long' and is subject to undefined behavior under C++98, interpreting as 'unsigned long'; this literal will` |nbsp| |+---------------------------------+| |nbsp| :diagtext:`in C++11 onwards`| |
| | ||:diagtext:`have type 'long long'`|| | |
| | |+---------------------------------+| | |
| | ||:diagtext:`be ill-formed` || | |
| | |+---------------------------------+| | |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'auto' storage class specifier is redundant and incompatible with C++11`| |
| +--------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`identifier after literal will be treated as a user-defined literal suffix in C++11`| |
| +-------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' is a keyword in C++11`| |
| +-------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`use of right-shift operator ('>>') in template argument will require parentheses in C++11`| |
| +--------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`explicit instantiation cannot be 'inline'`| |
| +--------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`explicit instantiation of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`must occur at global scope`| |
| +--------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`explicit instantiation of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`not in a namespace enclosing` |nbsp| :placeholder:`B`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`explicit instantiation of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`must occur in namespace` |nbsp| :placeholder:`B`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`integer literal is too large to be represented in type 'long', interpreting as 'unsigned long' per C++98; this literal will` |nbsp| |+---------------------------------+| |nbsp| :diagtext:`in C++11 onwards`| |
| | ||:diagtext:`have type 'long long'`|| | |
| | |+---------------------------------+| | |
| | ||:diagtext:`be ill-formed` || | |
| | |+---------------------------------+| | |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+------------------------------------+ |
| |
| |
| -Wc++11-compat-deprecated-writable-strings |
| ------------------------------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`conversion from string literal to` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is deprecated`| |
| +---------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wc++11-compat-pedantic |
| ----------------------- |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| Controls `-Wc++11-compat`_, `-Wc++98-c++11-c++14-c++17-compat-pedantic`_, `-Wc++98-c++11-c++14-compat-pedantic`_, `-Wc++98-c++11-compat-pedantic`_. |
| |
| |
| -Wc++11-compat-reserved-user-defined-literal |
| -------------------------------------------- |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`identifier after literal will be treated as a reserved user-defined literal suffix in C++11`| |
| +----------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wc++11-extensions |
| ------------------ |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| Also controls `-Wc++11-extra-semi`_, `-Wc++11-inline-namespace`_, `-Wc++11-long-long`_. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`alias declarations are a C++11 extension`| |
| +-------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`implicit conversion from array size expression of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| |+-----------------------+| |nbsp| :diagtext:`type` |nbsp| :placeholder:`C` |nbsp| :diagtext:`is a C++11 extension`| |
| | ||:diagtext:`integral` || | |
| | |+-----------------------+| | |
| | ||:diagtext:`enumeration`|| | |
| | |+-----------------------+| | |
| +---------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'auto' type specifier is a C++11 extension`| |
| +---------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`enumeration types with a fixed underlying type are a C++11 extension`| |
| +-----------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------+-----------------------+--------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| |+---------------------+| |nbsp| :diagtext:`function definitions are a C++11 extension`| |
| | ||:diagtext:`defaulted`|| | |
| | |+---------------------+| | |
| | ||:diagtext:`deleted` || | |
| | |+---------------------+| | |
| +---------------------------+-----------------------+--------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`befriending enumeration type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a C++11 extension`| |
| +-----------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`commas at the end of enumerator lists are a C++11 extension`| |
| +--------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`explicit conversion functions are a C++11 extension`| |
| +------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`extern templates are a C++11 extension`| |
| +-----------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`range-based for loop is a C++11 extension`| |
| +--------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`generalized initializer lists are a C++11 extension`| |
| +------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`use of enumeration in a nested name specifier is a C++11 extension`| |
| +---------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`non-class friend type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a C++11 extension`| |
| +----------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`in-class initialization of non-static data member is a C++11 extension`| |
| +-------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' keyword is a C++11 extension`| |
| +--------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`reference qualifiers on functions are a C++11 extension`| |
| +----------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`rvalue references are a C++11 extension`| |
| +------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`scoped enumerations are a C++11 extension`| |
| +--------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`static data member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in union is a C++11 extension`| |
| +----------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`non-type template argument referring to` |nbsp| |+--------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`with internal linkage is a C++11 extension`| |
| | ||:diagtext:`function`|| | |
| | |+--------------------+| | |
| | ||:diagtext:`object` || | |
| | |+--------------------+| | |
| +--------------------------------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'template' keyword outside of a template`| |
| +-------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`default template arguments for a function template are a C++11 extension`| |
| +---------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'typename' occurs outside of a template`| |
| +------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------+-----------------------+-------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`unelaborated friend declaration is a C++11 extension; specify '`|+---------------------+|:diagtext:`' to befriend` |nbsp| :placeholder:`B`| |
| | ||:diagtext:`struct` || | |
| | |+---------------------+| | |
| | ||:diagtext:`interface`|| | |
| | |+---------------------+| | |
| | ||:diagtext:`union` || | |
| | |+---------------------+| | |
| | ||:diagtext:`class` || | |
| | |+---------------------+| | |
| | ||:diagtext:`enum` || | |
| | |+---------------------+| | |
| +------------------------------------------------------------------------------------------------------+-----------------------+-------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`variadic templates are a C++11 extension`| |
| +-------------------------------------------------------------------------------+ |
| |
| |
| -Wc++11-extra-semi |
| ------------------ |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`extra ';' outside of a function is a C++11 extension`| |
| +-------------------------------------------------------------------------------------------+ |
| |
| |
| -Wc++11-inline-namespace |
| ------------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`inline namespaces are a C++11 feature`| |
| +----------------------------------------------------------------------------+ |
| |
| |
| -Wc++11-long-long |
| ----------------- |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'long long' is a C++11 extension`| |
| +-----------------------------------------------------------------------+ |
| |
| |
| -Wc++11-narrowing |
| ----------------- |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-----------------------+----------------------------------------+--------+--------------------------------------------------------------------------------------------------------------------------+ |
| |:error:`error:` |nbsp| |+--------------------------------------+| |nbsp| |+------------------------------------------------------------------------------------------------------------------------+| |
| | ||:diagtext:`case value` || ||+--------------------------------------------------------------------------------------------------------------+ || |
| | |+--------------------------------------+| |||:diagtext:`cannot be narrowed from type` |nbsp| :placeholder:`C` |nbsp| :diagtext:`to` |nbsp| :placeholder:`D`| || |
| | ||:diagtext:`enumerator value` || ||+--------------------------------------------------------------------------------------------------------------+ || |
| | |+--------------------------------------+| |+------------------------------------------------------------------------------------------------------------------------+| |
| | ||:diagtext:`non-type template argument`|| ||+----------------------------------------------------------------------------------------------------------------------+|| |
| | |+--------------------------------------+| |||:diagtext:`evaluates to` |nbsp| :placeholder:`C`:diagtext:`, which cannot be narrowed to type` |nbsp| :placeholder:`D`||| |
| | ||:diagtext:`array size` || ||+----------------------------------------------------------------------------------------------------------------------+|| |
| | |+--------------------------------------+| |+------------------------------------------------------------------------------------------------------------------------+| |
| | ||:diagtext:`constexpr if condition` || | | |
| | |+--------------------------------------+| | | |
| +-----------------------+----------------------------------------+--------+--------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:error:`error:` |nbsp| :diagtext:`constant expression evaluates to` |nbsp| :placeholder:`A` |nbsp| :diagtext:`which cannot be narrowed to type` |nbsp| :placeholder:`B`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:error:`error:` |nbsp| :diagtext:`type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`cannot be narrowed to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`in initializer list`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:error:`error:` |nbsp| :diagtext:`non-constant-expression cannot be narrowed from type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`in initializer list`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`constant expression evaluates to` |nbsp| :placeholder:`A` |nbsp| :diagtext:`which cannot be narrowed to type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`in C++11`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`cannot be narrowed to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`in initializer list in C++11`| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`non-constant-expression cannot be narrowed from type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`in initializer list in C++11`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wc++14-binary-literal |
| ---------------------- |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`binary integer literals are a C++14 extension`| |
| +------------------------------------------------------------------------------------+ |
| |
| |
| -Wc++14-compat |
| -------------- |
| Controls `-Wc++98-c++11-c++14-c++17-compat`_, `-Wc++98-c++11-c++14-compat`_. |
| |
| |
| -Wc++14-compat-pedantic |
| ----------------------- |
| Controls `-Wc++14-compat`_, `-Wc++98-c++11-c++14-c++17-compat-pedantic`_, `-Wc++98-c++11-c++14-compat-pedantic`_. |
| |
| |
| -Wc++14-extensions |
| ------------------ |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| Also controls `-Wc++14-binary-literal`_. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------+-------------------------+----------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`use of this statement in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is a C++14 extension`| |
| | ||:diagtext:`function` || | |
| | |+-----------------------+| | |
| | ||:diagtext:`constructor`|| | |
| | |+-----------------------+| | |
| +-----------------------------------------------------------------------------------+-------------------------+----------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`multiple return statements in constexpr function is a C++14 extension`| |
| +------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------+-------------------------+----------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`variable declaration in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is a C++14 extension`| |
| | ||:diagtext:`function` || | |
| | |+-----------------------+| | |
| | ||:diagtext:`constructor`|| | |
| | |+-----------------------+| | |
| +----------------------------------------------------------------------------------+-------------------------+----------------------------------------+ |
| |
| +-----------------------------------------------------------------------------+-------------------------+----------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`type definition in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is a C++14 extension`| |
| | ||:diagtext:`function` || | |
| | |+-----------------------+| | |
| | ||:diagtext:`constructor`|| | |
| | |+-----------------------+| | |
| +-----------------------------------------------------------------------------+-------------------------+----------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`use of the` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute is a C++14 extension`| |
| +---------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'decltype(auto)' type specifier is a C++14 extension`| |
| +-------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`initialized lambda captures are a C++14 extension`| |
| +----------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`variable templates are a C++14 extension`| |
| +-------------------------------------------------------------------------------+ |
| |
| |
| -Wc++17-compat |
| -------------- |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| Controls `-Wc++17-compat-mangling`_, `-Wc++98-c++11-c++14-c++17-compat`_, `-Wdeprecated-increment-bool`_, `-Wdeprecated-register`_. |
| |
| |
| -Wc++17-compat-mangling |
| ----------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`mangled name of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`will change in C++17 due to non-throwing exception specification in function signature`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wc++17-compat-pedantic |
| ----------------------- |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| Controls `-Wc++17-compat`_, `-Wc++98-c++11-c++14-c++17-compat-pedantic`_. |
| |
| |
| -Wc++17-extensions |
| ------------------ |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ISO C++ standards before C++17 do not allow new expression for type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to use list-initialization`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`constexpr if is a C++17 extension`| |
| +------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'constexpr' on lambda expressions is a C++17 extension`| |
| +---------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`use of the` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute is a C++17 extension`| |
| +---------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`decomposition declarations are a C++17 extension`| |
| +---------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`pack fold expression is a C++17 extension`| |
| +--------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'begin' and 'end' returning different types (`:placeholder:`A` |nbsp| :diagtext:`and` |nbsp| :placeholder:`B`:diagtext:`) is a C++17 extension`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`hexadecimal floating literals are a C++17 feature`| |
| +----------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------+--------------------+-------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'`|+------------------+|:diagtext:`' initialization statements are a C++17 extension`| |
| | ||:diagtext:`if` || | |
| | |+------------------+| | |
| | ||:diagtext:`switch`|| | |
| | |+------------------+| | |
| +----------------------------------------+--------------------+-------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`inline variables are a C++17 extension`| |
| +-----------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`use of multiple declarators in a single using declaration is a C++17 extension`| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`nested namespace definition is a C++17 extension; define each namespace separately`| |
| +-------------------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------+---------------------------+-----------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`attributes on` |nbsp| |+-------------------------+| |nbsp| :diagtext:`declaration are a C++17 extension`| |
| | ||:diagtext:`a namespace` || | |
| | |+-------------------------+| | |
| | ||:diagtext:`an enumerator`|| | |
| | |+-------------------------+| | |
| +------------------------------------------------------------+---------------------------+-----------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`capture of '\*this' by copy is a C++17 extension`| |
| +---------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`static\_assert with no message is a C++17 extension`| |
| +------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`template template parameter using 'typename' is a C++17 extension`| |
| +--------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`default scope specifier for attributes is a C++17 extension`| |
| +--------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`pack expansion of using declaration is a C++17 extension`| |
| +-----------------------------------------------------------------------------------------------+ |
| |
| |
| -Wc++1y-extensions |
| ------------------ |
| Synonym for `-Wc++14-extensions`_. |
| |
| |
| -Wc++1z-compat |
| -------------- |
| Synonym for `-Wc++17-compat`_. |
| |
| |
| -Wc++1z-compat-mangling |
| ----------------------- |
| Synonym for `-Wc++17-compat-mangling`_. |
| |
| |
| -Wc++1z-extensions |
| ------------------ |
| Synonym for `-Wc++17-extensions`_. |
| |
| |
| -Wc++2a-compat |
| -------------- |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'<=>' is a single token in C++2a; add a space to avoid a change in behavior`| |
| +------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' is a keyword in C++2a`| |
| +-------------------------------------------------------------------------------------------+ |
| |
| |
| -Wc++2a-compat-pedantic |
| ----------------------- |
| Synonym for `-Wc++2a-compat`_. |
| |
| |
| -Wc++2a-extensions |
| ------------------ |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`default member initializer for bit-field is a C++2a extension`| |
| +----------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`explicit capture of 'this' with a capture default of '=' is a C++2a extension`| |
| +--------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`invoking a pointer to a 'const &' member function on an rvalue is a C++2a extension`| |
| +--------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wc++98-c++11-c++14-c++17-compat |
| -------------------------------- |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`default member initializer for bit-field is incompatible with C++ standards before C++2a`| |
| +-------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`explicit capture of 'this' with a capture default of '=' is incompatible with C++ standards before C++2a`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'<=>' operator is incompatible with C++ standards before C++2a`| |
| +-----------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'char8\_t' type specifier is incompatible with C++ standards before C++20`| |
| +----------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wc++98-c++11-c++14-c++17-compat-pedantic |
| ----------------------------------------- |
| Also controls `-Wc++98-c++11-c++14-c++17-compat`_. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`invoking a pointer to a 'const &' member function on an rvalue is incompatible with C++ standards before C++2a`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wc++98-c++11-c++14-compat |
| -------------------------- |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`constexpr if is incompatible with C++ standards before C++17`| |
| +---------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`constexpr on lambda expressions is incompatible with C++ standards before C++17`| |
| +----------------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`decomposition declarations are incompatible with C++ standards before C++17`| |
| +------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`pack fold expression is incompatible with C++ standards before C++17`| |
| +-----------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------+--------------------+----------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| |+------------------+| |nbsp| :diagtext:`initialization statements are incompatible with C++ standards before C++17`| |
| | ||:diagtext:`if` || | |
| | |+------------------+| | |
| | ||:diagtext:`switch`|| | |
| | |+------------------+| | |
| +---------------------------+--------------------+----------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`inline variables are incompatible with C++ standards before C++17`| |
| +--------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`nested namespace definition is incompatible with C++ standards before C++17`| |
| +------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`by value capture of '\*this' is incompatible with C++ standards before C++17`| |
| +-------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`static\_assert with no message is incompatible with C++ standards before C++17`| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`non-type template parameters declared with` |nbsp| :placeholder:`A` |nbsp| :diagtext:`are incompatible with C++ standards before C++17`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`template template parameter using 'typename' is incompatible with C++ standards before C++17`| |
| +-----------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`unicode literals are incompatible with C++ standards before C++17`| |
| +--------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`default scope specifier for attributes is incompatible with C++ standards before C++17`| |
| +-----------------------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`use of multiple declarators in a single using declaration is incompatible with C++ standards before C++17`| |
| +------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`pack expansion using declaration is incompatible with C++ standards before C++17`| |
| +-----------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'begin' and 'end' returning different types (`:placeholder:`A` |nbsp| :diagtext:`and` |nbsp| :placeholder:`B`:diagtext:`) is incompatible with C++ standards before C++17`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wc++98-c++11-c++14-compat-pedantic |
| ----------------------------------- |
| Also controls `-Wc++98-c++11-c++14-compat`_. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------+---------------------------+--------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`attributes on` |nbsp| |+-------------------------+| |nbsp| :diagtext:`declaration are incompatible with C++ standards before C++17`| |
| | ||:diagtext:`a namespace` || | |
| | |+-------------------------+| | |
| | ||:diagtext:`an enumerator`|| | |
| | |+-------------------------+| | |
| +------------------------------------------------------------+---------------------------+--------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`hexadecimal floating literals are incompatible with C++ standards before C++17`| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wc++98-c++11-compat |
| -------------------- |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`use of this statement in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is incompatible with C++ standards before C++14`| |
| | ||:diagtext:`function` || | |
| | |+-----------------------+| | |
| | ||:diagtext:`constructor`|| | |
| | |+-----------------------+| | |
| +-----------------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`multiple return statements in constexpr function is incompatible with C++ standards before C++14`| |
| +---------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`constexpr function with no return statements is incompatible with C++ standards before C++14`| |
| +-----------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`variable declaration in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is incompatible with C++ standards before C++14`| |
| | ||:diagtext:`function` || | |
| | |+-----------------------+| | |
| | ||:diagtext:`constructor`|| | |
| | |+-----------------------+| | |
| +----------------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`type definition in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is incompatible with C++ standards before C++14`| |
| | ||:diagtext:`function` || | |
| | |+-----------------------+| | |
| | ||:diagtext:`constructor`|| | |
| | |+-----------------------+| | |
| +-----------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'decltype(auto)' type specifier is incompatible with C++ standards before C++14`| |
| +----------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`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-binary-literal |
| ----------------------------------- |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`binary integer literals are incompatible with C++ standards before C++14`| |
| +---------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wc++98-c++11-compat-pedantic |
| ----------------------------- |
| Controls `-Wc++98-c++11-compat`_, `-Wc++98-c++11-compat-binary-literal`_. |
| |
| |
| -Wc++98-compat |
| -------------- |
| Also controls `-Wc++98-c++11-c++14-c++17-compat`_, `-Wc++98-c++11-c++14-compat`_, `-Wc++98-c++11-compat`_, `-Wc++98-compat-local-type-template-args`_, `-Wc++98-compat-unnamed-type-template-args`_. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`alias declarations are incompatible with C++98`| |
| +-------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'alignas' is incompatible with C++98`| |
| +---------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`alignof expressions are incompatible with C++98`| |
| +--------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`C++11 attribute syntax is incompatible with C++98`| |
| +----------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'auto' type specifier is incompatible with C++98`| |
| +---------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'constexpr' specifier is incompatible with C++98`| |
| +---------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`constructor call from initializer list is incompatible with C++98`| |
| +--------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'decltype' type specifier is incompatible with C++98`| |
| +-------------------------------------------------------------------------------------------+ |
| |
| +---------------------------+-----------------------+--------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| |+---------------------+| |nbsp| :diagtext:`function definitions are incompatible with C++98`| |
| | ||:diagtext:`defaulted`|| | |
| | |+---------------------+| | |
| | ||:diagtext:`deleted` || | |
| | |+---------------------+| | |
| +---------------------------+-----------------------+--------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`delegating constructors are incompatible with C++98`| |
| +------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`scalar initialized from empty initializer list is incompatible with C++98`| |
| +----------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`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:`default constructor` || | |
| | |+----------------------------+| |+------------------------------------+| | |
| | ||:diagtext:`union` || ||:diagtext:`copy constructor` || | |
| | |+----------------------------+| |+------------------------------------+| | |
| | | | ||:diagtext:`move constructor` || | |
| | | | |+------------------------------------+| | |
| | | | ||:diagtext:`copy assignment operator`|| | |
| | | | |+------------------------------------+| | |
| | | | ||:diagtext:`move assignment operator`|| | |
| | | | |+------------------------------------+| | |
| | | | ||:diagtext:`destructor` || | |
| | | | |+------------------------------------+| | |
| +---------------------------+------------------------------+------------------------------------------------------------------------------------------------+--------------------------------------+----------------------------------------------+ |
| |
| +---------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'nullptr' is incompatible with C++98`| |
| +---------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' keyword is incompatible with C++98`| |
| +--------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`passing object of trivial but non-POD type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`through variadic` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is incompatible with C++98`| |
| | ||:diagtext:`function` || | |
| | |+-----------------------+| | |
| | ||:diagtext:`block` || | |
| | |+-----------------------+| | |
| | ||:diagtext:`method` || | |
| | |+-----------------------+| | |
| | ||:diagtext:`constructor`|| | |
| | |+-----------------------+| | |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`raw string literals are incompatible with C++98`| |
| +--------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`reference qualifiers on functions are incompatible with C++98`| |
| +----------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`reference initialized from initializer list is incompatible with C++98`| |
| +-------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`rvalue references are incompatible with C++98`| |
| +------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`scoped enumerations are incompatible with C++98`| |
| +--------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`substitution failure due to access control is incompatible with C++98`| |
| +------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`static\_assert declarations are incompatible with C++98`| |
| +----------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`static data member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in union is incompatible with C++98`| |
| +----------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`jump from switch statement to this case label is incompatible with C++98`| |
| +---------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`redundant parentheses surrounding address non-type template argument are incompatible with C++98`| |
| +---------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`use of null pointer as non-type template argument is incompatible with C++98`| |
| +-------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`non-type template argument referring to` |nbsp| |+--------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`with internal linkage is incompatible with C++98`| |
| | ||:diagtext:`function`|| | |
| | |+--------------------+| | |
| | ||:diagtext:`object` || | |
| | |+--------------------+| | |
| +--------------------------------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`use of 'template' keyword outside of a template is incompatible with C++98`| |
| +-----------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`default template arguments for a function template are incompatible with C++98`| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`trailing return types are incompatible with C++98`| |
| +----------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`consecutive right angle brackets are incompatible with C++98 (use '> >')`| |
| +---------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`use of 'typename' outside of a template is incompatible with C++98`| |
| +---------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------+-----------------------+------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`befriending` |nbsp| :placeholder:`B` |nbsp| :diagtext:`without '`|+---------------------+|:diagtext:`' keyword is incompatible with C++98`| |
| | ||:diagtext:`struct` || | |
| | |+---------------------+| | |
| | ||:diagtext:`interface`|| | |
| | |+---------------------+| | |
| | ||:diagtext:`union` || | |
| | |+---------------------+| | |
| | ||:diagtext:`class` || | |
| | |+---------------------+| | |
| | ||:diagtext:`enum` || | |
| | |+---------------------+| | |
| +-------------------------------------------------------------------------------------------------------+-----------------------+------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`using this character in an identifier is incompatible with C++98`| |
| +-------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`unicode literals are incompatible with C++98`| |
| +-----------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' type specifier is incompatible with C++98`| |
| +---------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`inheriting constructors are incompatible with C++98`| |
| +------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`variadic templates are incompatible with C++98`| |
| +-------------------------------------------------------------------------------------+ |
| |
| |
| -Wc++98-compat-bind-to-temporary-copy |
| ------------------------------------- |
| **Diagnostic text:** |
| |
| +---------------------------+------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------+----------------------------+ |
| |:warning:`warning:` |nbsp| |+----------------------------------------------------+| |nbsp| :diagtext:`of type` |nbsp| :placeholder:`C` |nbsp| :diagtext:`when binding a reference to a temporary would` |nbsp| |+----------------------------------------------+| |nbsp| :diagtext:`in C++98`| |
| | ||:diagtext:`copying variable` || ||:diagtext:`invoke an inaccessible constructor`|| | |
| | |+----------------------------------------------------+| |+----------------------------------------------+| | |
| | ||:diagtext:`copying parameter` || ||:diagtext:`find no viable constructor` || | |
| | |+----------------------------------------------------+| |+----------------------------------------------+| | |
| | ||:diagtext:`returning object` || ||:diagtext:`find ambiguous constructors` || | |
| | |+----------------------------------------------------+| |+----------------------------------------------+| | |
| | ||:diagtext:`initializing statement expression result`|| ||:diagtext:`invoke a deleted constructor` || | |
| | |+----------------------------------------------------+| |+----------------------------------------------+| | |
| | ||:diagtext:`throwing object` || | | | |
| | |+----------------------------------------------------+| | | | |
| | ||:diagtext:`copying member subobject` || | | | |
| | |+----------------------------------------------------+| | | | |
| | ||:diagtext:`copying array element` || | | | |
| | |+----------------------------------------------------+| | | | |
| | ||:diagtext:`allocating object` || | | | |
| | |+----------------------------------------------------+| | | | |
| | ||:diagtext:`copying temporary` || | | | |
| | |+----------------------------------------------------+| | | | |
| | ||:diagtext:`initializing base subobject` || | | | |
| | |+----------------------------------------------------+| | | | |
| | ||:diagtext:`initializing vector element` || | | | |
| | |+----------------------------------------------------+| | | | |
| | ||:diagtext:`capturing value` || | | | |
| | |+----------------------------------------------------+| | | | |
| +---------------------------+------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------+----------------------------+ |
| |
| |
| -Wc++98-compat-extra-semi |
| ------------------------- |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`extra ';' outside of a function is incompatible with C++98`| |
| +-------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wc++98-compat-local-type-template-args |
| --------------------------------------- |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`local type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`as template argument is incompatible with C++98`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wc++98-compat-pedantic |
| ----------------------- |
| Also controls `-Wc++98-c++11-c++14-c++17-compat-pedantic`_, `-Wc++98-c++11-c++14-compat-pedantic`_, `-Wc++98-c++11-compat-pedantic`_, `-Wc++98-compat`_, `-Wc++98-compat-bind-to-temporary-copy`_, `-Wc++98-compat-extra-semi`_. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`implicit conversion from array size expression of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| |+-----------------------+| |nbsp| :diagtext:`type` |nbsp| :placeholder:`C` |nbsp| :diagtext:`is incompatible with C++98`| |
| | ||:diagtext:`integral` || | |
| | |+-----------------------+| | |
| | ||:diagtext:`enumeration`|| | |
| | |+-----------------------+| | |
| +---------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`cast between pointer-to-function and pointer-to-object is incompatible with C++98`| |
| +------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`empty macro arguments are incompatible with C++98`| |
| +----------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`commas at the end of enumerator lists are incompatible with C++98`| |
| +--------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`extern templates are incompatible with C++98`| |
| +-----------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'long long' is incompatible with C++98`| |
| +-----------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`C++98 requires newline at end of file`| |
| +----------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`#line number greater than 32767 is incompatible with C++98`| |
| +-------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`variadic macros are incompatible with C++98`| |
| +----------------------------------------------------------------------------------+ |
| |
| |
| -Wc++98-compat-unnamed-type-template-args |
| ----------------------------------------- |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`unnamed type as template argument is incompatible with C++98`| |
| +---------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wc11-extensions |
| ---------------- |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`anonymous unions are a C11 extension`| |
| +---------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :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`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wcast-qual-unrelated |
| --------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------+-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ISO C++ does not allow` |nbsp| |+---------------------------------+| |nbsp| :diagtext:`from` |nbsp| :placeholder:`B` |nbsp| :diagtext:`to` |nbsp| :placeholder:`C` |nbsp| :diagtext:`because it casts away qualifiers, even though the source and destination types are unrelated`| |
| | ||:diagtext:`const\_cast` || | |
| | |+---------------------------------+| | |
| | ||:diagtext:`static\_cast` || | |
| | |+---------------------------------+| | |
| | ||:diagtext:`reinterpret\_cast` || | |
| | |+---------------------------------+| | |
| | ||:diagtext:`dynamic\_cast` || | |
| | |+---------------------------------+| | |
| | ||:diagtext:`C-style cast` || | |
| | |+---------------------------------+| | |
| | ||:diagtext:`functional-style cast`|| | |
| | |+---------------------------------+| | |
| +---------------------------------------------------------------------+-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wchar-align |
| ------------ |
| This diagnostic flag exists for GCC compatibility, and has no effect in Clang. |
| |
| -Wchar-subscripts |
| ----------------- |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------+-------------------------+-------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`array section` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is of type 'char'`| |
| | ||:diagtext:`lower bound`|| | |
| | |+-----------------------+| | |
| | ||:diagtext:`length` || | |
| | |+-----------------------+| | |
| +------------------------------------------------------------+-------------------------+-------------------------------------+ |
| |
| +------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`array subscript is of type 'char'`| |
| +------------------------------------------------------------------------+ |
| |
| |
| -Wclang-cl-pch |
| -------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`support for '/Yc' with more than one source file not implemented yet; flag ignored`| |
| +-------------------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`support for '/Yc' and '/Yu' with different filenames not implemented yet; flags ignored`| |
| +------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`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`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`definition of macro` |nbsp| :placeholder:`A` |nbsp| :diagtext:`does not match definition in precompiled header`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wclass-varargs |
| --------------- |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| Also controls `-Wnon-pod-varargs`_. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`passing object of class type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`through variadic` |nbsp| |+-----------------------+|+--------------------------------------------------------------------+| |
| | ||:diagtext:`function` ||| || |
| | |+-----------------------+|+--------------------------------------------------------------------+| |
| | ||:diagtext:`block` |||+------------------------------------------------------------------+|| |
| | |+-----------------------+|||:diagtext:`; did you mean to call '`:placeholder:`D`:diagtext:`'?`||| |
| | ||:diagtext:`method` |||+------------------------------------------------------------------+|| |
| | |+-----------------------+|+--------------------------------------------------------------------+| |
| | ||:diagtext:`constructor`|| | |
| | |+-----------------------+| | |
| +---------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------+ |
| |
| |
| -Wcomma |
| ------- |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`possible misuse of comma operator here`| |
| +-----------------------------------------------------------------------------+ |
| |
| |
| -Wcomment |
| --------- |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`escaped newline between \*/ characters at block comment end`| |
| +--------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`// comments are not allowed in this language`| |
| +-----------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`multi-line // comment`| |
| +------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'/\*' within block comment`| |
| +-----------------------------------------------------------------+ |
| |
| |
| -Wcomments |
| ---------- |
| Synonym for `-Wcomment`_. |
| |
| |
| -Wcompare-distinct-pointer-types |
| -------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`comparison of distinct pointer types`| |
| +---------------------------------------------------------------------------+ |
| |
| |
| -Wcomplex-component-init |
| ------------------------ |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`complex initialization specifying real and imaginary components is an extension`| |
| +----------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -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 `-Wbitfield-enum-conversion`_, `-Wbool-conversion`_, `-Wconstant-conversion`_, `-Wenum-conversion`_, `-Wfloat-conversion`_, `-Wint-conversion`_, `-Wliteral-conversion`_, `-Wnon-literal-null-conversion`_, `-Wnull-conversion`_, `-Wobjc-literal-conversion`_, `-Wshorten-64-to-32`_, `-Wsign-conversion`_, `-Wstring-conversion`_. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`implicit conversion discards imaginary component:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`implicit conversion loses floating-point precision:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`implicit conversion when assigning computation result 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`_. |
| |
| |
| -Wcoroutine |
| ----------- |
| Synonym for `-Wcoroutine-missing-unhandled-exception`_. |
| |
| |
| -Wcoroutine-missing-unhandled-exception |
| --------------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is required to declare the member 'unhandled\_exception()' when exceptions are enabled`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wcovered-switch-default |
| ------------------------ |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`default label in switch which covers all enumeration values`| |
| +--------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wcpp |
| ----- |
| Synonym for `-W#warnings`_. |
| |
| |
| -Wcstring-format-directive |
| -------------------------- |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------------+------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`using` |nbsp| :placeholder:`A` |nbsp| :diagtext:`directive in` |nbsp| |+--------------------+| |nbsp| :diagtext:`which is being passed as a formatting argument to the formatting` |nbsp| |+----------------------+| |
| | ||:diagtext:`NSString`|| ||:diagtext:`method` || |
| | |+--------------------+| |+----------------------+| |
| | ||:diagtext:`CFString`|| ||:diagtext:`CFfunction`|| |
| | |+--------------------+| |+----------------------+| |
| +------------------------------------------------------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------------+------------------------+ |
| |
| |
| -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:`nvcc does not allow '\_\_`:placeholder:`A`:diagtext:`\_\_' to appear after '()' in lambdas`| |
| +---------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ignored 'inline' attribute on kernel function` |nbsp| :placeholder:`A`| |
| +------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`kernel function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a member function; this may not be accepted by nvcc`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`argument to '#pragma unroll' should not be in parentheses in CUDA C/C++`| |
| +--------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wcustom-atomic-properties |
| -------------------------- |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------+--------------------+----------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`atomic by default property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has a user defined` |nbsp| |+------------------+| |nbsp| :diagtext:`(property should be marked 'atomic' if this is intended)`| |
| | ||:diagtext:`getter`|| | |
| | |+------------------+| | |
| | ||:diagtext:`setter`|| | |
| | |+------------------+| | |
| +---------------------------------------------------------------------------------------------------------------------------------------+--------------------+----------------------------------------------------------------------------+ |
| |
| |
| -Wdangling |
| ---------- |
| This diagnostic is enabled by default. |
| |
| Also controls `-Wdangling-field`_, `-Wdangling-initializer-list`_, `-Wreturn-stack-address`_. |
| |
| **Diagnostic text:** |
| |
| +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------+----------------------------+---------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| |+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| |nbsp| |+--------------------------+|:diagtext:`will be destroyed at the end of the full-expression`| |
| | ||+-----------------------------+---------------------------------------------------------+--------+------------------------------------------------------------------------+|| ||+------------------------+|| | |
| | |||:diagtext:`temporary` |nbsp| |+-------------------------------------------------------+| |nbsp| |+----------------------------------------------------------------------+||| |||:placeholder:`D` |nbsp| ||| | |
| | ||| ||:diagtext:`whose address is used as value of` || ||+-------------------------------+------------------------------------+|||| ||+------------------------+|| | |
| | ||| |+-------------------------------------------------------+| |||+-----------------------------+|:diagtext:`member of local variable`||||| |+--------------------------+| | |
| | ||| ||+--------------------------------+--------------------+|| |||| || ||||| || || | |
| | ||| |||+------------------------------+|:diagtext:`bound to`||| |||+-----------------------------+| ||||| |+--------------------------+| | |
| | ||| |||| || ||| ||||:diagtext:`reference` |nbsp| || ||||| | | | |
| | ||| |||+------------------------------+| ||| |||+-----------------------------+| ||||| | | | |
| | ||| ||||:diagtext:`implicitly` |nbsp| || ||| ||+-------------------------------+------------------------------------+|||| | | | |
| | ||| |||+------------------------------+| ||| |+----------------------------------------------------------------------+||| | | | |
| | ||| ||+--------------------------------+--------------------+|| ||+-------------------------+-----------------------+ |||| | | | |
| | ||| |+-------------------------------------------------------+| |||:diagtext:`local` |nbsp| |+---------------------+| |||| | | | |
| | ||| | | ||| ||:diagtext:`variable` || |||| | | | |
| | ||| | | ||| |+---------------------+| |||| | | | |
| | ||| | | ||| ||:diagtext:`reference`|| |||| | | | |
| | ||| | | ||| |+---------------------+| |||| | | | |
| | ||| | | ||+-------------------------+-----------------------+ |||| | | | |
| | ||| | | |+----------------------------------------------------------------------+||| | | | |
| | ||+-----------------------------+---------------------------------------------------------+--------+------------------------------------------------------------------------+|| | | | |
| | |+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| | | | |
| | ||+---------------------------------+----------------------------------------------------------+ || | | | |
| | |||:diagtext:`array backing` |nbsp| |+--------------------------------------------------------+| || | | | |
| | ||| ||:diagtext:`initializer list subobject of local variable`|| || | | | |
| | ||| |+--------------------------------------------------------+| || | | | |
| | ||| ||:diagtext:`local initializer list` || || | | | |
| | ||| |+--------------------------------------------------------+| || | | | |
| | ||+---------------------------------+----------------------------------------------------------+ || | | | |
| | |+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| | | | |
| +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------+----------------------------+---------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------+-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+---------------------------+--------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`sorry, lifetime extension of` |nbsp| |+---------------------------------------------+| |nbsp| :diagtext:`created by aggregate initialization using default member initializer is not supported; lifetime of` |nbsp| |+-------------------------+| |nbsp| :diagtext:`will end at the end of the full-expression`| |
| | ||:diagtext:`temporary` || ||:diagtext:`temporary` || | |
| | |+---------------------------------------------+| |+-------------------------+| | |
| | ||:diagtext:`backing array of initializer list`|| ||:diagtext:`backing array`|| | |
| | |+---------------------------------------------+| |+-------------------------+| | |
| +---------------------------------------------------------------------------+-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+---------------------------+--------------------------------------------------------------+ |
| |
| |
| -Wdangling-else |
| --------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`add explicit braces to avoid dangling else`| |
| +---------------------------------------------------------------------------------+ |
| |
| |
| -Wdangling-field |
| ---------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------+-----------------------+------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`binding reference member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to stack allocated` |nbsp| |+---------------------+| |nbsp| :placeholder:`B`| |
| | ||:diagtext:`variable` || | |
| | |+---------------------+| | |
| | ||:diagtext:`parameter`|| | |
| | |+---------------------+| | |
| +-------------------------------------------------------------------------------------------------------------------------------------+-----------------------+------------------------+ |
| |
| +---------------------------+--------------------------------------------------------+--------+----------------------------------+--------------------------------------------------+----------------------+------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| |+------------------------------------------------------+| |nbsp| |+--------------------------------+|:diagtext:`member` |nbsp| :placeholder:`A` |nbsp| |+--------------------+| |nbsp| :diagtext:`a temporary object whose lifetime is shorter than the lifetime of the constructed object`| |
| | ||:diagtext:`reference` || || || ||:diagtext:`binds to`|| | |
| | |+------------------------------------------------------+| |+--------------------------------+| |+--------------------+| | |
| | ||:diagtext:`backing array for 'std::initializer\_list'`|| ||:diagtext:`subobject of` |nbsp| || ||:diagtext:`is` || | |
| | |+------------------------------------------------------+| |+--------------------------------+| |+--------------------+| | |
| +---------------------------+--------------------------------------------------------+--------+----------------------------------+--------------------------------------------------+----------------------+------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`initializing pointer member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`with the stack address of` |nbsp| |+---------------------+| |nbsp| :placeholder:`B`| |
| | ||:diagtext:`variable` || | |
| | |+---------------------+| | |
| | ||:diagtext:`parameter`|| | |
| | |+---------------------+| | |
| +-----------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`temporary bound to reference member of allocated object will be destroyed at the end of the full-expression`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wdangling-initializer-list |
| --------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------+----------------------------------------------------------------+-----------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`array backing` |nbsp| |+--------------------------------------------------------------+| |nbsp| :diagtext:`will be destroyed at the end of the full-expression`| |
| | ||:diagtext:`initializer list subobject of the allocated object`|| | |
| | |+--------------------------------------------------------------+| | |
| | ||:diagtext:`the allocated initializer list` || | |
| | |+--------------------------------------------------------------+| | |
| +------------------------------------------------------------+----------------------------------------------------------------+-----------------------------------------------------------------------+ |
| |
| |
| -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-dynamic-exception-spec`_, `-Wdeprecated-increment-bool`_, `-Wdeprecated-register`_, `-Wdeprecated-this-capture`_, `-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:`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:`specifying 'uuid' as an ATL attribute is deprecated; use \_\_declspec instead`| |
| +--------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`use of C-style parameters in Objective-C method declarations is deprecated`| |
| +-----------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is deprecated`| |
| +----------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`may be deprecated because the receiver type is unknown`| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is deprecated:` |nbsp| :placeholder:`B`| |
| +-----------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`property access is using` |nbsp| :placeholder:`A` |nbsp| :diagtext:`method which is deprecated`| |
| +-------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wdeprecated-dynamic-exception-spec |
| ----------------------------------- |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`dynamic exception specifications are deprecated`| |
| +--------------------------------------------------------------------------------------+ |
| |
| |
| -Wdeprecated-implementations |
| ---------------------------- |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------+----------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`implementing deprecated` |nbsp| |+--------------------+| |
| | ||:diagtext:`method` || |
| | |+--------------------+| |
| | ||:diagtext:`class` || |
| | |+--------------------+| |
| | ||:diagtext:`category`|| |
| | |+--------------------+| |
| +----------------------------------------------------------------------+----------------------+ |
| |
| +----------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`implementing unavailable method`| |
| +----------------------------------------------------------------------+ |
| |
| |
| -Wdeprecated-increment-bool |
| --------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`incrementing expression of type bool is deprecated and incompatible with C++17`| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wdeprecated-objc-isa-usage |
| --------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`assignment to Objective-C's isa is deprecated in favor of object\_setClass()`| |
| +-------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`direct access to Objective-C's isa is deprecated in favor of object\_getClass()`| |
| +----------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wdeprecated-objc-pointer-introspection |
| --------------------------------------- |
| This diagnostic is enabled by default. |
| |
| Also controls `-Wdeprecated-objc-pointer-introspection-performSelector`_. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`bitmasking for introspection of Objective-C object pointers is strongly discouraged`| |
| +--------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wdeprecated-objc-pointer-introspection-performSelector |
| ------------------------------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`bitmasking for introspection of Objective-C object pointers is strongly discouraged`| |
| +--------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wdeprecated-register |
| --------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'register' storage class specifier is deprecated and incompatible with C++17`| |
| +-------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wdeprecated-this-capture |
| ------------------------- |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`implicit capture of 'this' with a capture default of '=' is deprecated`| |
| +-------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wdeprecated-writable-strings |
| ----------------------------- |
| Synonym for `-Wc++11-compat-deprecated-writable-strings`_. |
| |
| |
| -Wdirect-ivar-access |
| -------------------- |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`instance variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is being directly accessed`| |
| +------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wdisabled-macro-expansion |
| -------------------------- |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`disabled expansion of recursive macro`| |
| +----------------------------------------------------------------------------+ |
| |
| |
| -Wdisabled-optimization |
| ----------------------- |
| This diagnostic flag exists for GCC compatibility, and has no effect in Clang. |
| |
| -Wdiscard-qual |
| -------------- |
| This diagnostic flag exists for GCC compatibility, and has no effect in Clang. |
| |
| -Wdistributed-object-modifiers |
| ------------------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`conflicting distributed object modifiers on parameter type in implementation of` |nbsp| :placeholder:`A`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`conflicting distributed object modifiers on return type in implementation of` |nbsp| :placeholder:`A`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wdiv-by-zero |
| ------------- |
| Synonym for `-Wdivision-by-zero`_. |
| |
| |
| -Wdivision-by-zero |
| ------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------+-----------------------+----------------------------------------+ |
| |:warning:`warning:` |nbsp| |+---------------------+| |nbsp| :diagtext:`by zero is undefined`| |
| | ||:diagtext:`remainder`|| | |
| | |+---------------------+| | |
| | ||:diagtext:`division` || | |
| | |+---------------------+| | |
| +---------------------------+-----------------------+----------------------------------------+ |
| |
| |
| -Wdll-attribute-on-redeclaration |
| -------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`redeclaration of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`should not add` |nbsp| :placeholder:`B` |nbsp| :diagtext:`attribute`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wdllexport-explicit-instantiation-decl |
| --------------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`explicit instantiation declaration should not be 'dllexport'`| |
| +---------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wdllimport-static-field-def |
| ---------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`definition of dllimport static field`| |
| +---------------------------------------------------------------------------+ |
| |
| |
| -Wdocumentation |
| --------------- |
| Also controls `-Wdocumentation-deprecated-sync`_, `-Wdocumentation-html`_. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------+----------------+-----------------------+------------------------------------------------------------------------+-----------------------+-------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|+---------------------+|:diagtext:`' command should not be used in a comment attached to a non-`|+---------------------+| |nbsp| :diagtext:`declaration`| |
| | ||:diagtext:`\\`|||:diagtext:`class` || ||:diagtext:`class` || | |
| | |+--------------+|+---------------------+| |+---------------------+| | |
| | ||:diagtext:`@` |||:diagtext:`interface`|| ||:diagtext:`interface`|| | |
| | |+--------------+|+---------------------+| |+---------------------+| | |
| | | ||:diagtext:`protocol` || ||:diagtext:`protocol` || | |
| | | |+---------------------+| |+---------------------+| | |
| | | ||:diagtext:`struct` || ||:diagtext:`struct` || | |
| | | |+---------------------+| |+---------------------+| | |
| | | ||:diagtext:`union` || ||:diagtext:`union` || | |
| | | |+---------------------+| |+---------------------+| | |
| +----------------------------------------+----------------+-----------------------+------------------------------------------------------------------------+-----------------------+-------------------------------+ |
| |
| +-----------------------------------------------------------+----------------+-----------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`duplicated command '`|+--------------+|:placeholder:`B`:diagtext:`'`| |
| | ||:diagtext:`\\`|| | |
| | |+--------------+| | |
| | ||:diagtext:`@` || | |
| | |+--------------+| | |
| +-----------------------------------------------------------+----------------+-----------------------------+ |
| |
| +------------------------------------------------------------------+----------------+-------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`empty paragraph passed to '`|+--------------+|:placeholder:`B`:diagtext:`' command`| |
| | ||:diagtext:`\\`|| | |
| | |+--------------+| | |
| | ||:diagtext:`@` || | |
| | |+--------------+| | |
| +------------------------------------------------------------------+----------------+-------------------------------------+ |
| |
| +----------------------------------------+----------------+--------------------------+---------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|+------------------------+|:diagtext:`' command should not be used in a comment attached to a non-container declaration`| |
| | ||:diagtext:`\\`|||:diagtext:`classdesign` || | |
| | |+--------------+|+------------------------+| | |
| | ||:diagtext:`@` |||:diagtext:`coclass` || | |
| | |+--------------+|+------------------------+| | |
| | | ||:diagtext:`dependency` || | |
| | | |+------------------------+| | |
| | | ||:diagtext:`helper` || | |
| | | |+------------------------+| | |
| | | ||:diagtext:`helperclass` || | |
| | | |+------------------------+| | |
| | | ||:diagtext:`helps` || | |
| | | |+------------------------+| | |
| | | ||:diagtext:`instancesize`|| | |
| | | |+------------------------+| | |
| | | ||:diagtext:`ownership` || | |
| | | |+------------------------+| | |
| | | ||:diagtext:`performance` || | |
| | | |+------------------------+| | |
| | | ||:diagtext:`security` || | |
| | | |+------------------------+| | |
| | | ||:diagtext:`superclass` || | |
| | | |+------------------------+| | |
| +----------------------------------------+----------------+--------------------------+---------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------+----------------+---------------------------+---------------------------------------------------------------------+-----------------------------------+-------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|+-------------------------+|:diagtext:`' command should be used in a comment attached to` |nbsp| |+---------------------------------+| |nbsp| :diagtext:`declaration`| |
| | ||:diagtext:`\\`|||:diagtext:`function` || ||:diagtext:`a function` || | |
| | |+--------------+|+-------------------------+| |+---------------------------------+| | |
| | ||:diagtext:`@` |||:diagtext:`functiongroup`|| ||:diagtext:`a function` || | |
| | |+--------------+|+-------------------------+| |+---------------------------------+| | |
| | | ||:diagtext:`method` || ||:diagtext:`an Objective-C method`|| | |
| | | |+-------------------------+| |+---------------------------------+| | |
| | | ||:diagtext:`methodgroup` || ||:diagtext:`an Objective-C method`|| | |
| | | |+-------------------------+| |+---------------------------------+| | |
| | | ||:diagtext:`callback` || ||:diagtext:`a pointer to function`|| | |
| | | |+-------------------------+| |+---------------------------------+| | |
| +----------------------------------------+----------------+---------------------------+---------------------------------------------------------------------+-----------------------------------+-------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`HTML start tag prematurely ended, expected attribute name or '>'`| |
| +-------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`expected quoted string after equals sign`| |
| +-------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`parameter '`:placeholder:`A`:diagtext:`' is already documented`| |
| +-----------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`unrecognized parameter passing direction, valid directions are '\[in\]', '\[out\]' and '\[in,out\]'`| |
| +------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------+----------------+-------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|:diagtext:`param' command used in a comment that is not attached to a function declaration`| |
| | ||:diagtext:`\\`|| | |
| | |+--------------+| | |
| | ||:diagtext:`@` || | |
| | |+--------------+| | |
| +----------------------------------------+----------------+-------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`parameter '`:placeholder:`A`:diagtext:`' not found in the function declaration`| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------+----------------+-------------------------------------------------------------------------------------+-------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|:placeholder:`B`:diagtext:`' command used in a comment that is attached to a` |nbsp| |+-----------------------------------+| |
| | ||:diagtext:`\\`|| ||:diagtext:`function returning void`|| |
| | |+--------------+| |+-----------------------------------+| |
| | ||:diagtext:`@` || ||:diagtext:`constructor` || |
| | |+--------------+| |+-----------------------------------+| |
| | | | ||:diagtext:`destructor` || |
| | | | |+-----------------------------------+| |
| | | | ||:diagtext:`method returning void` || |
| | | | |+-----------------------------------+| |
| +----------------------------------------+----------------+-------------------------------------------------------------------------------------+-------------------------------------+ |
| |
| +----------------------------------------+----------------+----------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|:placeholder:`B`:diagtext:`' command used in a comment that is not attached to a function or method declaration`| |
| | ||:diagtext:`\\`|| | |
| | |+--------------+| | |
| | ||:diagtext:`@` || | |
| | |+--------------+| | |
| +----------------------------------------+----------------+----------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`template parameter '`:placeholder:`A`:diagtext:`' is already documented`| |
| +--------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------+----------------+--------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|:diagtext:`tparam' command used in a comment that is not attached to a template declaration`| |
| | ||:diagtext:`\\`|| | |
| | |+--------------+| | |
| | ||:diagtext:`@` || | |
| | |+--------------+| | |
| +----------------------------------------+----------------+--------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`template parameter '`:placeholder:`A`:diagtext:`' not found in the template declaration`| |
| +------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`not a Doxygen trailing comment`| |
| +---------------------------------------------------------------------+ |
| |
| +----------------------------------------+----------------+------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|:placeholder:`B`:diagtext:`' command does not terminate a verbatim text block`| |
| | ||:diagtext:`\\`|| | |
| | |+--------------+| | |
| | ||:diagtext:`@` || | |
| | |+--------------+| | |
| +----------------------------------------+----------------+------------------------------------------------------------------------------+ |
| |
| |
| -Wdocumentation-deprecated-sync |
| ------------------------------- |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`declaration is marked with '\\deprecated' command but does not have a deprecation attribute`| |
| +----------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wdocumentation-html |
| -------------------- |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`HTML end tag '`:placeholder:`A`:diagtext:`' is forbidden`| |
| +-----------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`HTML end tag does not match any start tag`| |
| +--------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`HTML tag '`:placeholder:`A`:diagtext:`' requires an end tag`| |
| +--------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`HTML start tag '`:placeholder:`A`:diagtext:`' closed by '`:placeholder:`B`:diagtext:`'`| |
| +-----------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wdocumentation-pedantic |
| ------------------------ |
| Also controls `-Wdocumentation-unknown-command`_. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`whitespace is not allowed in parameter passing direction`| |
| +-----------------------------------------------------------------------------------------------+ |
| |
| |
| -Wdocumentation-unknown-command |
| ------------------------------- |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`unknown command tag name '`:placeholder:`A`:diagtext:`'; did you mean '`:placeholder:`B`:diagtext:`'?`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`unknown command tag name`| |
| +---------------------------------------------------------------+ |
| |
| |
| -Wdollar-in-identifier-extension |
| -------------------------------- |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'$' in identifier`| |
| +--------------------------------------------------------+ |
| |
| |
| -Wdouble-promotion |
| ------------------ |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`implicit conversion increases floating-point precision:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wduplicate-decl-specifier |
| -------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`duplicate '`:placeholder:`A`:diagtext:`' declaration specifier`| |
| +-----------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`multiple identical address spaces specified for type`| |
| +-------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`duplicate '`:placeholder:`A`:diagtext:`' declaration specifier`| |
| +-----------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wduplicate-enum |
| ---------------- |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`element` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has been implicitly assigned` |nbsp| :placeholder:`B` |nbsp| :diagtext:`which another element has been assigned`| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wduplicate-method-arg |
| ---------------------- |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`redeclaration of method parameter` |nbsp| :placeholder:`A`| |
| +------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wduplicate-method-match |
| ------------------------ |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`multiple declarations of method` |nbsp| :placeholder:`A` |nbsp| :diagtext:`found and ignored`| |
| +-----------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wduplicate-protocol |
| -------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`duplicate protocol definition of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is ignored`| |
| +-----------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wdynamic-class-memaccess |
| ------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------+-------------------------------+------------------------------------------------------------------------------------------------+----------------------------------------+---------------------------------------------------------------------------------------------+-------------------------+ |
| |:warning:`warning:` |nbsp| |+-----------------------------+| |nbsp| :diagtext:`this` |nbsp| :placeholder:`B` |nbsp| :diagtext:`call is a pointer to` |nbsp| |+--------------------------------------+|:diagtext:`dynamic class` |nbsp| :placeholder:`D`:diagtext:`; vtable pointer will be` |nbsp| |+-----------------------+| |
| | ||:diagtext:`destination for` || || || ||:diagtext:`overwritten`|| |
| | |+-----------------------------+| |+--------------------------------------+| |+-----------------------+| |
| | ||:diagtext:`source of` || ||:diagtext:`class containing a` |nbsp| || ||:diagtext:`copied` || |
| | |+-----------------------------+| |+--------------------------------------+| |+-----------------------+| |
| | ||:diagtext:`first operand of` || | | ||:diagtext:`moved` || |
| | |+-----------------------------+| | | |+-----------------------+| |
| | ||:diagtext:`second operand of`|| | | ||:diagtext:`compared` || |
| | |+-----------------------------+| | | |+-----------------------+| |
| +---------------------------+-------------------------------+------------------------------------------------------------------------------------------------+----------------------------------------+---------------------------------------------------------------------------------------------+-------------------------+ |
| |
| |
| -Wdynamic-exception-spec |
| ------------------------ |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| Also controls `-Wdeprecated-dynamic-exception-spec`_. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------+ |
| |:error:`error:` |nbsp| :diagtext:`ISO C++17 does not allow dynamic exception specifications`| |
| +--------------------------------------------------------------------------------------------+ |
| |
| |
| -Weffc++ |
| -------- |
| Synonym for `-Wnon-virtual-dtor`_. |
| |
| |
| -Wembedded-directive |
| -------------------- |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`embedding a directive within macro arguments has undefined behavior`| |
| +----------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wempty-body |
| ------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`for loop has empty body`| |
| +--------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`if statement has empty body`| |
| +------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`range-based for loop has empty body`| |
| +--------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`switch statement has empty body`| |
| +----------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`while loop has empty body`| |
| +----------------------------------------------------------------+ |
| |
| |
| -Wempty-decomposition |
| --------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ISO C++17 does not allow a decomposition group to be empty`| |
| +-------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wempty-translation-unit |
| ------------------------ |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ISO C requires a translation unit to contain at least one declaration`| |
| +------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wencode-type |
| ------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`encoding of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`type is incomplete because` |nbsp| :placeholder:`B` |nbsp| :diagtext:`component has unknown encoding`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wendif-labels |
| -------------- |
| Synonym for `-Wextra-tokens`_. |
| |
| |
| -Wenum-compare |
| -------------- |
| This diagnostic is enabled by default. |
| |
| Also controls `-Wenum-compare-switch`_. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`comparison of two values with different enumeration types`| |
| +------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wenum-compare-switch |
| --------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`comparison of two values with different enumeration types in switch statement`| |
| +--------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -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`| |
| +-------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has a non-throwing exception specification but can still throw`| |
| +-----------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -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`| |
| +-------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wexperimental-isel |
| ------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`-fexperimental-isel support for the '`:placeholder:`A`:diagtext:`' architecture is incomplete`| |
| +------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`-fexperimental-isel support is incomplete for this architecture at the current optimization level`| |
| +----------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -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`| |
| +-------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wextern-c-compat |
| ----------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------+---------------------------+--------------------+--------------------------------------------+---------------------------+--------------------------+ |
| |:warning:`warning:` |nbsp| |+-------------------------+|+------------------+| |nbsp| :diagtext:`has size 0 in C,` |nbsp| |+-------------------------+| |nbsp| :diagtext:`in C++`| |
| | || |||:diagtext:`struct`|| ||:diagtext:`size 1` || | |
| | |+-------------------------+|+------------------+| |+-------------------------+| | |
| | ||:diagtext:`empty` |nbsp| |||:diagtext:`union` || ||:diagtext:`non-zero size`|| | |
| | |+-------------------------+|+------------------+| |+-------------------------+| | |
| +---------------------------+---------------------------+--------------------+--------------------------------------------+---------------------------+--------------------------+ |
| |
| |
| -Wextern-initializer |
| -------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'extern' variable has an initializer`| |
| +---------------------------------------------------------------------------+ |
| |
| |
| -Wextra |
| ------- |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| Also controls `-Wignored-qualifiers`_, `-Winitializer-overrides`_, `-Wmissing-field-initializers`_, `-Wmissing-method-return-type`_, `-Wnull-pointer-arithmetic`_, `-Wsemicolon-before-method-body`_, `-Wsign-compare`_, `-Wunused-parameter`_. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`call to function without interrupt attribute could clobber interruptee's VFP registers`| |
| +-----------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wextra-qualification |
| --------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`extra qualification on member` |nbsp| :placeholder:`A`| |
| +--------------------------------------------------------------------------------------------+ |
| |
| |
| -Wextra-semi |
| ------------ |
| Also controls `-Wc++11-extra-semi`_, `-Wc++98-compat-extra-semi`_. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------+------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`extra ';'` |nbsp| |+----------------------------------------------+| |
| | ||:diagtext:`outside of a function` || |
| | |+----------------------------------------------+| |
| | ||+--------------------------------------------+|| |
| | |||:diagtext:`inside a` |nbsp| :placeholder:`B`||| |
| | ||+--------------------------------------------+|| |
| | |+----------------------------------------------+| |
| | ||:diagtext:`inside instance variable list` || |
| | |+----------------------------------------------+| |
| | ||:diagtext:`after member function definition` || |
| | |+----------------------------------------------+| |
| +--------------------------------------------------------+------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`extra ';' after member function definition`| |
| +---------------------------------------------------------------------------------+ |
| |
| |
| -Wextra-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 from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`changes value from` |nbsp| :placeholder:`C` |nbsp| :diagtext:`to` |nbsp| :placeholder:`D`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`implicit conversion of out of range value from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is undefined`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wfloat-zero-conversion |
| ----------------------- |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`implicit conversion from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`changes non-zero value from` |nbsp| :placeholder:`C` |nbsp| :diagtext:`to` |nbsp| :placeholder:`D`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wfor-loop-analysis |
| ------------------- |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is` |nbsp| |+-----------------------+| |nbsp| :diagtext:`both in the loop header and in the loop body`| |
| | ||:diagtext:`decremented`|| | |
| | |+-----------------------+| | |
| | ||:diagtext:`incremented`|| | |
| | |+-----------------------+| | |
| +-----------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------+ |
| |
| +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`variable`|+----------------------------------------------------------------------------------------------------------------------------------------------------------+| |nbsp| :diagtext:`used in loop condition not modified in loop body`| |
| | ||:diagtext:`s` || | |
| | |+----------------------------------------------------------------------------------------------------------------------------------------------------------+| | |
| | ||+------------------------+ || | |
| | ||| |nbsp| :placeholder:`B`| || | |
| | ||+------------------------+ || | |
| | |+----------------------------------------------------------------------------------------------------------------------------------------------------------+| | |
| | ||+------------------------------------------------------------------------------------+ || | |
| | |||:diagtext:`s` |nbsp| :placeholder:`B` |nbsp| :diagtext:`and` |nbsp| :placeholder:`C`| || | |
| | ||+------------------------------------------------------------------------------------+ || | |
| | |+----------------------------------------------------------------------------------------------------------------------------------------------------------+| | |
| | ||+-------------------------------------------------------------------------------------------------------------------+ || | |
| | |||:diagtext:`s` |nbsp| :placeholder:`B`:diagtext:`,` |nbsp| :placeholder:`C`:diagtext:`, and` |nbsp| :placeholder:`D`| || | |
| | ||+-------------------------------------------------------------------------------------------------------------------+ || | |
| | |+----------------------------------------------------------------------------------------------------------------------------------------------------------+| | |
| | ||+--------------------------------------------------------------------------------------------------------------------------------------------------------+|| | |
| | |||:diagtext:`s` |nbsp| :placeholder:`B`:diagtext:`,` |nbsp| :placeholder:`C`:diagtext:`,` |nbsp| :placeholder:`D`:diagtext:`, and` |nbsp| :placeholder:`E`||| | |
| | ||+--------------------------------------------------------------------------------------------------------------------------------------------------------+|| | |
| | |+----------------------------------------------------------------------------------------------------------------------------------------------------------+| | |
| +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+ |
| |
| |
| -Wformat |
| -------- |
| This diagnostic is enabled by default. |
| |
| Also controls `-Wformat-extra-args`_, `-Wformat-invalid-specifier`_, `-Wformat-security`_, `-Wformat-y2k`_, `-Wformat-zero-length`_, `-Wnonnull`_. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`using '%%P' format specifier without precision`| |
| +-------------------------------------------------------------------------------------+ |
| |
| +---------------------------+----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| |+--------------------------------------------+| |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' should not be used as format arguments; add an explicit cast to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`instead`| |
| | ||:diagtext:`values of type` || | |
| | |+--------------------------------------------+| | |
| | ||:diagtext:`enum values with underlying type`|| | |
| | |+--------------------------------------------+| | |
| +---------------------------+----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------------------+-----------------------------+------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`format specifies type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`but the argument has` |nbsp| |+---------------------------+| |nbsp| :placeholder:`B`| |
| | ||:diagtext:`type` || | |
| | |+---------------------------+| | |
| | ||:diagtext:`underlying type`|| | |
| | |+---------------------------+| | |
| +------------------------------------------------------------------------------------------------------------------------------------+-----------------------------+------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`using '`:placeholder:`A`:diagtext:`' format specifier annotation outside of os\_log()/os\_trace()`| |
| +----------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------+-----------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`invalid position specified for` |nbsp| |+---------------------------+| |
| | ||:diagtext:`field width` || |
| | |+---------------------------+| |
| | ||:diagtext:`field precision`|| |
| | |+---------------------------+| |
| +-----------------------------------------------------------------------------+-----------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`cannot mix positional and non-positional arguments in format string`| |
| +----------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`length modifier '`:placeholder:`A`:diagtext:`' results in undefined behavior or no effect with '`:placeholder:`B`:diagtext:`' conversion specifier`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`format string should not be a wide string`| |
| +--------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`position arguments in format strings start counting at 1 (not 0)`| |
| +-------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`format string missing`| |
| +------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`object format flags cannot be used with '`:placeholder:`A`:diagtext:`' conversion specifier`| |
| +----------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------+-----------------+-------------------------------------+-----------------------+--------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'`|+---------------+|:diagtext:`' specified field` |nbsp| |+---------------------+| |nbsp| :diagtext:`is missing a matching 'int' argument`| |
| | ||:diagtext:`\*` || ||:diagtext:`width` || | |
| | |+---------------+| |+---------------------+| | |
| | ||:diagtext:`.\*`|| ||:diagtext:`precision`|| | |
| | |+---------------+| |+---------------------+| | |
| +----------------------------------------+-----------------+-------------------------------------+-----------------------+--------------------------------------------------------+ |
| |
| +----------------------------------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`field` |nbsp| |+---------------------+| |nbsp| :diagtext:`should have type` |nbsp| :placeholder:`B`:diagtext:`, but argument has type` |nbsp| :placeholder:`C`| |
| | ||:diagtext:`width` || | |
| | |+---------------------+| | |
| | ||:diagtext:`precision`|| | |
| | |+---------------------+| | |
| +----------------------------------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`missing object format flag`| |
| +-----------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`format string contains '\\0' within the string body`| |
| +------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`format string is not null-terminated`| |
| +---------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`flag '`:placeholder:`A`:diagtext:`' is ignored when flag '`:placeholder:`B`:diagtext:`' is present`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`incomplete format specifier`| |
| +------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`more '%%' conversions than data arguments`| |
| +--------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' is not a valid object format flag`| |
| +-------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`flag '`:placeholder:`A`:diagtext:`' results in undefined behavior with '`:placeholder:`B`:diagtext:`' conversion specifier`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------+-------------------------+------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| |+-----------------------+| |nbsp| :diagtext:`used with '`:placeholder:`B`:diagtext:`' conversion specifier, resulting in undefined behavior`| |
| | ||:diagtext:`field width`|| | |
| | |+-----------------------+| | |
| | ||:diagtext:`precision` || | |
| | |+-----------------------+| | |
| +---------------------------+-------------------------+------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`data argument position '`:placeholder:`A`:diagtext:`' exceeds the number of data arguments (`:placeholder:`B`:diagtext:`)`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`zero field width in scanf format string is unused`| |
| +----------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`no closing '\]' for '%%\[' in scanf format string`| |
| +----------------------------------------------------------------------------------------+ |
| |
| |
| -Wformat-extra-args |
| ------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`data argument not used by format string`| |
| +------------------------------------------------------------------------------+ |
| |
| |
| -Wformat-invalid-specifier |
| -------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`invalid conversion specifier '`:placeholder:`A`:diagtext:`'`| |
| +--------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wformat-non-iso |
| ---------------- |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------+----------------------------------+---------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`'` |nbsp| |+--------------------------------+| |nbsp| :diagtext:`is not supported by ISO C`| |
| | ||:diagtext:`length modifier` || | |
| | |+--------------------------------+| | |
| | ||:diagtext:`conversion specifier`|| | |
| | |+--------------------------------+| | |
| +-----------------------------------------------------------------------------+----------------------------------+---------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`using length modifier '`:placeholder:`A`:diagtext:`' with conversion specifier '`:placeholder:`B`:diagtext:`' is not supported by ISO C`| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`positional arguments are not supported by ISO C`| |
| +--------------------------------------------------------------------------------------+ |
| |
| |
| -Wformat-nonliteral |
| ------------------- |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`format string is not a string literal`| |
| +----------------------------------------------------------------------------+ |
| |
| |
| -Wformat-pedantic |
| ----------------- |
| **Diagnostic text:** |
| |
| +---------------------------+----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| |+--------------------------------------------+| |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' should not be used as format arguments; add an explicit cast to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`instead`| |
| | ||:diagtext:`values of type` || | |
| | |+--------------------------------------------+| | |
| | ||:diagtext:`enum values with underlying type`|| | |
| | |+--------------------------------------------+| | |
| +---------------------------+----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------------------+-----------------------------+------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`format specifies type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`but the argument has` |nbsp| |+---------------------------+| |nbsp| :placeholder:`B`| |
| | ||:diagtext:`type` || | |
| | |+---------------------------+| | |
| | ||:diagtext:`underlying type`|| | |
| | |+---------------------------+| | |
| +------------------------------------------------------------------------------------------------------------------------------------+-----------------------------+------------------------+ |
| |
| |
| -Wformat-security |
| ----------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`format string is not a string literal (potentially insecure)`| |
| +---------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wformat-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`| |
| +--------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wframework-include-private-from-public |
| --------------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`public framework header includes private framework header '`:placeholder:`A`:diagtext:`'`| |
| +-------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wfunction-def-in-objc-container |
| -------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`function definition inside an Objective-C container is deprecated`| |
| +--------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wfunction-multiversion |
| ----------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`body of cpu\_dispatch function will be ignored`| |
| +-------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`CPU list contains duplicate entries; attribute ignored`| |
| +---------------------------------------------------------------------------------------------+ |
| |
| |
| -Wfuture-compat |
| --------------- |
| This diagnostic flag exists for GCC compatibility, and has no effect in Clang. |
| |
| -Wgcc-compat |
| ------------ |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'diagnose\_if' is a clang extension`| |
| +--------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'enable\_if' is a clang extension`| |
| +------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`\_\_final is a GNU extension, consider using C++11 final`| |
| +-----------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`GCC does not allow` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute in this position on a function definition`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'break' is bound to loop, GCC binds it to switch`| |
| +---------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`GCC does not allow the 'cleanup' attribute argument to be anything other than a simple identifier`| |
| +----------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`GCC does not allow an attribute in this position on a function declaration`| |
| +-----------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`GCC does not allow the` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute to be written on a type`| |
| +------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`GCC does not allow variable declarations in for loop initializers before C99`| |
| +-------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' is bound to current loop, GCC binds it to the enclosing loop`| |
| +----------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wglobal-constructors |
| --------------------- |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`declaration requires a global constructor`| |
| +--------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`declaration requires a global destructor`| |
| +-------------------------------------------------------------------------------+ |
| |
| |
| -Wgnu |
| ----- |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| Controls `-Wgnu-alignof-expression`_, `-Wgnu-anonymous-struct`_, `-Wgnu-auto-type`_, `-Wgnu-binary-literal`_, `-Wgnu-case-range`_, `-Wgnu-complex-integer`_, `-Wgnu-compound-literal-initializer`_, `-Wgnu-conditional-omitted-operand`_, `-Wgnu-designator`_, `-Wgnu-empty-initializer`_, `-Wgnu-empty-struct`_, `-Wgnu-flexible-array-initializer`_, `-Wgnu-flexible-array-union-member`_, `-Wgnu-folding-constant`_, `-Wgnu-imaginary-constant`_, `-Wgnu-include-next`_, `-Wgnu-label-as-value`_, `-Wgnu-redeclared-enum`_, `-Wgnu-statement-expression`_, `-Wgnu-static-float-init`_, `-Wgnu-string-literal-operator-template`_, `-Wgnu-union-cast`_, `-Wgnu-variable-sized-type-not-at-end`_, `-Wgnu-zero-line-directive`_, `-Wgnu-zero-variadic-macro-arguments`_, `-Wredeclared-class-member`_, `-Wvla-extension`_, `-Wzero-length-array`_. |
| |
| |
| -Wgnu-alignof-expression |
| ------------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`applied to an expression is a GNU extension`| |
| +----------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wgnu-anonymous-struct |
| ---------------------- |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`anonymous structs are a GNU extension`| |
| +----------------------------------------------------------------------------+ |
| |
| |
| -Wgnu-array-member-paren-init |
| ----------------------------- |
| This diagnostic is an error by default, but the flag ``-Wno-gnu-array-member-paren-init`` can be used to disable the error. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------+ |
| |:error:`error:` |nbsp| :diagtext:`parenthesized initialization of a member array is a GNU extension`| |
| +----------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wgnu-auto-type |
| --------------- |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'\_\_auto\_type' is a GNU extension`| |
| +--------------------------------------------------------------------------+ |
| |
| |
| -Wgnu-binary-literal |
| -------------------- |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`binary integer literals are a GNU extension`| |
| +----------------------------------------------------------------------------------+ |
| |
| |
| -Wgnu-case-range |
| ---------------- |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`use of GNU case range extension`| |
| +----------------------------------------------------------------------+ |
| |
| |
| -Wgnu-complex-integer |
| --------------------- |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`complex integer types are a GNU extension`| |
| +--------------------------------------------------------------------------------+ |
| |
| |
| -Wgnu-compound-literal-initializer |
| ---------------------------------- |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`initialization of an array` |nbsp| :diagtext:`from a compound literal` |nbsp| :diagtext:`is a GNU extension`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wgnu-conditional-omitted-operand |
| --------------------------------- |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`use of GNU ?: conditional expression extension, omitting middle operand`| |
| +--------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wgnu-designator |
| ---------------- |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`use of GNU array range extension`| |
| +-----------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`use of GNU 'missing =' extension in designator`| |
| +-------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`use of GNU old-style field designator extension`| |
| +--------------------------------------------------------------------------------------+ |
| |
| |
| -Wgnu-empty-initializer |
| ----------------------- |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`use of GNU empty initializer extension`| |
| +-----------------------------------------------------------------------------+ |
| |
| |
| -Wgnu-empty-struct |
| ------------------ |
| **Diagnostic text:** |
| |
| +----------------------------------------------------+--------------------+--------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`empty` |nbsp| |+------------------+| |nbsp| :diagtext:`is a GNU extension`| |
| | ||:diagtext:`struct`|| | |
| | |+------------------+| | |
| | ||:diagtext:`union` || | |
| | |+------------------+| | |
| +----------------------------------------------------+--------------------+--------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------+-----------------------+--------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`flexible array member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in otherwise empty` |nbsp| |+---------------------+| |nbsp| :diagtext:`is a GNU extension`| |
| | ||:diagtext:`struct` || | |
| | |+---------------------+| | |
| | ||:diagtext:`interface`|| | |
| | |+---------------------+| | |
| | ||:diagtext:`union` || | |
| | |+---------------------+| | |
| | ||:diagtext:`class` || | |
| | |+---------------------+| | |
| | ||:diagtext:`enum` || | |
| | |+---------------------+| | |
| +----------------------------------------------------------------------------------------------------------------------------------+-----------------------+--------------------------------------+ |
| |
| +---------------------------+--------------------+------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| |+------------------+| |nbsp| :diagtext:`without named members is a GNU extension`| |
| | ||:diagtext:`struct`|| | |
| | |+------------------+| | |
| | ||:diagtext:`union` || | |
| | |+------------------+| | |
| +---------------------------+--------------------+------------------------------------------------------------+ |
| |
| |
| -Wgnu-flexible-array-initializer |
| -------------------------------- |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`flexible array initialization is a GNU extension`| |
| +---------------------------------------------------------------------------------------+ |
| |
| |
| -Wgnu-flexible-array-union-member |
| --------------------------------- |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`flexible array member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in a union is a GNU extension`| |
| +-------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wgnu-folding-constant |
| ---------------------- |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------+----------------------+------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`expression is not an` |nbsp| |+--------------------+| |nbsp| :diagtext:`constant expression; folding it to a constant is a GNU extension`| |
| | ||:diagtext:`integer` || | |
| | |+--------------------+| | |
| | ||:diagtext:`integral`|| | |
| | |+--------------------+| | |
| +-------------------------------------------------------------------+----------------------+------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`in-class initializer for static data member is not a constant expression; folding it to a constant is a GNU extension`| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`variable length array folded to constant array as an extension`| |
| +-----------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wgnu-imaginary-constant |
| ------------------------ |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`imaginary constants are a GNU extension`| |
| +------------------------------------------------------------------------------+ |
| |
| |
| -Wgnu-include-next |
| ------------------ |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`#include\_next is a language extension`| |
| +-----------------------------------------------------------------------------+ |
| |
| |
| -Wgnu-label-as-value |
| -------------------- |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`use of GNU address-of-label extension`| |
| +----------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`use of GNU indirect-goto extension`| |
| +-------------------------------------------------------------------------+ |
| |
| |
| -Wgnu-redeclared-enum |
| --------------------- |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`redeclaration of already-defined enum` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a GNU extension`| |
| +------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wgnu-statement-expression |
| -------------------------- |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`use of GNU statement expression extension`| |
| +--------------------------------------------------------------------------------+ |
| |
| |
| -Wgnu-static-float-init |
| ----------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`in-class initializer for static data member of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a GNU extension`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wgnu-string-literal-operator-template |
| -------------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`string literal operator templates are a GNU extension`| |
| +--------------------------------------------------------------------------------------------+ |
| |
| |
| -Wgnu-union-cast |
| ---------------- |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`cast to union type is a GNU extension`| |
| +----------------------------------------------------------------------------+ |
| |
| |
| -Wgnu-variable-sized-type-not-at-end |
| ------------------------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`field` |nbsp| :placeholder:`A` |nbsp| :diagtext:`with variable sized type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`not at the end of a struct or class is a GNU extension`| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wgnu-zero-line-directive |
| ------------------------- |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`#line directive with zero argument is a GNU extension`| |
| +--------------------------------------------------------------------------------------------+ |
| |
| |
| -Wgnu-zero-variadic-macro-arguments |
| ----------------------------------- |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`must specify at least one argument for '...' parameter of variadic macro`| |
| +---------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`token pasting of ',' and \_\_VA\_ARGS\_\_ is a GNU extension`| |
| +---------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wheader-guard |
| -------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is used as a header guard here, followed by #define of a different macro`| |
| +---------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wheader-hygiene |
| ---------------- |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`using namespace directive in global context in header`| |
| +--------------------------------------------------------------------------------------------+ |
| |
| |
| -Widiomatic-parentheses |
| ----------------------- |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`using the result of an assignment as a condition without parentheses`| |
| +-----------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wignored-attributes |
| -------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'trivial\_abi' cannot be applied to` |nbsp| :placeholder:`A`| |
| +--------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------+-------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| |+-----------------+| |nbsp| :diagtext:`will always resolve to` |nbsp| :placeholder:`A` |nbsp| :diagtext:`even if weak definition of` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is overridden`| |
| | ||:diagtext:`alias`|| | |
| | |+-----------------+| | |
| | ||:diagtext:`ifunc`|| | |
| | |+-----------------+| | |
| +---------------------------+-------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------+-------------------+----------------------------------------------------------------------------------------------------------------+----------------------+ |
| |:warning:`warning:` |nbsp| |+-----------------+| |nbsp| :diagtext:`will not be in section '`:placeholder:`A`:diagtext:`' but in the same section as the` |nbsp| |+--------------------+| |
| | ||:diagtext:`alias`|| ||:diagtext:`aliasee` || |
| | |+-----------------+| |+--------------------+| |
| | ||:diagtext:`ifunc`|| ||:diagtext:`resolver`|| |
| | |+-----------------+| |+--------------------+| |
| +---------------------------+-------------------+----------------------------------------------------------------------------------------------------------------+----------------------+ |
| |
| +----------------------------------------------------------------------+------------------------+-------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'abi\_tag' attribute on` |nbsp| |+----------------------+| |nbsp| :diagtext:`namespace ignored`| |
| | ||:diagtext:`non-inline`|| | |
| | |+----------------------+| | |
| | ||:diagtext:`anonymous` || | |
| | |+----------------------+| | |
| +----------------------------------------------------------------------+------------------------+-------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`attribute` |nbsp| :placeholder:`A` |nbsp| :diagtext:`after definition is ignored`| |
| +-----------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute can only be applied to instance variables or properties`| |
| +--------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute ignored`| |
| +--------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute ignored for field of type` |nbsp| :placeholder:`B`| |
| +--------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute ignored on inline function`| |
| +---------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' attribute cannot be specified on a definition`| |
| +-------------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`attribute` |nbsp| :placeholder:`A` |nbsp| :diagtext:`ignored, because it is not attached to a declaration`| |
| +------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'nonnull' attribute applied to function with no pointer arguments`| |
| +--------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'nonnull' attribute when used on parameters takes no arguments`| |
| +-----------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute ignored when parsing type`| |
| +--------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute only applies to a pointer or reference (`:placeholder:`B` |nbsp| :diagtext:`is invalid)`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------+------------------------------+-------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute only applies to`|+----------------------------+| |nbsp| :diagtext:`pointer arguments`| |
| | || || | |
| | |+----------------------------+| | |
| | || |nbsp| :diagtext:`constant`|| | |
| | |+----------------------------+| | |
| +----------------------------------------------------------------------------------------+------------------------------+-------------------------------------+ |
| |
| +------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`attribute declaration must precede definition`| |
| +------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute only applies to return values that are pointers`| |
| +------------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute only applies to return values that are pointers or references`| |
| +--------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'sentinel' attribute requires named arguments`| |
| +------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------+-----------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'sentinel' attribute only supported for variadic` |nbsp| |+---------------------+| |
| | ||:diagtext:`functions`|| |
| | |+---------------------+| |
| | ||:diagtext:`blocks` || |
| | |+---------------------+| |
| +-----------------------------------------------------------------------------------------------+-----------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute argument not supported:` |nbsp| :placeholder:`B`| |
| +------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`unknown visibility` |nbsp| :placeholder:`A`| |
| +---------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------+--------------------------------+----------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`attribute` |nbsp| :placeholder:`A` |nbsp| :diagtext:`cannot be applied to` |nbsp| |+------------------------------+| |nbsp| :diagtext:`without return value`| |
| | ||:diagtext:`functions` || | |
| | |+------------------------------+| | |
| | ||:diagtext:`Objective-C method`|| | |
| | |+------------------------------+| | |
| +------------------------------------------------------------------------------------------------------------------------+--------------------------------+----------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`\_\_weak attribute cannot be specified on a field declaration`| |
| +----------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`\_\_weak attribute cannot be specified on an automatic variable when ARC is not enabled`| |
| +------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------+---------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute only applies to` |nbsp| |+-------------------------------------------------+| |
| | ||:diagtext:`functions` || |
| | |+-------------------------------------------------+| |
| | ||:diagtext:`unions` || |
| | |+-------------------------------------------------+| |
| | ||:diagtext:`variables and functions` || |
| | |+-------------------------------------------------+| |
| | ||:diagtext:`functions and methods` || |
| | |+-------------------------------------------------+| |
| | ||:diagtext:`functions, methods and blocks` || |
| | |+-------------------------------------------------+| |
| | ||:diagtext:`functions, methods, and parameters` || |
| | |+-------------------------------------------------+| |
| | ||:diagtext:`variables` || |
| | |+-------------------------------------------------+| |
| | ||:diagtext:`variables and fields` || |
| | |+-------------------------------------------------+| |
| | ||:diagtext:`variables, data members and tag types`|| |
| | |+-------------------------------------------------+| |
| | ||:diagtext:`types and namespaces` || |
| | |+-------------------------------------------------+| |
| | ||:diagtext:`variables, functions and classes` || |
| | |+-------------------------------------------------+| |
| | ||:diagtext:`kernel functions` || |
| | |+-------------------------------------------------+| |
| | ||:diagtext:`non-K&R-style functions` || |
| | |+-------------------------------------------------+| |
| +------------------------------------------------------------------------------------------------+---------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute only applies to` |nbsp| :placeholder:`B`| |
| +----------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`attribute` |nbsp| :placeholder:`A` |nbsp| :diagtext:`ignored, because it cannot be applied to omitted return type`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :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| :diagtext:`'nocf\_check' attribute ignored; use -fcf-protection to enable the attribute`| |
| +-------------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------+-----------------------------------+------------------------------+ |
| |: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| :diagtext:`RISC-V 'interrupt' attribute only applies to functions that have` |nbsp| |+--------------------------------+| |
| | ||:diagtext:`no parameters` || |
| | |+--------------------------------+| |
| | ||:diagtext:`a 'void' return type`|| |
| | |+--------------------------------+| |
| +---------------------------------------------------------------------------------------------------------------+----------------------------------+ |
| |
| +----------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`repeated RISC-V 'interrupt' attribute`| |
| +----------------------------------------------------------------------------+ |
| |
| +---------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+-------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| |+---------------------+| |nbsp| :diagtext:`of field` |nbsp| :placeholder:`B` |nbsp| :diagtext:`(`:placeholder:`C` |nbsp| :diagtext:`bits) does not match the` |nbsp| |+---------------------+| |nbsp| :diagtext:`of the first field in transparent union; transparent\_union attribute ignored`| |
| | ||:diagtext:`alignment`|| ||:diagtext:`alignment`|| | |
| | |+---------------------+| |+---------------------+| | |
| | ||:diagtext:`size` || ||:diagtext:`size` || | |
| | |+---------------------+| |+---------------------+| | |
| +---------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+-------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------+----------------------------+--------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`first field of a transparent union cannot have` |nbsp| |+--------------------------+| |nbsp| :diagtext:`type` |nbsp| :placeholder:`B`:diagtext:`; transparent\_union attribute ignored`| |
| | ||:diagtext:`floating point`|| | |
| | |+--------------------------+| | |
| | ||:diagtext:`vector` || | |
| | |+--------------------------+| | |
| +---------------------------------------------------------------------------------------------+----------------------------+--------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`transparent\_union attribute can only be applied to a union definition; attribute ignored`| |
| +--------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`transparent union definition must contain at least one field; transparent\_union attribute ignored`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------+-------------------------------------------------+---------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' only applies to` |nbsp| |+-----------------------------------------------+| |nbsp| :diagtext:`types; type here is` |nbsp| :placeholder:`C`| |
| | ||:diagtext:`function` || | |
| | |+-----------------------------------------------+| | |
| | ||:diagtext:`pointer` || | |
| | |+-----------------------------------------------+| | |
| | ||:diagtext:`Objective-C object or block pointer`|| | |
| | |+-----------------------------------------------+| | |
| +---------------------------------------------------------------------------------------------+-------------------------------------------------+---------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`\_\_declspec attribute` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not supported`| |
| +-------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------+-------------------------+----------------------------------+---------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| |+-----------------------+|+--------------------------------+| |nbsp| :diagtext:`'`:placeholder:`C`:diagtext:`' in the 'target' attribute string; 'target' attribute ignored`| |
| | ||:diagtext:`unsupported`||| || | |
| | |+-----------------------+|+--------------------------------+| | |
| | ||:diagtext:`duplicate` ||| |nbsp| :diagtext:`architecture`|| | |
| | |+-----------------------+|+--------------------------------+| | |
| +---------------------------+-------------------------+----------------------------------+---------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wignored-optimization-argument |
| ------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`optimization flag '`:placeholder:`A`:diagtext:`' is not supported for target '`:placeholder:`B`:diagtext:`'`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`optimization flag '`:placeholder:`A`:diagtext:`' is not supported`| |
| +--------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wignored-pragma-intrinsic |
| -------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not a recognized builtin`|+----------------------------------------------------------------------------+| |
| | || || |
| | |+----------------------------------------------------------------------------+| |
| | ||:diagtext:`; consider including <intrin.h> to access non-builtin intrinsics`|| |
| | |+----------------------------------------------------------------------------+| |
| +------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ |
| |
| |
| -Wignored-pragma-optimize |
| ------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'#pragma optimize' is not supported`| |
| +--------------------------------------------------------------------------+ |
| |
| |
| -Wignored-pragmas |
| ----------------- |
| This diagnostic is enabled by default. |
| |
| Also controls `-Wignored-pragma-intrinsic`_, `-Wignored-pragma-optimize`_. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------+---------------------------+-----------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`expected '=' following '#pragma` |nbsp| |+-------------------------+|:diagtext:`' - ignored`| |
| | ||:diagtext:`align` || | |
| | |+-------------------------+| | |
| | ||:diagtext:`options align`|| | |
| | |+-------------------------+| | |
| +------------------------------------------------------------------------------+---------------------------+-----------------------+ |
| |
| +-----------------------------------------------------------------------------------+---------------------------+-----------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`invalid alignment option in '#pragma` |nbsp| |+-------------------------+|:diagtext:`' - ignored`| |
| | ||:diagtext:`align` || | |
| | |+-------------------------+| | |
| | ||:diagtext:`options align`|| | |
| | |+-------------------------+| | |
| +-----------------------------------------------------------------------------------+---------------------------+-----------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`OpenCL extension end directive mismatches begin directive - ignoring`| |
| +-----------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'#pragma comment` |nbsp| :placeholder:`A`:diagtext:`' ignored`| |
| +----------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`missing argument to debug command '`:placeholder:`A`:diagtext:`'`| |
| +-------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`unexpected debug command '`:placeholder:`A`:diagtext:`'`| |
| +----------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`expected action or ')' in '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`| |
| +------------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`missing ':' after` |nbsp| :placeholder:`A` |nbsp| :diagtext:`- ignoring`| |
| +--------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`missing ':' or ')' after` |nbsp| :placeholder:`A` |nbsp| :diagtext:`- ignoring`| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`expected ',' in '#pragma` |nbsp| :placeholder:`A`:diagtext:`'`| |
| +----------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`expected identifier in '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`expected 'compiler', 'lib', 'user', or a string literal for the section name in '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`expected integer between` |nbsp| :placeholder:`A` |nbsp| :diagtext:`and` |nbsp| :placeholder:`B` |nbsp| :diagtext:`inclusive in '#pragma` |nbsp| :placeholder:`C`:diagtext:`' - ignored`| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`missing '(' after '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignoring`| |
| +-----------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`expected non-wide string literal in '#pragma` |nbsp| :placeholder:`A`:diagtext:`'`| |
| +------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------+---------------------------------------------------+------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`expected` |nbsp| |+-------------------------------------------------+| |nbsp| :diagtext:`- ignoring`| |
| | ||:diagtext:`'enable', 'disable', 'begin' or 'end'`|| | |
| | |+-------------------------------------------------+| | |
| | ||:diagtext:`'disable'` || | |
| | |+-------------------------------------------------+| | |
| +-------------------------------------------------------+---------------------------------------------------+------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`expected ')' or ',' in '#pragma` |nbsp| :placeholder:`A`:diagtext:`'`| |
| +-----------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`missing ')' after '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignoring`| |
| +-----------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`expected a stack label or a string literal for the section name in '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`expected a string literal for the section name in '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`| |
| +------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`expected push, pop or a string literal for the section name in '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`expected string literal in '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignoring`| |
| +--------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`extra tokens at end of '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`incorrect use of #pragma clang force\_cuda\_host\_device begin\|end`| |
| +----------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'#pragma init\_seg' is only supported when targeting a Microsoft environment`| |
| +-------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`unknown action for '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`| |
| +-----------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`unexpected argument '`:placeholder:`A`:diagtext:`' to '#pragma` |nbsp| :placeholder:`B`:diagtext:`'`|+------------------------------------------------+| |
| | || || |
| | |+------------------------------------------------+| |
| | ||+----------------------------------------------+|| |
| | |||:diagtext:`; expected` |nbsp| :placeholder:`D`||| |
| | ||+----------------------------------------------+|| |
| | |+------------------------------------------------+| |
| +------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`unknown action '`:placeholder:`B`:diagtext:`' for '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`| |
| +------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------+--------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`missing argument to '#pragma` |nbsp| :placeholder:`A`:diagtext:`'`|+------------------------------------------------+| |
| | || || |
| | |+------------------------------------------------+| |
| | ||+----------------------------------------------+|| |
| | |||:diagtext:`; expected` |nbsp| :placeholder:`C`||| |
| | ||+----------------------------------------------+|| |
| | |+------------------------------------------------+| |
| +--------------------------------------------------------------------------------------------------------+--------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`incorrect use of '#pragma ms\_struct on\|off' - ignored`| |
| +----------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`#pragma options align=reset failed:` |nbsp| :placeholder:`A`| |
| +--------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`expected 'align' following '#pragma options' - ignored`| |
| +---------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`expected #pragma pack parameter to be '1', '2', '4', '8', or '16'`| |
| +--------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`expected integer or identifier in '#pragma pack' - ignored`| |
| +-------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`#pragma` |nbsp| :placeholder:`A`:diagtext:`(pop, ...) failed:` |nbsp| :placeholder:`B`| |
| +----------------------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`pragma pop\_macro could not pop '`:placeholder:`A`:diagtext:`', no matching push\_macro`| |
| +------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`unknown OpenCL extension` |nbsp| :placeholder:`A` |nbsp| :diagtext:`- ignoring`| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`known but unsupported action '`:placeholder:`B`:diagtext:`' for '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`unsupported OpenCL extension` |nbsp| :placeholder:`A` |nbsp| :diagtext:`- ignoring`| |
| +-------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`expected '#pragma unused' argument to be a variable name`| |
| +-----------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`only variables can be arguments to '#pragma unused'`| |
| +------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`undeclared variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`used as an argument for '#pragma unused'`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wignored-qualifiers |
| -------------------- |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------+------------------------------------+----------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ARC` |nbsp| |+----------------------------------+| |nbsp| :diagtext:`lifetime qualifier on return type is ignored`| |
| | ||:diagtext:`unused` || | |
| | |+----------------------------------+| | |
| | ||:diagtext:`\_\_unsafe\_unretained`|| | |
| | |+----------------------------------+| | |
| | ||:diagtext:`\_\_strong` || | |
| | |+----------------------------------+| | |
| | ||:diagtext:`\_\_weak` || | |
| | |+----------------------------------+| | |
| | ||:diagtext:`\_\_autoreleasing` || | |
| | |+----------------------------------+| | |
| +--------------------------------------------------+------------------------------------+----------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' qualifier on omitted return type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`has no effect`| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------+---------------+------------------------------------------+------------------+-----------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' type qualifier`|+-------------+| |nbsp| :diagtext:`on return type` |nbsp| |+----------------+| |nbsp| :diagtext:`no effect`| |
| | || || ||:diagtext:`has` || | |
| | |+-------------+| |+----------------+| | |
| | ||:diagtext:`s`|| ||:diagtext:`have`|| | |
| | |+-------------+| |+----------------+| | |
| +------------------------------------------------------------------------------------+---------------+------------------------------------------+------------------+-----------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' qualifier on function type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`has no effect`| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' qualifier on reference type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`has no effect`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wimplicit |
| ---------- |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| Controls `-Wimplicit-function-declaration`_, `-Wimplicit-int`_. |
| |
| |
| -Wimplicit-atomic-properties |
| ---------------------------- |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`property is assumed atomic when auto-synthesizing the property`| |
| +-----------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`property is assumed atomic by default`| |
| +----------------------------------------------------------------------------+ |
| |
| |
| -Wimplicit-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` |nbsp| |+------------------+| |
| | ||:diagtext:`C99` || |
| | |+------------------+| |
| | ||:diagtext:`OpenCL`|| |
| | |+------------------+| |
| +----------------------------------------------------------------------------------------------------------------------------------------+--------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------+ |
| |: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-exception-spec |
| ----------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------+----------------------+--------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`exception specifications of` |nbsp| |+--------------------+| |nbsp| :diagtext:`types differ`| |
| | ||:diagtext:`return` || | |
| | |+--------------------+| | |
| | ||:diagtext:`argument`|| | |
| | |+--------------------+| | |
| +--------------------------------------------------------------------------+----------------------+--------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`target exception specification is not superset of source`| |
| +-----------------------------------------------------------------------------------------------+ |
| |
| |
| -Wincompatible-function-pointer-types |
| ------------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------+----------------------------------------------------------------+---------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`incompatible function pointer types` |nbsp| |+--------------------------------------------------------------+|+-------------------------------------+| |
| | ||:diagtext:`assigning to different types` ||| || |
| | |+--------------------------------------------------------------+|+-------------------------------------+| |
| | ||:diagtext:`passing to parameter of different type` |||:diagtext:`; dereference with \*` || |
| | |+--------------------------------------------------------------+|+-------------------------------------+| |
| | ||:diagtext:`returning from function with different return type`|||:diagtext:`; take the address with &`|| |
| | |+--------------------------------------------------------------+|+-------------------------------------+| |
| | ||:diagtext:`converting between types` |||:diagtext:`; remove \*` || |
| | |+--------------------------------------------------------------+|+-------------------------------------+| |
| | ||:diagtext:`initializing with expression of different type` |||:diagtext:`; remove &` || |
| | |+--------------------------------------------------------------+|+-------------------------------------+| |
| | ||:diagtext:`sending to parameter of different type` || | |
| | |+--------------------------------------------------------------+| | |
| | ||:diagtext:`casting between types` || | |
| | |+--------------------------------------------------------------+| | |
| +----------------------------------------------------------------------------------+----------------------------------------------------------------+---------------------------------------+ |
| |
| |
| -Wincompatible-library-redeclaration |
| ------------------------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`incompatible redeclaration of library function` |nbsp| :placeholder:`A`| |
| +-------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wincompatible-ms-struct |
| ------------------------ |
| This diagnostic is an error by default, but the flag ``-Wno-incompatible-ms-struct`` can be used to disable the error. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:error:`error:` |nbsp| :diagtext:`ms\_struct may not produce Microsoft-compatible layouts for classes with base classes or virtual functions`| |
| +---------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:error:`error:` |nbsp| :diagtext:`ms\_struct may not produce Microsoft-compatible layouts with fundamental data types with sizes that aren't a power of two`| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wincompatible-pointer-types |
| ---------------------------- |
| This diagnostic is enabled by default. |
| |
| Also controls `-Wincompatible-function-pointer-types`_, `-Wincompatible-pointer-types-discards-qualifiers`_. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------+----------------------------------------------------------------+---------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`incompatible pointer types` |nbsp| |+--------------------------------------------------------------+|+-------------------------------------+| |
| | ||:diagtext:`assigning to different types` ||| || |
| | |+--------------------------------------------------------------+|+-------------------------------------+| |
| | ||:diagtext:`passing to parameter of different type` |||:diagtext:`; dereference with \*` || |
| | |+--------------------------------------------------------------+|+-------------------------------------+| |
| | ||:diagtext:`returning from function with different return type`|||:diagtext:`; take the address with &`|| |
| | |+--------------------------------------------------------------+|+-------------------------------------+| |
| | ||:diagtext:`converting between types` |||:diagtext:`; remove \*` || |
| | |+--------------------------------------------------------------+|+-------------------------------------+| |
| | ||:diagtext:`initializing with expression of different type` |||:diagtext:`; remove &` || |
| | |+--------------------------------------------------------------+|+-------------------------------------+| |
| | ||:diagtext:`sending to parameter of different type` || | |
| | |+--------------------------------------------------------------+| | |
| | ||:diagtext:`casting between types` || | |
| | |+--------------------------------------------------------------+| | |
| +-------------------------------------------------------------------------+----------------------------------------------------------------+---------------------------------------+ |
| |
| |
| -Wincompatible-pointer-types-discards-qualifiers |
| ------------------------------------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------+----------------------------------------------------------------+---------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| |+--------------------------------------------------------------+| |nbsp| :diagtext:`discards qualifiers in nested pointer types`| |
| | ||:diagtext:`assigning to different types` || | |
| | |+--------------------------------------------------------------+| | |
| | ||:diagtext:`passing to parameter of different type` || | |
| | |+--------------------------------------------------------------+| | |
| | ||:diagtext:`returning from function with different return type`|| | |
| | |+--------------------------------------------------------------+| | |
| | ||:diagtext:`converting between types` || | |
| | |+--------------------------------------------------------------+| | |
| | ||:diagtext:`initializing with expression of different type` || | |
| | |+--------------------------------------------------------------+| | |
| | ||:diagtext:`sending to parameter of different type` || | |
| | |+--------------------------------------------------------------+| | |
| | ||:diagtext:`casting between types` || | |
| | |+--------------------------------------------------------------+| | |
| +---------------------------+----------------------------------------------------------------+---------------------------------------------------------------+ |
| |
| +---------------------------+----------------------------------------------------------------+---------------------------------------+ |
| |:warning:`warning:` |nbsp| |+--------------------------------------------------------------+| |nbsp| :diagtext:`discards qualifiers`| |
| | ||:diagtext:`assigning to different types` || | |
| | |+--------------------------------------------------------------+| | |
| | ||:diagtext:`passing to parameter of different type` || | |
| | |+--------------------------------------------------------------+| | |
| | ||:diagtext:`returning from function with different return type`|| | |
| | |+--------------------------------------------------------------+| | |
| | ||:diagtext:`converting between types` || | |
| | |+--------------------------------------------------------------+| | |
| | ||:diagtext:`initializing with expression of different type` || | |
| | |+--------------------------------------------------------------+| | |
| | ||:diagtext:`sending to parameter of different type` || | |
| | |+--------------------------------------------------------------+| | |
| | ||:diagtext:`casting between types` || | |
| | |+--------------------------------------------------------------+| | |
| +---------------------------+----------------------------------------------------------------+---------------------------------------+ |
| |
| |
| -Wincompatible-property-type |
| ---------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`property type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is incompatible with type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`inherited from` |nbsp| :placeholder:`C`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wincompatible-sysroot |
| ---------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`using sysroot for '`:placeholder:`A`:diagtext:`' but targeting '`:placeholder:`B`:diagtext:`'`| |
| +------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wincomplete-framework-module-declaration |
| ----------------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`skipping '`:placeholder:`A`:diagtext:`' because module declaration of '`:placeholder:`B`:diagtext:`' lacks the 'framework' qualifier`| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wincomplete-implementation |
| --------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`method definition for` |nbsp| :placeholder:`A` |nbsp| :diagtext:`not found`| |
| +-----------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wincomplete-module |
| ------------------- |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| Controls `-Wincomplete-umbrella`_, `-Wnon-modular-include-in-module`_. |
| |
| |
| -Wincomplete-umbrella |
| --------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`missing submodule '`:placeholder:`A`:diagtext:`'`| |
| +---------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`umbrella directory '`:placeholder:`A`:diagtext:`' not found`| |
| +--------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`umbrella header for module '`:placeholder:`A`:diagtext:`' does not include header '`:placeholder:`B`:diagtext:`'`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Winconsistent-dllimport |
| ------------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`redeclared without` |nbsp| :placeholder:`B` |nbsp| :diagtext:`attribute: previous` |nbsp| :placeholder:`B` |nbsp| :diagtext:`ignored`| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`redeclared without 'dllimport' attribute: 'dllexport' attribute added`| |
| +------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Winconsistent-missing-destructor-override |
| ------------------------------------------ |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`overrides a destructor but is not marked 'override'`| |
| +------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Winconsistent-missing-override |
| ------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`overrides a member function but is not marked 'override'`| |
| +-----------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wincrement-bool |
| ---------------- |
| This diagnostic is enabled by default. |
| |
| Also controls `-Wdeprecated-increment-bool`_. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------+ |
| |:error:`error:` |nbsp| :diagtext:`ISO C++17 does not allow incrementing expression of type bool`| |
| +------------------------------------------------------------------------------------------------+ |
| |
| |
| -Winfinite-recursion |
| -------------------- |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`all paths through this function will call itself`| |
| +---------------------------------------------------------------------------------------+ |
| |
| |
| -Winit-self |
| ----------- |
| This diagnostic flag exists for GCC compatibility, and has no effect in Clang. |
| |
| -Winitializer-overrides |
| ----------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`initializer overrides prior initialization of this subobject`| |
| +---------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`subobject initialization overrides initialization of other fields within its enclosing subobject`| |
| +---------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Winjected-class-name |
| --------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------+--------------------------------------------------------------+------------------------+---------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ISO C++ specifies that qualified reference to` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a constructor name rather than a` |nbsp| |+-------------------------+| |nbsp| :diagtext:`in this context, despite preceding` |nbsp| |+----------------------+| |nbsp| :diagtext:`keyword`| |
| | ||:diagtext:`template name`|| ||:diagtext:`'typename'`|| | |
| | |+-------------------------+| |+----------------------+| | |
| | ||:diagtext:`type` || ||:diagtext:`'template'`|| | |
| | |+-------------------------+| |+----------------------+| | |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------+--------------------------------------------------------------+------------------------+---------------------------+ |
| |
| |
| -Winline |
| -------- |
| This diagnostic flag exists for GCC compatibility, and has no effect in Clang. |
| |
| -Winline-asm |
| ------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| The text of this diagnostic is not controlled by Clang. |
| |
| |
| -Winline-new-delete |
| ------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`replacement function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`cannot be declared 'inline'`| |
| +----------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Winstantiation-after-specialization |
| ------------------------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`explicit instantiation of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`that occurs after an explicit specialization has no effect`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wint-conversion |
| ---------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------+----------------------------------------------------------------+---------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`incompatible integer to pointer conversion` |nbsp| |+--------------------------------------------------------------+|+-------------------------------------+| |
| | ||:diagtext:`assigning to different types` ||| || |
| | |+--------------------------------------------------------------+|+-------------------------------------+| |
| | ||:diagtext:`passing to parameter of different type` |||:diagtext:`; dereference with \*` || |
| | |+--------------------------------------------------------------+|+-------------------------------------+| |
| | ||:diagtext:`returning from function with different return type`|||:diagtext:`; take the address with &`|| |
| | |+--------------------------------------------------------------+|+-------------------------------------+| |
| | ||:diagtext:`converting between types` |||:diagtext:`; remove \*` || |
| | |+--------------------------------------------------------------+|+-------------------------------------+| |
| | ||:diagtext:`initializing with expression of different type` |||:diagtext:`; remove &` || |
| | |+--------------------------------------------------------------+|+-------------------------------------+| |
| | ||:diagtext:`sending to parameter of different type` || | |
| | |+--------------------------------------------------------------+| | |
| | ||:diagtext:`casting between types` || | |
| | |+--------------------------------------------------------------+| | |
| +-----------------------------------------------------------------------------------------+----------------------------------------------------------------+---------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------+----------------------------------------------------------------+---------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`incompatible pointer to integer conversion` |nbsp| |+--------------------------------------------------------------+|+-------------------------------------+| |
| | ||:diagtext:`assigning to different types` ||| || |
| | |+--------------------------------------------------------------+|+-------------------------------------+| |
| | ||:diagtext:`passing to parameter of different type` |||:diagtext:`; dereference with \*` || |
| | |+--------------------------------------------------------------+|+-------------------------------------+| |
| | ||:diagtext:`returning from function with different return type`|||:diagtext:`; take the address with &`|| |
| | |+--------------------------------------------------------------+|+-------------------------------------+| |
| | ||:diagtext:`converting between types` |||:diagtext:`; remove \*` || |
| | |+--------------------------------------------------------------+|+-------------------------------------+| |
| | ||:diagtext:`initializing with expression of different type` |||:diagtext:`; remove &` || |
| | |+--------------------------------------------------------------+|+-------------------------------------+| |
| | ||:diagtext:`sending to parameter of different type` || | |
| | |+--------------------------------------------------------------+| | |
| | ||:diagtext:`casting between types` || | |
| | |+--------------------------------------------------------------+| | |
| +-----------------------------------------------------------------------------------------+----------------------------------------------------------------+---------------------------------------+ |
| |
| |
| -Wint-conversions |
| ----------------- |
| Synonym for `-Wint-conversion`_. |
| |
| |
| -Wint-to-pointer-cast |
| --------------------- |
| This diagnostic is enabled by default. |
| |
| Also controls `-Wint-to-void-pointer-cast`_. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`cast to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`from smaller integer type` |nbsp| :placeholder:`A`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wint-to-void-pointer-cast |
| -------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`cast to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`from smaller integer type` |nbsp| :placeholder:`A`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Winteger-overflow |
| ------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`overflow in expression; result is` |nbsp| :placeholder:`A` |nbsp| :diagtext:`with type` |nbsp| :placeholder:`B`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Winvalid-command-line-argument |
| ------------------------------- |
| This diagnostic is enabled by default. |
| |
| Also controls `-Wignored-optimization-argument`_. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`the object size sanitizer has no effect at -O0, but is explicitly enabled:` |nbsp| :placeholder:`A`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`optimization level '`:placeholder:`A`:diagtext:`' is not supported; using '`:placeholder:`B`:placeholder:`C`:diagtext:`' instead`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -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-ios-deployment-target |
| ------------------------------- |
| This diagnostic is an error by default, but the flag ``-Wno-invalid-ios-deployment-target`` can be used to disable the error. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:error:`error:` |nbsp| :diagtext:`invalid iOS deployment version '`:placeholder:`A`:diagtext:`', iOS 10 is the maximum deployment target for 32-bit targets`| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Winvalid-noreturn |
| ------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`function declared 'noreturn' should not return`| |
| +-------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`declared 'noreturn' should not return`| |
| +--------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Winvalid-offsetof |
| ------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`offset of on non-POD type` |nbsp| :placeholder:`A`| |
| +----------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`offset of on non-standard-layout type` |nbsp| :placeholder:`A`| |
| +----------------------------------------------------------------------------------------------------+ |
| |
| |
| -Winvalid-or-nonexistent-directory |
| ---------------------------------- |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`environment variable SCE\_ORBIS\_SDK\_DIR is set, but points to invalid or nonexistent directory '`:placeholder:`A`:diagtext:`'`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`unable to find` |nbsp| :placeholder:`A` |nbsp| :diagtext:`directory, expected to be in '`:placeholder:`B`:diagtext:`'`| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Winvalid-partial-specialization |
| -------------------------------- |
| This diagnostic is an error by default, but the flag ``-Wno-invalid-partial-specialization`` can be used to disable the error. |
| |
| **Diagnostic text:** |
| |
| +-----------------------+----------------------+-----------------------------------------------------------------------------------------------------+ |
| |:error:`error:` |nbsp| |+--------------------+| |nbsp| :diagtext:`template partial specialization is not more specialized than the primary template`| |
| | ||:diagtext:`class` || | |
| | |+--------------------+| | |
| | ||:diagtext:`variable`|| | |
| | |+--------------------+| | |
| +-----------------------+----------------------+-----------------------------------------------------------------------------------------------------+ |
| |
| |
| -Winvalid-pch |
| ------------- |
| This diagnostic flag exists for GCC compatibility, and has no effect in Clang. |
| |
| -Winvalid-pp-token |
| ------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`empty character constant`| |
| +---------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------+-----------------+-----------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`missing terminating` |nbsp| |+---------------+| |nbsp| :diagtext:`character`| |
| | ||:diagtext:`'` || | |
| | |+---------------+| | |
| | ||:diagtext:`'"'`|| | |
| | |+---------------+| | |
| +------------------------------------------------------------------+-----------------+-----------------------------+ |
| |
| |
| -Winvalid-source-encoding |
| ------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`illegal character encoding in character literal`| |
| +--------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`illegal character encoding in string literal`| |
| +-----------------------------------------------------------------------------------+ |
| |
| |
| -Winvalid-token-paste |
| --------------------- |
| This diagnostic is an error by default, but the flag ``-Wno-invalid-token-paste`` can be used to disable the error. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------+ |
| |:error:`error:` |nbsp| :diagtext:`pasting formed '`:placeholder:`A`:diagtext:`', an invalid preprocessing token`| |
| +----------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wjump-seh-finally |
| ------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`jump out of \_\_finally block has undefined behavior`| |
| +-------------------------------------------------------------------------------------------+ |
| |
| |
| -Wkeyword-compat |
| ---------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`keyword '`:placeholder:`A`:diagtext:`' will be made available as an identifier` |nbsp| |+-----------------------------------------------------+| |
| | ||:diagtext:`here` || |
| | |+-----------------------------------------------------+| |
| | ||:diagtext:`for the remainder of the translation unit`|| |
| | |+-----------------------------------------------------+| |
| +-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------+ |
| |
| |
| -Wkeyword-macro |
| --------------- |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`keyword is hidden by macro definition`| |
| +----------------------------------------------------------------------------+ |
| |
| |
| -Wknr-promoted-parameter |
| ------------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`promoted type of K&R function parameter is not compatible with parameter type` |nbsp| :diagtext:`declared in a previous prototype`| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wlanguage-extension-token |
| -------------------------- |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`extension used`| |
| +-----------------------------------------------------+ |
| |
| |
| -Wlarge-by-value-copy |
| --------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a large (`:placeholder:`B` |nbsp| :diagtext:`bytes) pass-by-value argument; pass it by reference instead ?`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`return value of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a large (`:placeholder:`B` |nbsp| :diagtext:`bytes) pass-by-value object; pass it by reference instead ?`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wliblto |
| -------- |
| This diagnostic flag exists for GCC compatibility, and has no effect in Clang. |
| |
| -Wliteral-conversion |
| -------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`implicit conversion from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`changes value from` |nbsp| :placeholder:`C` |nbsp| :diagtext:`to` |nbsp| :placeholder:`D`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`implicit conversion of out of range value from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is undefined`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wliteral-range |
| --------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`magnitude of floating-point constant too large for type` |nbsp| :placeholder:`A`:diagtext:`; maximum is` |nbsp| :placeholder:`B`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`magnitude of floating-point constant too small for type` |nbsp| :placeholder:`A`:diagtext:`; minimum is` |nbsp| :placeholder:`B`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wlocal-type-template-args |
| -------------------------- |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| Also controls `-Wc++98-compat-local-type-template-args`_. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`template argument uses local type` |nbsp| :placeholder:`A`| |
| +------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wlogical-not-parentheses |
| ------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------+------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`logical not is only applied to the left hand side of this` |nbsp| |+----------------------------+| |
| | ||:diagtext:`comparison` || |
| | |+----------------------------+| |
| | ||:diagtext:`bitwise operator`|| |
| | |+----------------------------+| |
| +--------------------------------------------------------------------------------------------------------+------------------------------+ |
| |
| |
| -Wlogical-op-parentheses |
| ------------------------ |
| 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:`bool literal returned from 'main'`| |
| +------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'main' should not be declared static`| |
| +---------------------------------------------------------------------------+ |
| |
| |
| -Wmain-return-type |
| ------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`return type of 'main' is not 'int'`| |
| +-------------------------------------------------------------------------+ |
| |
| |
| -Wmalformed-warning-check |
| ------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`\_\_has\_warning expected option name (e.g. "-Wundef")`| |
| +---------------------------------------------------------------------------------------------+ |
| |
| |
| -Wmany-braces-around-scalar-init |
| -------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`too many braces around scalar initializer`| |
| +--------------------------------------------------------------------------------+ |
| |
| |
| -Wmax-unsigned-zero |
| ------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------+---------------------------------------+------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`taking the max of` |nbsp| |+-------------------------------------+| |nbsp| :diagtext:`is always equal to the other value`| |
| | ||:diagtext:`a value and unsigned zero`|| | |
| | |+-------------------------------------+| | |
| | ||:diagtext:`unsigned zero and a value`|| | |
| | |+-------------------------------------+| | |
| +----------------------------------------------------------------+---------------------------------------+------------------------------------------------------+ |
| |
| |
| -Wmemset-transposed-args |
| ------------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------+-----------------------------------------------------+---------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| |+---------------------------------------------------+|:diagtext:`; did you mean to transpose the last two arguments?`| |
| | ||:diagtext:`'size' argument to memset is '0'` || | |
| | |+---------------------------------------------------+| | |
| | ||:diagtext:`setting buffer to a 'sizeof' expression`|| | |
| | |+---------------------------------------------------+| | |
| +---------------------------+-----------------------------------------------------+---------------------------------------------------------------+ |
| |
| |
| -Wmemsize-comparison |
| -------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`size argument in` |nbsp| :placeholder:`A` |nbsp| :diagtext:`call is a comparison`| |
| +-----------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wmethod-signatures |
| ------------------- |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`conflicting parameter types in implementation of` |nbsp| :placeholder:`A`:diagtext:`:` |nbsp| :placeholder:`B` |nbsp| :diagtext:`vs` |nbsp| :placeholder:`C`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`conflicting return type in implementation of` |nbsp| :placeholder:`A`:diagtext:`:` |nbsp| :placeholder:`B` |nbsp| :diagtext:`vs` |nbsp| :placeholder:`C`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wmicrosoft |
| ----------- |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| Controls `-Winconsistent-dllimport`_, `-Wmicrosoft-anon-tag`_, `-Wmicrosoft-cast`_, `-Wmicrosoft-charize`_, `-Wmicrosoft-comment-paste`_, `-Wmicrosoft-const-init`_, `-Wmicrosoft-cpp-macro`_, `-Wmicrosoft-default-arg-redefinition`_, `-Wmicrosoft-end-of-file`_, `-Wmicrosoft-enum-forward-reference`_, `-Wmicrosoft-enum-value`_, `-Wmicrosoft-exception-spec`_, `-Wmicrosoft-explicit-constructor-call`_, `-Wmicrosoft-extra-qualification`_, `-Wmicrosoft-fixed-enum`_, `-Wmicrosoft-flexible-array`_, `-Wmicrosoft-goto`_, `-Wmicrosoft-include`_, `-Wmicrosoft-mutable-reference`_, `-Wmicrosoft-pure-definition`_, `-Wmicrosoft-redeclare-static`_, `-Wmicrosoft-sealed`_, `-Wmicrosoft-template`_, `-Wmicrosoft-union-member-reference`_, `-Wmicrosoft-unqualified-friend`_, `-Wmicrosoft-using-decl`_, `-Wmicrosoft-void-pseudo-dtor`_. |
| |
| |
| -Wmicrosoft-anon-tag |
| -------------------- |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------+--------------------+---------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`types declared in an anonymous` |nbsp| |+------------------+| |nbsp| :diagtext:`are a Microsoft extension`| |
| | ||:diagtext:`struct`|| | |
| | |+------------------+| | |
| | ||:diagtext:`union` || | |
| | |+------------------+| | |
| +-----------------------------------------------------------------------------+--------------------+---------------------------------------------+ |
| |
| +--------------------------------------------------------+---------------------+---------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`anonymous` |nbsp| |+-------------------+| |nbsp| :diagtext:`are a Microsoft extension`| |
| | ||:diagtext:`structs`|| | |
| | |+-------------------+| | |
| | ||:diagtext:`unions` || | |
| | |+-------------------+| | |
| +--------------------------------------------------------+---------------------+---------------------------------------------+ |
| |
| |
| -Wmicrosoft-cast |
| ---------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`static\_cast between pointer-to-function and pointer-to-object is a Microsoft extension`| |
| +------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`implicit conversion between pointer-to-function and pointer-to-object is a Microsoft extension`| |
| +-------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wmicrosoft-charize |
| ------------------- |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`charizing operator #@ is a Microsoft extension`| |
| +-------------------------------------------------------------------------------------+ |
| |
| |
| -Wmicrosoft-comment-paste |
| ------------------------- |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`pasting two '/' tokens into a '//' comment is a Microsoft extension`| |
| +----------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wmicrosoft-const-init |
| ---------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+--------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`default initialization of an object of const type` |nbsp| :placeholder:`A`|+---------------------------------------------------------------+| |nbsp| :diagtext:`is a Microsoft extension`| |
| | || || | |
| | |+---------------------------------------------------------------+| | |
| | || |nbsp| :diagtext:`without a user-provided default constructor`|| | |
| | |+---------------------------------------------------------------+| | |
| +----------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+--------------------------------------------+ |
| |
| |
| -Wmicrosoft-cpp-macro |
| --------------------- |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`C++ operator` |nbsp| :placeholder:`A` |nbsp| :diagtext:`(aka` |nbsp| :placeholder:`B`:diagtext:`) used as a macro name`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wmicrosoft-default-arg-redefinition |
| ------------------------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`redefinition of default argument`| |
| +-----------------------------------------------------------------------+ |
| |
| |
| -Wmicrosoft-end-of-file |
| ----------------------- |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`treating Ctrl-Z as end-of-file is a Microsoft extension`| |
| +----------------------------------------------------------------------------------------------+ |
| |
| |
| -Wmicrosoft-enum-forward-reference |
| ---------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`forward references to 'enum' types are a Microsoft extension`| |
| +---------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wmicrosoft-enum-value |
| ---------------------- |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`enumerator value is not representable in the underlying type` |nbsp| :placeholder:`A`| |
| +---------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wmicrosoft-exception-spec |
| -------------------------- |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`exception specification of '...' is a Microsoft extension`| |
| +------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------+----------------------------------+----------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| |+--------------------------------+|:diagtext:`incomplete type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is not allowed in exception specification`| |
| | || || | |
| | |+--------------------------------+| | |
| | ||:diagtext:`pointer to` |nbsp| || | |
| | |+--------------------------------+| | |
| | ||:diagtext:`reference to` |nbsp| || | |
| | |+--------------------------------+| | |
| +---------------------------+----------------------------------+----------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`exception specification in declaration does not match previous declaration`| |
| +-----------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`exception specification in explicit instantiation does not match instantiated one`| |
| +------------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is missing exception specification '`:placeholder:`B`:diagtext:`'`| |
| +--------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`exception specification of overriding function is more lax than base version`| |
| +-------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wmicrosoft-exists |
| ------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------+---------------------------------+--------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`dependent` |nbsp| |+-------------------------------+| |nbsp| :diagtext:`declarations are ignored`| |
| | ||:diagtext:`\_\_if\_not\_exists`|| | |
| | |+-------------------------------+| | |
| | ||:diagtext:`\_\_if\_exists` || | |
| | |+-------------------------------+| | |
| +--------------------------------------------------------+---------------------------------+--------------------------------------------+ |
| |
| |
| -Wmicrosoft-explicit-constructor-call |
| ------------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`explicit constructor calls are a Microsoft extension`| |
| +-------------------------------------------------------------------------------------------+ |
| |
| |
| -Wmicrosoft-extra-qualification |
| ------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`extra qualification on member` |nbsp| :placeholder:`A`| |
| +--------------------------------------------------------------------------------------------+ |
| |
| |
| -Wmicrosoft-fixed-enum |
| ---------------------- |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`enumeration types with a fixed underlying type are a Microsoft extension`| |
| +---------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wmicrosoft-flexible-array |
| -------------------------- |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------------+-----------------------+--------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`flexible array member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in otherwise empty` |nbsp| |+---------------------+| |nbsp| :diagtext:`is a Microsoft extension`| |
| | ||:diagtext:`struct` || | |
| | |+---------------------+| | |
| | ||:diagtext:`interface`|| | |
| | |+---------------------+| | |
| | ||:diagtext:`union` || | |
| | |+---------------------+| | |
| | ||:diagtext:`class` || | |
| | |+---------------------+| | |
| | ||:diagtext:`enum` || | |
| | |+---------------------+| | |
| +----------------------------------------------------------------------------------------------------------------------------------+-----------------------+--------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`flexible array member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in a union is a Microsoft extension`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wmicrosoft-goto |
| ---------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`jump from this goto statement to its label is a Microsoft extension`| |
| +----------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wmicrosoft-inaccessible-base |
| ----------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`accessing inaccessible direct base` |nbsp| :placeholder:`A` |nbsp| :diagtext:`of` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is a Microsoft extension`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wmicrosoft-include |
| ------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`#include resolved using non-portable Microsoft search rules as:` |nbsp| :placeholder:`A`| |
| +------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wmicrosoft-mutable-reference |
| ----------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'mutable' on a reference type is a Microsoft extension`| |
| +---------------------------------------------------------------------------------------------+ |
| |
| |
| -Wmicrosoft-pure-definition |
| --------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`function definition with pure-specifier is a Microsoft extension`| |
| +-------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wmicrosoft-redeclare-static |
| ---------------------------- |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`redeclaring non-static` |nbsp| :placeholder:`A` |nbsp| :diagtext:`as static is a Microsoft extension`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wmicrosoft-sealed |
| ------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'sealed' keyword is a Microsoft extension`| |
| +--------------------------------------------------------------------------------+ |
| |
| |
| -Wmicrosoft-template |
| -------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`duplicate explicit instantiation of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`ignored as a Microsoft extension`| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`use of identifier` |nbsp| :placeholder:`A` |nbsp| :diagtext:`found via unqualified lookup into dependent bases of class templates is a Microsoft extension`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`using the undeclared type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`as a default template argument is a Microsoft extension`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`non-type template argument containing a dereference operation is a Microsoft extension`| |
| +-----------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------+---------------------------------------+-----------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------+--------------------------------------------+ |
| |:warning:`warning:` |nbsp| |+-------------------------------------+| |nbsp| :diagtext:`specialization of` |nbsp| :placeholder:`B` |nbsp| :diagtext:`not in` |nbsp| |+----------------------------------------------------------------------------------------+| |nbsp| :diagtext:`is a Microsoft extension`| |
| | ||:diagtext:`class template` || ||+---------------------------------------------------------+ || | |
| | |+-------------------------------------+| |||:diagtext:`a namespace enclosing` |nbsp| :placeholder:`C`| || | |
| | ||:diagtext:`class template partial` || ||+---------------------------------------------------------+ || | |
| | |+-------------------------------------+| |+----------------------------------------------------------------------------------------+| | |
| | ||:diagtext:`variable template` || ||+--------------------------------------------------------------------------------------+|| | |
| | |+-------------------------------------+| |||:diagtext:`class` |nbsp| :placeholder:`C` |nbsp| :diagtext:`or an enclosing namespace`||| | |
| | ||:diagtext:`variable template partial`|| ||+--------------------------------------------------------------------------------------+|| | |
| | |+-------------------------------------+| |+----------------------------------------------------------------------------------------+| | |
| | ||:diagtext:`function template` || | | | |
| | |+-------------------------------------+| | | | |
| | ||:diagtext:`member function` || | | | |
| | |+-------------------------------------+| | | | |
| | ||:diagtext:`static data member` || | | | |
| | |+-------------------------------------+| | | | |
| | ||:diagtext:`member class` || | | | |
| | |+-------------------------------------+| | | | |
| | ||:diagtext:`member enumeration` || | | | |
| | |+-------------------------------------+| | | | |
| +---------------------------+---------------------------------------+-----------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------+--------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`template argument for template type parameter must be a type; omitted 'typename' is a Microsoft extension`| |
| +------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`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-noescape |
| ------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`parameter of overriding method should be annotated with \_\_attribute\_\_((noescape))`| |
| +----------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wmissing-noreturn |
| ------------------ |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`block could be declared with attribute 'noreturn'`| |
| +----------------------------------------------------------------------------------------+ |
| |
| +---------------------------+----------------------+---------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| |+--------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`could be declared with attribute 'noreturn'`| |
| | ||:diagtext:`function`|| | |
| | |+--------------------+| | |
| | ||:diagtext:`method` || | |
| | |+--------------------+| | |
| +---------------------------+----------------------+---------------------------------------------------------------------------------------+ |
| |
| |
| -Wmissing-prototype-for-cc |
| -------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`function with no prototype cannot use the` |nbsp| :placeholder:`A` |nbsp| :diagtext:`calling convention`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wmissing-prototypes |
| -------------------- |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`no previous prototype for function` |nbsp| :placeholder:`A`| |
| +-------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wmissing-selector-name |
| ----------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`used as the name of the previous parameter rather than as part of the selector`| |
| +---------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wmissing-sysroot |
| ----------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`no such sysroot directory: '`:placeholder:`A`:diagtext:`'`| |
| +------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wmissing-variable-declarations |
| ------------------------------- |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`no previous extern declaration for non-static variable` |nbsp| :placeholder:`A`| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Rmodule-build |
| -------------- |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |:remark:`remark:` |nbsp| :diagtext:`building module '`:placeholder:`A`:diagtext:`' as '`:placeholder:`B`:diagtext:`'`| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------+ |
| |:remark:`remark:` |nbsp| :diagtext:`finished building module '`:placeholder:`A`:diagtext:`'`| |
| +--------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------+ |
| |:remark:`remark:` |nbsp| :diagtext:`could not acquire lock file for module '`:placeholder:`A`:diagtext:`':` |nbsp| :placeholder:`B`| |
| +-----------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |:remark:`remark:` |nbsp| :diagtext:`timed out waiting to acquire lock file for module '`:placeholder:`A`:diagtext:`'`| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wmodule-conflict |
| ----------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`module '`:placeholder:`A`:diagtext:`' conflicts with already-imported module '`:placeholder:`B`:diagtext:`':` |nbsp| :placeholder:`C`| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`module file '`:placeholder:`A`:diagtext:`' was validated as a system module and is now being imported as a non-system module; any difference in diagnostic options will be ignored`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wmodule-file-config-mismatch |
| ----------------------------- |
| This diagnostic is an error by default, but the flag ``-Wno-module-file-config-mismatch`` can be used to disable the error. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:error:`error:` |nbsp| :diagtext:`module file` |nbsp| :placeholder:`A` |nbsp| :diagtext:`cannot be loaded due to a configuration mismatch with the current compilation`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wmodule-file-extension |
| ----------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`duplicate module file extension block name '`:placeholder:`A`:diagtext:`'`| |
| +----------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wmodule-import-in-extern-c |
| --------------------------- |
| This diagnostic is an error by default, but the flag ``-Wno-module-import-in-extern-c`` can be used to disable the error. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:error:`error:` |nbsp| :diagtext:`import of C++ module '`:placeholder:`A`:diagtext:`' appears within extern "C" language linkage specification`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wmodules-ambiguous-internal-linkage |
| ------------------------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ambiguous use of internal linkage declaration` |nbsp| :placeholder:`A` |nbsp| :diagtext:`defined in multiple modules`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wmodules-import-nested-redundant |
| --------------------------------- |
| This diagnostic is an error by default, but the flag ``-Wno-modules-import-nested-redundant`` can be used to disable the error. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------+ |
| |:error:`error:` |nbsp| :diagtext:`redundant #include of module '`:placeholder:`A`:diagtext:`' appears within` |nbsp| :placeholder:`B`| |
| +-------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wmost |
| ------ |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| Controls `-Wcast-of-sel-type`_, `-Wchar-subscripts`_, `-Wcomment`_, `-Wdelete-non-virtual-dtor`_, `-Wextern-c-compat`_, `-Wfor-loop-analysis`_, `-Wformat`_, `-Wimplicit`_, `-Winfinite-recursion`_, `-Wmismatched-tags`_, `-Wmissing-braces`_, `-Wmove`_, `-Wmultichar`_, `-Wobjc-designated-initializers`_, `-Wobjc-flexible-array`_, `-Wobjc-missing-super-calls`_, `-Woverloaded-virtual`_, `-Wprivate-extern`_, `-Wreorder`_, `-Wreturn-type`_, `-Wself-assign`_, `-Wself-move`_, `-Wsizeof-array-argument`_, `-Wsizeof-array-decay`_, `-Wstring-plus-int`_, `-Wtrigraphs`_, `-Wuninitialized`_, `-Wunknown-pragmas`_, `-Wunused`_, `-Wuser-defined-warnings`_, `-Wvolatile-register-var`_. |
| |
| |
| -Wmove |
| ------ |
| Controls `-Wpessimizing-move`_, `-Wredundant-move`_, `-Wreturn-std-move`_, `-Wself-move`_. |
| |
| |
| -Wmsvc-include |
| -------------- |
| Synonym for `-Wmicrosoft-include`_. |
| |
| |
| -Wmsvc-not-found |
| ---------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`unable to find a Visual Studio installation; try running Clang from a developer command prompt`| |
| +-------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wmultichar |
| ----------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`multi-character character constant`| |
| +-------------------------------------------------------------------------+ |
| |
| |
| -Wmultiple-move-vbase |
| --------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`defaulted move assignment operator of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`will move assign virtual base class` |nbsp| :placeholder:`B` |nbsp| :diagtext:`multiple times`| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wnarrowing |
| ----------- |
| Synonym for `-Wc++11-narrowing`_. |
| |
| |
| -Wnested-anon-types |
| ------------------- |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------+--------------------+------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`anonymous types declared in an anonymous` |nbsp| |+------------------+| |nbsp| :diagtext:`are an extension`| |
| | ||:diagtext:`struct`|| | |
| | |+------------------+| | |
| | ||:diagtext:`union` || | |
| | |+------------------+| | |
| +---------------------------------------------------------------------------------------+--------------------+------------------------------------+ |
| |
| |
| -Wnested-externs |
| ---------------- |
| This diagnostic flag exists for GCC compatibility, and has no effect in Clang. |
| |
| -Wnew-returns-null |
| ------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`should not return a null pointer unless it is declared 'throw()'`|+---------------------------------+| |
| | || || |
| | |+---------------------------------+| |
| | || |nbsp| :diagtext:`or 'noexcept'`|| |
| | |+---------------------------------+| |
| +-------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+ |
| |
| |
| -Wnewline-eof |
| ------------- |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`no newline at end of file`| |
| +----------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`no newline at end of file`| |
| +----------------------------------------------------------------+ |
| |
| |
| -Wnoexcept-type |
| --------------- |
| Synonym for `-Wc++17-compat-mangling`_. |
| |
| |
| -Wnon-gcc |
| --------- |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| Controls `-Wconversion`_, `-Wliteral-range`_, `-Wsign-compare`_. |
| |
| |
| -Wnon-literal-null-conversion |
| ----------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`expression which evaluates to zero treated as a null pointer constant of type` |nbsp| :placeholder:`A`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wnon-modular-include-in-framework-module |
| ----------------------------------------- |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`include of non-modular header inside framework module '`:placeholder:`A`:diagtext:`': '`:placeholder:`B`:diagtext:`'`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wnon-modular-include-in-module |
| ------------------------------- |
| Also controls `-Wnon-modular-include-in-framework-module`_. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`include of non-modular header inside module '`:placeholder:`A`:diagtext:`': '`:placeholder:`B`:diagtext:`'`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wnon-pod-varargs |
| ----------------- |
| This diagnostic is an error by default, but the flag ``-Wno-non-pod-varargs`` can be used to disable the error. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------+-------------------------+--------------------------------------------------------------------------------------------+-------------------------+----------------------------------------+ |
| |:error:`error:` |nbsp| :diagtext:`cannot pass object of` |nbsp| |+-----------------------+| |nbsp| :diagtext:`type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`through variadic` |nbsp| |+-----------------------+|:diagtext:`; call will abort at runtime`| |
| | ||:diagtext:`non-POD` || ||:diagtext:`function` || | |
| | |+-----------------------+| |+-----------------------+| | |
| | ||:diagtext:`non-trivial`|| ||:diagtext:`block` || | |
| | |+-----------------------+| |+-----------------------+| | |
| | | | ||:diagtext:`method` || | |
| | | | |+-----------------------+| | |
| | | | ||:diagtext:`constructor`|| | |
| | | | |+-----------------------+| | |
| +----------------------------------------------------------------+-------------------------+--------------------------------------------------------------------------------------------+-------------------------+----------------------------------------+ |
| |
| +------------------------------------------------------+-------------------------+-------------------------------------------------------------------------------------------------+-------------------------+--------------------------------------------------------------------------+ |
| |:error:`error:` |nbsp| :diagtext:`cannot pass` |nbsp| |+-----------------------+| |nbsp| :diagtext:`object of type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`to variadic` |nbsp| |+-----------------------+|:diagtext:`; expected type from format string was` |nbsp| :placeholder:`D`| |
| | ||:diagtext:`non-POD` || ||:diagtext:`function` || | |
| | |+-----------------------+| |+-----------------------+| | |
| | ||:diagtext:`non-trivial`|| ||:diagtext:`block` || | |
| | |+-----------------------+| |+-----------------------+| | |
| | | | ||:diagtext:`method` || | |
| | | | |+-----------------------+| | |
| | | | ||:diagtext:`constructor`|| | |
| | | | |+-----------------------+| | |
| +------------------------------------------------------+-------------------------+-------------------------------------------------------------------------------------------------+-------------------------+--------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------+ |
| |:error:`error:` |nbsp| :diagtext:`second argument to 'va\_arg' is of non-POD type` |nbsp| :placeholder:`A`| |
| +----------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------+ |
| |:error:`error:` |nbsp| :diagtext:`second argument to 'va\_arg' is of ARC ownership-qualified type` |nbsp| :placeholder:`A`| |
| +--------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wnon-virtual-dtor |
| ------------------ |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has virtual functions but non-virtual destructor`| |
| +---------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wnonnull |
| --------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`null passed to a callee that requires a non-null argument`| |
| +------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------+----------------------+---------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`null returned from` |nbsp| |+--------------------+| |nbsp| :diagtext:`that requires a non-null return value`| |
| | ||:diagtext:`function`|| | |
| | |+--------------------+| | |
| | ||:diagtext:`method` || | |
| | |+--------------------+| | |
| +-----------------------------------------------------------------+----------------------+---------------------------------------------------------+ |
| |
| |
| -Wnonportable-cfstrings |
| ----------------------- |
| This diagnostic flag exists for GCC compatibility, and has no effect in Clang. |
| |
| -Wnonportable-include-path |
| -------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`non-portable path to file '`:placeholder:`A`:diagtext:`'; specified path differs in case from file name on disk`| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wnonportable-system-include-path |
| --------------------------------- |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`non-portable path to file '`:placeholder:`A`:diagtext:`'; specified path differs in case from file name on disk`| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wnonportable-vector-initialization |
| ----------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`vector initializers are not compatible with NEON intrinsics in big endian mode`| |
| +---------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wnontrivial-memaccess |
| ---------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------+-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------+ |
| |:warning:`warning:` |nbsp| |+-----------------------------+| |nbsp| :diagtext:`this` |nbsp| :placeholder:`B` |nbsp| :diagtext:`call is a pointer to record` |nbsp| :placeholder:`C` |nbsp| :diagtext:`that is not trivial to` |nbsp| |+----------------------------------------+| |
| | ||:diagtext:`destination for` || ||:diagtext:`primitive-default-initialize`|| |
| | |+-----------------------------+| |+----------------------------------------+| |
| | ||:diagtext:`source of` || ||:diagtext:`primitive-copy` || |
| | |+-----------------------------+| |+----------------------------------------+| |
| | ||:diagtext:`first operand of` || | | |
| | |+-----------------------------+| | | |
| | ||:diagtext:`second operand of`|| | | |
| | |+-----------------------------+| | | |
| +---------------------------+-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------+ |
| |
| |
| -Wnsconsumed-mismatch |
| --------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`overriding method has mismatched ns\_consumed attribute on its parameter`| |
| +---------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wnsreturns-mismatch |
| -------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------+---------------------------+------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`overriding method has mismatched ns\_returns\_`|+-------------------------+| |nbsp| :diagtext:`attributes`| |
| | ||:diagtext:`not\_retained`|| | |
| | |+-------------------------+| | |
| | ||:diagtext:`retained` || | |
| | |+-------------------------+| | |
| +-------------------------------------------------------------------------------------+---------------------------+------------------------------+ |
| |
| |
| -Wnull-arithmetic |
| ----------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`use of NULL in arithmetic operation`| |
| +--------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------+--------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`comparison between NULL and non-pointer` |nbsp| |+------------------------------------------------------------+| |
| | ||+----------------------------------------------------------+|| |
| | |||:diagtext:`(`:placeholder:`B` |nbsp| :diagtext:`and NULL)`||| |
| | ||+----------------------------------------------------------+|| |
| | |+------------------------------------------------------------+| |
| | ||+----------------------------------------------------------+|| |
| | |||:diagtext:`(NULL and` |nbsp| :placeholder:`B`:diagtext:`)`||| |
| | ||+----------------------------------------------------------+|| |
| | |+------------------------------------------------------------+| |
| +--------------------------------------------------------------------------------------+--------------------------------------------------------------+ |
| |
| |
| -Wnull-character |
| ---------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------+--------------------+---------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`null character(s) preserved in` |nbsp| |+------------------+| |nbsp| :diagtext:`literal`| |
| | ||:diagtext:`char` || | |
| | |+------------------+| | |
| | ||:diagtext:`string`|| | |
| | |+------------------+| | |
| +-----------------------------------------------------------------------------+--------------------+---------------------------+ |
| |
| +-------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`null character ignored`| |
| +-------------------------------------------------------------+ |
| |
| |
| -Wnull-conversion |
| ----------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------+---------------------+-------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`implicit conversion of` |nbsp| |+-------------------+| |nbsp| :diagtext:`constant to` |nbsp| :placeholder:`B`| |
| | ||:diagtext:`NULL` || | |
| | |+-------------------+| | |
| | ||:diagtext:`nullptr`|| | |
| | |+-------------------+| | |
| +---------------------------------------------------------------------+---------------------+-------------------------------------------------------+ |
| |
| |
| -Wnull-dereference |
| ------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`binding dereferenced null pointer to reference has undefined behavior`| |
| +------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`indirection of non-volatile null pointer will be deleted, not trap`| |
| +---------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wnull-pointer-arithmetic |
| ------------------------- |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`arithmetic on a null pointer treated as a cast from integer to pointer is a GNU extension`| |
| +--------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------+----------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`performing pointer arithmetic on a null pointer has undefined behavior`|+--------------------------------------------+| |
| | || || |
| | |+--------------------------------------------+| |
| | || |nbsp| :diagtext:`if the offset is nonzero`|| |
| | |+--------------------------------------------+| |
| +-------------------------------------------------------------------------------------------------------------+----------------------------------------------+ |
| |
| |
| -Wnullability |
| ------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`conflicting nullability specifier on parameter types,` |nbsp| :placeholder:`A` |nbsp| :diagtext:`conflicts with existing specifier` |nbsp| :placeholder:`B`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`conflicting nullability specifier on return types,` |nbsp| :placeholder:`A` |nbsp| :diagtext:`conflicts with existing specifier` |nbsp| :placeholder:`B`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`nullability specifier` |nbsp| :placeholder:`A` |nbsp| :diagtext:`conflicts with existing specifier` |nbsp| :placeholder:`B`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`synthesized setter` |nbsp| :placeholder:`A` |nbsp| :diagtext:`for null\_resettable property` |nbsp| :placeholder:`B` |nbsp| :diagtext:`does not handle nil`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`duplicate nullability specifier` |nbsp| :placeholder:`A`| |
| +----------------------------------------------------------------------------------------------+ |
| |
| |
| -Wnullability-completeness |
| -------------------------- |
| This diagnostic is enabled by default. |
| |
| Also controls `-Wnullability-completeness-on-arrays`_. |
| |
| **Diagnostic text:** |
| |
| +---------------------------+----------------------------+-----------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| |+--------------------------+| |nbsp| :diagtext:`is missing a nullability type specifier (\_Nonnull, \_Nullable, or \_Null\_unspecified)`| |
| | ||:diagtext:`pointer` || | |
| | |+--------------------------+| | |
| | ||:diagtext:`block pointer` || | |
| | |+--------------------------+| | |
| | ||:diagtext:`member pointer`|| | |
| | |+--------------------------+| | |
| +---------------------------+----------------------------+-----------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wnullability-completeness-on-arrays |
| ------------------------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`array parameter is missing a nullability type specifier (\_Nonnull, \_Nullable, or \_Null\_unspecified)`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wnullability-declspec |
| ---------------------- |
| This diagnostic is an error by default, but the flag ``-Wno-nullability-declspec`` can be used to disable the error. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------+-------------+ |
| |:error:`error:` |nbsp| :diagtext:`nullability specifier` |nbsp| :placeholder:`A` |nbsp| :diagtext:`cannot be applied to non-pointer type` |nbsp| :placeholder:`B`:diagtext:`; did you mean to apply the specifier to the` |nbsp| |+-----------------------------------+|:diagtext:`?`| |
| | ||:diagtext:`pointer` || | |
| | |+-----------------------------------+| | |
| | ||:diagtext:`block pointer` || | |
| | |+-----------------------------------+| | |
| | ||:diagtext:`member pointer` || | |
| | |+-----------------------------------+| | |
| | ||:diagtext:`function pointer` || | |
| | |+-----------------------------------+| | |
| | ||:diagtext:`member function pointer`|| | |
| | |+-----------------------------------+| | |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------+-------------+ |
| |
| |
| -Wnullability-extension |
| ----------------------- |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`type nullability specifier` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a Clang extension`| |
| +---------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wnullability-inferred-on-nested-type |
| ------------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------+-----------------------+---------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`inferring '\_Nonnull' for pointer type within` |nbsp| |+---------------------+| |nbsp| :diagtext:`is deprecated`| |
| | ||:diagtext:`array` || | |
| | |+---------------------+| | |
| | ||:diagtext:`reference`|| | |
| | |+---------------------+| | |
| +--------------------------------------------------------------------------------------------+-----------------------+---------------------------------+ |
| |
| |
| -Wnullable-to-nonnull-conversion |
| -------------------------------- |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`implicit conversion from nullable pointer` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to non-nullable pointer type` |nbsp| :placeholder:`B`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wobjc-autosynthesis-property-ivar-name-match |
| --------------------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------+-------------------------+---------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`autosynthesized property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`will use` |nbsp| |+-----------------------+| |nbsp| :diagtext:`instance variable` |nbsp| :placeholder:`C`:diagtext:`, not existing instance variable` |nbsp| :placeholder:`D`| |
| | || || | |
| | |+-----------------------+| | |
| | ||:diagtext:`synthesized`|| | |
| | |+-----------------------+| | |
| +---------------------------------------------------------------------------------------------------------------------------+-------------------------+---------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wobjc-circular-container |
| ------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`adding` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`might cause circular dependency in container`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wobjc-cocoa-api |
| ---------------- |
| Synonym for `-Wobjc-redundant-api-use`_. |
| |
| |
| -Wobjc-designated-initializers |
| ------------------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`designated initializer missing a 'super' call to a designated initializer of the super class`| |
| +-----------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`designated initializer invoked a non-designated initializer`| |
| +--------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`designated initializer should only invoke a designated initializer on 'super'`| |
| +--------------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`method override for the designated initializer of the superclass` |nbsp| :placeholder:`A` |nbsp| :diagtext:`not found`| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`convenience initializer missing a 'self' call to another initializer`| |
| +-----------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`convenience initializer should not invoke an initializer on 'super'`| |
| +----------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wobjc-flexible-array |
| --------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`field` |nbsp| :placeholder:`A` |nbsp| :diagtext:`can overwrite instance variable` |nbsp| :placeholder:`B` |nbsp| :diagtext:`with variable sized type` |nbsp| :placeholder:`C` |nbsp| :diagtext:`in superclass` |nbsp| :placeholder:`D`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`field` |nbsp| :placeholder:`A` |nbsp| :diagtext:`with variable sized type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is not visible to subclasses and can conflict with their instance variables`| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wobjc-forward-class-redefinition |
| --------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`redefinition of forward class` |nbsp| :placeholder:`A` |nbsp| :diagtext:`of a typedef name of an object type is ignored`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wobjc-interface-ivars |
| ---------------------- |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`declaration of instance variables in the interface is deprecated`| |
| +-------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wobjc-literal-compare |
| ---------------------- |
| This diagnostic is enabled by default. |
| |
| Also controls `-Wobjc-string-compare`_. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------+----------------------------------+------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`direct comparison of` |nbsp| |+--------------------------------+| |nbsp| :diagtext:`has undefined behavior`| |
| | ||:diagtext:`an array literal` || | |
| | |+--------------------------------+| | |
| | ||:diagtext:`a dictionary literal`|| | |
| | |+--------------------------------+| | |
| | ||:diagtext:`a numeric literal` || | |
| | |+--------------------------------+| | |
| | ||:diagtext:`a boxed expression` || | |
| | |+--------------------------------+| | |
| | || || | |
| | |+--------------------------------+| | |
| +-------------------------------------------------------------------+----------------------------------+------------------------------------------+ |
| |
| |
| -Wobjc-literal-conversion |
| ------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`implicit boolean conversion of Objective-C object literal always evaluates to true`| |
| +-------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`object of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not compatible with` |nbsp| |+---------------------------------+| |nbsp| :placeholder:`C`| |
| | ||:diagtext:`array element type` || | |
| | |+---------------------------------+| | |
| | ||:diagtext:`dictionary key type` || | |
| | |+---------------------------------+| | |
| | ||:diagtext:`dictionary value type`|| | |
| | |+---------------------------------+| | |
| +-------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+------------------------+ |
| |
| |
| -Wobjc-macro-redefinition |
| ------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ignoring redefinition of Objective-C qualifier macro`| |
| +-------------------------------------------------------------------------------------------+ |
| |
| |
| -Wobjc-messaging-id |
| ------------------- |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`messaging unqualified id`| |
| +---------------------------------------------------------------+ |
| |
| |
| -Wobjc-method-access |
| -------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`class method` |nbsp| :placeholder:`A` |nbsp| :diagtext:`not found (return type defaults to 'id')`| |
| +---------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`class method` |nbsp| :placeholder:`A` |nbsp| :diagtext:`not found (return type defaults to 'id'); did you mean` |nbsp| :placeholder:`C`:diagtext:`?`| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`instance method` |nbsp| :placeholder:`A` |nbsp| :diagtext:`not found (return type defaults to 'id')`| |
| +------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`instance method` |nbsp| :placeholder:`A` |nbsp| :diagtext:`not found (return type defaults to 'id'); did you mean` |nbsp| :placeholder:`C`:diagtext:`?`| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`instance method` |nbsp| :placeholder:`A` |nbsp| :diagtext:`found instead of class method` |nbsp| :placeholder:`B`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`instance method` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is being used on 'Class' which is not in the root class`| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wobjc-missing-property-synthesis |
| --------------------------------- |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`auto property synthesis is synthesizing property not explicitly synthesized`| |
| +------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wobjc-missing-super-calls |
| -------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`method possibly missing a \[super` |nbsp| :placeholder:`A`:diagtext:`\] call`| |
| +-------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wobjc-multiple-method-names |
| ---------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`multiple methods named` |nbsp| :placeholder:`A` |nbsp| :diagtext:`found`| |
| +--------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wobjc-noncopy-retain-block-property |
| ------------------------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`retain'ed block property does not copy the block - use copy attribute instead`| |
| +--------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wobjc-nonunified-exceptions |
| ---------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`cannot catch an exception thrown with @throw in C++ in the non-unified exception model`| |
| +-----------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wobjc-property-implementation |
| ------------------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`class property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`requires method` |nbsp| :placeholder:`B` |nbsp| :diagtext:`to be defined - use @dynamic or provide a method implementation in this class implementation`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`class property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`requires method` |nbsp| :placeholder:`B` |nbsp| :diagtext:`to be defined - use @dynamic or provide a method implementation in this category`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`requires method` |nbsp| :placeholder:`B` |nbsp| :diagtext:`to be defined - use @synthesize, @dynamic or provide a method implementation in this class implementation`| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`requires method` |nbsp| :placeholder:`B` |nbsp| :diagtext:`to be defined - use @dynamic or provide a method implementation in this category`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wobjc-property-implicit-mismatch |
| --------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`primary property declaration is implicitly strong while redeclaration in class extension is weak`| |
| +---------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wobjc-property-matches-cocoa-ownership-rule |
| -------------------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`property follows Cocoa naming convention for returning 'owned' objects`| |
| +-------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wobjc-property-no-attribute |
| ---------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`default property attribute 'assign' not appropriate for object`| |
| +-----------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`no 'assign', 'retain', or 'copy' attribute is specified - 'assign' is assumed`| |
| +--------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wobjc-property-synthesis |
| ------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`auto property synthesis will not synthesize property` |nbsp| :placeholder:`A`:diagtext:`; it will be implemented by its superclass, use @dynamic to acknowledge intention`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`auto property synthesis will not synthesize property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`because it is 'readwrite' but it will be synthesized 'readonly' via another property`| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`auto property synthesis will not synthesize property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`because it cannot share an ivar with another synthesized property`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wobjc-protocol-method-implementation |
| ------------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`category is implementing a method which will also be implemented by its primary class`| |
| +----------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wobjc-protocol-property-synthesis |
| ---------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`auto property synthesis will not synthesize property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`declared in protocol` |nbsp| :placeholder:`B`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wobjc-protocol-qualifiers |
| -------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`parameterized class` |nbsp| :placeholder:`A` |nbsp| :diagtext:`already conforms to the protocols listed; did you forget a '\*'?`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wobjc-readonly-with-setter-property |
| ------------------------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`setter cannot be specified for a readonly property`| |
| +-----------------------------------------------------------------------------------------+ |
| |
| |
| -Wobjc-redundant-api-use |
| ------------------------ |
| Synonym for `-Wobjc-redundant-literal-use`_. |
| |
| |
| -Wobjc-redundant-literal-use |
| ---------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`using` |nbsp| :placeholder:`A` |nbsp| :diagtext:`with a literal is redundant`| |
| +-------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wobjc-root-class |
| ----------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`class` |nbsp| :placeholder:`A` |nbsp| :diagtext:`defined without specifying a base class`| |
| +-------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wobjc-string-compare |
| --------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`direct comparison of a string literal has undefined behavior`| |
| +---------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wobjc-string-concatenation |
| --------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`concatenated NSString literal for an NSArray expression - possibly missing a comma`| |
| +-------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wobjc-unsafe-perform-selector |
| ------------------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------+--------------------+------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is incompatible with selectors that return a` |nbsp| |+------------------+| |nbsp| :diagtext:`type`| |
| | ||:diagtext:`struct`|| | |
| | |+------------------+| | |
| | ||:diagtext:`union` || | |
| | |+------------------+| | |
| | ||:diagtext:`vector`|| | |
| | |+------------------+| | |
| +-------------------------------------------------------------------------------------------------------------------+--------------------+------------------------+ |
| |
| |
| -Wodr |
| ----- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`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:`The OpenMP offloading target '`:placeholder:`A`:diagtext:`' is similar to target '`:placeholder:`B`:diagtext:`' already specified - will be ignored.`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`No library '`:placeholder:`A`:diagtext:`' found in the default clang lib directory or in LIBRARY\_PATH. Expect degraded performance due to no inlining of runtime functions on target devices.`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`Non-trivial type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is mapped, only trivial types are guaranteed to be mapped correctly`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`declaration is not declared in any declare target region`| |
| +-----------------------------------------------------------------------------------------------+ |
| |
| |
| -Woption-ignored |
| ---------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`option '-ffine-grained-bitfield-accesses' cannot be enabled together with a sanitizer; flag ignored`| |
| +------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`The '`:placeholder:`A`:diagtext:`' architecture does not support -moutline; flag ignored`| |
| +-------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`option '`:placeholder:`A`:diagtext:`' was ignored by the PS4 toolchain, using '-fPIC'`| |
| +----------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------+-------------------------------------------+----------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ignoring '-mlong-calls' option as it is not currently supported with` |nbsp| |+-----------------------------------------+|:diagtext:`-mabicalls`| |
| | || || | |
| | |+-----------------------------------------+| | |
| | ||:diagtext:`the implicit usage of` |nbsp| || | |
| | |+-----------------------------------------+| | |
| +-------------------------------------------------------------------------------------------------------------------+-------------------------------------------+----------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------+-------------------------------+----------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ignoring '`:placeholder:`A`:diagtext:`' option as it cannot be used with` |nbsp| |+-----------------------------+| |nbsp| :diagtext:`-mabicalls and the N64 ABI`| |
| | ||:diagtext:`implicit usage of`|| | |
| | |+-----------------------------+| | |
| | || || | |
| | |+-----------------------------+| | |
| +-----------------------------------------------------------------------------------------------------------------------+-------------------------------+----------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`auto-vectorization requires HVX, use -mhvx to enable it`| |
| +----------------------------------------------------------------------------------------------+ |
| |
| |
| -Wordered-compare-function-pointers |
| ----------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ordered comparison of function pointers (`:placeholder:`A` |nbsp| :diagtext:`and` |nbsp| :placeholder:`B`:diagtext:`)`| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wout-of-line-declaration |
| ------------------------- |
| This diagnostic is an error by default, but the flag ``-Wno-out-of-line-declaration`` can be used to disable the error. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------+ |
| |:error:`error:` |nbsp| :diagtext:`out-of-line declaration of a member must be a definition`| |
| +-------------------------------------------------------------------------------------------+ |
| |
| |
| -Wout-of-scope-function |
| ----------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`use of out-of-scope declaration of` |nbsp| :placeholder:`A`|+-------------------------------------------------------------------------------------+| |
| | || || |
| | |+-------------------------------------------------------------------------------------+| |
| | || |nbsp| :diagtext:`whose type is not compatible with that of an implicit declaration`|| |
| | |+-------------------------------------------------------------------------------------+| |
| +-------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------+ |
| |
| |
| -Wover-aligned |
| -------------- |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`requires` |nbsp| :placeholder:`B` |nbsp| :diagtext:`bytes of alignment and the default allocator only guarantees` |nbsp| :placeholder:`C` |nbsp| :diagtext:`bytes`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Woverflow |
| ---------- |
| This diagnostic flag exists for GCC compatibility, and has no effect in Clang. |
| |
| -Woverlength-strings |
| -------------------- |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------+-----------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`string literal of length` |nbsp| :placeholder:`A` |nbsp| :diagtext:`exceeds maximum length` |nbsp| :placeholder:`B` |nbsp| :diagtext:`that` |nbsp| |+-------------------+| |nbsp| :diagtext:`compilers are required to support`| |
| | ||:diagtext:`C90` || | |
| | |+-------------------+| | |
| | ||:diagtext:`ISO C99`|| | |
| | |+-------------------+| | |
| | ||:diagtext:`C++` || | |
| | |+-------------------+| | |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------+-----------------------------------------------------+ |
| |
| |
| -Woverloaded-shift-op-parentheses |
| --------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------+----------------+------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`overloaded operator` |nbsp| |+--------------+| |nbsp| :diagtext:`has higher precedence than comparison operator`| |
| | ||:diagtext:`>>`|| | |
| | |+--------------+| | |
| | ||:diagtext:`<<`|| | |
| | |+--------------+| | |
| +------------------------------------------------------------------+----------------+------------------------------------------------------------------+ |
| |
| |
| -Woverloaded-virtual |
| -------------------- |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------+-----------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`hides overloaded virtual` |nbsp| |+---------------------+| |
| | ||:diagtext:`function` || |
| | |+---------------------+| |
| | ||:diagtext:`functions`|| |
| | |+---------------------+| |
| +-----------------------------------------------------------------------------------------------+-----------------------+ |
| |
| |
| -Woverride-module |
| ----------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`overriding the module target triple with` |nbsp| :placeholder:`A`| |
| +-------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Woverriding-method-mismatch |
| ---------------------------- |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`conflicting distributed object modifiers on parameter type in declaration of` |nbsp| :placeholder:`A`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`conflicting parameter types in declaration of` |nbsp| :placeholder:`A`| |
| +------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`conflicting distributed object modifiers on return type in declaration of` |nbsp| :placeholder:`A`| |
| +----------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`conflicting return type in declaration of` |nbsp| :placeholder:`A`| |
| +--------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`conflicting variadic declaration of method and its implementation`| |
| +--------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`conflicting parameter types in declaration of` |nbsp| :placeholder:`A`:diagtext:`:` |nbsp| :placeholder:`B` |nbsp| :diagtext:`vs` |nbsp| :placeholder:`C`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`conflicting return type in declaration of` |nbsp| :placeholder:`A`:diagtext:`:` |nbsp| :placeholder:`B` |nbsp| :diagtext:`vs` |nbsp| :placeholder:`C`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Woverriding-t-option |
| --------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`overriding '`:placeholder:`A`:diagtext:`' option with '`:placeholder:`B`:diagtext:`'`| |
| +---------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wpacked |
| -------- |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`packed attribute is unnecessary for` |nbsp| :placeholder:`A`| |
| +--------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wpadded |
| -------- |
| **Diagnostic text:** |
| |
| +------------------------------------------------------+-----------------------+--------------------------------------------------------------------------------+------------------+---------------+------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`padding` |nbsp| |+---------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`with` |nbsp| :placeholder:`C` |nbsp| |+----------------+|+-------------+| |nbsp| :diagtext:`to align anonymous bit-field`| |
| | ||:diagtext:`struct` || ||:diagtext:`byte`||| || | |
| | |+---------------------+| |+----------------+|+-------------+| | |
| | ||:diagtext:`interface`|| ||:diagtext:`bit` |||:diagtext:`s`|| | |
| | |+---------------------+| |+----------------+|+-------------+| | |
| | ||:diagtext:`class` || | | | | |
| | |+---------------------+| | | | | |
| +------------------------------------------------------+-----------------------+--------------------------------------------------------------------------------+------------------+---------------+------------------------------------------------+ |
| |
| +------------------------------------------------------+-----------------------+--------------------------------------------------------------------------------+------------------+---------------+----------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`padding` |nbsp| |+---------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`with` |nbsp| :placeholder:`C` |nbsp| |+----------------+|+-------------+| |nbsp| :diagtext:`to align` |nbsp| :placeholder:`E`| |
| | ||:diagtext:`struct` || ||:diagtext:`byte`||| || | |
| | |+---------------------+| |+----------------+|+-------------+| | |
| | ||:diagtext:`interface`|| ||:diagtext:`bit` |||:diagtext:`s`|| | |
| | |+---------------------+| |+----------------+|+-------------+| | |
| | ||:diagtext:`class` || | | | | |
| | |+---------------------+| | | | | |
| +------------------------------------------------------+-----------------------+--------------------------------------------------------------------------------+------------------+---------------+----------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------+------------------+---------------+-----------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`padding size of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`with` |nbsp| :placeholder:`B` |nbsp| |+----------------+|+-------------+| |nbsp| :diagtext:`to alignment boundary`| |
| | ||:diagtext:`byte`||| || | |
| | |+----------------+|+-------------+| | |
| | ||:diagtext:`bit` |||:diagtext:`s`|| | |
| | |+----------------+|+-------------+| | |
| +--------------------------------------------------------------------------------------------------------------------------------------+------------------+---------------+-----------------------------------------+ |
| |
| |
| -Wparentheses |
| ------------- |
| This diagnostic is enabled by default. |
| |
| Also controls `-Wbitwise-op-parentheses`_, `-Wdangling-else`_, `-Wlogical-not-parentheses`_, `-Wlogical-op-parentheses`_, `-Woverloaded-shift-op-parentheses`_, `-Wparentheses-equality`_, `-Wshift-op-parentheses`_. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`using the result of an assignment as a condition without parentheses`| |
| +-----------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has lower precedence than` |nbsp| :placeholder:`B`:diagtext:`;` |nbsp| :placeholder:`B` |nbsp| :diagtext:`will be evaluated first`| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`operator '?:' has lower precedence than '`:placeholder:`A`:diagtext:`'; '`:placeholder:`A`:diagtext:`' will be evaluated first`| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wparentheses-equality |
| ---------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`equality comparison with extraneous parentheses`| |
| +--------------------------------------------------------------------------------------+ |
| |
| |
| -Wpartial-availability |
| ---------------------- |
| Synonym for `-Wunguarded-availability`_. |
| |
| |
| -Rpass |
| ------ |
| **Diagnostic text:** |
| |
| The text of this diagnostic is not controlled by Clang. |
| |
| |
| -Rpass-analysis |
| --------------- |
| **Diagnostic text:** |
| |
| The text of this diagnostic is not controlled by Clang. |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:remark:`remark:` |nbsp| :placeholder:`A`:diagtext:`; allow reordering by specifying '#pragma clang loop vectorize(enable)' before the loop. If the arrays will always be independent specify '#pragma clang loop vectorize(assume\_safety)' before the loop or provide the '\_\_restrict\_\_' qualifier with the independent array arguments. Erroneous results will occur if these options are incorrectly applied!`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:remark:`remark:` |nbsp| :placeholder:`A`:diagtext:`; allow reordering by specifying '#pragma clang loop vectorize(enable)' before the loop or by providing the compiler option '-ffast-math'.`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wpass-failed |
| ------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| The text of this diagnostic is not controlled by Clang. |
| |
| |
| -Rpass-missed |
| ------------- |
| **Diagnostic text:** |
| |
| The text of this diagnostic is not controlled by Clang. |
| |
| |
| -Wpch-date-time |
| --------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------+--------------------------------+-----------------------------------------------------+ |
| |:warning:`warning:` |nbsp| |+------------------------------+| |nbsp| :diagtext:`uses \_\_DATE\_\_ or \_\_TIME\_\_`| |
| | ||:diagtext:`precompiled header`|| | |
| | |+------------------------------+| | |
| | ||:diagtext:`module` || | |
| | |+------------------------------+| | |
| +---------------------------+--------------------------------+-----------------------------------------------------+ |
| |
| |
| -Wpedantic |
| ---------- |
| Also controls `-Wc++11-extra-semi`_, `-Wc++11-long-long`_, `-Wc++14-binary-literal`_, `-Wc11-extensions`_, `-Wcomplex-component-init`_, `-Wdeclaration-after-statement`_, `-Wdollar-in-identifier-extension`_, `-Wembedded-directive`_, `-Wempty-translation-unit`_, `-Wflexible-array-extensions`_, `-Wfour-char-constants`_, `-Wgnu-anonymous-struct`_, `-Wgnu-auto-type`_, `-Wgnu-binary-literal`_, `-Wgnu-case-range`_, `-Wgnu-complex-integer`_, `-Wgnu-compound-literal-initializer`_, `-Wgnu-conditional-omitted-operand`_, `-Wgnu-empty-initializer`_, `-Wgnu-empty-struct`_, `-Wgnu-flexible-array-initializer`_, `-Wgnu-flexible-array-union-member`_, `-Wgnu-folding-constant`_, `-Wgnu-imaginary-constant`_, `-Wgnu-include-next`_, `-Wgnu-label-as-value`_, `-Wgnu-redeclared-enum`_, `-Wgnu-statement-expression`_, `-Wgnu-union-cast`_, `-Wgnu-zero-line-directive`_, `-Wgnu-zero-variadic-macro-arguments`_, `-Wimport-preprocessor-directive-pedantic`_, `-Wkeyword-macro`_, `-Wlanguage-extension-token`_, `-Wlong-long`_, `-Wmicrosoft-charize`_, `-Wmicrosoft-comment-paste`_, `-Wmicrosoft-cpp-macro`_, `-Wmicrosoft-end-of-file`_, `-Wmicrosoft-enum-value`_, `-Wmicrosoft-fixed-enum`_, `-Wmicrosoft-flexible-array`_, `-Wmicrosoft-redeclare-static`_, `-Wnested-anon-types`_, `-Wnullability-extension`_, `-Woverlength-strings`_, `-Wretained-language-linkage`_, `-Wundefined-internal-type`_, `-Wvla-extension`_, `-Wzero-length-array`_. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'enable\_if' is a clang extension`| |
| +------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'diagnose\_if' is a clang extension`| |
| +--------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`designated initializers are a C99 feature`| |
| +--------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ISO C++ does not allow 'main' to be used by a program`| |
| +--------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`C++98 requires an accessible copy constructor for class` |nbsp| :placeholder:`C` |nbsp| :diagtext:`when binding a reference to a temporary; was` |nbsp| |+---------------------+| |
| | ||:diagtext:`private` || |
| | |+---------------------+| |
| | ||:diagtext:`protected`|| |
| | |+---------------------+| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+ |
| |
| +--------------------------------------------------------+--------------------+------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`anonymous` |nbsp| |+------------------+| |nbsp| :diagtext:`cannot be '`:placeholder:`B`:diagtext:`'`| |
| | ||:diagtext:`struct`|| | |
| | |+------------------+| | |
| | ||:diagtext:`union` || | |
| | |+------------------+| | |
| +--------------------------------------------------------+--------------------+------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------+------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`no viable constructor` |nbsp| |+----------------------------------------------------+| |nbsp| :diagtext:`of type` |nbsp| :placeholder:`B`:diagtext:`; C++98 requires a copy constructor when binding a reference to a temporary`| |
| | ||:diagtext:`copying variable` || | |
| | |+----------------------------------------------------+| | |
| | ||:diagtext:`copying parameter` || | |
| | |+----------------------------------------------------+| | |
| | ||:diagtext:`returning object` || | |
| | |+----------------------------------------------------+| | |
| | ||:diagtext:`initializing statement expression result`|| | |
| | |+----------------------------------------------------+| | |
| | ||:diagtext:`throwing object` || | |
| | |+----------------------------------------------------+| | |
| | ||:diagtext:`copying member subobject` || | |
| | |+----------------------------------------------------+| | |
| | ||:diagtext:`copying array element` || | |
| | |+----------------------------------------------------+| | |
| | ||:diagtext:`allocating object` || | |
| | |+----------------------------------------------------+| | |
| | ||:diagtext:`copying temporary` || | |
| | |+----------------------------------------------------+| | |
| | ||:diagtext:`initializing base subobject` || | |
| | |+----------------------------------------------------+| | |
| | ||:diagtext:`initializing vector element` || | |
| | |+----------------------------------------------------+| | |
| | ||:diagtext:`capturing value` || | |
| | |+----------------------------------------------------+| | |
| +--------------------------------------------------------------------+------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ISO C++ standards before C++17 do not allow new expression for type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to use list-initialization`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`parameter` |nbsp| :placeholder:`A` |nbsp| :diagtext:`was not declared, defaulting to type 'int'`| |
| +--------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`invoking a pointer to a 'const &' member function on an rvalue is a C++2a extension`| |
| +--------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`qualifier in explicit instantiation of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`requires a template-id (a typedef is not permitted)`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------+----------------------+-----------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`static` |nbsp| |+--------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`is used in an inline function with external linkage`| |
| | ||:diagtext:`function`|| | |
| | |+--------------------+| | |
| | ||:diagtext:`variable`|| | |
| | |+--------------------+| | |
| +-----------------------------------------------------+----------------------+-----------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ISO C forbids forward references to 'enum' types`| |
| +---------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------+-------------------+-------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ISO C restricts enumerator values to range of 'int' (`:placeholder:`A` |nbsp| :diagtext:`is too` |nbsp| |+-----------------+|:diagtext:`)`| |
| | ||:diagtext:`small`|| | |
| | |+-----------------+| | |
| | ||:diagtext:`large`|| | |
| | |+-----------------+| | |
| +----------------------------------------------------------------------------------------------------------------------------------------------+-------------------+-------------+ |
| |
| +--------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`size of static array must be an integer constant expression`| |
| +--------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`initializer for aggregate is not a compile-time constant`| |
| +-----------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`flexible array members are a C99 feature`| |
| +-------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------+-----------------------+--------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`invalid application of '`|+---------------------+|:diagtext:`' to a function type`| |
| | ||:diagtext:`sizeof` || | |
| | |+---------------------+| | |
| | ||:diagtext:`alignof` || | |
| | |+---------------------+| | |
| | ||:diagtext:`vec\_step`|| | |
| | |+---------------------+| | |
| +---------------------------------------------------------------+-----------------------+--------------------------------+ |
| |
| +---------------------------------------------------------------+-----------------------+----------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`invalid application of '`|+---------------------+|:diagtext:`' to a void type`| |
| | ||:diagtext:`sizeof` || | |
| | |+---------------------+| | |
| | ||:diagtext:`alignof` || | |
| | |+---------------------+| | |
| | ||:diagtext:`vec\_step`|| | |
| | |+---------------------+| | |
| +---------------------------------------------------------------+-----------------------+----------------------------+ |
| |
| +-------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ISO C90 does not allow subscripting non-lvalue array`| |
| +-------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`subscript of a pointer to void is a GNU extension`| |
| +----------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ISO C forbids taking the address of an expression of type 'void'`| |
| +-------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ordered comparison between pointer and zero (`:placeholder:`A` |nbsp| :diagtext:`and` |nbsp| :placeholder:`B`:diagtext:`) is an extension`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`equality comparison between function pointer and void pointer (`:placeholder:`A` |nbsp| :diagtext:`and` |nbsp| :placeholder:`B`:diagtext:`)`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------+-----------------------+---------------------------+---------------+----------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`arithmetic on`|+---------------------+| |nbsp| :diagtext:`pointer`|+-------------+| |nbsp| :diagtext:`to void is a GNU extension`| |
| | || |nbsp| :diagtext:`a`|| || || | |
| | |+---------------------+| |+-------------+| | |
| | || || ||:diagtext:`s`|| | |
| | |+---------------------+| |+-------------+| | |
| +----------------------------------------------------+-----------------------+---------------------------+---------------+----------------------------------------------+ |
| |
| +----------------------------------------------------+-----------------------+---------------------------+---------------+----------------------+-------------------------+---------------------------------+---------------+------------------------+---------------------------------------------------+--------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`arithmetic on`|+---------------------+| |nbsp| :diagtext:`pointer`|+-------------+| |nbsp| :diagtext:`to`|+-----------------------+| |nbsp| :diagtext:`function type`|+-------------+| |nbsp| :placeholder:`B`|+-------------------------------------------------+| |nbsp| :diagtext:`is a GNU extension`| |
| | || |nbsp| :diagtext:`a`|| || || || |nbsp| :diagtext:`the`|| || || || || | |
| | |+---------------------+| |+-------------+| |+-----------------------+| |+-------------+| |+-------------------------------------------------+| | |
| | || || ||:diagtext:`s`|| || || ||:diagtext:`s`|| ||+-----------------------------------------------+|| | |
| | |+---------------------+| |+-------------+| |+-----------------------+| |+-------------+| ||| |nbsp| :diagtext:`and` |nbsp| :placeholder:`D`||| | |
| | | | | | | | | | ||+-----------------------------------------------+|| | |
| | | | | | | | | | |+-------------------------------------------------+| | |
| +----------------------------------------------------+-----------------------+---------------------------+---------------+----------------------+-------------------------+---------------------------------+---------------+------------------------+---------------------------------------------------+--------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ISO C does not support '++'/'--' on complex integer type` |nbsp| :placeholder:`A`| |
| +-----------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ISO C does not support '~' for complex conjugation of` |nbsp| :placeholder:`A`| |
| +--------------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`complex numbers are an extension in a freestanding C99 implementation`| |
| +------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`cast between pointer-to-function and pointer-to-object is an extension`| |
| +-------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`implicit conversion from array size expression of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| |+-----------------------+| |nbsp| :diagtext:`type` |nbsp| :placeholder:`C` |nbsp| :diagtext:`is a C++11 extension`| |
| | ||:diagtext:`integral` || | |
| | |+-----------------------+| | |
| | ||:diagtext:`enumeration`|| | |
| | |+-----------------------+| | |
| +---------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------------------------+ |
| |
| +---------------------------+----------------------------------------------------------------+----------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| |+--------------------------------------------------------------+| |nbsp| :diagtext:`converts between void pointer and function pointer`| |
| | ||:diagtext:`assigning to different types` || | |
| | |+--------------------------------------------------------------+| | |
| | ||:diagtext:`passing to parameter of different type` || | |
| | |+--------------------------------------------------------------+| | |
| | ||:diagtext:`returning from function with different return type`|| | |
| | |+--------------------------------------------------------------+| | |
| | ||:diagtext:`converting between types` || | |
| | |+--------------------------------------------------------------+| | |
| | ||:diagtext:`initializing with expression of different type` || | |
| | |+--------------------------------------------------------------+| | |
| | ||:diagtext:`sending to parameter of different type` || | |
| | |+--------------------------------------------------------------+| | |
| | ||:diagtext:`casting between types` || | |
| | |+--------------------------------------------------------------+| | |
| +---------------------------+----------------------------------------------------------------+----------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`kernel function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a member function; this may not be accepted by nvcc`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`C99 forbids conditional expressions with only one void side`| |
| +--------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`C99 forbids casting nonscalar type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to the same type`| |
| +-------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`use of the` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute is a C++14 extension`| |
| +---------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`use of the` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute is a C++17 extension`| |
| +---------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------+--------------------+---------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`types declared in an anonymous` |nbsp| |+------------------+| |nbsp| :diagtext:`are a Microsoft extension`| |
| | ||:diagtext:`struct`|| | |
| | |+------------------+| | |
| | ||:diagtext:`union` || | |
| | |+------------------+| | |
| +-----------------------------------------------------------------------------+--------------------+---------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------------------+-----------------------------+------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`format specifies type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`but the argument has` |nbsp| |+---------------------------+| |nbsp| :placeholder:`B`| |
| | ||:diagtext:`type` || | |
| | |+---------------------------+| | |
| | ||:diagtext:`underlying type`|| | |
| | |+---------------------------+| | |
| +------------------------------------------------------------------------------------------------------------------------------------+-----------------------------+------------------------+ |
| |
| +---------------------------------------------------+----------------------+-----------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`void` |nbsp| |+--------------------+| |nbsp| :placeholder:`A` |nbsp| :diagtext:`should not return void expression`| |
| | ||:diagtext:`function`|| | |
| | |+--------------------+| | |
| | ||:diagtext:`method` || | |
| | |+--------------------+| | |
| | ||:diagtext:`block` || | |
| | |+--------------------+| | |
| +---------------------------------------------------+----------------------+-----------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' cannot be signed or unsigned`| |
| +--------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------+----------------------------------+------------------------------+-----------------------+----------------------------+ |
| |:warning:`warning:` |nbsp| |+--------------------------------+|:diagtext:`array size` |nbsp| |+---------------------+|:diagtext:`is a C99 feature`| |
| | ||:diagtext:`qualifier in` |nbsp| || || || | |
| | |+--------------------------------+| |+---------------------+| | |
| | ||:diagtext:`static` |nbsp| || || || | |
| | |+--------------------------------+| |+---------------------+| | |
| | || || ||:diagtext:`'\[\*\] '`|| | |
| | |+--------------------------------+| |+---------------------+| | |
| +---------------------------+----------------------------------+------------------------------+-----------------------+----------------------------+ |
| |
| +--------------------------------------------------------+------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`extra ';'` |nbsp| |+----------------------------------------------+| |
| | ||:diagtext:`outside of a function` || |
| | |+----------------------------------------------+| |
| | ||+--------------------------------------------+|| |
| | |||:diagtext:`inside a` |nbsp| :placeholder:`B`||| |
| | ||+--------------------------------------------+|| |
| | |+----------------------------------------------+| |
| | ||:diagtext:`inside instance variable list` || |
| | |+----------------------------------------------+| |
| | ||:diagtext:`after member function definition` || |
| | |+----------------------------------------------+| |
| +--------------------------------------------------------+------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'\_\_thread' before '`:placeholder:`A`:diagtext:`'`| |
| +-----------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`type-less parameter names in function declaration`| |
| +----------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`variable declaration in for loop is a C99-specific feature`| |
| +-------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`compound literals are a C99-specific feature`| |
| +-----------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`commas at the end of enumerator lists are a C99-specific feature`| |
| +-------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`commas at the end of enumerator lists are a C++11 extension`| |
| +--------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`enumeration types with a fixed underlying type are a C++11 extension`| |
| +-----------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`use of GNU array range extension`| |
| +-----------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`exception specification of '...' is a Microsoft extension`| |
| +------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------+---------------------------+-----------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`attributes on` |nbsp| |+-------------------------+| |nbsp| :diagtext:`declaration are a C++17 extension`| |
| | ||:diagtext:`a namespace` || | |
| | |+-------------------------+| | |
| | ||:diagtext:`an enumerator`|| | |
| | |+-------------------------+| | |
| +------------------------------------------------------------+---------------------------+-----------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`extern templates are a C++11 extension`| |
| +-----------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`multi-line // comment`| |
| +------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`// comments are not allowed in this language`| |
| +-----------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`no newline at end of file`| |
| +----------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`use of non-standard escape character '\\`:placeholder:`A`:diagtext:`'`| |
| +------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`hexadecimal floating constants are a C99 feature`| |
| +---------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`hexadecimal floating literals are a C++17 feature`| |
| +----------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`#ident is a language extension`| |
| +---------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`#warning is a language extension`| |
| +-----------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`comma operator in operand of #if`| |
| +-----------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`\_\_VA\_ARGS\_\_ can only appear in the expansion of a C99 variadic macro`| |
| +----------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`variadic macros are a C99 feature`| |
| +------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`named variadic macros are a GNU extension`| |
| +--------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`empty macro arguments are a C99 feature`| |
| +------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`C requires #line number to be less than` |nbsp| :placeholder:`A`:diagtext:`, allowed as extension`| |
| +----------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`macro expansion producing 'defined' has undefined behavior`| |
| +-------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wpedantic-core-features |
| ------------------------ |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`OpenCL extension` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is core feature or supported optional core feature - ignoring`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wpessimizing-move |
| ------------------ |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`moving a temporary object prevents copy elision`| |
| +--------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`moving a local object in a return statement prevents copy elision`| |
| +--------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wpointer-arith |
| --------------- |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------+-----------------------+---------------------------+---------------+----------------------+-------------------------+---------------------------------+---------------+------------------------+---------------------------------------------------+--------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`arithmetic on`|+---------------------+| |nbsp| :diagtext:`pointer`|+-------------+| |nbsp| :diagtext:`to`|+-----------------------+| |nbsp| :diagtext:`function type`|+-------------+| |nbsp| :placeholder:`B`|+-------------------------------------------------+| |nbsp| :diagtext:`is a GNU extension`| |
| | || |nbsp| :diagtext:`a`|| || || || |nbsp| :diagtext:`the`|| || || || || | |
| | |+---------------------+| |+-------------+| |+-----------------------+| |+-------------+| |+-------------------------------------------------+| | |
| | || || ||:diagtext:`s`|| || || ||:diagtext:`s`|| ||+-----------------------------------------------+|| | |
| | |+---------------------+| |+-------------+| |+-----------------------+| |+-------------+| ||| |nbsp| :diagtext:`and` |nbsp| :placeholder:`D`||| | |
| | | | | | | | | | ||+-----------------------------------------------+|| | |
| | | | | | | | | | |+-------------------------------------------------+| | |
| +----------------------------------------------------+-----------------------+---------------------------+---------------+----------------------+-------------------------+---------------------------------+---------------+------------------------+---------------------------------------------------+--------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`subscript of a pointer to void is a GNU extension`| |
| +----------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------+-----------------------+---------------------------+---------------+----------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`arithmetic on`|+---------------------+| |nbsp| :diagtext:`pointer`|+-------------+| |nbsp| :diagtext:`to void is a GNU extension`| |
| | || |nbsp| :diagtext:`a`|| || || | |
| | |+---------------------+| |+-------------+| | |
| | || || ||:diagtext:`s`|| | |
| | |+---------------------+| |+-------------+| | |
| +----------------------------------------------------+-----------------------+---------------------------+---------------+----------------------------------------------+ |
| |
| +---------------------------------------------------------------+-----------------------+--------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`invalid application of '`|+---------------------+|:diagtext:`' to a function type`| |
| | ||:diagtext:`sizeof` || | |
| | |+---------------------+| | |
| | ||:diagtext:`alignof` || | |
| | |+---------------------+| | |
| | ||:diagtext:`vec\_step`|| | |
| | |+---------------------+| | |
| +---------------------------------------------------------------+-----------------------+--------------------------------+ |
| |
| +---------------------------------------------------------------+-----------------------+----------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`invalid application of '`|+---------------------+|:diagtext:`' to a void type`| |
| | ||:diagtext:`sizeof` || | |
| | |+---------------------+| | |
| | ||:diagtext:`alignof` || | |
| | |+---------------------+| | |
| | ||:diagtext:`vec\_step`|| | |
| | |+---------------------+| | |
| +---------------------------------------------------------------+-----------------------+----------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`subtraction of pointers to type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`of zero size has undefined behavior`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wpointer-bool-conversion |
| ------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------+---------------------------+---------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`nonnull` |nbsp| |+-------------------------+| |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' will evaluate to 'true' on first encounter`| |
| | ||:diagtext:`function call`|| | |
| | |+-------------------------+| | |
| | ||:diagtext:`parameter` || | |
| | |+-------------------------+| | |
| +------------------------------------------------------+---------------------------+---------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------+------------------------------+---------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`address of`|+----------------------------+| |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' will always evaluate to 'true'`| |
| | || || | |
| | |+----------------------------+| | |
| | || |nbsp| :diagtext:`function`|| | |
| | |+----------------------------+| | |
| | || |nbsp| :diagtext:`array` || | |
| | |+----------------------------+| | |
| +-------------------------------------------------+------------------------------+---------------------------------------------------------------------------------+ |
| |
| |
| -Wpointer-sign |
| -------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------+----------------------------------------------------------------+----------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| |+--------------------------------------------------------------+| |nbsp| :diagtext:`converts between pointers to integer types with different sign`| |
| | ||:diagtext:`assigning to different types` || | |
| | |+--------------------------------------------------------------+| | |
| | ||:diagtext:`passing to parameter of different type` || | |
| | |+--------------------------------------------------------------+| | |
| | ||:diagtext:`returning from function with different return type`|| | |
| | |+--------------------------------------------------------------+| | |
| | ||:diagtext:`converting between types` || | |
| | |+--------------------------------------------------------------+| | |
| | ||:diagtext:`initializing with expression of different type` || | |
| | |+--------------------------------------------------------------+| | |
| | ||:diagtext:`sending to parameter of different type` || | |
| | |+--------------------------------------------------------------+| | |
| | ||:diagtext:`casting between types` || | |
| | |+--------------------------------------------------------------+| | |
| +---------------------------+----------------------------------------------------------------+----------------------------------------------------------------------------------+ |
| |
| |
| -Wpointer-to-int-cast |
| --------------------- |
| This diagnostic flag exists for GCC compatibility, and has no effect in Clang. |
| |
| -Wpointer-type-mismatch |
| ----------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`pointer type mismatch`| |
| +------------------------------------------------------------+ |
| |
| |
| -Wpotentially-evaluated-expression |
| ---------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`expression with side effects will be evaluated despite being used as an operand to 'typeid'`| |
| +----------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wpragma-clang-attribute |
| ------------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`unused attribute` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in '#pragma clang attribute push' region`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wpragma-once-outside-header |
| ---------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`#pragma once in main file`| |
| +----------------------------------------------------------------+ |
| |
| |
| -Wpragma-pack |
| ------------- |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| Also controls `-Wpragma-pack-suspicious-include`_. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`the current #pragma pack aligment value is modified in the included file`| |
| +---------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`unterminated '#pragma pack (push, ...)' at end of file`| |
| +---------------------------------------------------------------------------------------------+ |
| |
| |
| -Wpragma-pack-suspicious-include |
| -------------------------------- |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`non-default #pragma pack value changes the alignment of struct or union members in the included file`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wpragma-system-header-outside-header |
| ------------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`#pragma system\_header ignored in main file`| |
| +----------------------------------------------------------------------------------+ |
| |
| |
| -Wpragmas |
| --------- |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| Also controls `-Wignored-pragmas`_, `-Wpragma-clang-attribute`_, `-Wpragma-pack`_, `-Wunknown-pragmas`_. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------+----------------------+------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`#pragma redefine\_extname is applicable to external C declarations only; not applied to` |nbsp| |+--------------------+| |nbsp| :placeholder:`B`| |
| | ||:diagtext:`function`|| | |
| | |+--------------------+| | |
| | ||:diagtext:`variable`|| | |
| | |+--------------------+| | |
| +--------------------------------------------------------------------------------------------------------------------------------------+----------------------+------------------------+ |
| |
| |
| -Wpredefined-identifier-outside-function |
| ---------------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`predefined identifier is only valid inside function`| |
| +------------------------------------------------------------------------------------------+ |
| |
| |
| -Wprivate-extern |
| ---------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`use of \_\_private\_extern\_\_ on a declaration may not produce external symbol private to the linkage unit and is deprecated`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wprivate-header |
| ---------------- |
| This diagnostic is an error by default, but the flag ``-Wno-private-header`` can be used to disable the error. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------+ |
| |:error:`error:` |nbsp| :diagtext:`use of private header from outside its module: '`:placeholder:`A`:diagtext:`'`| |
| +----------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wprivate-module |
| ---------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`expected canonical name for private module '`:placeholder:`A`:diagtext:`'`| |
| +----------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`private submodule '`:placeholder:`A`:diagtext:`' in private module map, expected top-level module`| |
| +----------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`module '`:placeholder:`A`:diagtext:`' already re-exported as '`:placeholder:`B`:diagtext:`'`| |
| +----------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`no submodule named` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in module '`:placeholder:`B`:diagtext:`'; using top level '`:placeholder:`C`:diagtext:`'`| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wprofile-instr-missing |
| ----------------------- |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------------------------+---------------+---------------------------------------------+------------------+---------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`profile data may be incomplete: of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`function`|+-------------+|:diagtext:`,` |nbsp| :placeholder:`B` |nbsp| |+----------------+| |nbsp| :diagtext:`no data`| |
| | || || ||:diagtext:`has` || | |
| | |+-------------+| |+----------------+| | |
| | ||:diagtext:`s`|| ||:diagtext:`have`|| | |
| | |+-------------+| |+----------------+| | |
| +-----------------------------------------------------------------------------------------------------------------------------+---------------+---------------------------------------------+------------------+---------------------------+ |
| |
| |
| -Wprofile-instr-out-of-date |
| --------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------------------------+---------------+---------------------------------------------+------------------+--------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`profile data may be out of date: of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`function`|+-------------+|:diagtext:`,` |nbsp| :placeholder:`B` |nbsp| |+----------------+| |nbsp| :diagtext:`mismatched data that will be ignored`| |
| | || || ||:diagtext:`has` || | |
| | |+-------------+| |+----------------+| | |
| | ||:diagtext:`s`|| ||:diagtext:`have`|| | |
| | |+-------------+| |+----------------+| | |
| +------------------------------------------------------------------------------------------------------------------------------+---------------+---------------------------------------------+------------------+--------------------------------------------------------+ |
| |
| |
| -Wprofile-instr-unprofiled |
| -------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`no profile data available for file "`:placeholder:`A`:diagtext:`"`| |
| +--------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wproperty-access-dot-syntax |
| ---------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`not found on object of type` |nbsp| :placeholder:`B`:diagtext:`; did you mean to access property` |nbsp| :placeholder:`C`:diagtext:`?`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wproperty-attribute-mismatch |
| ----------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`property attribute in class extension does not match the primary class`| |
| +-------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' attribute on property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`does not match the property inherited from` |nbsp| :placeholder:`C`| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`getter name mismatch between property redeclaration (`:placeholder:`B`:diagtext:`) and its original declaration (`:placeholder:`A`:diagtext:`)`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`attribute 'readonly' of property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`restricts attribute 'readwrite' of property inherited from` |nbsp| :placeholder:`B`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wprotocol |
| ---------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`method` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in protocol` |nbsp| :placeholder:`B` |nbsp| :diagtext:`not implemented`| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wprotocol-property-synthesis-ambiguity |
| --------------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------+----------------------------------------------------------------+----------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`property` |nbsp| |+--------------------------------------------------------------+| |nbsp| :diagtext:`was selected for synthesis`| |
| | ||+-------------------------------------------+ || | |
| | |||:diagtext:`of type` |nbsp| :placeholder:`B`| || | |
| | ||+-------------------------------------------+ || | |
| | |+--------------------------------------------------------------+| | |
| | ||+---------------------------------------------------------+ || | |
| | |||:diagtext:`with attribute '`:placeholder:`B`:diagtext:`'`| || | |
| | ||+---------------------------------------------------------+ || | |
| | |+--------------------------------------------------------------+| | |
| | ||+------------------------------------------------------------+|| | |
| | |||:diagtext:`without attribute '`:placeholder:`B`:diagtext:`'`||| | |
| | ||+------------------------------------------------------------+|| | |
| | |+--------------------------------------------------------------+| | |
| | ||+-----------------------------------------------+ || | |
| | |||:diagtext:`with getter` |nbsp| :placeholder:`B`| || | |
| | ||+-----------------------------------------------+ || | |
| | |+--------------------------------------------------------------+| | |
| | ||+-----------------------------------------------+ || | |
| | |||:diagtext:`with setter` |nbsp| :placeholder:`B`| || | |
| | ||+-----------------------------------------------+ || | |
| | |+--------------------------------------------------------------+| | |
| +-------------------------------------------------------+----------------------------------------------------------------+----------------------------------------------+ |
| |
| |
| -Wqualified-void-return-type |
| ---------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`function cannot return qualified void type` |nbsp| :placeholder:`A`| |
| +---------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wquoted-include-in-framework-header |
| ------------------------------------ |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`double-quoted include "`:placeholder:`A`:diagtext:`" in framework header, expected angle-bracketed instead`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wrange-loop-analysis |
| --------------------- |
| **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`| |
| +-------------------------------------------------------------------------+ |
| |
| |
| -Wredundant-parens |
| ------------------ |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`redundant parentheses surrounding declarator`| |
| +-----------------------------------------------------------------------------------+ |
| |
| |
| -Wregister |
| ---------- |
| This diagnostic is enabled by default. |
| |
| Also controls `-Wdeprecated-register`_. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------+ |
| |:error:`error:` |nbsp| :diagtext:`ISO C++17 does not allow 'register' storage class specifier`| |
| +----------------------------------------------------------------------------------------------+ |
| |
| |
| -Wreinterpret-base-class |
| ------------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------+------------------+---------------------------------------------------------+------------------+-------------------------------+-------------------------------------+-----------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'reinterpret\_cast'` |nbsp| |+----------------+| |nbsp| :diagtext:`class` |nbsp| :placeholder:`A` |nbsp| |+----------------+| |nbsp| :diagtext:`its` |nbsp| |+-----------------------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`behaves differently from 'static\_cast'`| |
| | ||:diagtext:`from`|| ||:diagtext:`to` || ||:diagtext:`virtual base` || | |
| | |+----------------+| |+----------------+| |+-----------------------------------+| | |
| | ||:diagtext:`to` || ||:diagtext:`from`|| ||:diagtext:`base at non-zero offset`|| | |
| | |+----------------+| |+----------------+| |+-----------------------------------+| | |
| +------------------------------------------------------------------+------------------+---------------------------------------------------------+------------------+-------------------------------+-------------------------------------+-----------------------------------------------------------------------------------+ |
| |
| |
| -Rremark-backend-plugin |
| ----------------------- |
| **Diagnostic text:** |
| |
| The text of this diagnostic is not controlled by Clang. |
| |
| |
| -Wreorder |
| --------- |
| **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` |nbsp| |+--------------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`returned`| |
| | ||:diagtext:`address of` || ||:diagtext:`local variable`|| | |
| | |+------------------------+| |+--------------------------+| | |
| | ||:diagtext:`reference to`|| ||:diagtext:`parameter` || | |
| | |+------------------------+| |+--------------------------+| | |
| +---------------------------+--------------------------+--------------------------------------------------------+----------------------------+----------------------------------------------------+ |
| |
| |
| -Wreturn-std-move |
| ----------------- |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------+----------------------+---------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`local variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`will be copied despite being` |nbsp| |+--------------------+| |nbsp| :diagtext:`by name`| |
| | ||:diagtext:`returned`|| | |
| | |+--------------------+| | |
| | ||:diagtext:`thrown` || | |
| | |+--------------------+| | |
| +-------------------------------------------------------------------------------------------------------------------------------------+----------------------+---------------------------+ |
| |
| |
| -Wreturn-std-move-in-c++11 |
| -------------------------- |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`prior to the resolution of a defect report against ISO C++11, local variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`would have been copied despite being returned by name, due to its not matching the function return type`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wreturn-type |
| ------------- |
| This diagnostic is enabled by default. |
| |
| Also controls `-Wreturn-type-c-linkage`_. |
| |
| **Diagnostic text:** |
| |
| +-----------------------+---------------------------+---------------------------------------------------------------------+ |
| |:error:`error:` |nbsp| |+-------------------------+| |nbsp| :placeholder:`A` |nbsp| :diagtext:`should not return a value`| |
| | ||:diagtext:`void function`|| | |
| | |+-------------------------+| | |
| | ||:diagtext:`void method` || | |
| | |+-------------------------+| | |
| | ||:diagtext:`constructor` || | |
| | |+-------------------------+| | |
| | ||:diagtext:`destructor` || | |
| | |+-------------------------+| | |
| +-----------------------+---------------------------+---------------------------------------------------------------------+ |
| |
| +---------------------------------------------------+----------------------+-----------------------------------------------------------------+ |
| |:error:`error:` |nbsp| :diagtext:`non-void` |nbsp| |+--------------------+| |nbsp| :placeholder:`A` |nbsp| :diagtext:`should return a value`| |
| | ||:diagtext:`function`|| | |
| | |+--------------------+| | |
| | ||:diagtext:`method` || | |
| | |+--------------------+| | |
| +---------------------------------------------------+----------------------+-----------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`control reaches end of coroutine; which is undefined behavior because the promise type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`does not declare 'return\_void()'`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------+ |
| |: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 coroutine; which is undefined behavior because the promise type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`does not declare 'return\_void()'`| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------+ |
| |: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`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Rsanitize-address |
| ------------------ |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------+ |
| |:remark:`remark:` |nbsp| :diagtext:`-fsanitize-address-field-padding applied to` |nbsp| :placeholder:`A`| |
| +--------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------+ |
| |:remark:`remark:` |nbsp| :diagtext:`-fsanitize-address-field-padding ignored for` |nbsp| :placeholder:`A` |nbsp| :diagtext:`because it` |nbsp| |+------------------------------------+| |
| | ||:diagtext:`is not C++` || |
| | |+------------------------------------+| |
| | ||:diagtext:`is packed` || |
| | |+------------------------------------+| |
| | ||:diagtext:`is a union` || |
| | |+------------------------------------+| |
| | ||:diagtext:`is trivially copyable` || |
| | |+------------------------------------+| |
| | ||:diagtext:`has trivial destructor` || |
| | |+------------------------------------+| |
| | ||:diagtext:`is standard layout` || |
| | |+------------------------------------+| |
| | ||:diagtext:`is in a blacklisted file`|| |
| | |+------------------------------------+| |
| | ||:diagtext:`is blacklisted` || |
| | |+------------------------------------+| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------+ |
| |
| |
| -Wsection |
| --------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`section attribute is specified on redeclared variable`| |
| +--------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`duplicate code segment specifiers`| |
| +------------------------------------------------------------------------+ |
| |
| +---------------------------+---------------------+-------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| |+-------------------+| |nbsp| :diagtext:`does not match previous declaration`| |
| | ||:diagtext:`codeseg`|| | |
| | |+-------------------+| | |
| | ||:diagtext:`section`|| | |
| | |+-------------------+| | |
| +---------------------------+---------------------+-------------------------------------------------------+ |
| |
| |
| -Wselector |
| ---------- |
| Also controls `-Wselector-type-mismatch`_. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`no method with selector` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is implemented in this translation unit`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wselector-type-mismatch |
| ------------------------ |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`several methods with selector` |nbsp| :placeholder:`A` |nbsp| :diagtext:`of mismatched types are found for the @selector expression`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wself-assign |
| ------------- |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| Also controls `-Wself-assign-field`_, `-Wself-assign-overloaded`_. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`explicitly assigning value of variable of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to itself`| |
| +------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wself-assign-field |
| ------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------+-------------------------------+-----------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`assigning` |nbsp| |+-----------------------------+| |nbsp| :diagtext:`to itself`| |
| | ||:diagtext:`field` || | |
| | |+-----------------------------+| | |
| | ||:diagtext:`instance variable`|| | |
| | |+-----------------------------+| | |
| +--------------------------------------------------------+-------------------------------+-----------------------------+ |
| |
| |
| -Wself-assign-overloaded |
| ------------------------ |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`explicitly assigning value of variable of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to itself`| |
| +------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wself-move |
| ----------- |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`explicitly moving variable of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to itself`| |
| +------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wsemicolon-before-method-body |
| ------------------------------ |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`semicolon before method body is ignored`| |
| +------------------------------------------------------------------------------+ |
| |
| |
| -Wsentinel |
| ---------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------+-----------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`missing sentinel in` |nbsp| |+---------------------------+| |
| | ||:diagtext:`function call` || |
| | |+---------------------------+| |
| | ||:diagtext:`method dispatch`|| |
| | |+---------------------------+| |
| | ||:diagtext:`block call` || |
| | |+---------------------------+| |
| +------------------------------------------------------------------+-----------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`not enough variable arguments in` |nbsp| :placeholder:`A` |nbsp| :diagtext:`declaration to fit a sentinel`| |
| +------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wsequence-point |
| ---------------- |
| Synonym for `-Wunsequenced`_. |
| |
| |
| -Wserialized-diagnostics |
| ------------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`unable to open file` |nbsp| :placeholder:`A` |nbsp| :diagtext:`for serializing diagnostics (`:placeholder:`B`:diagtext:`)`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`unable to merge a subprocess's serialized diagnostics`| |
| +--------------------------------------------------------------------------------------------+ |
| |
| |
| -Wshadow |
| -------- |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| Also controls `-Wshadow-field-in-constructor-modified`_, `-Wshadow-ivar`_. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------+-------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`declaration shadows a` |nbsp| |+-----------------------------------------------------------+| |
| | ||:diagtext:`local variable` || |
| | |+-----------------------------------------------------------+| |
| | ||+-----------------------------------------------+ || |
| | |||:diagtext:`variable in` |nbsp| :placeholder:`C`| || |
| | ||+-----------------------------------------------+ || |
| | |+-----------------------------------------------------------+| |
| | ||+---------------------------------------------------------+|| |
| | |||:diagtext:`static data member of` |nbsp| :placeholder:`C`||| |
| | ||+---------------------------------------------------------+|| |
| | |+-----------------------------------------------------------+| |
| | ||+--------------------------------------------+ || |
| | |||:diagtext:`field of` |nbsp| :placeholder:`C`| || |
| | ||+--------------------------------------------+ || |
| | |+-----------------------------------------------------------+| |
| | ||+----------------------------------------------+ || |
| | |||:diagtext:`typedef in` |nbsp| :placeholder:`C`| || |
| | ||+----------------------------------------------+ || |
| | |+-----------------------------------------------------------+| |
| | ||+-------------------------------------------------+ || |
| | |||:diagtext:`type alias in` |nbsp| :placeholder:`C`| || |
| | ||+-------------------------------------------------+ || |
| | |+-----------------------------------------------------------+| |
| +--------------------------------------------------------------------+-------------------------------------------------------------+ |
| |
| |
| -Wshadow-all |
| ------------ |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| Controls `-Wshadow`_, `-Wshadow-field`_, `-Wshadow-field-in-constructor`_, `-Wshadow-uncaptured-local`_. |
| |
| |
| -Wshadow-field |
| -------------- |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`non-static data member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`of` |nbsp| :placeholder:`B` |nbsp| :diagtext:`shadows member inherited from type` |nbsp| :placeholder:`C`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wshadow-field-in-constructor |
| ----------------------------- |
| Also controls `-Wshadow-field-in-constructor-modified`_. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`constructor parameter` |nbsp| :placeholder:`A` |nbsp| :diagtext:`shadows the field` |nbsp| :placeholder:`B` |nbsp| :diagtext:`of` |nbsp| :placeholder:`C`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wshadow-field-in-constructor-modified |
| -------------------------------------- |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`modifying constructor parameter` |nbsp| :placeholder:`A` |nbsp| :diagtext:`that shadows a field of` |nbsp| :placeholder:`B`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wshadow-ivar |
| ------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`local declaration of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`hides instance variable`| |
| +------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wshadow-uncaptured-local |
| ------------------------- |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------+-------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`declaration shadows a` |nbsp| |+-----------------------------------------------------------+| |
| | ||:diagtext:`local variable` || |
| | |+-----------------------------------------------------------+| |
| | ||+-----------------------------------------------+ || |
| | |||:diagtext:`variable in` |nbsp| :placeholder:`C`| || |
| | ||+-----------------------------------------------+ || |
| | |+-----------------------------------------------------------+| |
| | ||+---------------------------------------------------------+|| |
| | |||:diagtext:`static data member of` |nbsp| :placeholder:`C`||| |
| | ||+---------------------------------------------------------+|| |
| | |+-----------------------------------------------------------+| |
| | ||+--------------------------------------------+ || |
| | |||:diagtext:`field of` |nbsp| :placeholder:`C`| || |
| | ||+--------------------------------------------+ || |
| | |+-----------------------------------------------------------+| |
| | ||+----------------------------------------------+ || |
| | |||:diagtext:`typedef in` |nbsp| :placeholder:`C`| || |
| | ||+----------------------------------------------+ || |
| | |+-----------------------------------------------------------+| |
| | ||+-------------------------------------------------+ || |
| | |||:diagtext:`type alias in` |nbsp| :placeholder:`C`| || |
| | ||+-------------------------------------------------+ || |
| | |+-----------------------------------------------------------+| |
| +--------------------------------------------------------------------+-------------------------------------------------------------+ |
| |
| |
| -Wshift-count-negative |
| ---------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`shift count is negative`| |
| +--------------------------------------------------------------+ |
| |
| |
| -Wshift-count-overflow |
| ---------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`shift count >= width of type`| |
| +-------------------------------------------------------------------+ |
| |
| |
| -Wshift-negative-value |
| ---------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`shifting a negative signed value is undefined`| |
| +------------------------------------------------------------------------------------+ |
| |
| |
| -Wshift-op-parentheses |
| ---------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`operator '`:placeholder:`A`:diagtext:`' has lower precedence than '`:placeholder:`B`:diagtext:`'; '`:placeholder:`B`:diagtext:`' will be evaluated first`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wshift-overflow |
| ---------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`signed shift result (`:placeholder:`A`:diagtext:`) requires` |nbsp| :placeholder:`B` |nbsp| :diagtext:`bits to represent, but` |nbsp| :placeholder:`C` |nbsp| :diagtext:`only has` |nbsp| :placeholder:`D` |nbsp| :diagtext:`bits`| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wshift-sign-overflow |
| --------------------- |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`signed shift result (`:placeholder:`A`:diagtext:`) sets the sign bit of the shift expression's type (`:placeholder:`B`:diagtext:`) and becomes negative`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wshorten-64-to-32 |
| ------------------ |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`implicit conversion loses integer precision:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wsign-compare |
| -------------- |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`comparison of integers of different signs:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`and` |nbsp| :placeholder:`B`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wsign-conversion |
| ----------------- |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`implicit conversion changes signedness:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`operand of ? changes signedness:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`| |
| +---------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wsign-promo |
| ------------ |
| This diagnostic flag exists for GCC compatibility, and has no effect in Clang. |
| |
| -Wsigned-enum-bitfield |
| ---------------------- |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`enums in the Microsoft ABI are signed integers by default; consider giving the enum` |nbsp| :placeholder:`A` |nbsp| :diagtext:`an unsigned underlying type to make this code portable`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -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` || | |
| | |+-----------------------+| | |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+---------------------------------------------------------------------------------------+ |
| |
| |
| -Wslash-u-filename |
| ------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'/U`:placeholder:`A`:diagtext:`' treated as the '/U' option`| |
| +--------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wsometimes-uninitialized |
| ------------------------- |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------+----------------------+--------------------------------------------------+--------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is` |nbsp| |+--------------------+| |nbsp| :diagtext:`uninitialized whenever` |nbsp| |+------------------------------------------------------------------------------------------------------------+| |
| | ||:diagtext:`used` || ||+---------------------------------------------------------------+-------------------+ || |
| | |+--------------------+| |||:diagtext:`'`:placeholder:`D`:diagtext:`' condition is` |nbsp| |+-----------------+| || |
| | ||:diagtext:`captured`|| ||| ||:diagtext:`true` || || |
| | |+--------------------+| ||| |+-----------------+| || |
| | | | ||| ||:diagtext:`false`|| || |
| | | | ||| |+-----------------+| || |
| | | | ||+---------------------------------------------------------------+-------------------+ || |
| | | | |+------------------------------------------------------------------------------------------------------------+| |
| | | | ||+-------------------------------------------------------+--------------------------------------------------+|| |
| | | | |||:diagtext:`'`:placeholder:`D`:diagtext:`' loop` |nbsp| |+------------------------------------------------+||| |
| | | | ||| ||:diagtext:`is entered` |||| |
| | | | ||| |+------------------------------------------------+||| |
| | | | ||| ||:diagtext:`exits because its condition is false`|||| |
| | | | ||| |+------------------------------------------------+||| |
| | | | ||+-------------------------------------------------------+--------------------------------------------------+|| |
| | | | |+------------------------------------------------------------------------------------------------------------+| |
| | | | ||+-------------------------------------------------------+--------------------------------------------------+|| |
| | | | |||:diagtext:`'`:placeholder:`D`:diagtext:`' loop` |nbsp| |+------------------------------------------------+||| |
| | | | ||| ||:diagtext:`condition is true` |||| |
| | | | ||| |+------------------------------------------------+||| |
| | | | ||| ||:diagtext:`exits because its condition is false`|||| |
| | | | ||| |+------------------------------------------------+||| |
| | | | ||+-------------------------------------------------------+--------------------------------------------------+|| |
| | | | |+------------------------------------------------------------------------------------------------------------+| |
| | | | ||+----------------------------------------------------------------------+ || |
| | | | |||:diagtext:`switch` |nbsp| :placeholder:`D` |nbsp| :diagtext:`is taken`| || |
| | | | ||+----------------------------------------------------------------------+ || |
| | | | |+------------------------------------------------------------------------------------------------------------+| |
| | | | ||:diagtext:`its declaration is reached` || |
| | | | |+------------------------------------------------------------------------------------------------------------+| |
| | | | ||+---------------------------------------------+ || |
| | | | |||:placeholder:`D` |nbsp| :diagtext:`is called`| || |
| | | | ||+---------------------------------------------+ || |
| | | | |+------------------------------------------------------------------------------------------------------------+| |
| +-----------------------------------------------------------------------------------------------------+----------------------+--------------------------------------------------+--------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wsource-uses-openmp |
| -------------------- |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`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`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wstdlibcxx-not-found |
| --------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`include path for stdlibc++ headers not found; pass '-std=libc++' on the command line to use the libc++ standard library instead`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wstrict-aliasing |
| ----------------- |
| This diagnostic flag exists for GCC compatibility, and has no effect in Clang. |
| |
| -Wstrict-aliasing=0 |
| ------------------- |
| This diagnostic flag exists for GCC compatibility, and has no effect in Clang. |
| |
| -Wstrict-aliasing=1 |
| ------------------- |
| This diagnostic flag exists for GCC compatibility, and has no effect in Clang. |
| |
| -Wstrict-aliasing=2 |
| ------------------- |
| This diagnostic flag exists for GCC compatibility, and has no effect in Clang. |
| |
| -Wstrict-overflow |
| ----------------- |
| This diagnostic flag exists for GCC compatibility, and has no effect in Clang. |
| |
| -Wstrict-overflow=0 |
| ------------------- |
| This diagnostic flag exists for GCC compatibility, and has no effect in Clang. |
| |
| -Wstrict-overflow=1 |
| ------------------- |
| This diagnostic flag exists for GCC compatibility, and has no effect in Clang. |
| |
| -Wstrict-overflow=2 |
| ------------------- |
| This diagnostic flag exists for GCC compatibility, and has no effect in Clang. |
| |
| -Wstrict-overflow=3 |
| ------------------- |
| This diagnostic flag exists for GCC compatibility, and has no effect in Clang. |
| |
| -Wstrict-overflow=4 |
| ------------------- |
| This diagnostic flag exists for GCC compatibility, and has no effect in Clang. |
| |
| -Wstrict-overflow=5 |
| ------------------- |
| This diagnostic flag exists for GCC compatibility, and has no effect in Clang. |
| |
| -Wstrict-prototypes |
| ------------------- |
| **Diagnostic text:** |
| |
| +---------------------------------------------------+--------------------------------------------------------------+-------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`this` |nbsp| |+------------------------------------------------------------+| |nbsp| :diagtext:`a prototype`| |
| | ||:diagtext:`function declaration is not` || | |
| | |+------------------------------------------------------------+| | |
| | ||:diagtext:`block declaration is not` || | |
| | |+------------------------------------------------------------+| | |
| | ||:diagtext:`old-style function definition is not preceded by`|| | |
| | |+------------------------------------------------------------+| | |
| +---------------------------------------------------+--------------------------------------------------------------+-------------------------------+ |
| |
| |
| -Wstrict-prototypes |
| ------------------- |
| **Diagnostic text:** |
| |
| +---------------------------------------------------+--------------------------------------------------------------+-------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`this` |nbsp| |+------------------------------------------------------------+| |nbsp| :diagtext:`a prototype`| |
| | ||:diagtext:`function declaration is not` || | |
| | |+------------------------------------------------------------+| | |
| | ||:diagtext:`block declaration is not` || | |
| | |+------------------------------------------------------------+| | |
| | ||:diagtext:`old-style function definition is not preceded by`|| | |
| | |+------------------------------------------------------------+| | |
| +---------------------------------------------------+--------------------------------------------------------------+-------------------------------+ |
| |
| |
| -Wstrict-selector-match |
| ----------------------- |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`multiple methods named` |nbsp| :placeholder:`A` |nbsp| :diagtext:`found`| |
| +--------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wstring-compare |
| ---------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------+------------------------------+--------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`result of comparison against` |nbsp| |+----------------------------+| |nbsp| :diagtext:`is unspecified (use 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`| |
| +--------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wsuspicious-bzero |
| ------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'size' argument to bzero is '0'`| |
| +----------------------------------------------------------------------+ |
| |
| |
| -Wsuspicious-memaccess |
| ---------------------- |
| This diagnostic is enabled by default. |
| |
| Controls `-Wdynamic-class-memaccess`_, `-Wmemset-transposed-args`_, `-Wnontrivial-memaccess`_, `-Wsizeof-pointer-memaccess`_, `-Wsuspicious-bzero`_. |
| |
| |
| -Wswitch |
| -------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`overflow converting case value to switch condition type (`:placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`:diagtext:`)`| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| |+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| |
| | ||+----------------------------------------------------------------------------------------------+ || |
| | |||:diagtext:`enumeration value` |nbsp| :placeholder:`B` |nbsp| :diagtext:`not handled in switch`| || |
| | ||+----------------------------------------------------------------------------------------------+ || |
| | |+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| |
| | ||+----------------------------------------------------------------------------------------------------------------------------------------------+ || |
| | |||:diagtext:`enumeration values` |nbsp| :placeholder:`B` |nbsp| :diagtext:`and` |nbsp| :placeholder:`C` |nbsp| :diagtext:`not handled in switch`| || |
| | ||+----------------------------------------------------------------------------------------------------------------------------------------------+ || |
| | |+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| |
| | ||+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ || |
| | |||:diagtext:`enumeration values` |nbsp| :placeholder:`B`:diagtext:`,` |nbsp| :placeholder:`C`:diagtext:`, and` |nbsp| :placeholder:`D` |nbsp| :diagtext:`not handled in switch`| || |
| | ||+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ || |
| | |+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| |
| | ||+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|| |
| | |||:placeholder:`A` |nbsp| :diagtext:`enumeration values not handled in switch:` |nbsp| :placeholder:`B`:diagtext:`,` |nbsp| :placeholder:`C`:diagtext:`,` |nbsp| :placeholder:`D`:diagtext:`...`||| |
| | ||+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|| |
| | |+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| |
| +---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`case value not in enumerated type` |nbsp| :placeholder:`A`| |
| +------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wswitch-bool |
| ------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`switch condition has boolean value`| |
| +-------------------------------------------------------------------------+ |
| |
| |
| -Wswitch-default |
| ---------------- |
| This diagnostic flag exists for GCC compatibility, and has no effect in Clang. |
| |
| -Wswitch-enum |
| ------------- |
| **Diagnostic text:** |
| |
| +---------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| |+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| |
| | ||+---------------------------------------------------------------------------------------------------------+ || |
| | |||:diagtext:`enumeration value` |nbsp| :placeholder:`B` |nbsp| :diagtext:`not explicitly handled in switch`| || |
| | ||+---------------------------------------------------------------------------------------------------------+ || |
| | |+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| |
| | ||+---------------------------------------------------------------------------------------------------------------------------------------------------------+ || |
| | |||:diagtext:`enumeration values` |nbsp| :placeholder:`B` |nbsp| :diagtext:`and` |nbsp| :placeholder:`C` |nbsp| :diagtext:`not explicitly handled in switch`| || |
| | ||+---------------------------------------------------------------------------------------------------------------------------------------------------------+ || |
| | |+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| |
| | ||+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ || |
| | |||:diagtext:`enumeration values` |nbsp| :placeholder:`B`:diagtext:`,` |nbsp| :placeholder:`C`:diagtext:`, and` |nbsp| :placeholder:`D` |nbsp| :diagtext:`not explicitly handled in switch`| || |
| | ||+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ || |
| | |+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| |
| | ||+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|| |
| | |||:placeholder:`A` |nbsp| :diagtext:`enumeration values not explicitly handled in switch:` |nbsp| :placeholder:`B`:diagtext:`,` |nbsp| :placeholder:`C`:diagtext:`,` |nbsp| :placeholder:`D`:diagtext:`...`||| |
| | ||+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|| |
| | |+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| |
| +---------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wsync-fetch-and-nand-semantics-changed |
| --------------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`the semantics of this intrinsic changed with GCC version 4.4 - the newer semantics are provided here`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wsynth |
| ------- |
| This diagnostic flag exists for GCC compatibility, and has no effect in Clang. |
| |
| -Wtautological-compare |
| ---------------------- |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| Also controls `-Wtautological-constant-compare`_, `-Wtautological-overlap-compare`_, `-Wtautological-pointer-compare`_, `-Wtautological-undefined-compare`_. |
| |
| **Diagnostic text:** |
| |
| +---------------------------+---------------------------+--------------------------------------------------+------------------------+ |
| |:warning:`warning:` |nbsp| |+-------------------------+|:diagtext:`comparison always evaluates to` |nbsp| |+----------------------+| |
| | ||:diagtext:`self-` || ||:diagtext:`a constant`|| |
| | |+-------------------------+| |+----------------------+| |
| | ||:diagtext:`array` |nbsp| || ||:placeholder:`C` || |
| | |+-------------------------+| |+----------------------+| |
| +---------------------------+---------------------------+--------------------------------------------------+------------------------+ |
| |
| +-------------------------------------------------------------------------------------+-------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`bitwise comparison always evaluates to` |nbsp| |+-----------------+| |
| | ||:diagtext:`false`|| |
| | |+-----------------+| |
| | ||:diagtext:`true` || |
| | |+-----------------+| |
| +-------------------------------------------------------------------------------------+-------------------+ |
| |
| |
| -Wtautological-constant-compare |
| ------------------------------- |
| This diagnostic is enabled by default. |
| |
| Also controls `-Wtautological-constant-out-of-range-compare`_. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------+------------------------------------------------+--------------------------------+----------------------------------------------------------+-----------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`result of comparison of` |nbsp| |+----------------------------------------------+| |nbsp| :diagtext:`with` |nbsp| |+--------------------------------------------------------+| |nbsp| :diagtext:`is always` |nbsp| :placeholder:`E`| |
| | ||+--------------------------------------------+|| ||+------------------------------------------------------+|| | |
| | |||:diagtext:`constant` |nbsp| :placeholder:`A`||| |||:diagtext:`expression of type` |nbsp| :placeholder:`C`||| | |
| | ||+--------------------------------------------+|| ||+------------------------------------------------------+|| | |
| | |+----------------------------------------------+| |+--------------------------------------------------------+| | |
| | ||:diagtext:`true` || ||:diagtext:`boolean expression` || | |
| | |+----------------------------------------------+| |+--------------------------------------------------------+| | |
| | ||:diagtext:`false` || | | | |
| | |+----------------------------------------------+| | | | |
| +----------------------------------------------------------------------+------------------------------------------------+--------------------------------+----------------------------------------------------------+-----------------------------------------------------+ |
| |
| |
| -Wtautological-constant-in-range-compare |
| ---------------------------------------- |
| Controls `-Wtautological-type-limit-compare`_, `-Wtautological-unsigned-enum-zero-compare`_, `-Wtautological-unsigned-zero-compare`_. |
| |
| |
| -Wtautological-constant-out-of-range-compare |
| -------------------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------+------------------------------------------------+--------------------------------+----------------------------------------------------------+-----------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`result of comparison of` |nbsp| |+----------------------------------------------+| |nbsp| :diagtext:`with` |nbsp| |+--------------------------------------------------------+| |nbsp| :diagtext:`is always` |nbsp| :placeholder:`E`| |
| | ||+--------------------------------------------+|| ||+------------------------------------------------------+|| | |
| | |||:diagtext:`constant` |nbsp| :placeholder:`A`||| |||:diagtext:`expression of type` |nbsp| :placeholder:`C`||| | |
| | ||+--------------------------------------------+|| ||+------------------------------------------------------+|| | |
| | |+----------------------------------------------+| |+--------------------------------------------------------+| | |
| | ||:diagtext:`true` || ||:diagtext:`boolean expression` || | |
| | |+----------------------------------------------+| |+--------------------------------------------------------+| | |
| | ||:diagtext:`false` || | | | |
| | |+----------------------------------------------+| | | | |
| +----------------------------------------------------------------------+------------------------------------------------+--------------------------------+----------------------------------------------------------+-----------------------------------------------------+ |
| |
| |
| -Wtautological-overlap-compare |
| ------------------------------ |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------+-------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`overlapping comparisons always evaluate to` |nbsp| |+-----------------+| |
| | ||:diagtext:`false`|| |
| | |+-----------------+| |
| | ||:diagtext:`true` || |
| | |+-----------------+| |
| +-----------------------------------------------------------------------------------------+-------------------+ |
| |
| |
| -Wtautological-pointer-compare |
| ------------------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------+---------------------------+----------------------------------------------------------+-------------------------+----------------------------------------+-------------------+--------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`comparison of nonnull` |nbsp| |+-------------------------+| |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`'` |nbsp| |+-----------------------+|:diagtext:`equal to a null pointer is '`|+-----------------+|:diagtext:`' on first encounter`| |
| | ||:diagtext:`function call`|| ||:diagtext:`not` |nbsp| || ||:diagtext:`true` || | |
| | |+-------------------------+| |+-----------------------+| |+-----------------+| | |
| | ||:diagtext:`parameter` || || || ||:diagtext:`false`|| | |
| | |+-------------------------+| |+-----------------------+| |+-----------------+| | |
| +--------------------------------------------------------------------+---------------------------+----------------------------------------------------------+-------------------------+----------------------------------------+-------------------+--------------------------------+ |
| |
| +------------------------------------------------------------+------------------------+----------------------------------------------------------+-------------------------+-----------------------------------------------------+-------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`comparison of` |nbsp| |+----------------------+| |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`'` |nbsp| |+-----------------------+|:diagtext:`equal to a null pointer is always` |nbsp| |+-----------------+| |
| | ||:diagtext:`address of`|| ||:diagtext:`not` |nbsp| || ||:diagtext:`true` || |
| | |+----------------------+| |+-----------------------+| |+-----------------+| |
| | ||:diagtext:`function` || || || ||:diagtext:`false`|| |
| | |+----------------------+| |+-----------------------+| |+-----------------+| |
| | ||:diagtext:`array` || | | | | |
| | |+----------------------+| | | | | |
| +------------------------------------------------------------+------------------------+----------------------------------------------------------+-------------------------+-----------------------------------------------------+-------------------+ |
| |
| |
| -Wtautological-type-limit-compare |
| --------------------------------- |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------+------------------+--------------------------------+------------------+-----------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`result of comparison` |nbsp| |+----------------+| |nbsp| :placeholder:`C` |nbsp| |+----------------+| |nbsp| :diagtext:`is always` |nbsp| :placeholder:`E`| |
| | ||:placeholder:`D`|| ||:placeholder:`B`|| | |
| | |+----------------+| |+----------------+| | |
| | ||:placeholder:`B`|| ||:placeholder:`D`|| | |
| | |+----------------+| |+----------------+| | |
| +-------------------------------------------------------------------+------------------+--------------------------------+------------------+-----------------------------------------------------+ |
| |
| |
| -Wtautological-undefined-compare |
| -------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`reference cannot be bound to dereferenced null pointer in well-defined C++ code; comparison may be assumed to always evaluate to` |nbsp| |+-----------------+| |
| | ||:diagtext:`true` || |
| | |+-----------------+| |
| | ||:diagtext:`false`|| |
| | |+-----------------+| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'this' pointer cannot be null in well-defined C++ code; comparison may be assumed to always evaluate to` |nbsp| |+-----------------+| |
| | ||:diagtext:`true` || |
| | |+-----------------+| |
| | ||:diagtext:`false`|| |
| | |+-----------------+| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------+ |
| |
| |
| -Wtautological-unsigned-enum-zero-compare |
| ----------------------------------------- |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------+--------------------------------------+--------------------------------+--------------------------------------+-----------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`result of comparison of` |nbsp| |+------------------------------------+| |nbsp| :placeholder:`C` |nbsp| |+------------------------------------+| |nbsp| :diagtext:`is always` |nbsp| :placeholder:`E`| |
| | ||:placeholder:`D` || ||:diagtext:`unsigned enum expression`|| | |
| | |+------------------------------------+| |+------------------------------------+| | |
| | ||:diagtext:`unsigned enum expression`|| ||:placeholder:`D` || | |
| | |+------------------------------------+| |+------------------------------------+| | |
| +----------------------------------------------------------------------+--------------------------------------+--------------------------------+--------------------------------------+-----------------------------------------------------+ |
| |
| |
| -Wtautological-unsigned-zero-compare |
| ------------------------------------ |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------+---------------------------------+--------------------------------+---------------------------------+-----------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`result of comparison of` |nbsp| |+-------------------------------+| |nbsp| :placeholder:`C` |nbsp| |+-------------------------------+| |nbsp| :diagtext:`is always` |nbsp| :placeholder:`E`| |
| | ||:placeholder:`D` || ||:diagtext:`unsigned expression`|| | |
| | |+-------------------------------+| |+-------------------------------+| | |
| | ||:diagtext:`unsigned expression`|| ||:placeholder:`D` || | |
| | |+-------------------------------+| |+-------------------------------+| | |
| +----------------------------------------------------------------------+---------------------------------+--------------------------------+---------------------------------+-----------------------------------------------------+ |
| |
| |
| -Wtentative-definition-incomplete-type |
| -------------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`tentative definition of variable with internal linkage has incomplete non-array type` |nbsp| :placeholder:`A`| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wthread-safety |
| --------------- |
| Controls `-Wthread-safety-analysis`_, `-Wthread-safety-attributes`_, `-Wthread-safety-precise`_, `-Wthread-safety-reference`_. |
| |
| |
| -Wthread-safety-analysis |
| ------------------------ |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' must be acquired before '`:placeholder:`C`:diagtext:`'`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`Cycle in acquired\_before/after dependencies, starting with '`:placeholder:`A`:diagtext:`'`| |
| +---------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`cannot resolve lock expression`| |
| +---------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`acquiring` |nbsp| :placeholder:`A` |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' that is already held`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`expecting` |nbsp| :placeholder:`A` |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' to be held at start of each loop`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`expecting` |nbsp| :placeholder:`A` |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' to be held at the end of function`| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`cannot call function '`:placeholder:`B`:diagtext:`' while` |nbsp| :placeholder:`A` |nbsp| :diagtext:`'`:placeholder:`C`:diagtext:`' is held`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`calling function` |nbsp| :placeholder:`B` |nbsp| :diagtext:`requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+| |
| | ||+------------------------------------------+ || |
| | |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| || |
| | ||+------------------------------------------+ || |
| | |+--------------------------------------------------------+| |
| | ||+------------------------------------------------------+|| |
| | |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`||| |
| | ||+------------------------------------------------------+|| |
| | |+--------------------------------------------------------+| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' is acquired exclusively and shared in the same scope`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' is not held on every path through here`| |
| +------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' is still held at the end of function`| |
| +----------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`releasing` |nbsp| :placeholder:`A` |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' that was not held`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------+-----------------------+--------------------------------------------+-----------------------+--------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`releasing` |nbsp| :placeholder:`A` |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' using` |nbsp| |+---------------------+| |nbsp| :diagtext:`access, expected` |nbsp| |+---------------------+| |nbsp| :diagtext:`access`| |
| | ||:diagtext:`shared` || ||:diagtext:`shared` || | |
| | |+---------------------+| |+---------------------+| | |
| | ||:diagtext:`exclusive`|| ||:diagtext:`exclusive`|| | |
| | |+---------------------+| |+---------------------+| | |
| +----------------------------------------------------------------------------------------------------------------------------------------+-----------------------+--------------------------------------------+-----------------------+--------------------------+ |
| |
| +---------------------------+---------------------+---------------------------------------------------------------------------------------------------------------+-----------------------------------+ |
| |:warning:`warning:` |nbsp| |+-------------------+| |nbsp| :diagtext:`the value pointed to by` |nbsp| :placeholder:`A` |nbsp| :diagtext:`requires holding` |nbsp| |+---------------------------------+| |
| | ||:diagtext:`reading`|| ||:diagtext:`any mutex` || |
| | |+-------------------+| |+---------------------------------+| |
| | ||:diagtext:`writing`|| ||:diagtext:`any mutex exclusively`|| |
| | |+-------------------+| |+---------------------------------+| |
| +---------------------------+---------------------+---------------------------------------------------------------------------------------------------------------+-----------------------------------+ |
| |
| +---------------------------+---------------------+---------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| |+-------------------+| |nbsp| :diagtext:`the value pointed to by` |nbsp| :placeholder:`B` |nbsp| :diagtext:`requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+| |
| | ||:diagtext:`reading`|| ||+------------------------------------------+ || |
| | |+-------------------+| |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| || |
| | ||:diagtext:`writing`|| ||+------------------------------------------+ || |
| | |+-------------------+| |+--------------------------------------------------------+| |
| | | | ||+------------------------------------------------------+|| |
| | | | |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`||| |
| | | | ||+------------------------------------------------------+|| |
| | | | |+--------------------------------------------------------+| |
| +---------------------------+---------------------+---------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ |
| |
| +---------------------------+---------------------+------------------------------------------------------------------------------------------------+-----------------------------------+ |
| |:warning:`warning:` |nbsp| |+-------------------+| |nbsp| :diagtext:`variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`requires holding` |nbsp| |+---------------------------------+| |
| | ||:diagtext:`reading`|| ||:diagtext:`any mutex` || |
| | |+-------------------+| |+---------------------------------+| |
| | ||:diagtext:`writing`|| ||:diagtext:`any mutex exclusively`|| |
| | |+-------------------+| |+---------------------------------+| |
| +---------------------------+---------------------+------------------------------------------------------------------------------------------------+-----------------------------------+ |
| |
| +---------------------------+---------------------+------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| |+-------------------+| |nbsp| :diagtext:`variable` |nbsp| :placeholder:`B` |nbsp| :diagtext:`requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+| |
| | ||:diagtext:`reading`|| ||+------------------------------------------+ || |
| | |+-------------------+| |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| || |
| | ||:diagtext:`writing`|| ||+------------------------------------------+ || |
| | |+-------------------+| |+--------------------------------------------------------+| |
| | | | ||+------------------------------------------------------+|| |
| | | | |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`||| |
| | | | ||+------------------------------------------------------+|| |
| | | | |+--------------------------------------------------------+| |
| +---------------------------+---------------------+------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ |
| |
| |
| -Wthread-safety-attributes |
| -------------------------- |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :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` |nbsp| :placeholder:`B` |nbsp| :diagtext:`requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+| |
| | ||+------------------------------------------+ || |
| | |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| || |
| | ||+------------------------------------------+ || |
| | |+--------------------------------------------------------+| |
| | ||+------------------------------------------------------+|| |
| | |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`||| |
| | ||+------------------------------------------------------+|| |
| | |+--------------------------------------------------------+| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ |
| |
| +---------------------------+---------------------+---------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| |+-------------------+| |nbsp| :diagtext:`the value pointed to by` |nbsp| :placeholder:`B` |nbsp| :diagtext:`requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+| |
| | ||:diagtext:`reading`|| ||+------------------------------------------+ || |
| | |+-------------------+| |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| || |
| | ||:diagtext:`writing`|| ||+------------------------------------------+ || |
| | |+-------------------+| |+--------------------------------------------------------+| |
| | | | ||+------------------------------------------------------+|| |
| | | | |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`||| |
| | | | ||+------------------------------------------------------+|| |
| | | | |+--------------------------------------------------------+| |
| +---------------------------+---------------------+---------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ |
| |
| +---------------------------+---------------------+------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| |+-------------------+| |nbsp| :diagtext:`variable` |nbsp| :placeholder:`B` |nbsp| :diagtext:`requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+| |
| | ||:diagtext:`reading`|| ||+------------------------------------------+ || |
| | |+-------------------+| |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| || |
| | ||:diagtext:`writing`|| ||+------------------------------------------+ || |
| | |+-------------------+| |+--------------------------------------------------------+| |
| | | | ||+------------------------------------------------------+|| |
| | | | |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`||| |
| | | | ||+------------------------------------------------------+|| |
| | | | |+--------------------------------------------------------+| |
| +---------------------------+---------------------+------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ |
| |
| |
| -Wthread-safety-reference |
| ------------------------- |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`passing variable` |nbsp| :placeholder:`B` |nbsp| :diagtext:`by reference requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+| |
| | ||+------------------------------------------+ || |
| | |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| || |
| | ||+------------------------------------------+ || |
| | |+--------------------------------------------------------+| |
| | ||+------------------------------------------------------+|| |
| | |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`||| |
| | ||+------------------------------------------------------+|| |
| | |+--------------------------------------------------------+| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`passing the value that` |nbsp| :placeholder:`B` |nbsp| :diagtext:`points to by reference requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+| |
| | ||+------------------------------------------+ || |
| | |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| || |
| | ||+------------------------------------------+ || |
| | |+--------------------------------------------------------+| |
| | ||+------------------------------------------------------+|| |
| | |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`||| |
| | ||+------------------------------------------------------+|| |
| | |+--------------------------------------------------------+| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ |
| |
| |
| -Wthread-safety-verbose |
| ----------------------- |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`Thread safety verbose warning.`| |
| +---------------------------------------------------------------------+ |
| |
| |
| -Wtrigraphs |
| ----------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`trigraph converted to '`:placeholder:`A`:diagtext:`' character`| |
| +-----------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`trigraph ends block comment`| |
| +------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`trigraph ignored`| |
| +-------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ignored trigraph would end block comment`| |
| +-------------------------------------------------------------------------------+ |
| |
| |
| -Wtype-limits |
| ------------- |
| 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:`'`| |
| +-------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wunable-to-open-stats-file |
| --------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`unable to open statistics output file '`:placeholder:`A`:diagtext:`': '`:placeholder:`B`:diagtext:`'`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wunavailable-declarations |
| -------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`may be unavailable because the receiver type is unknown`| |
| +----------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wundeclared-selector |
| --------------------- |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`undeclared selector` |nbsp| :placeholder:`A`| |
| +----------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`undeclared selector` |nbsp| :placeholder:`A`:diagtext:`; did you mean` |nbsp| :placeholder:`B`:diagtext:`?`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wundef |
| ------- |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not defined, evaluates to 0`| |
| +---------------------------------------------------------------------------------------------+ |
| |
| |
| -Wundefined-bool-conversion |
| --------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`reference cannot be bound to dereferenced null pointer in well-defined C++ code; pointer may be assumed to always convert to true`| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'this' pointer cannot be null in well-defined C++ code; pointer may be assumed to always convert to true`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wundefined-func-template |
| ------------------------- |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`instantiation of function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`required here, but no definition is available`| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wundefined-inline |
| ------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`inline function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not defined`| |
| +----------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wundefined-internal |
| -------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------+----------------------+-----------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| |+--------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`has internal linkage but is not defined`| |
| | ||:diagtext:`function`|| | |
| | |+--------------------+| | |
| | ||:diagtext:`variable`|| | |
| | |+--------------------+| | |
| +---------------------------+----------------------+-----------------------------------------------------------------------------------+ |
| |
| |
| -Wundefined-internal-type |
| ------------------------- |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------+----------------------+----------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ISO C++ requires a definition in this translation unit for` |nbsp| |+--------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`because its type does not have linkage`| |
| | ||:diagtext:`function`|| | |
| | |+--------------------+| | |
| | ||:diagtext:`variable`|| | |
| | |+--------------------+| | |
| +---------------------------------------------------------------------------------------------------------+----------------------+----------------------------------------------------------------------------------+ |
| |
| |
| -Wundefined-reinterpret-cast |
| ---------------------------- |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`dereference of type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`that was reinterpret\_cast from type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has undefined behavior`| |
| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`reinterpret\_cast from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`has undefined behavior`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wundefined-var-template |
| ------------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`instantiation of variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`required here, but no definition is available`| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wunevaluated-expression |
| ------------------------ |
| This diagnostic is enabled by default. |
| |
| Also controls `-Wpotentially-evaluated-expression`_. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`expression with side effects has no effect in an unevaluated context`| |
| +-----------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wunguarded-availability |
| ------------------------ |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| Also controls `-Wunguarded-availability-new`_. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is only available on` |nbsp| :placeholder:`B` |nbsp| :placeholder:`C` |nbsp| :diagtext:`or newer`| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wunguarded-availability-new |
| ---------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is only available on` |nbsp| :placeholder:`B` |nbsp| :placeholder:`C` |nbsp| :diagtext:`or newer`| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wunicode |
| --------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`incomplete universal character name; treating as '\\' followed by identifier`| |
| +-------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`\\`:placeholder:`A` |nbsp| :diagtext:`used with no following hex digits; treating as '\\' followed by identifier`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`universal character name refers to a surrogate character`| |
| +-----------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`universal character names are only valid in C99 or C++; treating as '\\' followed by identifier`| |
| +--------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`universal character names are only valid in C99 or C++`| |
| +---------------------------------------------------------------------------------------------+ |
| |
| |
| -Wunicode-homoglyph |
| ------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`treating Unicode character <U+`:placeholder:`A`:diagtext:`> as identifier character rather than as '`:placeholder:`B`:diagtext:`' symbol`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wunicode-whitespace |
| -------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`treating Unicode character as whitespace`| |
| +-------------------------------------------------------------------------------+ |
| |
| |
| -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:`'`| |
| +-----------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`unknown argument ignored in clang-cl '`:placeholder:`A`:diagtext:`' (did you mean '`:placeholder:`B`:diagtext:`'?)`| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wunknown-attributes |
| -------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`unknown attribute` |nbsp| :placeholder:`A` |nbsp| :diagtext:`ignored`| |
| +-----------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wunknown-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 pragma ignored`| |
| +-------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`pragma include\_alias expected '`:placeholder:`A`:diagtext:`'`| |
| +----------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`pragma include\_alias expected include filename`| |
| +--------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`angle-bracketed include <`:placeholder:`A`:diagtext:`> cannot be aliased to double-quoted include "`:placeholder:`B`:diagtext:`"`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`double-quoted include "`:placeholder:`A`:diagtext:`" cannot be aliased to angle-bracketed include <`:placeholder:`B`:diagtext:`>`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`#pragma warning expected '`:placeholder:`A`:diagtext:`'`| |
| +----------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`#pragma warning expected a warning number`| |
| +--------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`#pragma warning(push, level) requires a level between 0 and 4`| |
| +----------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`#pragma warning expected 'push', 'pop', 'default', 'disable', 'error', 'once', 'suppress', 1, 2, 3, or 4`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`pragma STDC FENV\_ACCESS ON is not supported, ignoring pragma`| |
| +----------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wunknown-sanitizers |
| -------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`unknown sanitizer '`:placeholder:`A`:diagtext:`' ignored`| |
| +-----------------------------------------------------------------------------------------------+ |
| |
| |
| -Wunknown-warning-option |
| ------------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`unknown warning group '`:placeholder:`A`:diagtext:`', ignored`| |
| +----------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------+---------------------+---------------------------------------------------------+--------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`unknown` |nbsp| |+-------------------+| |nbsp| :diagtext:`option '`:placeholder:`B`:diagtext:`'`|+------------------------------------------------------------+| |
| | ||:diagtext:`warning`|| || || |
| | |+-------------------+| |+------------------------------------------------------------+| |
| | ||:diagtext:`remark` || ||+----------------------------------------------------------+|| |
| | |+-------------------+| |||:diagtext:`; did you mean '`:placeholder:`D`:diagtext:`'?`||| |
| | | | ||+----------------------------------------------------------+|| |
| | | | |+------------------------------------------------------------+| |
| +------------------------------------------------------+---------------------+---------------------------------------------------------+--------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`unknown` |nbsp| :placeholder:`A` |nbsp| :diagtext:`warning specifier: '`:placeholder:`B`:diagtext:`'`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wunnamed-type-template-args |
| ---------------------------- |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| Also controls `-Wc++98-compat-unnamed-type-template-args`_. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`template argument uses unnamed type`| |
| +--------------------------------------------------------------------------+ |
| |
| |
| -Wunneeded-internal-declaration |
| ------------------------------- |
| **Diagnostic text:** |
| |
| +---------------------------+----------------------+---------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| |+--------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`is not needed and will not be emitted`| |
| | ||:diagtext:`function`|| | |
| | |+--------------------+| | |
| | ||:diagtext:`variable`|| | |
| | |+--------------------+| | |
| +---------------------------+----------------------+---------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'static' function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`declared in header file should be declared 'static inline'`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wunneeded-member-function |
| -------------------------- |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`member function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not needed and will not be emitted`| |
| +---------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wunreachable-code |
| ------------------ |
| Also controls `-Wunreachable-code-loop-increment`_. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`code will never be executed`| |
| +------------------------------------------------------------------+ |
| |
| |
| -Wunreachable-code-aggressive |
| ----------------------------- |
| Controls `-Wunreachable-code`_, `-Wunreachable-code-break`_, `-Wunreachable-code-return`_. |
| |
| |
| -Wunreachable-code-break |
| ------------------------ |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'break' will never be executed`| |
| +---------------------------------------------------------------------+ |
| |
| |
| -Wunreachable-code-loop-increment |
| --------------------------------- |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`loop will run at most once (loop increment never executed)`| |
| +-------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wunreachable-code-return |
| ------------------------- |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`'return' will never be executed`| |
| +----------------------------------------------------------------------+ |
| |
| |
| -Wunsequenced |
| ------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`multiple unsequenced modifications to` |nbsp| :placeholder:`A`| |
| +----------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`unsequenced modification and access to` |nbsp| :placeholder:`A`| |
| +-----------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wunsupported-abs |
| ----------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ignoring '-mabs=2008' option because the '`:placeholder:`A`:diagtext:`' architecture does not support it`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ignoring '-mabs=legacy' option because the '`:placeholder:`A`:diagtext:`' architecture does not support it`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wunsupported-availability-guard |
| -------------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------+------------------------------------+--------------------------------------------------------------+------------------------------------+---------------------+ |
| |:warning:`warning:` |nbsp| |+----------------------------------+| |nbsp| :diagtext:`does not guard availability here; use if (`|+----------------------------------+|:diagtext:`) instead`| |
| | ||:diagtext:`@available` || ||:diagtext:`@available` || | |
| | |+----------------------------------+| |+----------------------------------+| | |
| | ||:diagtext:`\_\_builtin\_available`|| ||:diagtext:`\_\_builtin\_available`|| | |
| | |+----------------------------------+| |+----------------------------------+| | |
| +---------------------------+------------------------------------+--------------------------------------------------------------+------------------------------------+---------------------+ |
| |
| |
| -Wunsupported-cb |
| ---------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ignoring '-mcompact-branches=' option because the '`:placeholder:`A`:diagtext:`' architecture does not support it`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wunsupported-dll-base-class-template |
| ------------------------------------- |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------+------------------------------------+------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`propagating dll attribute to` |nbsp| |+----------------------------------+| |nbsp| :diagtext:`base class template without dll attribute is not supported`| |
| | ||:diagtext:`already instantiated` || | |
| | |+----------------------------------+| | |
| | ||:diagtext:`explicitly specialized`|| | |
| | |+----------------------------------+| | |
| +---------------------------------------------------------------------------+------------------------------------+------------------------------------------------------------------------------+ |
| |
| |
| -Wunsupported-friend |
| -------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`dependent nested name specifier '`:placeholder:`A`:diagtext:`' for friend template declaration is not supported; ignoring this friend declaration`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`dependent nested name specifier '`:placeholder:`A`:diagtext:`' for friend class declaration is not supported; turning off access control for` |nbsp| :placeholder:`B`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wunsupported-gpopt |
| ------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------+-------------------------------------------+----------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ignoring '-mgpopt' option as it cannot be used with` |nbsp| |+-----------------------------------------+|:diagtext:`-mabicalls`| |
| | || || | |
| | |+-----------------------------------------+| | |
| | ||:diagtext:`the implicit usage of` |nbsp| || | |
| | |+-----------------------------------------+| | |
| +--------------------------------------------------------------------------------------------------+-------------------------------------------+----------------------+ |
| |
| |
| -Wunsupported-nan |
| ----------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ignoring '-mnan=2008' option because the '`:placeholder:`A`:diagtext:`' architecture does not support it`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ignoring '-mnan=legacy' option because the '`:placeholder:`A`:diagtext:`' architecture does not support it`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wunsupported-target-opt |
| ------------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`debug information option '`:placeholder:`A`:diagtext:`' is not supported for target '`:placeholder:`B`:diagtext:`'`| |
| +---------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wunsupported-visibility |
| ------------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`target does not support 'protected' visibility; using 'default'`| |
| +------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wunusable-partial-specialization |
| --------------------------------- |
| This diagnostic is an error by default, but the flag ``-Wno-unusable-partial-specialization`` can be used to disable the error. |
| |
| **Diagnostic text:** |
| |
| +-----------------------+----------------------+--------------------------------------------------------------------+----------------------------------+------------------------------------------------------------------------------------------+ |
| |:error:`error:` |nbsp| |+--------------------+| |nbsp| :diagtext:`template partial specialization contains` |nbsp| |+--------------------------------+| |nbsp| :diagtext:`that cannot be deduced; this partial specialization will never be used`| |
| | ||:diagtext:`class` || ||:diagtext:`a template parameter`|| | |
| | |+--------------------+| |+--------------------------------+| | |
| | ||:diagtext:`variable`|| ||:diagtext:`template parameters` || | |
| | |+--------------------+| |+--------------------------------+| | |
| +-----------------------+----------------------+--------------------------------------------------------------------+----------------------------------+------------------------------------------------------------------------------------------+ |
| |
| |
| -Wunused |
| -------- |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| Controls `-Wunused-argument`_, `-Wunused-function`_, `-Wunused-label`_, `-Wunused-lambda-capture`_, `-Wunused-local-typedef`_, `-Wunused-private-field`_, `-Wunused-property-ivar`_, `-Wunused-value`_, `-Wunused-variable`_. |
| |
| |
| -Wunused-argument |
| ----------------- |
| This diagnostic flag exists for GCC compatibility, and has no effect in Clang. |
| |
| -Wunused-command-line-argument |
| ------------------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`argument '`:placeholder:`A`:diagtext:`' requires profile-guided optimization information`| |
| +-------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`joined argument expects additional value: '`:placeholder:`A`:diagtext:`'`| |
| +---------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------+----------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A`:diagtext:`: '`:placeholder:`B`:diagtext:`' input unused`|+--------------------------------------------------------------------+| |
| | ||+------------------------------------------------------------------+|| |
| | ||| |nbsp| :diagtext:`when '`:placeholder:`D`:diagtext:`' is present`||| |
| | ||+------------------------------------------------------------------+|| |
| | |+--------------------------------------------------------------------+| |
| | || || |
| | |+--------------------------------------------------------------------+| |
| +----------------------------------------------------------------------------------------------------+----------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A`:diagtext:`: '`:placeholder:`B`:diagtext:`' input unused in cpp mode`| |
| +----------------------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------+-----------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A`:diagtext:`: previously preprocessed input`|+---------------------------------------------------------------------------+| |
| | ||+-------------------------------------------------------------------------+|| |
| | ||| |nbsp| :diagtext:`unused when '`:placeholder:`C`:diagtext:`' is present`||| |
| | ||+-------------------------------------------------------------------------+|| |
| | |+---------------------------------------------------------------------------+| |
| | || || |
| | |+---------------------------------------------------------------------------+| |
| +--------------------------------------------------------------------------------------+-----------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`argument unused during compilation: '`:placeholder:`A`:diagtext:`'`| |
| +---------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`the flag '`:placeholder:`A`:diagtext:`' has been deprecated and will be ignored`| |
| +----------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wunused-comparison |
| ------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------+------------------------+--------------------------------------------+ |
| |:warning:`warning:` |nbsp| |+----------------------+| |nbsp| :diagtext:`comparison result unused`| |
| | ||:diagtext:`equality` || | |
| | |+----------------------+| | |
| | ||:diagtext:`inequality`|| | |
| | |+----------------------+| | |
| | ||:diagtext:`relational`|| | |
| | |+----------------------+| | |
| | ||:diagtext:`three-way` || | |
| | |+----------------------+| | |
| +---------------------------+------------------------+--------------------------------------------+ |
| |
| |
| -Wunused-const-variable |
| ----------------------- |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`unused variable` |nbsp| :placeholder:`A`| |
| +------------------------------------------------------------------------------+ |
| |
| |
| -Wunused-exception-parameter |
| ---------------------------- |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`unused exception parameter` |nbsp| :placeholder:`A`| |
| +-----------------------------------------------------------------------------------------+ |
| |
| |
| -Wunused-function |
| ----------------- |
| Also controls `-Wunneeded-internal-declaration`_. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`unused function` |nbsp| :placeholder:`A`| |
| +------------------------------------------------------------------------------+ |
| |
| |
| -Wunused-getter-return-value |
| ---------------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`property access result unused - getters should not be used for side effects`| |
| +------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wunused-label |
| -------------- |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`unused label` |nbsp| :placeholder:`A`| |
| +---------------------------------------------------------------------------+ |
| |
| |
| -Wunused-lambda-capture |
| ----------------------- |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------+--------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`lambda capture` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not` |nbsp| |+------------------------------------------------+| |
| | ||:diagtext:`used` || |
| | |+------------------------------------------------+| |
| | ||:diagtext:`required to be captured for this use`|| |
| | |+------------------------------------------------+| |
| +---------------------------------------------------------------------------------------------------------------+--------------------------------------------------+ |
| |
| |
| -Wunused-local-typedef |
| ---------------------- |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------+------------------------+------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`unused` |nbsp| |+----------------------+| |nbsp| :placeholder:`B`| |
| | ||:diagtext:`typedef` || | |
| | |+----------------------+| | |
| | ||:diagtext:`type alias`|| | |
| | |+----------------------+| | |
| +-----------------------------------------------------+------------------------+------------------------+ |
| |
| |
| -Wunused-local-typedefs |
| ----------------------- |
| Synonym for `-Wunused-local-typedef`_. |
| |
| |
| -Wunused-macros |
| --------------- |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`macro is not used`| |
| +--------------------------------------------------------+ |
| |
| |
| -Wunused-member-function |
| ------------------------ |
| Also controls `-Wunneeded-member-function`_. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`unused member function` |nbsp| :placeholder:`A`| |
| +-------------------------------------------------------------------------------------+ |
| |
| |
| -Wunused-parameter |
| ------------------ |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`unused parameter` |nbsp| :placeholder:`A`| |
| +-------------------------------------------------------------------------------+ |
| |
| |
| -Wunused-private-field |
| ---------------------- |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`private field` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not used`| |
| +-----------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wunused-property-ivar |
| ---------------------- |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ivar` |nbsp| :placeholder:`A` |nbsp| :diagtext:`which backs the property is not referenced in this property's accessor`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wunused-result |
| --------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ignoring return value of function declared with` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wunused-template |
| ----------------- |
| Also controls `-Wunneeded-internal-declaration`_. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------+----------------------+----------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`unused` |nbsp| |+--------------------+| |nbsp| :diagtext:`template` |nbsp| :placeholder:`B`| |
| | ||:diagtext:`function`|| | |
| | |+--------------------+| | |
| | ||:diagtext:`variable`|| | |
| | |+--------------------+| | |
| +-----------------------------------------------------+----------------------+----------------------------------------------------+ |
| |
| |
| -Wunused-value |
| -------------- |
| This diagnostic is enabled by default. |
| |
| Also controls `-Wunevaluated-expression`_, `-Wunused-comparison`_, `-Wunused-result`_. |
| |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`ignoring return value of function declared with` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute`| |
| +-------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`container access result unused - container access should not be used for side effects`| |
| +----------------------------------------------------------------------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`expression result unused`| |
| +---------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`expression result unused; should this cast be to 'void'?`| |
| +-----------------------------------------------------------------------------------------------+ |
| |
| |
| -Wunused-variable |
| ----------------- |
| Also controls `-Wunused-const-variable`_. |
| |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`unused variable` |nbsp| :placeholder:`A`| |
| +------------------------------------------------------------------------------+ |
| |
| |
| -Wunused-volatile-lvalue |
| ------------------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`expression result unused; assign into a variable to force a volatile load`| |
| +----------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wused-but-marked-unused |
| ------------------------ |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`was marked unused but was used`| |
| +---------------------------------------------------------------------------------------------+ |
| |
| |
| -Wuser-defined-literals |
| ----------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------+----------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`user-defined literal suffixes not starting with '\_' are reserved`|+--------------------------------------------------+| |
| | ||:diagtext:`; no literal will invoke this operator`|| |
| | |+--------------------------------------------------+| |
| | || || |
| | |+--------------------------------------------------+| |
| +--------------------------------------------------------------------------------------------------------+----------------------------------------------------+ |
| |
| |
| -Wuser-defined-warnings |
| ----------------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| The text of this diagnostic is not controlled by Clang. |
| |
| |
| -Wvarargs |
| --------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`second argument to 'va\_start' is not the last named parameter`| |
| +-----------------------------------------------------------------------------------------------------+ |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`second argument to 'va\_arg' is of promotable type` |nbsp| :placeholder:`A`:diagtext:`; this va\_arg has undefined behavior because arguments will be promoted to` |nbsp| :placeholder:`B`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------+-----------------------------------------------------------------+---------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`passing` |nbsp| |+---------------------------------------------------------------+| |nbsp| :diagtext:`to 'va\_start' has undefined behavior`| |
| | ||:diagtext:`an object that undergoes default argument promotion`|| | |
| | |+---------------------------------------------------------------+| | |
| | ||:diagtext:`an object of reference type` || | |
| | |+---------------------------------------------------------------+| | |
| | ||:diagtext:`a parameter declared with the 'register' keyword` || | |
| | |+---------------------------------------------------------------+| | |
| +------------------------------------------------------+-----------------------------------------------------------------+---------------------------------------------------------+ |
| |
| |
| -Wvariadic-macros |
| ----------------- |
| Some of the diagnostics controlled by this flag are enabled by default. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`named variadic macros are a GNU extension`| |
| +--------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`\_\_VA\_OPT\_\_ can only appear in the expansion of a variadic macro`| |
| +-----------------------------------------------------------------------------------------------------------+ |
| |
| +------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`variadic macros are a C99 feature`| |
| +------------------------------------------------------------------------+ |
| |
| |
| -Wvec-elem-size |
| --------------- |
| This diagnostic is an error by default, but the flag ``-Wno-vec-elem-size`` can be used to disable the error. |
| |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:error:`error:` |nbsp| :diagtext:`vector operands do not have the same elements sizes (`:placeholder:`A` |nbsp| :diagtext:`and` |nbsp| :placeholder:`B`:diagtext:`)`| |
| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wvector-conversion |
| ------------------- |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------+----------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`incompatible vector types` |nbsp| |+--------------------------------------------------------------+| |
| | ||:diagtext:`assigning to different types` || |
| | |+--------------------------------------------------------------+| |
| | ||:diagtext:`passing to parameter of different type` || |
| | |+--------------------------------------------------------------+| |
| | ||:diagtext:`returning from function with different return type`|| |
| | |+--------------------------------------------------------------+| |
| | ||:diagtext:`converting between types` || |
| | |+--------------------------------------------------------------+| |
| | ||:diagtext:`initializing with expression of different type` || |
| | |+--------------------------------------------------------------+| |
| | ||:diagtext:`sending to parameter of different type` || |
| | |+--------------------------------------------------------------+| |
| | ||:diagtext:`casting between types` || |
| | |+--------------------------------------------------------------+| |
| +------------------------------------------------------------------------+----------------------------------------------------------------+ |
| |
| |
| -Wvector-conversions |
| -------------------- |
| Synonym for `-Wvector-conversion`_. |
| |
| |
| -Wvexing-parse |
| -------------- |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +----------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`empty parentheses interpreted as a function declaration`| |
| +----------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`parentheses were disambiguated as a function declaration`| |
| +-----------------------------------------------------------------------------------------------+ |
| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`parentheses were disambiguated as redundant parentheses around declaration of variable named` |nbsp| :placeholder:`A`| |
| +-----------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wvisibility |
| ------------ |
| This diagnostic is enabled by default. |
| |
| **Diagnostic text:** |
| |
| +---------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`declaration of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`will not be visible outside of this function`| |
| +---------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| +----------------------------------------------------------------------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`redefinition of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`will not be visible outside of this function`| |
| +----------------------------------------------------------------------------------------------------------------------------------------------+ |
| |
| |
| -Wvla |
| ----- |
| **Diagnostic text:** |
| |
| +-----------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`variable length array used`| |
| +-----------------------------------------------------------------+ |
| |
| |
| -Wvla-extension |
| --------------- |
| **Diagnostic text:** |
| |
| +-------------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`variable length arrays are a C99 feature`| |
| +-------------------------------------------------------------------------------+ |
| |
| |
| -Wvoid-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-as-null-pointer-constant |
| ------------------------------- |
| **Diagnostic text:** |
| |
| +--------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`zero as null pointer constant`| |
| +--------------------------------------------------------------------+ |
| |
| |
| -Wzero-length-array |
| ------------------- |
| **Diagnostic text:** |
| |
| +------------------------------------------------------------------------+ |
| |:warning:`warning:` |nbsp| :diagtext:`zero size arrays are an extension`| |
| +------------------------------------------------------------------------+ |
| |
| |