.. ------------------------------------------------------------------- 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 rather than the start of . .. raw:: html .. FIXME: rST doesn't support formatting this, so we format all elements as monospace font face instead. .. |nbsp| unicode:: 0xA0 :trim: .. Roles generated by clang-tblgen. .. role:: error .. role:: warning .. role:: remark .. role:: diagtext .. role:: placeholder(emphasis) ========================= Diagnostic flags in Clang ========================= .. contents:: :local: Introduction ============ This page lists the diagnostic flags currently supported by Clang. Diagnostic flags ================ -W -- Synonym for `-Wextra`_. -W#pragma-messages ------------------ This diagnostic is enabled by default. **Diagnostic text:** The text of this diagnostic is not controlled by Clang. -W#warnings ----------- This diagnostic is enabled by default. **Diagnostic text:** The text of this diagnostic is not controlled by Clang. -WCFString-literal ------------------ This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`input conversion stopped due to an input byte that does not belong to the input codeset UTF-8`| +------------------------------------------------------------------------------------------------------------------------------------+ -WCL4 ----- Some of the diagnostics controlled by this flag are enabled by default. Controls `-Wall`_, `-Wextra`_. -WIndependentClass-attribute ---------------------------- This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'objc\_independent\_class' attribute may be put on a typedef only; attribute is ignored`| +------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'objc\_independent\_class' attribute may be put on Objective-C object pointer type only; attribute is ignored`| +----------------------------------------------------------------------------------------------------------------------------------------------------+ -WNSObject-attribute -------------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'NSObject' attribute may be put on a typedef only; attribute is ignored`| +--------------------------------------------------------------------------------------------------------------+ -Wabi ----- This diagnostic flag exists for GCC compatibility, and has no effect in Clang. -Wabsolute-value ---------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`absolute value function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`given an argument of type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`but has parameter of type` |nbsp| :placeholder:`C` |nbsp| :diagtext:`which may cause truncation of value`| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------+----------------------+---------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`taking the absolute value of` |nbsp| |+--------------------+| |nbsp| :diagtext:`type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is suspicious`| | ||:diagtext:`pointer` || | | |+--------------------+| | | ||:diagtext:`function`|| | | |+--------------------+| | | ||:diagtext:`array` || | | |+--------------------+| | +---------------------------------------------------------------------------+----------------------+---------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`taking the absolute value of unsigned type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has no effect`| +------------------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------+----------------------------+------------------------------------------------------------------------------------------------------------------+----------------------------+------------------------+ |:warning:`warning:` |nbsp| :diagtext:`using` |nbsp| |+--------------------------+| |nbsp| :diagtext:`absolute value function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`when argument is of` |nbsp| |+--------------------------+| |nbsp| :diagtext:`type`| | ||:diagtext:`integer` || ||:diagtext:`integer` || | | |+--------------------------+| |+--------------------------+| | | ||:diagtext:`floating point`|| ||:diagtext:`floating point`|| | | |+--------------------------+| |+--------------------------+| | | ||:diagtext:`complex` || ||:diagtext:`complex` || | | |+--------------------------+| |+--------------------------+| | +----------------------------------------------------+----------------------------+------------------------------------------------------------------------------------------------------------------+----------------------------+------------------------+ -Wabstract-final-class ---------------------- This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------+--------------------+-------------+ |:warning:`warning:` |nbsp| :diagtext:`abstract class is marked '`|+------------------+|:diagtext:`'`| | ||:diagtext:`final` || | | |+------------------+| | | ||:diagtext:`sealed`|| | | |+------------------+| | +-----------------------------------------------------------------+--------------------+-------------+ -Wabstract-vbase-init --------------------- **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`initializer for virtual base class` |nbsp| :placeholder:`A` |nbsp| :diagtext:`of abstract class` |nbsp| :placeholder:`B` |nbsp| :diagtext:`will never be used`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Waddress --------- This diagnostic is enabled by default. Controls `-Wpointer-bool-conversion`_, `-Wstring-compare`_, `-Wtautological-pointer-compare`_. -Waddress-of-packed-member -------------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`taking address of packed member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`of class or structure` |nbsp| :placeholder:`B` |nbsp| :diagtext:`may result in an unaligned pointer value`| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Waddress-of-temporary ---------------------- This diagnostic is an error by default, but the flag ``-Wno-address-of-temporary`` can be used to disable the error. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------+ |:error:`error:` |nbsp| :diagtext:`taking the address of a temporary object of type` |nbsp| :placeholder:`A`| +-----------------------------------------------------------------------------------------------------------+ -Waggregate-return ------------------ This diagnostic flag exists for GCC compatibility, and has no effect in Clang. -Wall ----- Some of the diagnostics controlled by this flag are enabled by default. Controls `-Wmisleading-indentation`_, `-Wmost`_, `-Wparentheses`_, `-Wswitch`_, `-Wswitch-bool`_. -Walloca -------- **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`use of function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is discouraged; there is no way to check for failure but failure may still occur, resulting in a possibly exploitable security vulnerability`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Walloca-with-align-alignof --------------------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`second argument to \_\_builtin\_alloca\_with\_align is supposed to be in bits`| +--------------------------------------------------------------------------------------------------------------------+ -Wambiguous-delete ------------------ This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`multiple suitable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`functions for` |nbsp| :placeholder:`B`:diagtext:`; no 'operator delete' function will be invoked if initialization throws an exception`| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wambiguous-ellipsis -------------------- This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------------------------+---------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'...' in this location creates a C-style varargs function`|+-------------------------------------------+| | ||:diagtext:`, not a function parameter pack`|| | |+-------------------------------------------+| | || || | |+-------------------------------------------+| +------------------------------------------------------------------------------------------------+---------------------------------------------+ -Wambiguous-macro ----------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ambiguous expansion of macro` |nbsp| :placeholder:`A`| +-------------------------------------------------------------------------------------------+ -Wambiguous-member-template --------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`lookup of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in member access expression is ambiguous; using member of` |nbsp| :placeholder:`B`| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wambiguous-reversed-operator ----------------------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ISO C++20 considers use of overloaded operator '`:placeholder:`A`:diagtext:`' (with operand types` |nbsp| :placeholder:`B` |nbsp| :diagtext:`and` |nbsp| :placeholder:`C`:diagtext:`) to be ambiguous despite there being a unique best viable function`|+-----------------------------------------------+| | || |nbsp| :diagtext:`with non-reversed arguments`|| | |+-----------------------------------------------+| | || || | |+-----------------------------------------------+| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------+ -Wanalyzer-incompatible-plugin ------------------------------ This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`checker plugin '`:placeholder:`A`:diagtext:`' is not compatible with this version of the analyzer`| +----------------------------------------------------------------------------------------------------------------------------------------+ -Wanon-enum-enum-conversion --------------------------- Some of the diagnostics controlled by this flag are enabled by default. Also controls `-Wdeprecated-anon-enum-enum-conversion`_. **Diagnostic text:** +---------------------------+--------------------------------------------+-----------------------------------------------+ |:warning:`warning:` |nbsp| |+------------------------------------------+| |nbsp| :diagtext:`different enumeration types`| | ||:diagtext:`arithmetic between` || | | |+------------------------------------------+| | | ||:diagtext:`bitwise operation between` || | | |+------------------------------------------+| | | ||:diagtext:`comparison of` || | | |+------------------------------------------+| | | ||:diagtext:`conditional expression between`|| | | |+------------------------------------------+| | | ||:diagtext:`compound assignment of` || | | |+------------------------------------------+| | +---------------------------+--------------------------------------------+-----------------------------------------------+ -Wanonymous-pack-parens ----------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ISO C++11 requires a parenthesized pack declaration to have a name`| +---------------------------------------------------------------------------------------------------------+ -Warc ----- This diagnostic is enabled by default. Controls `-Warc-non-pod-memaccess`_, `-Warc-retain-cycles`_, `-Warc-unsafe-retained-assign`_. -Warc-bridge-casts-disallowed-in-nonarc --------------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' casts have no effect when not using ARC`| +-------------------------------------------------------------------------------------------------------------+ -Warc-maybe-repeated-use-of-weak -------------------------------- **Diagnostic text:** +---------------------------------------------------+-------------------------------+------------------------------------------------------------------------------------------+----------------------+-------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`weak` |nbsp| |+-----------------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`may be accessed multiple times in this` |nbsp| |+--------------------+| |nbsp| :diagtext:`and may be unpredictably set to nil; assign to a strong variable to keep the object alive`| | ||:diagtext:`variable` || ||:diagtext:`function`|| | | |+-----------------------------+| |+--------------------+| | | ||:diagtext:`property` || ||:diagtext:`method` || | | |+-----------------------------+| |+--------------------+| | | ||:diagtext:`implicit property`|| ||:diagtext:`block` || | | |+-----------------------------+| |+--------------------+| | | ||:diagtext:`instance variable`|| ||:diagtext:`lambda` || | | |+-----------------------------+| |+--------------------+| | +---------------------------------------------------+-------------------------------+------------------------------------------------------------------------------------------+----------------------+-------------------------------------------------------------------------------------------------------------+ -Warc-non-pod-memaccess ----------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------+-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| |+---------------------------+| |nbsp| :diagtext:`this` |nbsp| :placeholder:`B` |nbsp| :diagtext:`call is a pointer to ownership-qualified type` |nbsp| :placeholder:`C`| | ||:diagtext:`destination for`|| | | |+---------------------------+| | | ||:diagtext:`source of` || | | |+---------------------------+| | +---------------------------+-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+ -Warc-performSelector-leaks --------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`performSelector may cause a leak because its selector is unknown`| +-------------------------------------------------------------------------------------------------------+ -Warc-repeated-use-of-weak -------------------------- Also controls `-Warc-maybe-repeated-use-of-weak`_. **Diagnostic text:** +---------------------------------------------------+-------------------------------+--------------------------------------------------------------------------------------+----------------------+-------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`weak` |nbsp| |+-----------------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`is accessed multiple times in this` |nbsp| |+--------------------+| |nbsp| :diagtext:`but may be unpredictably set to nil; assign to a strong variable to keep the object alive`| | ||:diagtext:`variable` || ||:diagtext:`function`|| | | |+-----------------------------+| |+--------------------+| | | ||:diagtext:`property` || ||:diagtext:`method` || | | |+-----------------------------+| |+--------------------+| | | ||:diagtext:`implicit property`|| ||:diagtext:`block` || | | |+-----------------------------+| |+--------------------+| | | ||:diagtext:`instance variable`|| ||:diagtext:`lambda` || | | |+-----------------------------+| |+--------------------+| | +---------------------------------------------------+-------------------------------+--------------------------------------------------------------------------------------+----------------------+-------------------------------------------------------------------------------------------------------------+ -Warc-retain-cycles ------------------- This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`capturing` |nbsp| :placeholder:`A` |nbsp| :diagtext:`strongly in this block is likely to lead to a retain cycle`| +------------------------------------------------------------------------------------------------------------------------------------------------------+ -Warc-unsafe-retained-assign ---------------------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------+---------------------------------+-------------------------------------+----------------------+------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`assigning` |nbsp| |+-------------------------------+| |nbsp| :diagtext:`to a weak` |nbsp| |+--------------------+|:diagtext:`; object will be released after assignment`| | ||:diagtext:`array literal` || ||:diagtext:`property`|| | | |+-------------------------------+| |+--------------------+| | | ||:diagtext:`dictionary literal` || ||:diagtext:`variable`|| | | |+-------------------------------+| |+--------------------+| | | ||:diagtext:`numeric literal` || | | | | |+-------------------------------+| | | | | ||:diagtext:`boxed expression` || | | | | |+-------------------------------+| | | | | ||:diagtext:``|| | | | | |+-------------------------------+| | | | | ||:diagtext:`block literal` || | | | | |+-------------------------------+| | | | +--------------------------------------------------------+---------------------------------+-------------------------------------+----------------------+------------------------------------------------------+ +---------------------------------------------------------------------------+--------------------------------+--------+----------------------+------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`assigning retained object to` |nbsp| |+------------------------------+| |nbsp| |+--------------------+|:diagtext:`; object will be released after assignment`| | ||:diagtext:`weak` || ||:diagtext:`property`|| | | |+------------------------------+| |+--------------------+| | | ||:diagtext:`unsafe\_unretained`|| ||:diagtext:`variable`|| | | |+------------------------------+| |+--------------------+| | +---------------------------------------------------------------------------+--------------------------------+--------+----------------------+------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`assigning retained object to unsafe property; object will be released after assignment`| +-----------------------------------------------------------------------------------------------------------------------------+ -Wargument-outside-range ------------------------ This diagnostic is an error by default, but the flag ``-Wno-argument-outside-range`` can be used to disable the error. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:error:`error:` |nbsp| :diagtext:`argument value` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is outside the valid range \[`:placeholder:`B`:diagtext:`,` |nbsp| :placeholder:`C`:diagtext:`\]`| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Warray-bounds -------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+-------------+ |:warning:`warning:` |nbsp| :diagtext:`array index` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is past the end of the array (which contains` |nbsp| :placeholder:`B` |nbsp| :diagtext:`element`|+-------------+|:diagtext:`)`| | || || | | |+-------------+| | | ||:diagtext:`s`|| | | |+-------------+| | +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+-------------+ +----------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`array index` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is before the beginning of the array`| +----------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------+----------------------------------------------------------------------------+--------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`array argument is too small;` |nbsp| |+--------------------------------------------------------------------------+|:diagtext:`, callee requires at least` |nbsp| :placeholder:`B`| | ||+------------------------------------------------------------------------+|| | | |||:diagtext:`contains` |nbsp| :placeholder:`A` |nbsp| :diagtext:`elements`||| | | ||+------------------------------------------------------------------------+|| | | |+--------------------------------------------------------------------------+| | | ||+----------------------------------------------+ || | | |||:diagtext:`is of size` |nbsp| :placeholder:`A`| || | | ||+----------------------------------------------+ || | | |+--------------------------------------------------------------------------+| | +---------------------------------------------------------------------------+----------------------------------------------------------------------------+--------------------------------------------------------------+ +-----------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'static' has no effect on zero-length arrays`| +-----------------------------------------------------------------------------------+ -Warray-bounds-pointer-arithmetic --------------------------------- **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+-------------+ |:warning:`warning:` |nbsp| :diagtext:`the pointer incremented by` |nbsp| :placeholder:`A` |nbsp| :diagtext:`refers past the end of the array (that contains` |nbsp| :placeholder:`B` |nbsp| :diagtext:`element`|+-------------+|:diagtext:`)`| | || || | | |+-------------+| | | ||:diagtext:`s`|| | | |+-------------+| | +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+-------------+ +-----------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`the pointer decremented by` |nbsp| :placeholder:`A` |nbsp| :diagtext:`refers before the beginning of the array`| +-----------------------------------------------------------------------------------------------------------------------------------------------------+ -Wasm ----- Synonym for `-Wasm-operand-widths`_. -Wasm-operand-widths -------------------- This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`value size does not match register size specified by the constraint and modifier`| +-----------------------------------------------------------------------------------------------------------------------+ -Wassign-enum ------------- **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`integer constant not in range of enumerated type` |nbsp| :placeholder:`A`| +---------------------------------------------------------------------------------------------------------------+ -Wassume -------- This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`the argument to` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has side effects that will be discarded`| +-----------------------------------------------------------------------------------------------------------------------------------------+ -Wat-protocol ------------- This diagnostic flag exists for GCC compatibility, and has no effect in Clang. -Watimport-in-framework-header ------------------------------ This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`use of '@import' in framework header is discouraged, including this header requires -fmodules`| +------------------------------------------------------------------------------------------------------------------------------------+ -Watomic-alignment ------------------ This diagnostic is enabled by default. **Diagnostic text:** +---------------------------+------------------------+------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| |+----------------------+| |nbsp| :diagtext:`atomic operation may incur significant performance penalty`| | ||:diagtext:`large` || | | |+----------------------+| | | ||:diagtext:`misaligned`|| | | |+----------------------+| | +---------------------------+------------------------+------------------------------------------------------------------------------+ -Watomic-implicit-seq-cst ------------------------- **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`implicit use of sequentially-consistent atomic may incur stronger memory barriers than necessary`| +---------------------------------------------------------------------------------------------------------------------------------------+ -Watomic-memory-ordering ------------------------ This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`memory order argument to atomic operation is invalid`| +-------------------------------------------------------------------------------------------+ -Watomic-properties ------------------- Controls `-Wcustom-atomic-properties`_, `-Wimplicit-atomic-properties`_. -Watomic-property-with-user-defined-accessor -------------------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------------------------------+--------------------+-----------------------------------------------+--------------------+ |:warning:`warning:` |nbsp| :diagtext:`writable atomic property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`cannot pair a synthesized` |nbsp| |+------------------+| |nbsp| :diagtext:`with a user defined` |nbsp| |+------------------+| | ||:diagtext:`getter`|| ||:diagtext:`getter`|| | |+------------------+| |+------------------+| | ||:diagtext:`setter`|| ||:diagtext:`setter`|| | |+------------------+| |+------------------+| +--------------------------------------------------------------------------------------------------------------------------------------------+--------------------+-----------------------------------------------+--------------------+ -Wattribute-packed-for-bitfield ------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'packed' attribute was ignored on bit-fields with single-byte alignment in older versions of GCC and Clang`| +-------------------------------------------------------------------------------------------------------------------------------------------------+ -Wattributes ------------ This diagnostic is enabled by default. Controls `-Wignored-attributes`_, `-Wunknown-attributes`_. -Wauto-disable-vptr-sanitizer ----------------------------- This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`implicitly disabling vptr sanitizer because rtti wasn't enabled`| +------------------------------------------------------------------------------------------------------+ -Wauto-import ------------- **Diagnostic text:** +-------------------------------------------------+---------------------------------+-------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`treating #`|+-------------------------------+| |nbsp| :diagtext:`as an import of module '`:placeholder:`B`:diagtext:`'`| | ||:diagtext:`include` || | | |+-------------------------------+| | | ||:diagtext:`import` || | | |+-------------------------------+| | | ||:diagtext:`include\_next` || | | |+-------------------------------+| | | ||:diagtext:`\_\_include\_macros`|| | | |+-------------------------------+| | +-------------------------------------------------+---------------------------------+-------------------------------------------------------------------------+ -Wauto-storage-class -------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'auto' storage class specifier is not permitted in C++11, and will not be supported in future releases`| +---------------------------------------------------------------------------------------------------------------------------------------------+ -Wauto-var-id ------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'auto' deduced as 'id' in declaration of` |nbsp| :placeholder:`A`| +-------------------------------------------------------------------------------------------------------+ -Wavailability -------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'unavailable' availability overrides all other availability information`| +--------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------+----------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ignoring availability attribute` |nbsp| |+--------------------------------------+| | ||:diagtext:`on '+load' method` || | |+--------------------------------------+| | ||:diagtext:`with constructor attribute`|| | |+--------------------------------------+| | ||:diagtext:`with destructor attribute` || | |+--------------------------------------+| +------------------------------------------------------------------------------+----------------------------------------+ +---------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`only 'unavailable' and 'deprecated' are supported for Swift availability`| +---------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unknown platform` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in availability macro`| +------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------+------------------------+------------------------------------------------------------------------------------------------------------------------------------------+------------------------+-------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`feature cannot be` |nbsp| |+----------------------+| |nbsp| :diagtext:`in` |nbsp| :placeholder:`B` |nbsp| :diagtext:`version` |nbsp| :placeholder:`C` |nbsp| :diagtext:`before it was` |nbsp| |+----------------------+| |nbsp| :diagtext:`in version` |nbsp| :placeholder:`E`:diagtext:`; attribute ignored`| | ||:diagtext:`introduced`|| ||:diagtext:`introduced`|| | | |+----------------------+| |+----------------------+| | | ||:diagtext:`deprecated`|| ||:diagtext:`deprecated`|| | | |+----------------------+| |+----------------------+| | | ||:diagtext:`obsoleted` || ||:diagtext:`obsoleted` || | | |+----------------------+| |+----------------------+| | +----------------------------------------------------------------+------------------------+------------------------------------------------------------------------------------------------------------------------------------------+------------------------+-------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`use same version number separators '\_' or '.'; as in 'major\[.minor\[.subminor\]\]'`| +---------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`availability does not match previous declaration`| +---------------------------------------------------------------------------------------+ +---------------------------+--------------------------------+--------------------------+-------------------------------+--------+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| |+------------------------------+|:diagtext:`method` |nbsp| |+-----------------------------+| |nbsp| |+---------------------------------------------+| |nbsp| :diagtext:`on` |nbsp| :placeholder:`B` |nbsp| :diagtext:`(`:placeholder:`C` |nbsp| :diagtext:`vs.` |nbsp| :placeholder:`D`:diagtext:`)`| | || || ||:diagtext:`introduced after` || ||:diagtext:`the protocol method it implements`|| | | |+------------------------------+| |+-----------------------------+| |+---------------------------------------------+| | | ||:diagtext:`overriding` |nbsp| || ||:diagtext:`deprecated before`|| ||:diagtext:`overridden method` || | | |+------------------------------+| |+-----------------------------+| |+---------------------------------------------+| | | | | ||:diagtext:`obsoleted before` || | | | | | | |+-----------------------------+| | | | +---------------------------+--------------------------------+--------------------------+-------------------------------+--------+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------+--------------------------------+---------------------------------------------------------------------------------------------------+-----------------------------------------------+--------------------------------+ |:warning:`warning:` |nbsp| |+------------------------------+|:diagtext:`method cannot be unavailable on` |nbsp| :placeholder:`A` |nbsp| :diagtext:`when` |nbsp| |+---------------------------------------------+| |nbsp| :diagtext:`is available`| | || || ||:diagtext:`the protocol method it implements`|| | | |+------------------------------+| |+---------------------------------------------+| | | ||:diagtext:`overriding` |nbsp| || ||:diagtext:`its overridden method` || | | |+------------------------------+| |+---------------------------------------------+| | +---------------------------+--------------------------------+---------------------------------------------------------------------------------------------------+-----------------------------------------------+--------------------------------+ -Wavr-rtlib-linking-quirks -------------------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`support for linking stdlibs for microcontroller '`:placeholder:`A`:diagtext:`' is not implemented`| +----------------------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`no avr-gcc installation can be found on the system, cannot link standard libraries`| +-------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`no avr-libc installation can be found on the system, cannot link standard libraries`| +--------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`no target microcontroller specified on command line, cannot link standard libraries, please pass -mmcu=`| +--------------------------------------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`standard library not linked and so no interrupt vector table or compiler runtime routines will be linked`| +-----------------------------------------------------------------------------------------------------------------------------------------------+ -Wbackend-plugin ---------------- This diagnostic is enabled by default. **Diagnostic text:** The text of this diagnostic is not controlled by Clang. -Wbackslash-newline-escape -------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`backslash and newline separated by space`| +-------------------------------------------------------------------------------+ -Wbad-function-cast ------------------- **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`cast from function call of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to non-matching type` |nbsp| :placeholder:`B`| +--------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wbinary-literal ---------------- Controls `-Wc++14-binary-literal`_, `-Wc++98-c++11-compat-binary-literal`_, `-Wgnu-binary-literal`_. -Wbind-to-temporary-copy ------------------------ Also controls `-Wc++98-compat-bind-to-temporary-copy`_. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+ |:warning:`warning:` |nbsp| :diagtext:`C++98 requires an accessible copy constructor for class` |nbsp| :placeholder:`C` |nbsp| :diagtext:`when binding a reference to a temporary; was` |nbsp| |+---------------------+| | ||:diagtext:`private` || | |+---------------------+| | ||:diagtext:`protected`|| | |+---------------------+| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+ +--------------------------------------------------------------------+------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`no viable constructor` |nbsp| |+----------------------------------------------------+| |nbsp| :diagtext:`of type` |nbsp| :placeholder:`B`:diagtext:`; C++98 requires a copy constructor when binding a reference to a temporary`| | ||:diagtext:`copying variable` || | | |+----------------------------------------------------+| | | ||:diagtext:`copying parameter` || | | |+----------------------------------------------------+| | | ||:diagtext:`returning object` || | | |+----------------------------------------------------+| | | ||:diagtext:`initializing statement expression result`|| | | |+----------------------------------------------------+| | | ||:diagtext:`throwing object` || | | |+----------------------------------------------------+| | | ||:diagtext:`copying member subobject` || | | |+----------------------------------------------------+| | | ||:diagtext:`copying array element` || | | |+----------------------------------------------------+| | | ||:diagtext:`allocating object` || | | |+----------------------------------------------------+| | | ||:diagtext:`copying temporary` || | | |+----------------------------------------------------+| | | ||:diagtext:`initializing base subobject` || | | |+----------------------------------------------------+| | | ||:diagtext:`initializing vector element` || | | |+----------------------------------------------------+| | | ||:diagtext:`capturing value` || | | |+----------------------------------------------------+| | +--------------------------------------------------------------------+------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+ -Wbinding-in-condition ---------------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ISO C++17 does not permit structured binding declaration in a condition`| +--------------------------------------------------------------------------------------------------------------+ -Wbitfield-constant-conversion ------------------------------ This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`implicit truncation from` |nbsp| :placeholder:`C` |nbsp| :diagtext:`to bit-field changes value from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wbitfield-enum-conversion -------------------------- **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`bit-field` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not wide enough to store all enumerators of` |nbsp| :placeholder:`B`| +------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`signed bit-field` |nbsp| :placeholder:`A` |nbsp| :diagtext:`needs an extra bit to represent the largest positive enumerators of` |nbsp| :placeholder:`B`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`assigning value of signed enum type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`to unsigned bit-field` |nbsp| :placeholder:`A`:diagtext:`; negative enumerators of enum` |nbsp| :placeholder:`B` |nbsp| :diagtext:`will be converted to positive values`| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wbitfield-width ---------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+ |:warning:`warning:` |nbsp| :diagtext:`width of anonymous bit-field (`:placeholder:`A` |nbsp| :diagtext:`bits) exceeds width of its type; value will be truncated to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`bit`|+-------------+| | || || | |+-------------+| | ||:diagtext:`s`|| | |+-------------+| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+ +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+ |:warning:`warning:` |nbsp| :diagtext:`width of bit-field` |nbsp| :placeholder:`A` |nbsp| :diagtext:`(`:placeholder:`B` |nbsp| :diagtext:`bits) exceeds the width of its type; value will be truncated to` |nbsp| :placeholder:`C` |nbsp| :diagtext:`bit`|+-------------+| | || || | |+-------------+| | ||:diagtext:`s`|| | |+-------------+| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+ -Wbitwise-conditional-parentheses --------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`operator '?:' has lower precedence than '`:placeholder:`A`:diagtext:`'; '`:placeholder:`A`:diagtext:`' will be evaluated first`| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wbitwise-op-parentheses ------------------------ **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' within '`:placeholder:`B`:diagtext:`'`| +-----------------------------------------------------------------------------------------------------------+ -Wblock-capture-autoreleasing ----------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`block captures an autoreleasing out-parameter, which may result in use-after-free bugs`| +-----------------------------------------------------------------------------------------------------------------------------+ -Wbool-conversion ----------------- This diagnostic is enabled by default. Also controls `-Wpointer-bool-conversion`_, `-Wundefined-bool-conversion`_. **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`initialization of pointer of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to null from a constant boolean expression`| +--------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wbool-conversions ------------------ Synonym for `-Wbool-conversion`_. -Wbool-operation ---------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------+-------------------------------------------------+--------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`bitwise negation of a boolean expression`|+-----------------------------------------------+| |nbsp| :diagtext:`did you mean logical negation?`| | ||:diagtext:`;` || | | |+-----------------------------------------------+| | | || |nbsp| :diagtext:`always evaluates to 'true';`|| | | |+-----------------------------------------------+| | +-------------------------------------------------------------------------------+-------------------------------------------------+--------------------------------------------------+ -Wbraced-scalar-init -------------------- This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------+----------------------------+-----------------------+ |:warning:`warning:` |nbsp| :diagtext:`braces around` |nbsp| |+--------------------------+|:diagtext:`initializer`| | ||:diagtext:`scalar` |nbsp| || | | |+--------------------------+| | | || || | | |+--------------------------+| | +------------------------------------------------------------+----------------------------+-----------------------+ -Wbridge-cast ------------- This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`bridges to` |nbsp| :placeholder:`B`:diagtext:`, not` |nbsp| :placeholder:`C`| +------------------------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`cannot bridge to` |nbsp| :placeholder:`B`| +-------------------------------------------------------------------------------------------------------+ -Wbuiltin-assume-aligned-alignment ---------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`requested alignment must be` |nbsp| :placeholder:`A` |nbsp| :diagtext:`bytes or smaller; maximum alignment assumed`| +---------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wbuiltin-macro-redefined ------------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`redefining builtin macro`| +---------------------------------------------------------------+ +---------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`undefining builtin macro`| +---------------------------------------------------------------+ -Wbuiltin-memcpy-chk-size ------------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' will always overflow; destination buffer has size` |nbsp| :placeholder:`B`:diagtext:`, but size argument is` |nbsp| :placeholder:`C`| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wbuiltin-requires-header ------------------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`declaration of built-in function '`:placeholder:`B`:diagtext:`' requires inclusion of the header <`:placeholder:`A`:diagtext:`>`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wc++-compat ------------ **Diagnostic text:** +---------------------------+---------------------------+--------------------+--------------------------------------------+---------------------------+--------------------------+ |:warning:`warning:` |nbsp| |+-------------------------+|+------------------+| |nbsp| :diagtext:`has size 0 in C,` |nbsp| |+-------------------------+| |nbsp| :diagtext:`in C++`| | || |||:diagtext:`struct`|| ||:diagtext:`size 1` || | | |+-------------------------+|+------------------+| |+-------------------------+| | | ||:diagtext:`empty` |nbsp| |||:diagtext:`union` || ||:diagtext:`non-zero size`|| | | |+-------------------------+|+------------------+| |+-------------------------+| | +---------------------------+---------------------------+--------------------+--------------------------------------------+---------------------------+--------------------------+ -Wc++0x-compat -------------- Synonym for `-Wc++11-compat`_. -Wc++0x-extensions ------------------ Synonym for `-Wc++11-extensions`_. -Wc++0x-narrowing ----------------- Synonym for `-Wc++11-narrowing`_. -Wc++11-compat -------------- Some of the diagnostics controlled by this flag are enabled by default. Also controls `-Wc++11-compat-deprecated-writable-strings`_, `-Wc++11-compat-reserved-user-defined-literal`_, `-Wc++11-narrowing`_, `-Wc++98-c++11-c++14-c++17-compat`_, `-Wc++98-c++11-c++14-compat`_, `-Wc++98-c++11-compat`_. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`integer literal is too large to be represented in type 'long' and is subject to undefined behavior under C++98, interpreting as 'unsigned long'; this literal will` |nbsp| |+---------------------------------+| |nbsp| :diagtext:`in C++11 onwards`| | ||:diagtext:`have type 'long long'`|| | | |+---------------------------------+| | | ||:diagtext:`be ill-formed` || | | |+---------------------------------+| | +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+------------------------------------+ +--------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'auto' storage class specifier is redundant and incompatible with C++11`| +--------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`identifier after literal will be treated as a user-defined literal suffix in C++11`| +-------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' is a keyword in C++11`| +-------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`use of right-shift operator ('>>') in template argument will require parentheses in C++11`| +--------------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`explicit instantiation cannot be 'inline'`| +--------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`explicit instantiation of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`must occur at global scope`| +--------------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`explicit instantiation of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`not in a namespace enclosing` |nbsp| :placeholder:`B`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`explicit instantiation of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`must occur in namespace` |nbsp| :placeholder:`B`| +-----------------------------------------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`integer literal is too large to be represented in type 'long', interpreting as 'unsigned long' per C++98; this literal will` |nbsp| |+---------------------------------+| |nbsp| :diagtext:`in C++11 onwards`| | ||:diagtext:`have type 'long long'`|| | | |+---------------------------------+| | | ||:diagtext:`be ill-formed` || | | |+---------------------------------+| | +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+------------------------------------+ -Wc++11-compat-deprecated-writable-strings ------------------------------------------ This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`conversion from string literal to` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is deprecated`| +---------------------------------------------------------------------------------------------------------------------------------+ -Wc++11-compat-pedantic ----------------------- Some of the diagnostics controlled by this flag are enabled by default. Controls `-Wc++11-compat`_, `-Wc++98-c++11-c++14-c++17-compat-pedantic`_, `-Wc++98-c++11-c++14-compat-pedantic`_, `-Wc++98-c++11-compat-pedantic`_. -Wc++11-compat-reserved-user-defined-literal -------------------------------------------- **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`identifier after literal will be treated as a reserved user-defined literal suffix in C++11`| +----------------------------------------------------------------------------------------------------------------------------------+ -Wc++11-extensions ------------------ Some of the diagnostics controlled by this flag are enabled by default. Also controls `-Wc++11-extra-semi`_, `-Wc++11-inline-namespace`_, `-Wc++11-long-long`_. **Diagnostic text:** +-------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`alias declarations are a C++11 extension`| +-------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`implicit conversion from array size expression of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| |+-----------------------+| |nbsp| :diagtext:`type` |nbsp| :placeholder:`C` |nbsp| :diagtext:`is a C++11 extension`| | ||:diagtext:`integral` || | | |+-----------------------+| | | ||:diagtext:`enumeration`|| | | |+-----------------------+| | +---------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'auto' type specifier is a C++11 extension`| +---------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`enumeration types with a fixed underlying type are a C++11 extension`| +-----------------------------------------------------------------------------------------------------------+ +---------------------------+-----------------------+--------------------------------------------------------------+ |:warning:`warning:` |nbsp| |+---------------------+| |nbsp| :diagtext:`function definitions are a C++11 extension`| | ||:diagtext:`defaulted`|| | | |+---------------------+| | | ||:diagtext:`deleted` || | | |+---------------------+| | +---------------------------+-----------------------+--------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`befriending enumeration type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a C++11 extension`| +-----------------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`commas at the end of enumerator lists are a C++11 extension`| +--------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`explicit conversion functions are a C++11 extension`| +------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`extern templates are a C++11 extension`| +-----------------------------------------------------------------------------+ +--------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`range-based for loop is a C++11 extension`| +--------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`generalized initializer lists are a C++11 extension`| +------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`use of enumeration in a nested name specifier is a C++11 extension`| +---------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`non-class friend type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a C++11 extension`| +----------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`in-class initialization of non-static data member is a C++11 extension`| +-------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' keyword is a C++11 extension`| +--------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`reference qualifiers on functions are a C++11 extension`| +----------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`rvalue references are a C++11 extension`| +------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`scoped enumerations are a C++11 extension`| +--------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`static data member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in union is a C++11 extension`| +----------------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`non-type template argument referring to` |nbsp| |+--------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`with internal linkage is a C++11 extension`| | ||:diagtext:`function`|| | | |+--------------------+| | | ||:diagtext:`object` || | | |+--------------------+| | +--------------------------------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'template' keyword outside of a template`| +-------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`default template arguments for a function template are a C++11 extension`| +---------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'typename' occurs outside of a template`| +------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------+-----------------------+-------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unelaborated friend declaration is a C++11 extension; specify '`|+---------------------+|:diagtext:`' to befriend` |nbsp| :placeholder:`B`| | ||:diagtext:`struct` || | | |+---------------------+| | | ||:diagtext:`interface`|| | | |+---------------------+| | | ||:diagtext:`union` || | | |+---------------------+| | | ||:diagtext:`class` || | | |+---------------------+| | | ||:diagtext:`enum` || | | |+---------------------+| | +------------------------------------------------------------------------------------------------------+-----------------------+-------------------------------------------------+ +-------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`variadic templates are a C++11 extension`| +-------------------------------------------------------------------------------+ -Wc++11-extra-semi ------------------ **Diagnostic text:** +-------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`extra ';' outside of a function is a C++11 extension`| +-------------------------------------------------------------------------------------------+ -Wc++11-inline-namespace ------------------------ This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`inline namespaces are a C++11 feature`| +----------------------------------------------------------------------------+ -Wc++11-long-long ----------------- **Diagnostic text:** +-----------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'long long' is a C++11 extension`| +-----------------------------------------------------------------------+ -Wc++11-narrowing ----------------- Some of the diagnostics controlled by this flag are enabled by default. **Diagnostic text:** +-----------------------+-----------------------------------------+--------+--------------------------------------------------------------------------------------------------------------------------+ |:error:`error:` |nbsp| |+---------------------------------------+| |nbsp| |+------------------------------------------------------------------------------------------------------------------------+| | ||:diagtext:`case value` || ||+--------------------------------------------------------------------------------------------------------------+ || | |+---------------------------------------+| |||:diagtext:`cannot be narrowed from type` |nbsp| :placeholder:`C` |nbsp| :diagtext:`to` |nbsp| :placeholder:`D`| || | ||:diagtext:`enumerator value` || ||+--------------------------------------------------------------------------------------------------------------+ || | |+---------------------------------------+| |+------------------------------------------------------------------------------------------------------------------------+| | ||:diagtext:`non-type template argument` || ||+----------------------------------------------------------------------------------------------------------------------+|| | |+---------------------------------------+| |||:diagtext:`evaluates to` |nbsp| :placeholder:`C`:diagtext:`, which cannot be narrowed to type` |nbsp| :placeholder:`D`||| | ||:diagtext:`array size` || ||+----------------------------------------------------------------------------------------------------------------------+|| | |+---------------------------------------+| |+------------------------------------------------------------------------------------------------------------------------+| | ||:diagtext:`constexpr if condition` || | | | |+---------------------------------------+| | | | ||:diagtext:`explicit specifier argument`|| | | | |+---------------------------------------+| | | +-----------------------+-----------------------------------------+--------+--------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:error:`error:` |nbsp| :diagtext:`constant expression evaluates to` |nbsp| :placeholder:`A` |nbsp| :diagtext:`which cannot be narrowed to type` |nbsp| :placeholder:`B`| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:error:`error:` |nbsp| :diagtext:`type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`cannot be narrowed to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`in initializer list`| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:error:`error:` |nbsp| :diagtext:`non-constant-expression cannot be narrowed from type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`in initializer list`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`constant expression evaluates to` |nbsp| :placeholder:`A` |nbsp| :diagtext:`which cannot be narrowed to type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`in C++11`| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`cannot be narrowed to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`in initializer list in C++11`| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`non-constant-expression cannot be narrowed from type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`in initializer list in C++11`| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wc++14-binary-literal ---------------------- **Diagnostic text:** +------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`binary integer literals are a C++14 extension`| +------------------------------------------------------------------------------------+ -Wc++14-compat -------------- Controls `-Wc++98-c++11-c++14-c++17-compat`_, `-Wc++98-c++11-c++14-compat`_. -Wc++14-compat-pedantic ----------------------- Controls `-Wc++14-compat`_, `-Wc++98-c++11-c++14-c++17-compat-pedantic`_, `-Wc++98-c++11-c++14-compat-pedantic`_. -Wc++14-extensions ------------------ Some of the diagnostics controlled by this flag are enabled by default. Also controls `-Wc++14-binary-literal`_. **Diagnostic text:** +-----------------------------------------------------------------------------------+-------------------------+----------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`use of this statement in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is a C++14 extension`| | ||:diagtext:`function` || | | |+-----------------------+| | | ||:diagtext:`constructor`|| | | |+-----------------------+| | +-----------------------------------------------------------------------------------+-------------------------+----------------------------------------+ +------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`multiple return statements in constexpr function is a C++14 extension`| +------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------+-------------------------+----------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`variable declaration in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is a C++14 extension`| | ||:diagtext:`function` || | | |+-----------------------+| | | ||:diagtext:`constructor`|| | | |+-----------------------+| | +----------------------------------------------------------------------------------+-------------------------+----------------------------------------+ +-----------------------------------------------------------------------------+-------------------------+----------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`type definition in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is a C++14 extension`| | ||:diagtext:`function` || | | |+-----------------------+| | | ||:diagtext:`constructor`|| | | |+-----------------------+| | +-----------------------------------------------------------------------------+-------------------------+----------------------------------------+ +---------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`use of the` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute is a C++14 extension`| +---------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'decltype(auto)' type specifier is a C++14 extension`| +-------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`initialized lambda captures are a C++14 extension`| +----------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`variable templates are a C++14 extension`| +-------------------------------------------------------------------------------+ -Wc++17-compat -------------- Some of the diagnostics controlled by this flag are enabled by default. Controls `-Wc++17-compat-mangling`_, `-Wc++98-c++11-c++14-c++17-compat`_, `-Wdeprecated-increment-bool`_, `-Wdeprecated-register`_. -Wc++17-compat-mangling ----------------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`mangled name of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`will change in C++17 due to non-throwing exception specification in function signature`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wc++17-compat-pedantic ----------------------- Some of the diagnostics controlled by this flag are enabled by default. Controls `-Wc++17-compat`_, `-Wc++98-c++11-c++14-c++17-compat-pedantic`_. -Wc++17-extensions ------------------ Some of the diagnostics controlled by this flag are enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ISO C++ standards before C++17 do not allow new expression for type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to use list-initialization`| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`constexpr if is a C++17 extension`| +------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'constexpr' on lambda expressions is a C++17 extension`| +---------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`use of the` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute is a C++17 extension`| +---------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`decomposition declarations are a C++17 extension`| +---------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`pack fold expression is a C++17 extension`| +--------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'begin' and 'end' returning different types (`:placeholder:`A` |nbsp| :diagtext:`and` |nbsp| :placeholder:`B`:diagtext:`) is a C++17 extension`| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`hexadecimal floating literals are a C++17 feature`| +----------------------------------------------------------------------------------------+ +----------------------------------------+--------------------+-------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'`|+------------------+|:diagtext:`' initialization statements are a C++17 extension`| | ||:diagtext:`if` || | | |+------------------+| | | ||:diagtext:`switch`|| | | |+------------------+| | +----------------------------------------+--------------------+-------------------------------------------------------------+ +-----------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`inline variables are a C++17 extension`| +-----------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`use of multiple declarators in a single using declaration is a C++17 extension`| +---------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`nested namespace definition is a C++17 extension; define each namespace separately`| +-------------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------+---------------------------+-----------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`attributes on` |nbsp| |+-------------------------+| |nbsp| :diagtext:`declaration are a C++17 extension`| | ||:diagtext:`a namespace` || | | |+-------------------------+| | | ||:diagtext:`an enumerator`|| | | |+-------------------------+| | +------------------------------------------------------------+---------------------------+-----------------------------------------------------+ +---------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`capture of '\*this' by copy is a C++17 extension`| +---------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`static\_assert with no message is a C++17 extension`| +------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`template template parameter using 'typename' is a C++17 extension`| +--------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`default scope specifier for attributes is a C++17 extension`| +--------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`pack expansion of using declaration is a C++17 extension`| +-----------------------------------------------------------------------------------------------+ -Wc++1y-extensions ------------------ Synonym for `-Wc++14-extensions`_. -Wc++1z-compat -------------- Synonym for `-Wc++17-compat`_. -Wc++1z-compat-mangling ----------------------- Synonym for `-Wc++17-compat-mangling`_. -Wc++1z-extensions ------------------ Synonym for `-Wc++17-extensions`_. -Wc++20-compat -------------- Some of the diagnostics controlled by this flag are enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`aggregate initialization of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`with user-declared constructors is incompatible with C++20`| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'consteval' specifier is incompatible with C++ standards before C++20`| +------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'constinit' specifier is incompatible with C++ standards before C++20`| +------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`this expression will be parsed as explicit(bool) in C++20`| +------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'<=>' is a single token in C++20; add a space to avoid a change in behavior`| +------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`type of UTF-8 string literal will change from array of const char to array of const char8\_t in C++20`| +--------------------------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' is a keyword in C++20`| +-------------------------------------------------------------------------------------------+ -Wc++20-compat-pedantic ----------------------- Synonym for `-Wc++20-compat`_. -Wc++20-designator ------------------ **Diagnostic text:** +------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`designated initializers are a C++20 extension`| +------------------------------------------------------------------------------------+ -Wc++20-extensions ------------------ Some of the diagnostics controlled by this flag are enabled by default. Also controls `-Wc++20-designator`_. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`use of function template name with no prior declaration in function call with explicit template arguments is a C++20 extension`| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`default member initializer for bit-field is a C++20 extension`| +----------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------+-------------------------+----------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`use of this statement in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is a C++20 extension`| | ||:diagtext:`function` || | | |+-----------------------+| | | ||:diagtext:`constructor`|| | | |+-----------------------+| | +-----------------------------------------------------------------------------------+-------------------------+----------------------------------------+ +----------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`constexpr constructor that does not initialize all members is a C++20 extension`| +----------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------+-------------------------+----------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`function try block in constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is a C++20 extension`| | ||:diagtext:`function` || | | |+-----------------------+| | | ||:diagtext:`constructor`|| | | |+-----------------------+| | +------------------------------------------------------------------------------+-------------------------+----------------------------------------+ +------------------------------------------------------------------------------------+-------------------------+----------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`uninitialized variable in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is a C++20 extension`| | ||:diagtext:`function` || | | |+-----------------------+| | | ||:diagtext:`constructor`|| | | |+-----------------------+| | +------------------------------------------------------------------------------------+-------------------------+----------------------------------------+ +---------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`constexpr union constructor that does not initialize any member is a C++20 extension`| +---------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`use of the` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute is a C++20 extension`| +---------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------+--------------------------------------------------------------+----------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`decomposition declaration declared` |nbsp| |+------------------------------------------------------------+| |nbsp| :diagtext:`is a C++20 extension`| | ||+------------------------------------------+ || | | |||:diagtext:`'`:placeholder:`B`:diagtext:`'`| || | | ||+------------------------------------------+ || | | |+------------------------------------------------------------+| | | ||+----------------------------------------------------------+|| | | |||:diagtext:`with '`:placeholder:`B`:diagtext:`' specifiers`||| | | ||+----------------------------------------------------------+|| | | |+------------------------------------------------------------+| | +---------------------------------------------------------------------------------+--------------------------------------------------------------+----------------------------------------+ +-------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`defaulted comparison operators are a C++20 extension`| +-------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`explicit capture of 'this' with a capture default of '=' is a C++20 extension`| +--------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`explicit(bool) is a C++20 extension`| +--------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`range-based for loop initialization statements are a C++20 extension`| +-----------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`initialized lambda pack captures are a C++20 extension`| +---------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`inline nested namespace definition is a C++20 extension`| +----------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`explicit template parameter list for lambdas is a C++20 extension`| +--------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`invoking a pointer to a 'const &' member function on an rvalue is a C++20 extension`| +--------------------------------------------------------------------------------------------------------------------------+ -Wc++2a-compat -------------- Synonym for `-Wc++20-compat`_. -Wc++2a-compat-pedantic ----------------------- Synonym for `-Wc++20-compat-pedantic`_. -Wc++2a-extensions ------------------ Synonym for `-Wc++20-extensions`_. -Wc++98-c++11-c++14-c++17-compat -------------------------------- **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`use of function template name with no prior function template declaration in function call with explicit template arguments is incompatible with C++ standards before C++20`| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`default member initializer for bit-field is incompatible with C++ standards before C++20`| +-------------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`use of this statement in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is incompatible with C++ standards before C++20`| | ||:diagtext:`function` || | | |+-----------------------+| | | ||:diagtext:`constructor`|| | | |+-----------------------+| | +-----------------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`constexpr constructor that does not initialize all members is incompatible with C++ standards before C++20`| +-------------------------------------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`function try block in constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is incompatible with C++ standards before C++20`| | ||:diagtext:`function` || | | |+-----------------------+| | | ||:diagtext:`constructor`|| | | |+-----------------------+| | +------------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+ +------------------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`uninitialized variable in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is incompatible with C++ standards before C++20`| | ||:diagtext:`function` || | | |+-----------------------+| | | ||:diagtext:`constructor`|| | | |+-----------------------+| | +------------------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`constexpr union constructor that does not initialize any member is incompatible with C++ standards before C++20`| +------------------------------------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`virtual constexpr functions are incompatible with C++ standards before C++20`| +-------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------+--------------------------------------------------------------+-------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`decomposition declaration declared` |nbsp| |+------------------------------------------------------------+| |nbsp| :diagtext:`is incompatible with C++ standards before C++20`| | ||+------------------------------------------+ || | | |||:diagtext:`'`:placeholder:`B`:diagtext:`'`| || | | ||+------------------------------------------+ || | | |+------------------------------------------------------------+| | | ||+----------------------------------------------------------+|| | | |||:diagtext:`with '`:placeholder:`B`:diagtext:`' specifiers`||| | | ||+----------------------------------------------------------+|| | | |+------------------------------------------------------------+| | +---------------------------------------------------------------------------------+--------------------------------------------------------------+-------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`defaulted comparison operators are incompatible with C++ standards before C++20`| +----------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------+--------------------------------------+----------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`explicitly defaulting this` |nbsp| |+------------------------------------+| |nbsp| :diagtext:`with a type different from the implicit type is incompatible with C++ standards before C++20`| | ||:diagtext:`default constructor` || | | |+------------------------------------+| | | ||:diagtext:`copy constructor` || | | |+------------------------------------+| | | ||:diagtext:`move constructor` || | | |+------------------------------------+| | | ||:diagtext:`copy assignment operator`|| | | |+------------------------------------+| | | ||:diagtext:`move assignment operator`|| | | |+------------------------------------+| | | ||:diagtext:`destructor` || | | |+------------------------------------+| | +-------------------------------------------------------------------------+--------------------------------------+----------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`explicit capture of 'this' with a capture default of '=' is incompatible with C++ standards before C++20`| +-----------------------------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`explicit(bool) is incompatible with C++ standards before C++20`| +-----------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`range-based for loop initialization statements are incompatible with C++ standards before C++20`| +--------------------------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`initialized lambda capture packs are incompatible with C++ standards before C++20`| +------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`inline nested namespace definition is incompatible with C++ standards before C++20`| +-------------------------------------------------------------------------------------------------------------------------+ +---------------------------+----------------------------------+-----------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| |+--------------------------------+| |nbsp| :diagtext:`of lambda is incompatible with C++ standards before C++20`| | ||:diagtext:`default construction`|| | | |+--------------------------------+| | | ||:diagtext:`assignment` || | | |+--------------------------------+| | +---------------------------+----------------------------------+-----------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`explicit template parameter list for lambdas is incompatible with C++ standards before C++20`| +-----------------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'<=>' operator is incompatible with C++ standards before C++20`| +-----------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'char8\_t' type specifier is incompatible with C++ standards before C++20`| +----------------------------------------------------------------------------------------------------------------+ -Wc++98-c++11-c++14-c++17-compat-pedantic ----------------------------------------- Also controls `-Wc++98-c++11-c++14-c++17-compat`_. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`designated initializers are incompatible with C++ standards before C++20`| +---------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`invoking a pointer to a 'const &' member function on an rvalue is incompatible with C++ standards before C++20`| +-----------------------------------------------------------------------------------------------------------------------------------------------------+ -Wc++98-c++11-c++14-compat -------------------------- **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`class template argument deduction is incompatible with C++ standards before C++17`|+---------------------------------------------------------------------------------+| | || || | |+---------------------------------------------------------------------------------+| | ||+-------------------------------------------------------------------------------+|| | |||:diagtext:`; for compatibility, use explicit type name` |nbsp| :placeholder:`B`||| | ||+-------------------------------------------------------------------------------+|| | |+---------------------------------------------------------------------------------+| +------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`constexpr if is incompatible with C++ standards before C++17`| +---------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`constexpr on lambda expressions is incompatible with C++ standards before C++17`| +----------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`decomposition declarations are incompatible with C++ standards before C++17`| +------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`pack fold expression is incompatible with C++ standards before C++17`| +-----------------------------------------------------------------------------------------------------------+ +---------------------------+--------------------+----------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| |+------------------+| |nbsp| :diagtext:`initialization statements are incompatible with C++ standards before C++17`| | ||:diagtext:`if` || | | |+------------------+| | | ||:diagtext:`switch`|| | | |+------------------+| | +---------------------------+--------------------+----------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`inline variables are incompatible with C++ standards before C++17`| +--------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`nested namespace definition is incompatible with C++ standards before C++17`| +------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`by value capture of '\*this' is incompatible with C++ standards before C++17`| +-------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`static\_assert with no message is incompatible with C++ standards before C++17`| +---------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`non-type template parameters declared with` |nbsp| :placeholder:`A` |nbsp| :diagtext:`are incompatible with C++ standards before C++17`| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`template template parameter using 'typename' is incompatible with C++ standards before C++17`| +-----------------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unicode literals are incompatible with C++ standards before C++17`| +--------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`default scope specifier for attributes is incompatible with C++ standards before C++17`| +-----------------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`use of multiple declarators in a single using declaration is incompatible with C++ standards before C++17`| +------------------------------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`pack expansion using declaration is incompatible with C++ standards before C++17`| +-----------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'begin' and 'end' returning different types (`:placeholder:`A` |nbsp| :diagtext:`and` |nbsp| :placeholder:`B`:diagtext:`) is incompatible with C++ standards before C++17`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wc++98-c++11-c++14-compat-pedantic ----------------------------------- Also controls `-Wc++98-c++11-c++14-compat`_. **Diagnostic text:** +------------------------------------------------------------+---------------------------+--------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`attributes on` |nbsp| |+-------------------------+| |nbsp| :diagtext:`declaration are incompatible with C++ standards before C++17`| | ||:diagtext:`a namespace` || | | |+-------------------------+| | | ||:diagtext:`an enumerator`|| | | |+-------------------------+| | +------------------------------------------------------------+---------------------------+--------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`hexadecimal floating literals are incompatible with C++ standards before C++17`| +---------------------------------------------------------------------------------------------------------------------+ -Wc++98-c++11-compat -------------------- **Diagnostic text:** +-----------------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`use of this statement in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is incompatible with C++ standards before C++14`| | ||:diagtext:`function` || | | |+-----------------------+| | | ||:diagtext:`constructor`|| | | |+-----------------------+| | +-----------------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`multiple return statements in constexpr function is incompatible with C++ standards before C++14`| +---------------------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`constexpr function with no return statements is incompatible with C++ standards before C++14`| +-----------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`variable declaration in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is incompatible with C++ standards before C++14`| | ||:diagtext:`function` || | | |+-----------------------+| | | ||:diagtext:`constructor`|| | | |+-----------------------+| | +----------------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+ +-----------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`type definition in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is incompatible with C++ standards before C++14`| | ||:diagtext:`function` || | | |+-----------------------+| | | ||:diagtext:`constructor`|| | | |+-----------------------+| | +-----------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'decltype(auto)' type specifier is incompatible with C++ standards before C++14`| +----------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`return type deduction is incompatible with C++ standards before C++14`| +------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`digit separators are incompatible with C++ standards before C++14`| +--------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`generic lambdas are incompatible with C++11`| +----------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`initialized lambda captures are incompatible with C++ standards before C++14`| +-------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`variable templates are incompatible with C++ standards before C++14`| +----------------------------------------------------------------------------------------------------------+ -Wc++98-c++11-compat-binary-literal ----------------------------------- **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`binary integer literals are incompatible with C++ standards before C++14`| +---------------------------------------------------------------------------------------------------------------+ -Wc++98-c++11-compat-pedantic ----------------------------- Controls `-Wc++98-c++11-compat`_, `-Wc++98-c++11-compat-binary-literal`_. -Wc++98-compat -------------- Also controls `-Wc++98-c++11-c++14-c++17-compat`_, `-Wc++98-c++11-c++14-compat`_, `-Wc++98-c++11-compat`_, `-Wc++98-compat-local-type-template-args`_, `-Wc++98-compat-unnamed-type-template-args`_. **Diagnostic text:** +-------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`alias declarations are incompatible with C++98`| +-------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'alignas' is incompatible with C++98`| +---------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`alignof expressions are incompatible with C++98`| +--------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`C++11 attribute syntax is incompatible with C++98`| +----------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'auto' type specifier is incompatible with C++98`| +---------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'constexpr' specifier is incompatible with C++98`| +---------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`constructor call from initializer list is incompatible with C++98`| +--------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'decltype' type specifier is incompatible with C++98`| +-------------------------------------------------------------------------------------------+ +---------------------------+-----------------------+--------------------------------------------------------------------+ |:warning:`warning:` |nbsp| |+---------------------+| |nbsp| :diagtext:`function definitions are incompatible with C++98`| | ||:diagtext:`defaulted`|| | | |+---------------------+| | | ||:diagtext:`deleted` || | | |+---------------------+| | +---------------------------+-----------------------+--------------------------------------------------------------------+ +------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`delegating constructors are incompatible with C++98`| +------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`scalar initialized from empty initializer list is incompatible with C++98`| +----------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`initializing` |nbsp| :placeholder:`A` |nbsp| :diagtext:`from an empty initializer list is incompatible with C++98`| +--------------------------------------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`enumeration types with a fixed underlying type are incompatible with C++98`| +-----------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`befriending enumeration type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is incompatible with C++98`| +-----------------------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`enumeration type in nested name specifier is incompatible with C++98`| +-----------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`explicit conversion functions are incompatible with C++98`| +------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`range-based for loop is incompatible with C++98`| +--------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`friend declaration naming a member of the declaring class is incompatible with C++98`| +---------------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`generalized initializer lists are incompatible with C++98`| +------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`jump from this goto statement to its label is incompatible with C++98`| +------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`jump from this` |nbsp| |+--------------------+| |nbsp| :diagtext:`goto statement to one of its possible targets is incompatible with C++98`| | ||:diagtext:`indirect`|| | | |+--------------------+| | | ||:diagtext:`asm` || | | |+--------------------+| | +-------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`initialization of initializer\_list object is incompatible with C++98`| +------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`inline namespaces are incompatible with C++98`| +------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`lambda expressions are incompatible with C++98`| +-------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'<::' is treated as digraph '<:' (aka '\[') followed by ':' in C++98`| +-----------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`literal operators are incompatible with C++98`| +------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`universal character name referring to a control character is incompatible with C++98`| +---------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`specifying character '`:placeholder:`A`:diagtext:`' with a universal character name is incompatible with C++98`| +-----------------------------------------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`noexcept specifications are incompatible with C++98`| +------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`noexcept expressions are incompatible with C++98`| +---------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`use of non-static data member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in an unevaluated context is incompatible with C++98`| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`non-class friend type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is incompatible with C++98`| +----------------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`in-class initialization of non-static data members is incompatible with C++98`| +--------------------------------------------------------------------------------------------------------------------+ +---------------------------+------------------------------+------------------------------------------------------------------------------------------------+--------------------------------------+----------------------------------------------+ |:warning:`warning:` |nbsp| |+----------------------------+| |nbsp| :diagtext:`member` |nbsp| :placeholder:`B` |nbsp| :diagtext:`with a non-trivial` |nbsp| |+------------------------------------+| |nbsp| :diagtext:`is incompatible with C++98`| | ||:diagtext:`anonymous struct`|| ||:diagtext:`default constructor` || | | |+----------------------------+| |+------------------------------------+| | | ||:diagtext:`union` || ||:diagtext:`copy constructor` || | | |+----------------------------+| |+------------------------------------+| | | | | ||:diagtext:`move constructor` || | | | | |+------------------------------------+| | | | | ||:diagtext:`copy assignment operator`|| | | | | |+------------------------------------+| | | | | ||:diagtext:`move assignment operator`|| | | | | |+------------------------------------+| | | | | ||:diagtext:`destructor` || | | | | |+------------------------------------+| | +---------------------------+------------------------------+------------------------------------------------------------------------------------------------+--------------------------------------+----------------------------------------------+ +---------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'nullptr' is incompatible with C++98`| +---------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' keyword is incompatible with C++98`| +--------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`passing object of trivial but non-POD type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`through variadic` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is incompatible with C++98`| | ||:diagtext:`function` || | | |+-----------------------+| | | ||:diagtext:`block` || | | |+-----------------------+| | | ||:diagtext:`method` || | | |+-----------------------+| | | ||:diagtext:`constructor`|| | | |+-----------------------+| | +-----------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------+ +--------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`raw string literals are incompatible with C++98`| +--------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`reference qualifiers on functions are incompatible with C++98`| +----------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`reference initialized from initializer list is incompatible with C++98`| +-------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`rvalue references are incompatible with C++98`| +------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`scoped enumerations are incompatible with C++98`| +--------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`substitution failure due to access control is incompatible with C++98`| +------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`static\_assert declarations are incompatible with C++98`| +----------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`static data member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in union is incompatible with C++98`| +----------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`jump from switch statement to this case label is incompatible with C++98`| +---------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`redundant parentheses surrounding address non-type template argument are incompatible with C++98`| +---------------------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`use of null pointer as non-type template argument is incompatible with C++98`| +-------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`non-type template argument referring to` |nbsp| |+--------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`with internal linkage is incompatible with C++98`| | ||:diagtext:`function`|| | | |+--------------------+| | | ||:diagtext:`object` || | | |+--------------------+| | +--------------------------------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`use of 'template' keyword outside of a template is incompatible with C++98`| +-----------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`default template arguments for a function template are incompatible with C++98`| +---------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`trailing return types are incompatible with C++98`| +----------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`consecutive right angle brackets are incompatible with C++98 (use '> >')`| +---------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`use of 'typename' outside of a template is incompatible with C++98`| +---------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------+-----------------------+------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`befriending` |nbsp| :placeholder:`B` |nbsp| :diagtext:`without '`|+---------------------+|:diagtext:`' keyword is incompatible with C++98`| | ||:diagtext:`struct` || | | |+---------------------+| | | ||:diagtext:`interface`|| | | |+---------------------+| | | ||:diagtext:`union` || | | |+---------------------+| | | ||:diagtext:`class` || | | |+---------------------+| | | ||:diagtext:`enum` || | | |+---------------------+| | +-------------------------------------------------------------------------------------------------------+-----------------------+------------------------------------------------+ +-------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`using this character in an identifier is incompatible with C++98`| +-------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unicode literals are incompatible with C++98`| +-----------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' type specifier is incompatible with C++98`| +---------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`inheriting constructors are incompatible with C++98`| +------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`variadic templates are incompatible with C++98`| +-------------------------------------------------------------------------------------+ -Wc++98-compat-bind-to-temporary-copy ------------------------------------- **Diagnostic text:** +---------------------------+------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------+----------------------------+ |:warning:`warning:` |nbsp| |+----------------------------------------------------+| |nbsp| :diagtext:`of type` |nbsp| :placeholder:`C` |nbsp| :diagtext:`when binding a reference to a temporary would` |nbsp| |+----------------------------------------------+| |nbsp| :diagtext:`in C++98`| | ||:diagtext:`copying variable` || ||:diagtext:`invoke an inaccessible constructor`|| | | |+----------------------------------------------------+| |+----------------------------------------------+| | | ||:diagtext:`copying parameter` || ||:diagtext:`find no viable constructor` || | | |+----------------------------------------------------+| |+----------------------------------------------+| | | ||:diagtext:`returning object` || ||:diagtext:`find ambiguous constructors` || | | |+----------------------------------------------------+| |+----------------------------------------------+| | | ||:diagtext:`initializing statement expression result`|| ||:diagtext:`invoke a deleted constructor` || | | |+----------------------------------------------------+| |+----------------------------------------------+| | | ||:diagtext:`throwing object` || | | | | |+----------------------------------------------------+| | | | | ||:diagtext:`copying member subobject` || | | | | |+----------------------------------------------------+| | | | | ||:diagtext:`copying array element` || | | | | |+----------------------------------------------------+| | | | | ||:diagtext:`allocating object` || | | | | |+----------------------------------------------------+| | | | | ||:diagtext:`copying temporary` || | | | | |+----------------------------------------------------+| | | | | ||:diagtext:`initializing base subobject` || | | | | |+----------------------------------------------------+| | | | | ||:diagtext:`initializing vector element` || | | | | |+----------------------------------------------------+| | | | | ||:diagtext:`capturing value` || | | | | |+----------------------------------------------------+| | | | +---------------------------+------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------+----------------------------+ -Wc++98-compat-extra-semi ------------------------- **Diagnostic text:** +-------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`extra ';' outside of a function is incompatible with C++98`| +-------------------------------------------------------------------------------------------------+ -Wc++98-compat-local-type-template-args --------------------------------------- **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`local type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`as template argument is incompatible with C++98`| +--------------------------------------------------------------------------------------------------------------------------------------------+ -Wc++98-compat-pedantic ----------------------- Also controls `-Wc++98-c++11-c++14-c++17-compat-pedantic`_, `-Wc++98-c++11-c++14-compat-pedantic`_, `-Wc++98-c++11-compat-pedantic`_, `-Wc++98-compat`_, `-Wc++98-compat-bind-to-temporary-copy`_, `-Wc++98-compat-extra-semi`_. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`implicit conversion from array size expression of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| |+-----------------------+| |nbsp| :diagtext:`type` |nbsp| :placeholder:`C` |nbsp| :diagtext:`is incompatible with C++98`| | ||:diagtext:`integral` || | | |+-----------------------+| | | ||:diagtext:`enumeration`|| | | |+-----------------------+| | +---------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`cast between pointer-to-function and pointer-to-object is incompatible with C++98`| +------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`empty macro arguments are incompatible with C++98`| +----------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`commas at the end of enumerator lists are incompatible with C++98`| +--------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`extern templates are incompatible with C++98`| +-----------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'long long' is incompatible with C++98`| +-----------------------------------------------------------------------------+ +----------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`C++98 requires newline at end of file`| +----------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`#line number greater than 32767 is incompatible with C++98`| +-------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`variadic macros are incompatible with C++98`| +----------------------------------------------------------------------------------+ -Wc++98-compat-unnamed-type-template-args ----------------------------------------- **Diagnostic text:** +---------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unnamed type as template argument is incompatible with C++98`| +---------------------------------------------------------------------------------------------------+ -Wc11-extensions ---------------- **Diagnostic text:** +---------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`anonymous unions are a C11 extension`| +---------------------------------------------------------------------------+ +----------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`anonymous structs are a C11 extension`| +----------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' is a C11 extension`| +----------------------------------------------------------------------------------------+ -Wc2x-extensions ---------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`omitting the parameter name in a function definition is a C2x extension`| +--------------------------------------------------------------------------------------------------------------+ -Wc99-compat ------------ Some of the diagnostics controlled by this flag are enabled by default. **Diagnostic text:** +---------------------------+--------------------------------------------------------+--------------------------------------------+ |:warning:`warning:` |nbsp| |+------------------------------------------------------+| |nbsp| :diagtext:`is incompatible with C99`| | ||:diagtext:`using this character in an identifier` || | | |+------------------------------------------------------+| | | ||:diagtext:`starting an identifier with this character`|| | | |+------------------------------------------------------+| | +---------------------------+--------------------------------------------------------+--------------------------------------------+ +---------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unicode literals are incompatible with C99`| +---------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+----------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`integer literal is too large to be represented in type 'long', interpreting as 'unsigned long' per C89; this literal will` |nbsp| |+---------------------------------+| |nbsp| :diagtext:`in C99 onwards`| | ||:diagtext:`have type 'long long'`|| | | |+---------------------------------+| | | ||:diagtext:`be ill-formed` || | | |+---------------------------------+| | +------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+----------------------------------+ -Wc99-designator ---------------- Some of the diagnostics controlled by this flag are enabled by default. Also controls `-Wc++20-designator`_. **Diagnostic text:** +--------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`designated initializers are a C99 feature`| +--------------------------------------------------------------------------------+ +----------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`array designators are a C99 extension`| +----------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`mixture of designated and non-designated initializers in the same initializer list is a C99 extension`| +--------------------------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`nested designators are a C99 extension`| +-----------------------------------------------------------------------------+ -Wc99-extensions ---------------- Some of the diagnostics controlled by this flag are enabled by default. Also controls `-Wc99-designator`_. **Diagnostic text:** +-----------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`initializer for aggregate is not a compile-time constant`| +-----------------------------------------------------------------------------------------------+ +---------------------------+----------------------------------+------------------------------+-----------------------+----------------------------+ |:warning:`warning:` |nbsp| |+--------------------------------+|:diagtext:`array size` |nbsp| |+---------------------+|:diagtext:`is a C99 feature`| | ||:diagtext:`qualifier in` |nbsp| || || || | | |+--------------------------------+| |+---------------------+| | | ||:diagtext:`static` |nbsp| || || || | | |+--------------------------------+| |+---------------------+| | | || || ||:diagtext:`'\[\*\] '`|| | | |+--------------------------------+| |+---------------------+| | +---------------------------+----------------------------------+------------------------------+-----------------------+----------------------------+ +-----------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`compound literals are a C99-specific feature`| +-----------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' is a C99 extension`| +----------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`flexible array members are a C99 feature`| +-------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`variable declaration in for loop is a C99-specific feature`| +-------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ISO C99 requires whitespace after the macro name`| +---------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`empty macro arguments are a C99 feature`| +------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`commas at the end of enumerator lists are a C99-specific feature`| +-------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`hexadecimal floating constants are a C99 feature`| +---------------------------------------------------------------------------------------+ -Wcall-to-pure-virtual-from-ctor-dtor ------------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`call to pure virtual member function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has undefined behavior; overrides of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in subclasses are not available in the` |nbsp| |+-----------------------+| |nbsp| :diagtext:`of` |nbsp| :placeholder:`C`| | ||:diagtext:`constructor`|| | | |+-----------------------+| | | ||:diagtext:`destructor` || | | |+-----------------------+| | +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------+ -Wcast-align ------------ **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`cast from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`increases required alignment from` |nbsp| :placeholder:`C` |nbsp| :diagtext:`to` |nbsp| :placeholder:`D`| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wcast-calling-convention ------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`cast between incompatible calling conventions '`:placeholder:`A`:diagtext:`' and '`:placeholder:`B`:diagtext:`'; calls through this pointer may abort at runtime`| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wcast-of-sel-type ------------------ This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`cast of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is deprecated; use sel\_getName instead`| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wcast-qual ----------- **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`cast from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`drops` |nbsp| |+-----------------------------------------+| | ||:diagtext:`const and volatile qualifiers`|| | |+-----------------------------------------+| | ||:diagtext:`const qualifier` || | |+-----------------------------------------+| | ||:diagtext:`volatile qualifier` || | |+-----------------------------------------+| +-------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`cast from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`must have all intermediate pointers const qualified to be safe`| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wcast-qual-unrelated --------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------+-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ISO C++ does not allow` |nbsp| |+---------------------------------+| |nbsp| :diagtext:`from` |nbsp| :placeholder:`B` |nbsp| :diagtext:`to` |nbsp| :placeholder:`C` |nbsp| :diagtext:`because it casts away qualifiers, even though the source and destination types are unrelated`| | ||:diagtext:`const\_cast` || | | |+---------------------------------+| | | ||:diagtext:`static\_cast` || | | |+---------------------------------+| | | ||:diagtext:`reinterpret\_cast` || | | |+---------------------------------+| | | ||:diagtext:`dynamic\_cast` || | | |+---------------------------------+| | | ||:diagtext:`C-style cast` || | | |+---------------------------------+| | | ||:diagtext:`functional-style cast`|| | | |+---------------------------------+| | +---------------------------------------------------------------------+-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wchar-align ------------ This diagnostic flag exists for GCC compatibility, and has no effect in Clang. -Wchar-subscripts ----------------- **Diagnostic text:** +------------------------------------------------------------+-------------------------+-------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`array section` |nbsp| |+-----------------------+| |nbsp| :diagtext:`is of type 'char'`| | ||:diagtext:`lower bound`|| | | |+-----------------------+| | | ||:diagtext:`length` || | | |+-----------------------+| | +------------------------------------------------------------+-------------------------+-------------------------------------+ +------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`array subscript is of type 'char'`| +------------------------------------------------------------------------+ -Wclang-cl-pch -------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`support for '/Yc' with more than one source file not implemented yet; flag ignored`| +-------------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`support for '/Yc' and '/Yu' with different filenames not implemented yet; flags ignored`| +------------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`#pragma hdrstop filename not supported, /Fp can be used to specify precompiled header filename`| +-------------------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`definition of macro` |nbsp| :placeholder:`A` |nbsp| :diagtext:`does not match definition in precompiled header`| +-----------------------------------------------------------------------------------------------------------------------------------------------------+ -Wclass-varargs --------------- Some of the diagnostics controlled by this flag are enabled by default. Also controls `-Wnon-pod-varargs`_. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`passing object of class type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`through variadic` |nbsp| |+-----------------------+|+--------------------------------------------------------------------+| | ||:diagtext:`function` ||| || | |+-----------------------+|+--------------------------------------------------------------------+| | ||:diagtext:`block` |||+------------------------------------------------------------------+|| | |+-----------------------+|||:diagtext:`; did you mean to call '`:placeholder:`D`:diagtext:`'?`||| | ||:diagtext:`method` |||+------------------------------------------------------------------+|| | |+-----------------------+|+--------------------------------------------------------------------+| | ||:diagtext:`constructor`|| | | |+-----------------------+| | +---------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------+ -Wcmse-union-leak ----------------- This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------------+-------------------------------------------------+----------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`passing union across security boundary via` |nbsp| |+-----------------------------------------------+| |nbsp| :diagtext:`may leak information`| | ||+---------------------------------------------+|| | | |||:diagtext:`parameter` |nbsp| :placeholder:`B`||| | | ||+---------------------------------------------+|| | | |+-----------------------------------------------+| | | ||:diagtext:`return value` || | | |+-----------------------------------------------+| | +-----------------------------------------------------------------------------------------+-------------------------------------------------+----------------------------------------+ -Wcomma ------- **Diagnostic text:** +-----------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`possible misuse of comma operator here`| +-----------------------------------------------------------------------------+ -Wcomment --------- Some of the diagnostics controlled by this flag are enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`escaped newline between \*/ characters at block comment end`| +--------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`// comments are not allowed in this language`| +-----------------------------------------------------------------------------------+ +------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`multi-line // comment`| +------------------------------------------------------------+ +-----------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'/\*' within block comment`| +-----------------------------------------------------------------+ -Wcomments ---------- Synonym for `-Wcomment`_. -Wcompare-distinct-pointer-types -------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`comparison of distinct pointer types`| +---------------------------------------------------------------------------+ -Wcomplex-component-init ------------------------ **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`complex initialization specifying real and imaginary components is an extension`| +----------------------------------------------------------------------------------------------------------------------+ -Wconcepts-ts-compat -------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ISO C++20 does not permit the 'bool' keyword after 'concept'`| +---------------------------------------------------------------------------------------------------+ -Wconditional-type-mismatch --------------------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`pointer/integer type mismatch in conditional expression`| +----------------------------------------------------------------------------------------------+ -Wconditional-uninitialized --------------------------- **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------+-------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`may be uninitialized when` |nbsp| |+-----------------------------+| | ||:diagtext:`used here` || | |+-----------------------------+| | ||:diagtext:`captured by block`|| | |+-----------------------------+| +----------------------------------------------------------------------------------------------------------------------------+-------------------------------+ -Wconfig-macros --------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------+------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------+---------------------------------------------------------+ |:warning:`warning:` |nbsp| |+----------------------+| |nbsp| :diagtext:`of configuration macro '`:placeholder:`B`:diagtext:`' has no effect on the import of '`:placeholder:`C`:diagtext:`'; pass '`|+------------------------------------------------+|:diagtext:`' on the command line to configure the module`| | ||:diagtext:`definition`|| ||+----------------------------------------------+|| | | |+----------------------+| |||:diagtext:`-D`:placeholder:`B`:diagtext:`=...`||| | | ||:diagtext:`#undef` || ||+----------------------------------------------+|| | | |+----------------------+| |+------------------------------------------------+| | | | | ||+------------------------------+ || | | | | |||:diagtext:`-U`:placeholder:`B`| || | | | | ||+------------------------------+ || | | | | |+------------------------------------------------+| | +---------------------------+------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------+---------------------------------------------------------+ -Wconstant-conversion --------------------- This diagnostic is enabled by default. Also controls `-Wbitfield-constant-conversion`_, `-Wobjc-bool-constant-conversion`_. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`implicit conversion from` |nbsp| :placeholder:`C` |nbsp| :diagtext:`to` |nbsp| :placeholder:`D` |nbsp| :diagtext:`changes value from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wconstant-evaluated -------------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' will always evaluate to 'true' in a manifestly constant-evaluated expression`| +--------------------------------------------------------------------------------------------------------------------------------------------------+ -Wconstant-logical-operand -------------------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`use of logical '`:placeholder:`A`:diagtext:`' with constant operand`| +----------------------------------------------------------------------------------------------------------+ -Wconstexpr-not-const --------------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'constexpr' non-static member function will not be implicitly 'const' in C++14; add 'const' to avoid a change in behavior`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wconsumed ---------- **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`consumed analysis attribute is attached to member of class` |nbsp| :placeholder:`A` |nbsp| :diagtext:`which isn't marked as consumable`| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`state of variable '`:placeholder:`A`:diagtext:`' must match at the entry and exit of loop`| +--------------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`parameter '`:placeholder:`A`:diagtext:`' not in expected state when the function returns: expected '`:placeholder:`B`:diagtext:`', observed '`:placeholder:`C`:diagtext:`'`| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`argument not in expected state; expected '`:placeholder:`A`:diagtext:`', observed '`:placeholder:`B`:diagtext:`'`| +-------------------------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`return state set for an unconsumable type '`:placeholder:`A`:diagtext:`'`| +---------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`return value not in expected state; expected '`:placeholder:`A`:diagtext:`', observed '`:placeholder:`B`:diagtext:`'`| +-----------------------------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`invalid invocation of method '`:placeholder:`A`:diagtext:`' on object '`:placeholder:`B`:diagtext:`' while it is in the '`:placeholder:`C`:diagtext:`' state`| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`invalid invocation of method '`:placeholder:`A`:diagtext:`' on a temporary object while it is in the '`:placeholder:`B`:diagtext:`' state`| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wconversion ------------ Some of the diagnostics controlled by this flag are enabled by default. Also controls `-Wbitfield-enum-conversion`_, `-Wbool-conversion`_, `-Wconstant-conversion`_, `-Wenum-conversion`_, `-Wfloat-conversion`_, `-Wimplicit-float-conversion`_, `-Wimplicit-int-conversion`_, `-Wint-conversion`_, `-Wliteral-conversion`_, `-Wnon-literal-null-conversion`_, `-Wnull-conversion`_, `-Wobjc-literal-conversion`_, `-Wshorten-64-to-32`_, `-Wsign-conversion`_, `-Wstring-conversion`_. **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`implicit conversion discards imaginary component:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`| +--------------------------------------------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`implicit conversion turns vector to scalar:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`| +--------------------------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`passing non-generic address space pointer to` |nbsp| :placeholder:`A` |nbsp| :diagtext:`may cause dynamic conversion affecting performance`| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`non-type template argument with value '`:placeholder:`A`:diagtext:`' converted to '`:placeholder:`B`:diagtext:`' for unsigned template parameter of type` |nbsp| :placeholder:`C`| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`non-type template argument value '`:placeholder:`A`:diagtext:`' truncated to '`:placeholder:`B`:diagtext:`' for template parameter of type` |nbsp| :placeholder:`C`| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wconversion-null ----------------- Synonym for `-Wnull-conversion`_. -Wcoroutine ----------- Synonym for `-Wcoroutine-missing-unhandled-exception`_. -Wcoroutine-missing-unhandled-exception --------------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is required to declare the member 'unhandled\_exception()' when exceptions are enabled`| +-----------------------------------------------------------------------------------------------------------------------------------------------------+ -Wcovered-switch-default ------------------------ **Diagnostic text:** +--------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`default label in switch which covers all enumeration values`| +--------------------------------------------------------------------------------------------------+ -Wcpp ----- Synonym for `-W#warnings`_. -Wcstring-format-directive -------------------------- **Diagnostic text:** +------------------------------------------------------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------------+------------------------+ |:warning:`warning:` |nbsp| :diagtext:`using` |nbsp| :placeholder:`A` |nbsp| :diagtext:`directive in` |nbsp| |+--------------------+| |nbsp| :diagtext:`which is being passed as a formatting argument to the formatting` |nbsp| |+----------------------+| | ||:diagtext:`NSString`|| ||:diagtext:`method` || | |+--------------------+| |+----------------------+| | ||:diagtext:`CFString`|| ||:diagtext:`CFfunction`|| | |+--------------------+| |+----------------------+| +------------------------------------------------------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------------+------------------------+ -Wctad-maybe-unsupported ------------------------ **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`may not intend to support class template argument deduction`| +--------------------------------------------------------------------------------------------------------------------------+ -Wctor-dtor-privacy ------------------- This diagnostic flag exists for GCC compatibility, and has no effect in Clang. -Wctu ----- This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`imported AST from '`:placeholder:`A`:diagtext:`' had been generated for a different target, current:` |nbsp| :placeholder:`B`:diagtext:`, imported:` |nbsp| :placeholder:`C`| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wcuda-compat ------------- Some of the diagnostics controlled by this flag are enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute parameter` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is negative and will be ignored`| +-------------------------------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`nvcc does not allow '\_\_`:placeholder:`A`:diagtext:`\_\_' to appear after '()' in lambdas`| +---------------------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ignored 'inline' attribute on kernel function` |nbsp| :placeholder:`A`| +------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`kernel function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a member function; this may not be accepted by nvcc`| +--------------------------------------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`argument to '#pragma unroll' should not be in parentheses in CUDA C/C++`| +--------------------------------------------------------------------------------------------------------------+ -Wcustom-atomic-properties -------------------------- **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------+--------------------+----------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`atomic by default property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has a user defined` |nbsp| |+------------------+| |nbsp| :diagtext:`(property should be marked 'atomic' if this is intended)`| | ||:diagtext:`getter`|| | | |+------------------+| | | ||:diagtext:`setter`|| | | |+------------------+| | +---------------------------------------------------------------------------------------------------------------------------------------+--------------------+----------------------------------------------------------------------------+ -Wdangling ---------- This diagnostic is enabled by default. Also controls `-Wdangling-field`_, `-Wdangling-gsl`_, `-Wdangling-initializer-list`_, `-Wreturn-stack-address`_. **Diagnostic text:** +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------+----------------------------+---------------------------------------------------------------+ |:warning:`warning:` |nbsp| |+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| |nbsp| |+--------------------------+|:diagtext:`will be destroyed at the end of the full-expression`| | ||+-----------------------------+---------------------------------------------------------+--------+------------------------------------------------------------------------+|| ||+------------------------+|| | | |||:diagtext:`temporary` |nbsp| |+-------------------------------------------------------+| |nbsp| |+----------------------------------------------------------------------+||| |||:placeholder:`D` |nbsp| ||| | | ||| ||:diagtext:`whose address is used as value of` || ||+-------------------------------+------------------------------------+|||| ||+------------------------+|| | | ||| |+-------------------------------------------------------+| |||+-----------------------------+|:diagtext:`member of local variable`||||| |+--------------------------+| | | ||| ||+--------------------------------+--------------------+|| |||| || ||||| || || | | ||| |||+------------------------------+|:diagtext:`bound to`||| |||+-----------------------------+| ||||| |+--------------------------+| | | ||| |||| || ||| ||||:diagtext:`reference` |nbsp| || ||||| | | | | ||| |||+------------------------------+| ||| |||+-----------------------------+| ||||| | | | | ||| ||||:diagtext:`implicitly` |nbsp| || ||| ||+-------------------------------+------------------------------------+|||| | | | | ||| |||+------------------------------+| ||| |+----------------------------------------------------------------------+||| | | | | ||| ||+--------------------------------+--------------------+|| ||+-------------------------+-----------------------+ |||| | | | | ||| |+-------------------------------------------------------+| |||:diagtext:`local` |nbsp| |+---------------------+| |||| | | | | ||| | | ||| ||:diagtext:`variable` || |||| | | | | ||| | | ||| |+---------------------+| |||| | | | | ||| | | ||| ||:diagtext:`reference`|| |||| | | | | ||| | | ||| |+---------------------+| |||| | | | | ||| | | ||+-------------------------+-----------------------+ |||| | | | | ||| | | |+----------------------------------------------------------------------+||| | | | | ||+-----------------------------+---------------------------------------------------------+--------+------------------------------------------------------------------------+|| | | | | |+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| | | | | ||+---------------------------------+----------------------------------------------------------+ || | | | | |||:diagtext:`array backing` |nbsp| |+--------------------------------------------------------+| || | | | | ||| ||:diagtext:`initializer list subobject of local variable`|| || | | | | ||| |+--------------------------------------------------------+| || | | | | ||| ||:diagtext:`local initializer list` || || | | | | ||| |+--------------------------------------------------------+| || | | | | ||+---------------------------------+----------------------------------------------------------+ || | | | | |+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| | | | +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------+----------------------------+---------------------------------------------------------------+ +---------------------------------------------------------------------------+-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+---------------------------+--------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`sorry, lifetime extension of` |nbsp| |+---------------------------------------------+| |nbsp| :diagtext:`created by aggregate initialization using default member initializer is not supported; lifetime of` |nbsp| |+-------------------------+| |nbsp| :diagtext:`will end at the end of the full-expression`| | ||:diagtext:`temporary` || ||:diagtext:`temporary` || | | |+---------------------------------------------+| |+-------------------------+| | | ||:diagtext:`backing array of initializer list`|| ||:diagtext:`backing array`|| | | |+---------------------------------------------+| |+-------------------------+| | +---------------------------------------------------------------------------+-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+---------------------------+--------------------------------------------------------------+ -Wdangling-else --------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`add explicit braces to avoid dangling else`| +---------------------------------------------------------------------------------+ -Wdangling-field ---------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------+-----------------------+------------------------+ |:warning:`warning:` |nbsp| :diagtext:`binding reference member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to stack allocated` |nbsp| |+---------------------+| |nbsp| :placeholder:`B`| | ||:diagtext:`variable` || | | |+---------------------+| | | ||:diagtext:`parameter`|| | | |+---------------------+| | +-------------------------------------------------------------------------------------------------------------------------------------+-----------------------+------------------------+ +---------------------------+--------------------------------------------------------+--------+----------------------------------+--------------------------------------------------+----------------------+------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| |+------------------------------------------------------+| |nbsp| |+--------------------------------+|:diagtext:`member` |nbsp| :placeholder:`A` |nbsp| |+--------------------+| |nbsp| :diagtext:`a temporary object whose lifetime is shorter than the lifetime of the constructed object`| | ||:diagtext:`reference` || || || ||:diagtext:`binds to`|| | | |+------------------------------------------------------+| |+--------------------------------+| |+--------------------+| | | ||:diagtext:`backing array for 'std::initializer\_list'`|| ||:diagtext:`subobject of` |nbsp| || ||:diagtext:`is` || | | |+------------------------------------------------------+| |+--------------------------------+| |+--------------------+| | +---------------------------+--------------------------------------------------------+--------+----------------------------------+--------------------------------------------------+----------------------+------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+------------------------+ |:warning:`warning:` |nbsp| :diagtext:`initializing pointer member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`with the stack address of` |nbsp| |+---------------------+| |nbsp| :placeholder:`B`| | ||:diagtext:`variable` || | | |+---------------------+| | | ||:diagtext:`parameter`|| | | |+---------------------+| | +-----------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`temporary bound to reference member of allocated object will be destroyed at the end of the full-expression`| +--------------------------------------------------------------------------------------------------------------------------------------------------+ -Wdangling-gsl -------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`object backing the pointer will be destroyed at the end of the full-expression`| +---------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`initializing pointer member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to point to a temporary object whose lifetime is shorter than the lifetime of the constructed object`| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wdangling-initializer-list --------------------------- This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------+----------------------------------------------------------------+-----------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`array backing` |nbsp| |+--------------------------------------------------------------+| |nbsp| :diagtext:`will be destroyed at the end of the full-expression`| | ||:diagtext:`initializer list subobject of the allocated object`|| | | |+--------------------------------------------------------------+| | | ||:diagtext:`the allocated initializer list` || | | |+--------------------------------------------------------------+| | +------------------------------------------------------------+----------------------------------------------------------------+-----------------------------------------------------------------------+ -Wdarwin-sdk-settings --------------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`SDK settings were ignored as 'SDKSettings.json' could not be parsed`| +----------------------------------------------------------------------------------------------------------+ -Wdate-time ----------- **Diagnostic text:** +------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`expansion of date or time macro is not reproducible`| +------------------------------------------------------------------------------------------+ -Wdealloc-in-category --------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`-dealloc is being overridden in a category`| +---------------------------------------------------------------------------------+ -Wdebug-compression-unavailable ------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`cannot compress debug sections (zlib not installed)`| +------------------------------------------------------------------------------------------+ -Wdeclaration-after-statement ----------------------------- **Diagnostic text:** +-----------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ISO C90 forbids mixing declarations and code`| +-----------------------------------------------------------------------------------+ -Wdefaulted-function-deleted ---------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------+------------------------+--------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`explicitly defaulted` |nbsp| |+----------------------+| |nbsp| :diagtext:`comparison operator` |nbsp| :diagtext:`is implicitly deleted`| | ||:diagtext:`` || | | |+----------------------+| | | ||:diagtext:`equality` || | | |+----------------------+| | | ||:diagtext:`three-way` || | | |+----------------------+| | | ||:diagtext:`equality` || | | |+----------------------+| | | ||:diagtext:`relational`|| | | |+----------------------+| | +-------------------------------------------------------------------+------------------------+--------------------------------------------------------------------------------+ +-------------------------------------------------------------------+--------------------------------------+-----------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`explicitly defaulted` |nbsp| |+------------------------------------+| |nbsp| :diagtext:`is implicitly deleted`| | ||:diagtext:`default constructor` || | | |+------------------------------------+| | | ||:diagtext:`copy constructor` || | | |+------------------------------------+| | | ||:diagtext:`move constructor` || | | |+------------------------------------+| | | ||:diagtext:`copy assignment operator`|| | | |+------------------------------------+| | | ||:diagtext:`move assignment operator`|| | | |+------------------------------------+| | | ||:diagtext:`destructor` || | | |+------------------------------------+| | +-------------------------------------------------------------------+--------------------------------------+-----------------------------------------+ -Wdelegating-ctor-cycles ------------------------ This diagnostic is an error by default, but the flag ``-Wno-delegating-ctor-cycles`` can be used to disable the error. **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------------+ |:error:`error:` |nbsp| :diagtext:`constructor for` |nbsp| :placeholder:`A` |nbsp| :diagtext:`creates a delegation cycle`| +------------------------------------------------------------------------------------------------------------------------+ -Wdelete-abstract-non-virtual-dtor ---------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------+------------------------+------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| |+----------------------+| |nbsp| :diagtext:`called on` |nbsp| :placeholder:`B` |nbsp| :diagtext:`that is abstract but has non-virtual destructor`| | ||:diagtext:`delete` || | | |+----------------------+| | | ||:diagtext:`destructor`|| | | |+----------------------+| | +---------------------------+------------------------+------------------------------------------------------------------------------------------------------------------------+ -Wdelete-incomplete ------------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`cannot delete expression with pointer-to-'void' type` |nbsp| :placeholder:`A`| +-------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`deleting pointer to incomplete type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`may cause undefined behavior`| +--------------------------------------------------------------------------------------------------------------------------------------------------+ -Wdelete-non-abstract-non-virtual-dtor -------------------------------------- **Diagnostic text:** +---------------------------+------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| |+----------------------+| |nbsp| :diagtext:`called on non-final` |nbsp| :placeholder:`B` |nbsp| :diagtext:`that has virtual functions but non-virtual destructor`| | ||:diagtext:`delete` || | | |+----------------------+| | | ||:diagtext:`destructor`|| | | |+----------------------+| | +---------------------------+------------------------+----------------------------------------------------------------------------------------------------------------------------------------+ -Wdelete-non-virtual-dtor ------------------------- Some of the diagnostics controlled by this flag are enabled by default. Controls `-Wdelete-abstract-non-virtual-dtor`_, `-Wdelete-non-abstract-non-virtual-dtor`_. -Wdeprecated ------------ Some of the diagnostics controlled by this flag are enabled by default. Also controls `-Wdeprecated-anon-enum-enum-conversion`_, `-Wdeprecated-array-compare`_, `-Wdeprecated-attributes`_, `-Wdeprecated-comma-subscript`_, `-Wdeprecated-copy`_, `-Wdeprecated-copy-dtor`_, `-Wdeprecated-declarations`_, `-Wdeprecated-dynamic-exception-spec`_, `-Wdeprecated-enum-compare`_, `-Wdeprecated-enum-compare-conditional`_, `-Wdeprecated-enum-enum-conversion`_, `-Wdeprecated-enum-float-conversion`_, `-Wdeprecated-increment-bool`_, `-Wdeprecated-register`_, `-Wdeprecated-this-capture`_, `-Wdeprecated-volatile`_, `-Wdeprecated-writable-strings`_. **Diagnostic text:** +---------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`-O4 is equivalent to -O3`| +---------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`access declarations are deprecated; use using declarations instead`| +---------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`out-of-line definition of constexpr static data member is redundant in C++17 and is deprecated`| +-------------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`argument '`:placeholder:`A`:diagtext:`' is deprecated, use '`:placeholder:`B`:diagtext:`' instead`| +----------------------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`treating '`:placeholder:`A`:diagtext:`' input as '`:placeholder:`B`:diagtext:`' when in C++ mode, this behavior is deprecated`| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`-fconcepts-ts is deprecated - use '-std=c++20' for Concepts support`| +----------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`OpenCL version` |nbsp| :placeholder:`A` |nbsp| :diagtext:`does not support the option '`:placeholder:`B`:diagtext:`'`| +-----------------------------------------------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`Use of 'long' with '\_\_vector' is deprecated`| +------------------------------------------------------------------------------------+ -Wdeprecated-anon-enum-enum-conversion -------------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------+--------------------------------------------+--------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| |+------------------------------------------+| |nbsp| :diagtext:`different enumeration types` |nbsp| :diagtext:`is deprecated`| | ||:diagtext:`arithmetic between` || | | |+------------------------------------------+| | | ||:diagtext:`bitwise operation between` || | | |+------------------------------------------+| | | ||:diagtext:`comparison of` || | | |+------------------------------------------+| | | ||:diagtext:`conditional expression between`|| | | |+------------------------------------------+| | | ||:diagtext:`compound assignment of` || | | |+------------------------------------------+| | +---------------------------+--------------------------------------------+--------------------------------------------------------------------------------+ -Wdeprecated-array-compare -------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`comparison between two arrays is deprecated; to compare array addresses, use unary '+' to decay operands to pointers`| +-----------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wdeprecated-attributes ----------------------- This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`specifying vector types with the 'mode' attribute is deprecated; use the 'vector\_size' attribute instead`| +------------------------------------------------------------------------------------------------------------------------------------------------+ -Wdeprecated-comma-subscript ---------------------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`top-level comma expression in array subscript is deprecated`| +--------------------------------------------------------------------------------------------------+ -Wdeprecated-copy ----------------- **Diagnostic text:** +--------------------------------------------------------------------------+---------------------------------+----------------------------------------------------------------------------------------------------------------------------+---------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`definition of implicit copy` |nbsp| |+-------------------------------+| |nbsp| :diagtext:`for` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is deprecated because it has a user-declared copy` |nbsp| |+-------------------------------+| | ||:diagtext:`constructor` || ||:diagtext:`assignment operator`|| | |+-------------------------------+| |+-------------------------------+| | ||:diagtext:`assignment operator`|| ||:diagtext:`constructor` || | |+-------------------------------+| |+-------------------------------+| +--------------------------------------------------------------------------+---------------------------------+----------------------------------------------------------------------------------------------------------------------------+---------------------------------+ -Wdeprecated-copy-dtor ---------------------- **Diagnostic text:** +--------------------------------------------------------------------------+---------------------------------+--------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`definition of implicit copy` |nbsp| |+-------------------------------+| |nbsp| :diagtext:`for` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is deprecated because it has a user-declared destructor`| | ||:diagtext:`constructor` || | | |+-------------------------------+| | | ||:diagtext:`assignment operator`|| | | |+-------------------------------+| | +--------------------------------------------------------------------------+---------------------------------+--------------------------------------------------------------------------------------------------------------------------+ -Wdeprecated-declarations ------------------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`specifying 'uuid' as an ATL attribute is deprecated; use \_\_declspec instead`| +--------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`use of C-style parameters in Objective-C method declarations is deprecated`| +-----------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is deprecated`| +----------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`may be deprecated because the receiver type is unknown`| +---------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is deprecated:` |nbsp| :placeholder:`B`| +-----------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`property access is using` |nbsp| :placeholder:`A` |nbsp| :diagtext:`method which is deprecated`| +-------------------------------------------------------------------------------------------------------------------------------------+ -Wdeprecated-dynamic-exception-spec ----------------------------------- **Diagnostic text:** +--------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`dynamic exception specifications are deprecated`| +--------------------------------------------------------------------------------------+ -Wdeprecated-enum-compare ------------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------+--------------------------------------------+--------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| |+------------------------------------------+| |nbsp| :diagtext:`different enumeration types` |nbsp| :diagtext:`is deprecated`| | ||:diagtext:`arithmetic between` || | | |+------------------------------------------+| | | ||:diagtext:`bitwise operation between` || | | |+------------------------------------------+| | | ||:diagtext:`comparison of` || | | |+------------------------------------------+| | | ||:diagtext:`conditional expression between`|| | | |+------------------------------------------+| | | ||:diagtext:`compound assignment of` || | | |+------------------------------------------+| | +---------------------------+--------------------------------------------+--------------------------------------------------------------------------------+ -Wdeprecated-enum-compare-conditional ------------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------+--------------------------------------------+--------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| |+------------------------------------------+| |nbsp| :diagtext:`different enumeration types` |nbsp| :diagtext:`is deprecated`| | ||:diagtext:`arithmetic between` || | | |+------------------------------------------+| | | ||:diagtext:`bitwise operation between` || | | |+------------------------------------------+| | | ||:diagtext:`comparison of` || | | |+------------------------------------------+| | | ||:diagtext:`conditional expression between`|| | | |+------------------------------------------+| | | ||:diagtext:`compound assignment of` || | | |+------------------------------------------+| | +---------------------------+--------------------------------------------+--------------------------------------------------------------------------------+ -Wdeprecated-enum-enum-conversion --------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------+--------------------------------------------+--------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| |+------------------------------------------+| |nbsp| :diagtext:`different enumeration types` |nbsp| :diagtext:`is deprecated`| | ||:diagtext:`arithmetic between` || | | |+------------------------------------------+| | | ||:diagtext:`bitwise operation between` || | | |+------------------------------------------+| | | ||:diagtext:`comparison of` || | | |+------------------------------------------+| | | ||:diagtext:`conditional expression between`|| | | |+------------------------------------------+| | | ||:diagtext:`compound assignment of` || | | |+------------------------------------------+| | +---------------------------+--------------------------------------------+--------------------------------------------------------------------------------+ -Wdeprecated-enum-float-conversion ---------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------+--------------------------------------------+--------+----------------------------+--------------------------------------------------------+------------------+--------+----------------------------+---------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| |+------------------------------------------+| |nbsp| |+--------------------------+| |nbsp| :diagtext:`type` |nbsp| :placeholder:`C` |nbsp| |+----------------+| |nbsp| |+--------------------------+| |nbsp| :diagtext:`type` |nbsp| :placeholder:`D` |nbsp| :diagtext:`is deprecated`| | ||:diagtext:`arithmetic between` || ||:diagtext:`floating-point`|| ||:diagtext:`with`|| ||:diagtext:`enumeration` || | | |+------------------------------------------+| |+--------------------------+| |+----------------+| |+--------------------------+| | | ||:diagtext:`bitwise operation between` || ||:diagtext:`enumeration` || ||:diagtext:`from`|| ||:diagtext:`floating-point`|| | | |+------------------------------------------+| |+--------------------------+| |+----------------+| |+--------------------------+| | | ||:diagtext:`comparison of` || | | ||:diagtext:`and` || | | | | |+------------------------------------------+| | | |+----------------+| | | | | ||:diagtext:`conditional expression between`|| | | | | | | | | |+------------------------------------------+| | | | | | | | | ||:diagtext:`compound assignment of` || | | | | | | | | |+------------------------------------------+| | | | | | | | +---------------------------+--------------------------------------------+--------+----------------------------+--------------------------------------------------------+------------------+--------+----------------------------+---------------------------------------------------------------------------------+ -Wdeprecated-implementations ---------------------------- **Diagnostic text:** +----------------------------------------------------------------------+----------------------+ |:warning:`warning:` |nbsp| :diagtext:`implementing deprecated` |nbsp| |+--------------------+| | ||:diagtext:`method` || | |+--------------------+| | ||:diagtext:`class` || | |+--------------------+| | ||:diagtext:`category`|| | |+--------------------+| +----------------------------------------------------------------------+----------------------+ +----------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`implementing unavailable method`| +----------------------------------------------------------------------+ -Wdeprecated-increment-bool --------------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`incrementing expression of type bool is deprecated and incompatible with C++17`| +---------------------------------------------------------------------------------------------------------------------+ -Wdeprecated-objc-isa-usage --------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`assignment to Objective-C's isa is deprecated in favor of object\_setClass()`| +-------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`direct access to Objective-C's isa is deprecated in favor of object\_getClass()`| +----------------------------------------------------------------------------------------------------------------------+ -Wdeprecated-objc-pointer-introspection --------------------------------------- This diagnostic is enabled by default. Also controls `-Wdeprecated-objc-pointer-introspection-performSelector`_. **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`bitmasking for introspection of Objective-C object pointers is strongly discouraged`| +--------------------------------------------------------------------------------------------------------------------------+ -Wdeprecated-objc-pointer-introspection-performSelector ------------------------------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`bitmasking for introspection of Objective-C object pointers is strongly discouraged`| +--------------------------------------------------------------------------------------------------------------------------+ -Wdeprecated-register --------------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'register' storage class specifier is deprecated and incompatible with C++17`| +-------------------------------------------------------------------------------------------------------------------+ -Wdeprecated-this-capture ------------------------- **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`implicit capture of 'this' with a capture default of '=' is deprecated`| +-------------------------------------------------------------------------------------------------------------+ -Wdeprecated-volatile --------------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`compound assignment to object of volatile-qualified type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is deprecated`| +--------------------------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| |+---------------------+| |nbsp| :diagtext:`of object of volatile-qualified type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is deprecated`| | ||:diagtext:`decrement`|| | | |+---------------------+| | | ||:diagtext:`increment`|| | | |+---------------------+| | +---------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`use of result of assignment to object of volatile-qualified type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is deprecated`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`volatile-qualified parameter type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is deprecated`| +---------------------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`volatile-qualified return type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is deprecated`| +------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`volatile qualifier in structured binding declaration is deprecated`| +---------------------------------------------------------------------------------------------------------+ -Wdeprecated-writable-strings ----------------------------- Synonym for `-Wc++11-compat-deprecated-writable-strings`_. -Wdirect-ivar-access -------------------- **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`instance variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is being directly accessed`| +------------------------------------------------------------------------------------------------------------------------------+ -Wdisabled-macro-expansion -------------------------- **Diagnostic text:** +----------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`disabled expansion of recursive macro`| +----------------------------------------------------------------------------+ -Wdisabled-optimization ----------------------- This diagnostic flag exists for GCC compatibility, and has no effect in Clang. -Wdiscard-qual -------------- This diagnostic flag exists for GCC compatibility, and has no effect in Clang. -Wdistributed-object-modifiers ------------------------------ This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`conflicting distributed object modifiers on parameter type in implementation of` |nbsp| :placeholder:`A`| +----------------------------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`conflicting distributed object modifiers on return type in implementation of` |nbsp| :placeholder:`A`| +-------------------------------------------------------------------------------------------------------------------------------------------+ -Wdiv-by-zero ------------- Synonym for `-Wdivision-by-zero`_. -Wdivision-by-zero ------------------ This diagnostic is enabled by default. **Diagnostic text:** +---------------------------+-----------------------+----------------------------------------+ |:warning:`warning:` |nbsp| |+---------------------+| |nbsp| :diagtext:`by zero is undefined`| | ||:diagtext:`remainder`|| | | |+---------------------+| | | ||:diagtext:`division` || | | |+---------------------+| | +---------------------------+-----------------------+----------------------------------------+ -Wdll-attribute-on-redeclaration -------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`redeclaration of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`should not add` |nbsp| :placeholder:`B` |nbsp| :diagtext:`attribute`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wdllexport-explicit-instantiation-decl --------------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`explicit instantiation declaration should not be 'dllexport'`| +---------------------------------------------------------------------------------------------------+ -Wdllimport-static-field-def ---------------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`definition of dllimport static field`| +---------------------------------------------------------------------------+ -Wdocumentation --------------- Also controls `-Wdocumentation-deprecated-sync`_, `-Wdocumentation-html`_. **Diagnostic text:** +----------------------------------------+----------------+-----------------------+------------------------------------------------------------------------+-----------------------+-------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|+---------------------+|:diagtext:`' command should not be used in a comment attached to a non-`|+---------------------+| |nbsp| :diagtext:`declaration`| | ||:diagtext:`\\`|||:diagtext:`class` || ||:diagtext:`class` || | | |+--------------+|+---------------------+| |+---------------------+| | | ||:diagtext:`@` |||:diagtext:`interface`|| ||:diagtext:`interface`|| | | |+--------------+|+---------------------+| |+---------------------+| | | | ||:diagtext:`protocol` || ||:diagtext:`protocol` || | | | |+---------------------+| |+---------------------+| | | | ||:diagtext:`struct` || ||:diagtext:`struct` || | | | |+---------------------+| |+---------------------+| | | | ||:diagtext:`union` || ||:diagtext:`union` || | | | |+---------------------+| |+---------------------+| | +----------------------------------------+----------------+-----------------------+------------------------------------------------------------------------+-----------------------+-------------------------------+ +-----------------------------------------------------------+----------------+-----------------------------+ |:warning:`warning:` |nbsp| :diagtext:`duplicated command '`|+--------------+|:placeholder:`B`:diagtext:`'`| | ||:diagtext:`\\`|| | | |+--------------+| | | ||:diagtext:`@` || | | |+--------------+| | +-----------------------------------------------------------+----------------+-----------------------------+ +------------------------------------------------------------------+----------------+-------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`empty paragraph passed to '`|+--------------+|:placeholder:`B`:diagtext:`' command`| | ||:diagtext:`\\`|| | | |+--------------+| | | ||:diagtext:`@` || | | |+--------------+| | +------------------------------------------------------------------+----------------+-------------------------------------+ +----------------------------------------+----------------+--------------------------+---------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|+------------------------+|:diagtext:`' command should not be used in a comment attached to a non-container declaration`| | ||:diagtext:`\\`|||:diagtext:`classdesign` || | | |+--------------+|+------------------------+| | | ||:diagtext:`@` |||:diagtext:`coclass` || | | |+--------------+|+------------------------+| | | | ||:diagtext:`dependency` || | | | |+------------------------+| | | | ||:diagtext:`helper` || | | | |+------------------------+| | | | ||:diagtext:`helperclass` || | | | |+------------------------+| | | | ||:diagtext:`helps` || | | | |+------------------------+| | | | ||:diagtext:`instancesize`|| | | | |+------------------------+| | | | ||:diagtext:`ownership` || | | | |+------------------------+| | | | ||:diagtext:`performance` || | | | |+------------------------+| | | | ||:diagtext:`security` || | | | |+------------------------+| | | | ||:diagtext:`superclass` || | | | |+------------------------+| | +----------------------------------------+----------------+--------------------------+---------------------------------------------------------------------------------------------+ +----------------------------------------+----------------+---------------------------+---------------------------------------------------------------------+-----------------------------------+-------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|+-------------------------+|:diagtext:`' command should be used in a comment attached to` |nbsp| |+---------------------------------+| |nbsp| :diagtext:`declaration`| | ||:diagtext:`\\`|||:diagtext:`function` || ||:diagtext:`a function` || | | |+--------------+|+-------------------------+| |+---------------------------------+| | | ||:diagtext:`@` |||:diagtext:`functiongroup`|| ||:diagtext:`a function` || | | |+--------------+|+-------------------------+| |+---------------------------------+| | | | ||:diagtext:`method` || ||:diagtext:`an Objective-C method`|| | | | |+-------------------------+| |+---------------------------------+| | | | ||:diagtext:`methodgroup` || ||:diagtext:`an Objective-C method`|| | | | |+-------------------------+| |+---------------------------------+| | | | ||:diagtext:`callback` || ||:diagtext:`a pointer to function`|| | | | |+-------------------------+| |+---------------------------------+| | +----------------------------------------+----------------+---------------------------+---------------------------------------------------------------------+-----------------------------------+-------------------------------+ +-------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`HTML start tag prematurely ended, expected attribute name or '>'`| +-------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`expected quoted string after equals sign`| +-------------------------------------------------------------------------------+ +----------------------------------------+----------------+-------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|:placeholder:`B`:diagtext:`' command does not have a valid word argument`| | ||:diagtext:`\\`|| | | |+--------------+| | | ||:diagtext:`@` || | | |+--------------+| | +----------------------------------------+----------------+-------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`parameter '`:placeholder:`A`:diagtext:`' is already documented`| +-----------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unrecognized parameter passing direction, valid directions are '\[in\]', '\[out\]' and '\[in,out\]'`| +------------------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------+----------------+-------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|:diagtext:`param' command used in a comment that is not attached to a function declaration`| | ||:diagtext:`\\`|| | | |+--------------+| | | ||:diagtext:`@` || | | |+--------------+| | +----------------------------------------+----------------+-------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`parameter '`:placeholder:`A`:diagtext:`' not found in the function declaration`| +---------------------------------------------------------------------------------------------------------------------+ +----------------------------------------+----------------+-------------------------------------------------------------------------------------+-------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|:placeholder:`B`:diagtext:`' command used in a comment that is attached to a` |nbsp| |+-----------------------------------+| | ||:diagtext:`\\`|| ||:diagtext:`function returning void`|| | |+--------------+| |+-----------------------------------+| | ||:diagtext:`@` || ||:diagtext:`constructor` || | |+--------------+| |+-----------------------------------+| | | | ||:diagtext:`destructor` || | | | |+-----------------------------------+| | | | ||:diagtext:`method returning void` || | | | |+-----------------------------------+| +----------------------------------------+----------------+-------------------------------------------------------------------------------------+-------------------------------------+ +----------------------------------------+----------------+----------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|:placeholder:`B`:diagtext:`' command used in a comment that is not attached to a function or method declaration`| | ||:diagtext:`\\`|| | | |+--------------+| | | ||:diagtext:`@` || | | |+--------------+| | +----------------------------------------+----------------+----------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`template parameter '`:placeholder:`A`:diagtext:`' is already documented`| +--------------------------------------------------------------------------------------------------------------+ +----------------------------------------+----------------+--------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|:diagtext:`tparam' command used in a comment that is not attached to a template declaration`| | ||:diagtext:`\\`|| | | |+--------------+| | | ||:diagtext:`@` || | | |+--------------+| | +----------------------------------------+----------------+--------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`template parameter '`:placeholder:`A`:diagtext:`' not found in the template declaration`| +------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`not a Doxygen trailing comment`| +---------------------------------------------------------------------+ +----------------------------------------+----------------+------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'`|+--------------+|:placeholder:`B`:diagtext:`' command does not terminate a verbatim text block`| | ||:diagtext:`\\`|| | | |+--------------+| | | ||:diagtext:`@` || | | |+--------------+| | +----------------------------------------+----------------+------------------------------------------------------------------------------+ -Wdocumentation-deprecated-sync ------------------------------- **Diagnostic text:** +-------------------------------------------------------------------+----------------+-------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`declaration is marked with '`|+--------------+|:diagtext:`deprecated' command but does not have a deprecation attribute`| | ||:diagtext:`\\`|| | | |+--------------+| | | ||:diagtext:`@` || | | |+--------------+| | +-------------------------------------------------------------------+----------------+-------------------------------------------------------------------------+ -Wdocumentation-html -------------------- **Diagnostic text:** +-----------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`HTML end tag '`:placeholder:`A`:diagtext:`' is forbidden`| +-----------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`HTML end tag does not match any start tag`| +--------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`HTML tag '`:placeholder:`A`:diagtext:`' requires an end tag`| +--------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`HTML start tag '`:placeholder:`A`:diagtext:`' closed by '`:placeholder:`B`:diagtext:`'`| +-----------------------------------------------------------------------------------------------------------------------------+ -Wdocumentation-pedantic ------------------------ Also controls `-Wdocumentation-unknown-command`_. **Diagnostic text:** +-----------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`whitespace is not allowed in parameter passing direction`| +-----------------------------------------------------------------------------------------------+ -Wdocumentation-unknown-command ------------------------------- **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unknown command tag name '`:placeholder:`A`:diagtext:`'; did you mean '`:placeholder:`B`:diagtext:`'?`| +--------------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unknown command tag name`| +---------------------------------------------------------------+ -Wdollar-in-identifier-extension -------------------------------- **Diagnostic text:** +--------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'$' in identifier`| +--------------------------------------------------------+ -Wdouble-promotion ------------------ **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`implicit conversion increases floating-point precision:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wdtor-name ----------- Some of the diagnostics controlled by this flag are enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ISO C++ considers this destructor name lookup to be ambiguous`| +----------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ISO C++ requires the name after '::~' to be found in the same scope as the name before '::~'`| +-----------------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`qualified destructor name only found in lexical scope; omit the qualifier to find this type name by unqualified lookup`| +-------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wdtor-typedef -------------- This diagnostic is an error by default, but the flag ``-Wno-dtor-typedef`` can be used to disable the error. **Diagnostic text:** +--------------------------------------------------------------------------------+------------------------+-------------------------------------------------------------+ |:error:`error:` |nbsp| :diagtext:`destructor cannot be declared using a` |nbsp| |+----------------------+| |nbsp| :placeholder:`A` |nbsp| :diagtext:`of the class name`| | ||:diagtext:`typedef` || | | |+----------------------+| | | ||:diagtext:`type alias`|| | | |+----------------------+| | +--------------------------------------------------------------------------------+------------------------+-------------------------------------------------------------+ -Wduplicate-decl-specifier -------------------------- Some of the diagnostics controlled by this flag are enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`duplicate '`:placeholder:`A`:diagtext:`' declaration specifier`| +-----------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`duplicate '`:placeholder:`A`:diagtext:`' declaration specifier`| +-----------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`multiple identical address spaces specified for type`| +-------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`duplicate '`:placeholder:`A`:diagtext:`' declaration specifier`| +-----------------------------------------------------------------------------------------------------+ -Wduplicate-enum ---------------- **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`element` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has been implicitly assigned` |nbsp| :placeholder:`B` |nbsp| :diagtext:`which another element has been assigned`| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wduplicate-method-arg ---------------------- **Diagnostic text:** +------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`redeclaration of method parameter` |nbsp| :placeholder:`A`| +------------------------------------------------------------------------------------------------+ -Wduplicate-method-match ------------------------ **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`multiple declarations of method` |nbsp| :placeholder:`A` |nbsp| :diagtext:`found and ignored`| +-----------------------------------------------------------------------------------------------------------------------------------+ -Wduplicate-protocol -------------------- This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`duplicate protocol definition of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is ignored`| +-----------------------------------------------------------------------------------------------------------------------------+ -Wdynamic-class-memaccess ------------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------+-------------------------------+------------------------------------------------------------------------------------------------+----------------------------------------+---------------------------------------------------------------------------------------------+-------------------------+ |:warning:`warning:` |nbsp| |+-----------------------------+| |nbsp| :diagtext:`this` |nbsp| :placeholder:`B` |nbsp| :diagtext:`call is a pointer to` |nbsp| |+--------------------------------------+|:diagtext:`dynamic class` |nbsp| :placeholder:`D`:diagtext:`; vtable pointer will be` |nbsp| |+-----------------------+| | ||:diagtext:`destination for` || || || ||:diagtext:`overwritten`|| | |+-----------------------------+| |+--------------------------------------+| |+-----------------------+| | ||:diagtext:`source of` || ||:diagtext:`class containing a` |nbsp| || ||:diagtext:`copied` || | |+-----------------------------+| |+--------------------------------------+| |+-----------------------+| | ||:diagtext:`first operand of` || | | ||:diagtext:`moved` || | |+-----------------------------+| | | |+-----------------------+| | ||:diagtext:`second operand of`|| | | ||:diagtext:`compared` || | |+-----------------------------+| | | |+-----------------------+| +---------------------------+-------------------------------+------------------------------------------------------------------------------------------------+----------------------------------------+---------------------------------------------------------------------------------------------+-------------------------+ -Wdynamic-exception-spec ------------------------ Some of the diagnostics controlled by this flag are enabled by default. Also controls `-Wdeprecated-dynamic-exception-spec`_. **Diagnostic text:** +--------------------------------------------------------------------------------------------+ |:error:`error:` |nbsp| :diagtext:`ISO C++17 does not allow dynamic exception specifications`| +--------------------------------------------------------------------------------------------+ -Weffc++ -------- Synonym for `-Wnon-virtual-dtor`_. -Wembedded-directive -------------------- **Diagnostic text:** +----------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`embedding a directive within macro arguments has undefined behavior`| +----------------------------------------------------------------------------------------------------------+ -Wempty-body ------------ This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`for loop has empty body`| +--------------------------------------------------------------+ +------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`if statement has empty body`| +------------------------------------------------------------------+ +--------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`range-based for loop has empty body`| +--------------------------------------------------------------------------+ +----------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`switch statement has empty body`| +----------------------------------------------------------------------+ +----------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`while loop has empty body`| +----------------------------------------------------------------+ -Wempty-decomposition --------------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ISO C++17 does not allow a decomposition group to be empty`| +-------------------------------------------------------------------------------------------------+ -Wempty-init-stmt ----------------- **Diagnostic text:** +--------------------------------------------------------------------------+-----------------------------+---------------------------+ |:warning:`warning:` |nbsp| :diagtext:`empty initialization statement of '`|+---------------------------+|:diagtext:`' has no effect`| | ||:diagtext:`if` || | | |+---------------------------+| | | ||:diagtext:`switch` || | | |+---------------------------+| | | ||:diagtext:`range-based for`|| | | |+---------------------------+| | +--------------------------------------------------------------------------+-----------------------------+---------------------------+ -Wempty-translation-unit ------------------------ **Diagnostic text:** +------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ISO C requires a translation unit to contain at least one declaration`| +------------------------------------------------------------------------------------------------------------+ -Wencode-type ------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`encoding of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`type is incomplete because` |nbsp| :placeholder:`B` |nbsp| :diagtext:`component has unknown encoding`| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wendif-labels -------------- Synonym for `-Wextra-tokens`_. -Wenum-compare -------------- This diagnostic is enabled by default. Also controls `-Wdeprecated-enum-compare`_, `-Wenum-compare-switch`_. **Diagnostic text:** +---------------------------+--------------------------------------------+-----------------------------------------------+ |:warning:`warning:` |nbsp| |+------------------------------------------+| |nbsp| :diagtext:`different enumeration types`| | ||:diagtext:`arithmetic between` || | | |+------------------------------------------+| | | ||:diagtext:`bitwise operation between` || | | |+------------------------------------------+| | | ||:diagtext:`comparison of` || | | |+------------------------------------------+| | | ||:diagtext:`conditional expression between`|| | | |+------------------------------------------+| | | ||:diagtext:`compound assignment of` || | | |+------------------------------------------+| | +---------------------------+--------------------------------------------+-----------------------------------------------+ -Wenum-compare-conditional -------------------------- Some of the diagnostics controlled by this flag are enabled by default. Also controls `-Wdeprecated-enum-compare-conditional`_. **Diagnostic text:** +---------------------------+--------------------------------------------+-----------------------------------------------+ |:warning:`warning:` |nbsp| |+------------------------------------------+| |nbsp| :diagtext:`different enumeration types`| | ||:diagtext:`arithmetic between` || | | |+------------------------------------------+| | | ||:diagtext:`bitwise operation between` || | | |+------------------------------------------+| | | ||:diagtext:`comparison of` || | | |+------------------------------------------+| | | ||:diagtext:`conditional expression between`|| | | |+------------------------------------------+| | | ||:diagtext:`compound assignment of` || | | |+------------------------------------------+| | +---------------------------+--------------------------------------------+-----------------------------------------------+ -Wenum-compare-switch --------------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`comparison of different enumeration types in switch statement`| +----------------------------------------------------------------------------------------------------+ -Wenum-conversion ----------------- Some of the diagnostics controlled by this flag are enabled by default. Also controls `-Wenum-compare-conditional`_, `-Wenum-enum-conversion`_, `-Wenum-float-conversion`_. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`implicit conversion from enumeration type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to different enumeration type` |nbsp| :placeholder:`B`| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wenum-enum-conversion ---------------------- Some of the diagnostics controlled by this flag are enabled by default. Also controls `-Wdeprecated-enum-enum-conversion`_. **Diagnostic text:** +---------------------------+--------------------------------------------+-----------------------------------------------+ |:warning:`warning:` |nbsp| |+------------------------------------------+| |nbsp| :diagtext:`different enumeration types`| | ||:diagtext:`arithmetic between` || | | |+------------------------------------------+| | | ||:diagtext:`bitwise operation between` || | | |+------------------------------------------+| | | ||:diagtext:`comparison of` || | | |+------------------------------------------+| | | ||:diagtext:`conditional expression between`|| | | |+------------------------------------------+| | | ||:diagtext:`compound assignment of` || | | |+------------------------------------------+| | +---------------------------+--------------------------------------------+-----------------------------------------------+ -Wenum-float-conversion ----------------------- Some of the diagnostics controlled by this flag are enabled by default. Also controls `-Wdeprecated-enum-float-conversion`_. **Diagnostic text:** +---------------------------+--------------------------------------------+--------+----------------------------+--------------------------------------------------------+------------------+--------+----------------------------+------------------------------------------------+ |:warning:`warning:` |nbsp| |+------------------------------------------+| |nbsp| |+--------------------------+| |nbsp| :diagtext:`type` |nbsp| :placeholder:`C` |nbsp| |+----------------+| |nbsp| |+--------------------------+| |nbsp| :diagtext:`type` |nbsp| :placeholder:`D`| | ||:diagtext:`arithmetic between` || ||:diagtext:`floating-point`|| ||:diagtext:`with`|| ||:diagtext:`enumeration` || | | |+------------------------------------------+| |+--------------------------+| |+----------------+| |+--------------------------+| | | ||:diagtext:`bitwise operation between` || ||:diagtext:`enumeration` || ||:diagtext:`from`|| ||:diagtext:`floating-point`|| | | |+------------------------------------------+| |+--------------------------+| |+----------------+| |+--------------------------+| | | ||:diagtext:`comparison of` || | | ||:diagtext:`and` || | | | | |+------------------------------------------+| | | |+----------------+| | | | | ||:diagtext:`conditional expression between`|| | | | | | | | | |+------------------------------------------+| | | | | | | | | ||:diagtext:`compound assignment of` || | | | | | | | | |+------------------------------------------+| | | | | | | | +---------------------------+--------------------------------------------+--------+----------------------------+--------------------------------------------------------+------------------+--------+----------------------------+------------------------------------------------+ -Wenum-too-large ---------------- This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`enumeration values exceed range of largest integer`| +-----------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`incremented enumerator value` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not representable in the largest integer type`| +---------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wexceptions ------------ This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------------------+-------------------------+--------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`cannot refer to a non-static member from the handler of a` |nbsp| |+-----------------------+| |nbsp| :diagtext:`function try block`| | ||:diagtext:`constructor`|| | | |+-----------------------+| | | ||:diagtext:`destructor` || | | |+-----------------------+| | +--------------------------------------------------------------------------------------------------------+-------------------------+--------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`exception of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`will be caught by earlier handler`| +-------------------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has a non-throwing exception specification but can still throw`| +-----------------------------------------------------------------------------------------------------------------------------+ -Wexcess-initializers --------------------- This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------+--------------------+-------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`excess elements in` |nbsp| |+------------------+| |nbsp| :diagtext:`initializer`| | ||:diagtext:`array` || | | |+------------------+| | | ||:diagtext:`vector`|| | | |+------------------+| | | ||:diagtext:`scalar`|| | | |+------------------+| | | ||:diagtext:`union` || | | |+------------------+| | | ||:diagtext:`struct`|| | | |+------------------+| | +-----------------------------------------------------------------+--------------------+-------------------------------+ +---------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`excess elements in initializer for indivisible sizeless type` |nbsp| :placeholder:`A`| +---------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`excess elements in char array initializer`| +--------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`initializer-string for char array is too long`| +------------------------------------------------------------------------------------+ -Wexit-time-destructors ----------------------- **Diagnostic text:** +-----------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`declaration requires an exit-time destructor`| +-----------------------------------------------------------------------------------+ -Wexpansion-to-defined ---------------------- Some of the diagnostics controlled by this flag are enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`macro expansion producing 'defined' has undefined behavior`| +-------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`macro expansion producing 'defined' has undefined behavior`| +-------------------------------------------------------------------------------------------------+ -Wexplicit-initialize-call -------------------------- This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`explicit call to +initialize results in duplicate call to +initialize`| +------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`explicit call to \[super initialize\] should only be in implementation of +initialize`| +----------------------------------------------------------------------------------------------------------------------------+ -Wexplicit-ownership-type ------------------------- **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`method parameter of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`with no explicit ownership`| +-------------------------------------------------------------------------------------------------------------------------------------+ -Wexport-unnamed ---------------- This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------+------------------------------+------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ISO C++20 does not permit` |nbsp| |+----------------------------+| |nbsp| :diagtext:`declaration to appear in an export block`| | ||:diagtext:`an empty` || | | |+----------------------------+| | | ||:diagtext:`a static\_assert`|| | | |+----------------------------+| | +------------------------------------------------------------------------+------------------------------+------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ISO C++20 does not permit a declaration that does not introduce any names to be exported`| +-------------------------------------------------------------------------------------------------------------------------------+ -Wexport-using-directive ------------------------ This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ISO C++20 does not permit using directive to be exported`| +-----------------------------------------------------------------------------------------------+ -Wextern-c-compat ----------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------+---------------------------+--------------------+--------------------------------------------+---------------------------+--------------------------+ |:warning:`warning:` |nbsp| |+-------------------------+|+------------------+| |nbsp| :diagtext:`has size 0 in C,` |nbsp| |+-------------------------+| |nbsp| :diagtext:`in C++`| | || |||:diagtext:`struct`|| ||:diagtext:`size 1` || | | |+-------------------------+|+------------------+| |+-------------------------+| | | ||:diagtext:`empty` |nbsp| |||:diagtext:`union` || ||:diagtext:`non-zero size`|| | | |+-------------------------+|+------------------+| |+-------------------------+| | +---------------------------+---------------------------+--------------------+--------------------------------------------+---------------------------+--------------------------+ -Wextern-initializer -------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'extern' variable has an initializer`| +---------------------------------------------------------------------------+ -Wextra ------- Some of the diagnostics controlled by this flag are enabled by default. Also controls `-Wdeprecated-copy`_, `-Wempty-init-stmt`_, `-Wignored-qualifiers`_, `-Winitializer-overrides`_, `-Wmissing-field-initializers`_, `-Wmissing-method-return-type`_, `-Wnull-pointer-arithmetic`_, `-Wsemicolon-before-method-body`_, `-Wsign-compare`_, `-Wunused-parameter`_. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`call to function without interrupt attribute could clobber interruptee's VFP registers`| +-----------------------------------------------------------------------------------------------------------------------------+ -Wextra-qualification --------------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`extra qualification on member` |nbsp| :placeholder:`A`| +--------------------------------------------------------------------------------------------+ -Wextra-semi ------------ Also controls `-Wc++11-extra-semi`_, `-Wc++98-compat-extra-semi`_. **Diagnostic text:** +--------------------------------------------------------+------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`extra ';'` |nbsp| |+----------------------------------------------+| | ||:diagtext:`outside of a function` || | |+----------------------------------------------+| | ||+--------------------------------------------+|| | |||:diagtext:`inside a` |nbsp| :placeholder:`B`||| | ||+--------------------------------------------+|| | |+----------------------------------------------+| | ||:diagtext:`inside instance variable list` || | |+----------------------------------------------+| | ||:diagtext:`after member function definition` || | |+----------------------------------------------+| +--------------------------------------------------------+------------------------------------------------+ +---------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`extra ';' after member function definition`| +---------------------------------------------------------------------------------+ -Wextra-semi-stmt ----------------- Also controls `-Wempty-init-stmt`_. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`empty expression statement has no effect; remove unnecessary ';' to silence this warning`| +-------------------------------------------------------------------------------------------------------------------------------+ -Wextra-tokens -------------- This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`extra tokens at end of #`:placeholder:`A` |nbsp| :diagtext:`directive`| +------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`extra tokens at the end of '#pragma omp` |nbsp| :placeholder:`A`:diagtext:`' are ignored`| +-------------------------------------------------------------------------------------------------------------------------------+ -Wfallback ---------- This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`falling back to` |nbsp| :placeholder:`A`| +------------------------------------------------------------------------------+ -Wfinal-dtor-non-final-class ---------------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------+--------------------+--------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`class with destructor marked '`|+------------------+|:diagtext:`' cannot be inherited from`| | ||:diagtext:`final` || | | |+------------------+| | | ||:diagtext:`sealed`|| | | |+------------------+| | +---------------------------------------------------------------------+--------------------+--------------------------------------+ -Wfixed-enum-extension ---------------------- **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`enumeration types with a fixed underlying type are a Clang extension`| +-----------------------------------------------------------------------------------------------------------+ -Wflag-enum ----------- This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`enumeration value` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is out of range of flags in enumeration type` |nbsp| :placeholder:`B`| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wflexible-array-extensions --------------------------- **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`may not be used as an array element due to flexible array member`| +-------------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`may not be nested in a struct due to flexible array member`| +-------------------------------------------------------------------------------------------------------------------------+ -Wfloat-conversion ------------------ Also controls `-Wfloat-overflow-conversion`_, `-Wfloat-zero-conversion`_. **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`implicit conversion turns floating-point number into integer:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wfloat-equal ------------- **Diagnostic text:** +---------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`comparing floating point with == or != is unsafe`| +---------------------------------------------------------------------------------------+ -Wfloat-overflow-conversion --------------------------- **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`implicit conversion from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`changes value from` |nbsp| :placeholder:`C` |nbsp| :diagtext:`to` |nbsp| :placeholder:`D`| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`implicit conversion of out of range value from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is undefined`| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wfloat-zero-conversion ----------------------- **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`implicit conversion from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`changes non-zero value from` |nbsp| :placeholder:`C` |nbsp| :diagtext:`to` |nbsp| :placeholder:`D`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wfor-loop-analysis ------------------- **Diagnostic text:** +-----------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is` |nbsp| |+-----------------------+| |nbsp| :diagtext:`both in the loop header and in the loop body`| | ||:diagtext:`decremented`|| | | |+-----------------------+| | | ||:diagtext:`incremented`|| | | |+-----------------------+| | +-----------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------+ +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`variable`|+----------------------------------------------------------------------------------------------------------------------------------------------------------+| |nbsp| :diagtext:`used in loop condition not modified in loop body`| | ||:diagtext:`s` || | | |+----------------------------------------------------------------------------------------------------------------------------------------------------------+| | | ||+------------------------+ || | | ||| |nbsp| :placeholder:`B`| || | | ||+------------------------+ || | | |+----------------------------------------------------------------------------------------------------------------------------------------------------------+| | | ||+------------------------------------------------------------------------------------+ || | | |||:diagtext:`s` |nbsp| :placeholder:`B` |nbsp| :diagtext:`and` |nbsp| :placeholder:`C`| || | | ||+------------------------------------------------------------------------------------+ || | | |+----------------------------------------------------------------------------------------------------------------------------------------------------------+| | | ||+-------------------------------------------------------------------------------------------------------------------+ || | | |||:diagtext:`s` |nbsp| :placeholder:`B`:diagtext:`,` |nbsp| :placeholder:`C`:diagtext:`, and` |nbsp| :placeholder:`D`| || | | ||+-------------------------------------------------------------------------------------------------------------------+ || | | |+----------------------------------------------------------------------------------------------------------------------------------------------------------+| | | ||+--------------------------------------------------------------------------------------------------------------------------------------------------------+|| | | |||:diagtext:`s` |nbsp| :placeholder:`B`:diagtext:`,` |nbsp| :placeholder:`C`:diagtext:`,` |nbsp| :placeholder:`D`:diagtext:`, and` |nbsp| :placeholder:`E`||| | | ||+--------------------------------------------------------------------------------------------------------------------------------------------------------+|| | | |+----------------------------------------------------------------------------------------------------------------------------------------------------------+| | +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+ -Wformat -------- This diagnostic is enabled by default. Also controls `-Wformat-extra-args`_, `-Wformat-invalid-specifier`_, `-Wformat-security`_, `-Wformat-y2k`_, `-Wformat-zero-length`_, `-Wnonnull`_. **Diagnostic text:** +-------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`using '%%P' format specifier without precision`| +-------------------------------------------------------------------------------------+ +---------------------------+----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| |+--------------------------------------------+| |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' should not be used as format arguments; add an explicit cast to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`instead`| | ||:diagtext:`values of type` || | | |+--------------------------------------------+| | | ||:diagtext:`enum values with underlying type`|| | | |+--------------------------------------------+| | +---------------------------+----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`using '`:placeholder:`A`:diagtext:`' format specifier, but argument has boolean value`| +----------------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------------------+-----------------------------+------------------------+ |:warning:`warning:` |nbsp| :diagtext:`format specifies type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`but the argument has` |nbsp| |+---------------------------+| |nbsp| :placeholder:`B`| | ||:diagtext:`type` || | | |+---------------------------+| | | ||:diagtext:`underlying type`|| | | |+---------------------------+| | +------------------------------------------------------------------------------------------------------------------------------------+-----------------------------+------------------------+ +----------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`using '`:placeholder:`A`:diagtext:`' format specifier annotation outside of os\_log()/os\_trace()`| +----------------------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------+-----------------------------+ |:warning:`warning:` |nbsp| :diagtext:`invalid position specified for` |nbsp| |+---------------------------+| | ||:diagtext:`field width` || | |+---------------------------+| | ||:diagtext:`field precision`|| | |+---------------------------+| +-----------------------------------------------------------------------------+-----------------------------+ +----------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`cannot mix positional and non-positional arguments in format string`| +----------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`length modifier '`:placeholder:`A`:diagtext:`' results in undefined behavior or no effect with '`:placeholder:`B`:diagtext:`' conversion specifier`| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`format string should not be a wide string`| +--------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`position arguments in format strings start counting at 1 (not 0)`| +-------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`format string missing`| +------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`object format flags cannot be used with '`:placeholder:`A`:diagtext:`' conversion specifier`| +----------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------+-----------------+-------------------------------------+-----------------------+--------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'`|+---------------+|:diagtext:`' specified field` |nbsp| |+---------------------+| |nbsp| :diagtext:`is missing a matching 'int' argument`| | ||:diagtext:`\*` || ||:diagtext:`width` || | | |+---------------+| |+---------------------+| | | ||:diagtext:`.\*`|| ||:diagtext:`precision`|| | | |+---------------+| |+---------------------+| | +----------------------------------------+-----------------+-------------------------------------+-----------------------+--------------------------------------------------------+ +----------------------------------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`field` |nbsp| |+---------------------+| |nbsp| :diagtext:`should have type` |nbsp| :placeholder:`B`:diagtext:`, but argument has type` |nbsp| :placeholder:`C`| | ||:diagtext:`width` || | | |+---------------------+| | | ||:diagtext:`precision`|| | | |+---------------------+| | +----------------------------------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`missing object format flag`| +-----------------------------------------------------------------+ +------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`format string contains '\\0' within the string body`| +------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`format string is not null-terminated`| +---------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`flag '`:placeholder:`A`:diagtext:`' is ignored when flag '`:placeholder:`B`:diagtext:`' is present`| +-----------------------------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`incomplete format specifier`| +------------------------------------------------------------------+ +--------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`more '%%' conversions than data arguments`| +--------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' is not a valid object format flag`| +-------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`flag '`:placeholder:`A`:diagtext:`' results in undefined behavior with '`:placeholder:`B`:diagtext:`' conversion specifier`| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------+-------------------------+------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| |+-----------------------+| |nbsp| :diagtext:`used with '`:placeholder:`B`:diagtext:`' conversion specifier, resulting in undefined behavior`| | ||:diagtext:`field width`|| | | |+-----------------------+| | | ||:diagtext:`precision` || | | |+-----------------------+| | +---------------------------+-------------------------+------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`data argument position '`:placeholder:`A`:diagtext:`' exceeds the number of data arguments (`:placeholder:`B`:diagtext:`)`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`zero field width in scanf format string is unused`| +----------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`no closing '\]' for '%%\[' in scanf format string`| +----------------------------------------------------------------------------------------+ -Wformat-extra-args ------------------- This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`data argument not used by format string`| +------------------------------------------------------------------------------+ -Wformat-invalid-specifier -------------------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`invalid conversion specifier '`:placeholder:`A`:diagtext:`'`| +--------------------------------------------------------------------------------------------------+ -Wformat-non-iso ---------------- **Diagnostic text:** +-----------------------------------------------------------------------------+----------------------------------+---------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`'` |nbsp| |+--------------------------------+| |nbsp| :diagtext:`is not supported by ISO C`| | ||:diagtext:`length modifier` || | | |+--------------------------------+| | | ||:diagtext:`conversion specifier`|| | | |+--------------------------------+| | +-----------------------------------------------------------------------------+----------------------------------+---------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`using length modifier '`:placeholder:`A`:diagtext:`' with conversion specifier '`:placeholder:`B`:diagtext:`' is not supported by ISO C`| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`positional arguments are not supported by ISO C`| +--------------------------------------------------------------------------------------+ -Wformat-nonliteral ------------------- **Diagnostic text:** +----------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`format string is not a string literal`| +----------------------------------------------------------------------------+ -Wformat-pedantic ----------------- **Diagnostic text:** +---------------------------+----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| |+--------------------------------------------+| |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' should not be used as format arguments; add an explicit cast to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`instead`| | ||:diagtext:`values of type` || | | |+--------------------------------------------+| | | ||:diagtext:`enum values with underlying type`|| | | |+--------------------------------------------+| | +---------------------------+----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------------------+-----------------------------+------------------------+ |:warning:`warning:` |nbsp| :diagtext:`format specifies type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`but the argument has` |nbsp| |+---------------------------+| |nbsp| :placeholder:`B`| | ||:diagtext:`type` || | | |+---------------------------+| | | ||:diagtext:`underlying type`|| | | |+---------------------------+| | +------------------------------------------------------------------------------------------------------------------------------------+-----------------------------+------------------------+ -Wformat-security ----------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`format string is not a string literal (potentially insecure)`| +---------------------------------------------------------------------------------------------------+ -Wformat-type-confusion ----------------------- **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------------------------+-----------------------------+------------------------+ |:warning:`warning:` |nbsp| :diagtext:`format specifies type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`but the argument has` |nbsp| |+---------------------------+| |nbsp| :placeholder:`B`| | ||:diagtext:`type` || | | |+---------------------------+| | | ||:diagtext:`underlying type`|| | | |+---------------------------+| | +------------------------------------------------------------------------------------------------------------------------------------+-----------------------------+------------------------+ -Wformat-y2k ------------ This diagnostic flag exists for GCC compatibility, and has no effect in Clang. -Wformat-zero-length -------------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`format string is empty`| +-------------------------------------------------------------+ -Wformat=2 ---------- Some of the diagnostics controlled by this flag are enabled by default. Controls `-Wformat-nonliteral`_, `-Wformat-security`_, `-Wformat-y2k`_. -Wfortify-source ---------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' will always overflow; destination buffer has size` |nbsp| :placeholder:`B`:diagtext:`, but format string expands to at least` |nbsp| :placeholder:`C`| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' will always overflow; destination buffer has size` |nbsp| :placeholder:`B`:diagtext:`, but size argument is` |nbsp| :placeholder:`C`| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' size argument is too large; destination buffer has size` |nbsp| :placeholder:`B`:diagtext:`, but size argument is` |nbsp| :placeholder:`C`| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wfour-char-constants --------------------- **Diagnostic text:** +-------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`multi-character character constant`| +-------------------------------------------------------------------------+ -Wframe-address --------------- **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`calling '`:placeholder:`A`:diagtext:`' with a nonzero argument is unsafe`| +---------------------------------------------------------------------------------------------------------------+ -Wframe-larger-than= -------------------- This diagnostic is enabled by default. **Diagnostic text:** The text of this diagnostic is not controlled by Clang. +--------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`stack frame size of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`bytes in` |nbsp| :placeholder:`B`| +--------------------------------------------------------------------------------------------------------------------------------------+ -Wframework-include-private-from-public --------------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`public framework header includes private framework header '`:placeholder:`A`:diagtext:`'`| +-------------------------------------------------------------------------------------------------------------------------------+ -Wfunction-def-in-objc-container -------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`function definition inside an Objective-C container is deprecated`| +--------------------------------------------------------------------------------------------------------+ -Wfunction-multiversion ----------------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`body of cpu\_dispatch function will be ignored`| +-------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`CPU list contains duplicate entries; attribute ignored`| +---------------------------------------------------------------------------------------------+ -Wfuture-compat --------------- This diagnostic flag exists for GCC compatibility, and has no effect in Clang. -Wgcc-compat ------------ Some of the diagnostics controlled by this flag are enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'diagnose\_if' is a clang extension`| +--------------------------------------------------------------------------+ +------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'enable\_if' is a clang extension`| +------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`\_\_final is a GNU extension, consider using C++11 final`| +-----------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`GCC does not allow` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute in this position on a function definition`| +--------------------------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'break' is bound to loop, GCC binds it to switch`| +---------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`GCC does not allow the 'cleanup' attribute argument to be anything other than a simple identifier`| +----------------------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`GCC does not allow an attribute in this position on a function declaration`| +-----------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`GCC does not allow the` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute to be written on a type`| +------------------------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`GCC does not allow variable declarations in for loop initializers before C99`| +-------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' is bound to current loop, GCC binds it to the enclosing loop`| +----------------------------------------------------------------------------------------------------------------------------------+ -Wglobal-constructors --------------------- **Diagnostic text:** +--------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`declaration requires a global constructor`| +--------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`declaration requires a global destructor`| +-------------------------------------------------------------------------------+ -Wglobal-isel ------------- This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`-fglobal-isel support for the '`:placeholder:`A`:diagtext:`' architecture is incomplete`| +------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`-fglobal-isel support is incomplete for this architecture at the current optimization level`| +----------------------------------------------------------------------------------------------------------------------------------+ -Wgnu ----- Some of the diagnostics controlled by this flag are enabled by default. Controls `-Wgnu-alignof-expression`_, `-Wgnu-anonymous-struct`_, `-Wgnu-auto-type`_, `-Wgnu-binary-literal`_, `-Wgnu-case-range`_, `-Wgnu-complex-integer`_, `-Wgnu-compound-literal-initializer`_, `-Wgnu-conditional-omitted-operand`_, `-Wgnu-designator`_, `-Wgnu-empty-initializer`_, `-Wgnu-empty-struct`_, `-Wgnu-flexible-array-initializer`_, `-Wgnu-flexible-array-union-member`_, `-Wgnu-folding-constant`_, `-Wgnu-imaginary-constant`_, `-Wgnu-include-next`_, `-Wgnu-label-as-value`_, `-Wgnu-redeclared-enum`_, `-Wgnu-statement-expression`_, `-Wgnu-static-float-init`_, `-Wgnu-string-literal-operator-template`_, `-Wgnu-union-cast`_, `-Wgnu-variable-sized-type-not-at-end`_, `-Wgnu-zero-line-directive`_, `-Wgnu-zero-variadic-macro-arguments`_, `-Wredeclared-class-member`_, `-Wvla-extension`_, `-Wzero-length-array`_. -Wgnu-alignof-expression ------------------------ This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`applied to an expression is a GNU extension`| +----------------------------------------------------------------------------------------------------------+ -Wgnu-anonymous-struct ---------------------- **Diagnostic text:** +----------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`anonymous structs are a GNU extension`| +----------------------------------------------------------------------------+ -Wgnu-array-member-paren-init ----------------------------- This diagnostic is an error by default, but the flag ``-Wno-gnu-array-member-paren-init`` can be used to disable the error. **Diagnostic text:** +----------------------------------------------------------------------------------------------------+ |:error:`error:` |nbsp| :diagtext:`parenthesized initialization of a member array is a GNU extension`| +----------------------------------------------------------------------------------------------------+ -Wgnu-auto-type --------------- **Diagnostic text:** +--------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'\_\_auto\_type' is a GNU extension`| +--------------------------------------------------------------------------+ -Wgnu-binary-literal -------------------- **Diagnostic text:** +----------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`binary integer literals are a GNU extension`| +----------------------------------------------------------------------------------+ -Wgnu-case-range ---------------- **Diagnostic text:** +----------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`use of GNU case range extension`| +----------------------------------------------------------------------+ -Wgnu-complex-integer --------------------- **Diagnostic text:** +--------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`complex integer types are a GNU extension`| +--------------------------------------------------------------------------------+ -Wgnu-compound-literal-initializer ---------------------------------- **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`initialization of an array` |nbsp| :diagtext:`from a compound literal` |nbsp| :diagtext:`is a GNU extension`| +--------------------------------------------------------------------------------------------------------------------------------------------------+ -Wgnu-conditional-omitted-operand --------------------------------- **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`use of GNU ?: conditional expression extension, omitting middle operand`| +--------------------------------------------------------------------------------------------------------------+ -Wgnu-designator ---------------- Some of the diagnostics controlled by this flag are enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`use of GNU array range extension`| +-----------------------------------------------------------------------+ +-------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`use of GNU 'missing =' extension in designator`| +-------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`use of GNU old-style field designator extension`| +--------------------------------------------------------------------------------------+ -Wgnu-empty-initializer ----------------------- **Diagnostic text:** +-----------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`use of GNU empty initializer extension`| +-----------------------------------------------------------------------------+ -Wgnu-empty-struct ------------------ **Diagnostic text:** +----------------------------------------------------+--------------------+--------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`empty` |nbsp| |+------------------+| |nbsp| :diagtext:`is a GNU extension`| | ||:diagtext:`struct`|| | | |+------------------+| | | ||:diagtext:`union` || | | |+------------------+| | +----------------------------------------------------+--------------------+--------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------+-----------------------+--------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`flexible array member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in otherwise empty` |nbsp| |+---------------------+| |nbsp| :diagtext:`is a GNU extension`| | ||:diagtext:`struct` || | | |+---------------------+| | | ||:diagtext:`interface`|| | | |+---------------------+| | | ||:diagtext:`union` || | | |+---------------------+| | | ||:diagtext:`class` || | | |+---------------------+| | | ||:diagtext:`enum` || | | |+---------------------+| | +----------------------------------------------------------------------------------------------------------------------------------+-----------------------+--------------------------------------+ +---------------------------+--------------------+------------------------------------------------------------+ |:warning:`warning:` |nbsp| |+------------------+| |nbsp| :diagtext:`without named members is a GNU extension`| | ||:diagtext:`struct`|| | | |+------------------+| | | ||:diagtext:`union` || | | |+------------------+| | +---------------------------+--------------------+------------------------------------------------------------+ -Wgnu-flexible-array-initializer -------------------------------- **Diagnostic text:** +---------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`flexible array initialization is a GNU extension`| +---------------------------------------------------------------------------------------+ -Wgnu-flexible-array-union-member --------------------------------- **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`flexible array member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in a union is a GNU extension`| +-------------------------------------------------------------------------------------------------------------------------------------+ -Wgnu-folding-constant ---------------------- **Diagnostic text:** +-------------------------------------------------------------------+----------------------+------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`expression is not an` |nbsp| |+--------------------+| |nbsp| :diagtext:`constant expression; folding it to a constant is a GNU extension`| | ||:diagtext:`integer` || | | |+--------------------+| | | ||:diagtext:`integral`|| | | |+--------------------+| | +-------------------------------------------------------------------+----------------------+------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`in-class initializer for static data member is not a constant expression; folding it to a constant is a GNU extension`| +------------------------------------------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`variable length array folded to constant array as an extension`| +-----------------------------------------------------------------------------------------------------+ -Wgnu-imaginary-constant ------------------------ **Diagnostic text:** +------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`imaginary constants are a GNU extension`| +------------------------------------------------------------------------------+ -Wgnu-include-next ------------------ **Diagnostic text:** +-----------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`#include\_next is a language extension`| +-----------------------------------------------------------------------------+ -Wgnu-inline-cpp-without-extern ------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'gnu\_inline' attribute without 'extern' in C++ treated as externally available, this changed in Clang 10`| +------------------------------------------------------------------------------------------------------------------------------------------------+ -Wgnu-label-as-value -------------------- **Diagnostic text:** +----------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`use of GNU address-of-label extension`| +----------------------------------------------------------------------------+ +-------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`use of GNU indirect-goto extension`| +-------------------------------------------------------------------------+ -Wgnu-redeclared-enum --------------------- **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`redeclaration of already-defined enum` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a GNU extension`| +------------------------------------------------------------------------------------------------------------------------------------------+ -Wgnu-statement-expression -------------------------- **Diagnostic text:** +--------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`use of GNU statement expression extension`| +--------------------------------------------------------------------------------+ -Wgnu-static-float-init ----------------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`in-class initializer for static data member of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a GNU extension`| +--------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wgnu-string-literal-operator-template -------------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`string literal operator templates are a GNU extension`| +--------------------------------------------------------------------------------------------+ -Wgnu-union-cast ---------------- **Diagnostic text:** +----------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`cast to union type is a GNU extension`| +----------------------------------------------------------------------------+ -Wgnu-variable-sized-type-not-at-end ------------------------------------ This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`field` |nbsp| :placeholder:`A` |nbsp| :diagtext:`with variable sized type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`not at the end of a struct or class is a GNU extension`| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wgnu-zero-line-directive ------------------------- **Diagnostic text:** +--------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`#line directive with zero argument is a GNU extension`| +--------------------------------------------------------------------------------------------+ -Wgnu-zero-variadic-macro-arguments ----------------------------------- **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`must specify at least one argument for '...' parameter of variadic macro`| +---------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`token pasting of ',' and \_\_VA\_ARGS\_\_ is a GNU extension`| +---------------------------------------------------------------------------------------------------+ -Wheader-guard -------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is used as a header guard here, followed by #define of a different macro`| +---------------------------------------------------------------------------------------------------------------------------------------+ -Wheader-hygiene ---------------- **Diagnostic text:** +--------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`using namespace directive in global context in header`| +--------------------------------------------------------------------------------------------+ -Whip-only ---------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' is ignored since it is only supported for HIP`| +-------------------------------------------------------------------------------------------------------------------+ -Widiomatic-parentheses ----------------------- **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`using the result of an assignment as a condition without parentheses`| +-----------------------------------------------------------------------------------------------------------+ -Wignored-attributes -------------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'trivial\_abi' cannot be applied to` |nbsp| :placeholder:`A`| +--------------------------------------------------------------------------------------------------+ +---------------------------+-------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| |+-----------------+| |nbsp| :diagtext:`will always resolve to` |nbsp| :placeholder:`A` |nbsp| :diagtext:`even if weak definition of` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is overridden`| | ||:diagtext:`alias`|| | | |+-----------------+| | | ||:diagtext:`ifunc`|| | | |+-----------------+| | +---------------------------+-------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------+-------------------+----------------------------------------------------------------------------------------------------------------+----------------------+ |:warning:`warning:` |nbsp| |+-----------------+| |nbsp| :diagtext:`will not be in section '`:placeholder:`A`:diagtext:`' but in the same section as the` |nbsp| |+--------------------+| | ||:diagtext:`alias`|| ||:diagtext:`aliasee` || | |+-----------------+| |+--------------------+| | ||:diagtext:`ifunc`|| ||:diagtext:`resolver`|| | |+-----------------+| |+--------------------+| +---------------------------+-------------------+----------------------------------------------------------------------------------------------------------------+----------------------+ +----------------------------------------------------------------------+------------------------+-------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'abi\_tag' attribute on` |nbsp| |+----------------------+| |nbsp| :diagtext:`namespace ignored`| | ||:diagtext:`non-inline`|| | | |+----------------------+| | | ||:diagtext:`anonymous` || | | |+----------------------+| | +----------------------------------------------------------------------+------------------------+-------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`attribute` |nbsp| :placeholder:`A` |nbsp| :diagtext:`after definition is ignored`| +-----------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'cmse\_nonsecure\_entry' cannot be applied to functions with internal linkage`| +--------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'dllexport' attribute ignored on explicit instantiation definition`| +---------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute can only be applied to instance variables or properties`| +--------------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute ignored`| +--------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute ignored for field of type` |nbsp| :placeholder:`B`| +--------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute ignored on inline function`| +---------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' attribute cannot be specified on a definition`| +-------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`attribute` |nbsp| :placeholder:`A` |nbsp| :diagtext:`ignored, because it is not attached to a declaration`| +------------------------------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'nonnull' attribute applied to function with no pointer arguments`| +--------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'nonnull' attribute when used on parameters takes no arguments`| +-----------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute ignored when parsing type`| +--------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute only applies to a pointer or reference (`:placeholder:`B` |nbsp| :diagtext:`is invalid)`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------+------------------------------+-------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute only applies to`|+----------------------------+| |nbsp| :diagtext:`pointer arguments`| | || || | | |+----------------------------+| | | || |nbsp| :diagtext:`constant`|| | | |+----------------------------+| | +----------------------------------------------------------------------------------------+------------------------------+-------------------------------------+ +------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`attribute declaration must precede definition`| +------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute only applies to return values that are pointers`| +------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute only applies to return values that are pointers or references`| +--------------------------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'sentinel' attribute requires named arguments`| +------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------+-----------------------+ |:warning:`warning:` |nbsp| :diagtext:`'sentinel' attribute only supported for variadic` |nbsp| |+---------------------+| | ||:diagtext:`functions`|| | |+---------------------+| | ||:diagtext:`blocks` || | |+---------------------+| +-----------------------------------------------------------------------------------------------+-----------------------+ +------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute argument not supported:` |nbsp| :placeholder:`B`| +------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unknown visibility` |nbsp| :placeholder:`A`| +---------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------+--------------------------------+----------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`attribute` |nbsp| :placeholder:`A` |nbsp| :diagtext:`cannot be applied to` |nbsp| |+------------------------------+| |nbsp| :diagtext:`without return value`| | ||:diagtext:`functions` || | | |+------------------------------+| | | ||:diagtext:`Objective-C method`|| | | |+------------------------------+| | +------------------------------------------------------------------------------------------------------------------------+--------------------------------+----------------------------------------+ +----------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`\_\_weak attribute cannot be specified on a field declaration`| +----------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`\_\_weak attribute cannot be specified on an automatic variable when ARC is not enabled`| +------------------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------+---------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute only applies to` |nbsp| |+-------------------------------------------------+| | ||:diagtext:`functions` || | |+-------------------------------------------------+| | ||:diagtext:`unions` || | |+-------------------------------------------------+| | ||:diagtext:`variables and functions` || | |+-------------------------------------------------+| | ||:diagtext:`functions and methods` || | |+-------------------------------------------------+| | ||:diagtext:`functions, methods and blocks` || | |+-------------------------------------------------+| | ||:diagtext:`functions, methods, and parameters` || | |+-------------------------------------------------+| | ||:diagtext:`variables` || | |+-------------------------------------------------+| | ||:diagtext:`variables and fields` || | |+-------------------------------------------------+| | ||:diagtext:`variables, data members and tag types`|| | |+-------------------------------------------------+| | ||:diagtext:`types and namespaces` || | |+-------------------------------------------------+| | ||:diagtext:`variables, functions and classes` || | |+-------------------------------------------------+| | ||:diagtext:`kernel functions` || | |+-------------------------------------------------+| | ||:diagtext:`non-K&R-style functions` || | |+-------------------------------------------------+| +------------------------------------------------------------------------------------------------+---------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute only applies to` |nbsp| :placeholder:`B`| +----------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`attribute` |nbsp| :placeholder:`A` |nbsp| :diagtext:`ignored, because it cannot be applied to omitted return type`| +--------------------------------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------+---------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`calling convention is not supported` |nbsp| |+-------------------------------------+| | ||:diagtext:`for this target` || | |+-------------------------------------+| | ||:diagtext:`on variadic function` || | |+-------------------------------------+| | ||:diagtext:`on constructor/destructor`|| | |+-------------------------------------+| | ||:diagtext:`on builtin function` || | |+-------------------------------------+| +----------------------------------------------------------------------------------------------------------+---------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`attribute` |nbsp| :placeholder:`A` |nbsp| :diagtext:`ignored, because it cannot be applied to a type`| +-------------------------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ignoring \_\_declspec(allocator) because the function return type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not a pointer or reference type`| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------+-----------------------+----------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`attribute` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is ignored, place it after "`|+---------------------+|:diagtext:`" to apply attribute to type declaration`| | ||:diagtext:`class` || | | |+---------------------+| | | ||:diagtext:`struct` || | | |+---------------------+| | | ||:diagtext:`interface`|| | | |+---------------------+| | | ||:diagtext:`union` || | | |+---------------------+| | | ||:diagtext:`enum` || | | |+---------------------+| | +------------------------------------------------------------------------------------------------------------------------+-----------------------+----------------------------------------------------+ +--------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'deprecated' attribute on anonymous namespace ignored`| +--------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`redeclared inline;` |nbsp| :placeholder:`B` |nbsp| :diagtext:`attribute ignored`| +----------------------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`attribute` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is already applied with different parameters`| +----------------------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`attribute` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is already applied`| +--------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`Objective-C GC does not allow weak variables on the stack`| +------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'gnu\_inline' attribute requires function to be marked 'inline', attribute ignored`| +-------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------+------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`inheritance model ignored on` |nbsp| |+----------------------------------+| | ||:diagtext:`primary template` || | |+----------------------------------+| | ||:diagtext:`partial specialization`|| | |+----------------------------------+| +---------------------------------------------------------------------------+------------------------------------+ +------------------------------------------------------------------------------------------------------------------+-----------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'objc\_externally\_retained' can only be applied to local variables` |nbsp| |+---------------------------------+| | ||:diagtext:`of retainable type` || | |+---------------------------------+| | ||:diagtext:`with strong ownership`|| | |+---------------------------------+| +------------------------------------------------------------------------------------------------------------------+-----------------------------------+ +--------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'internal\_linkage' attribute on a non-static local variable is ignored`| +--------------------------------------------------------------------------------------------------------------+ +---------------------------+--------------------+-------------------------------------------------------------------------------------+----------------------------------+ |:warning:`warning:` |nbsp| |+------------------+| |nbsp| :diagtext:`'interrupt' attribute only applies to functions that have` |nbsp| |+--------------------------------+| | ||:diagtext:`MIPS` || ||:diagtext:`no parameters` || | |+------------------+| |+--------------------------------+| | ||:diagtext:`MSP430`|| ||:diagtext:`a 'void' return type`|| | |+------------------+| |+--------------------------------+| | ||:diagtext:`RISC-V`|| | | | |+------------------+| | | +---------------------------+--------------------+-------------------------------------------------------------------------------------+----------------------------------+ +--------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`qualifiers after comma in declarator list are ignored`| +--------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'mig\_server\_routine' attribute only applies to routines that return a kern\_return\_t`| +------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unknown attribute '`:placeholder:`A`:diagtext:`'`| +---------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'nocf\_check' attribute ignored; use -fcf-protection to enable the attribute`| +-------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'noderef' can only be used on an array or pointer type`| +---------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'nothrow' attribute conflicts with exception specification; attribute ignored`| +--------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------+---------------------------------------------------+------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute only applies to` |nbsp| |+-------------------------------------------------+| |nbsp| :diagtext:`parameters`| | ||:diagtext:`Objective-C object` || | | |+-------------------------------------------------+| | | ||:diagtext:`pointer` || | | |+-------------------------------------------------+| | | ||:diagtext:`pointer-to-CF-pointer` || | | |+-------------------------------------------------+| | | ||:diagtext:`pointer/reference-to-OSObject-pointer`|| | | |+-------------------------------------------------+| | +------------------------------------------------------------------------------------------------+---------------------------------------------------+------------------------------+ +------------------------------------------------------------------------------------------------+------------------------+---------------------------------------+--------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute only applies to` |nbsp| |+----------------------+| |nbsp| :diagtext:`that return` |nbsp| |+------------------------------------+| | ||:diagtext:`functions` || ||:diagtext:`an Objective-C object` || | |+----------------------+| |+------------------------------------+| | ||:diagtext:`methods` || ||:diagtext:`a pointer` || | |+----------------------+| |+------------------------------------+| | ||:diagtext:`properties`|| ||:diagtext:`a non-retainable pointer`|| | |+----------------------+| |+------------------------------------+| +------------------------------------------------------------------------------------------------+------------------------+---------------------------------------+--------------------------------------+ +----------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute isn't implemented by this Objective-C runtime`| +----------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`direct attribute on property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`ignored (not implemented by this Objective-C runtime)`| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute is deprecated and ignored in OpenCL version` |nbsp| :placeholder:`B`| +--------------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'require\_constant\_initialization' attribute added after initialization of variable`| +---------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`repeated RISC-V 'interrupt' attribute`| +----------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`template parameter of a function template with the 'sycl\_kernel' attribute cannot be a non-type template parameter`| +----------------------------------------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`function template with 'sycl\_kernel' attribute must have a single parameter`| +-------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'sycl\_kernel' attribute only applies to a function template with at least two template parameters`| +-----------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`function template with 'sycl\_kernel' attribute must have a 'void' return type`| +---------------------------------------------------------------------------------------------------------------------+ +---------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+-------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| |+---------------------+| |nbsp| :diagtext:`of field` |nbsp| :placeholder:`B` |nbsp| :diagtext:`(`:placeholder:`C` |nbsp| :diagtext:`bits) does not match the` |nbsp| |+---------------------+| |nbsp| :diagtext:`of the first field in transparent union; transparent\_union attribute ignored`| | ||:diagtext:`alignment`|| ||:diagtext:`alignment`|| | | |+---------------------+| |+---------------------+| | | ||:diagtext:`size` || ||:diagtext:`size` || | | |+---------------------+| |+---------------------+| | +---------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+-------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------+----------------------------+--------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`first field of a transparent union cannot have` |nbsp| |+--------------------------+| |nbsp| :diagtext:`type` |nbsp| :placeholder:`B`:diagtext:`; transparent\_union attribute ignored`| | ||:diagtext:`floating point`|| | | |+--------------------------+| | | ||:diagtext:`vector` || | | |+--------------------------+| | +---------------------------------------------------------------------------------------------+----------------------------+--------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`transparent\_union attribute can only be applied to a union definition; attribute ignored`| +--------------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`transparent union definition must contain at least one field; transparent\_union attribute ignored`| +-----------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------+-------------------------------------------------+---------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' only applies to` |nbsp| |+-----------------------------------------------+| |nbsp| :diagtext:`types; type here is` |nbsp| :placeholder:`C`| | ||:diagtext:`function` || | | |+-----------------------------------------------+| | | ||:diagtext:`pointer` || | | |+-----------------------------------------------+| | | ||:diagtext:`Objective-C object or block pointer`|| | | |+-----------------------------------------------+| | +---------------------------------------------------------------------------------------------+-------------------------------------------------+---------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`\_\_declspec attribute` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not supported`| +-------------------------------------------------------------------------------------------------------------------------+ +---------------------------+-------------------------+----------------------------------+---------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| |+-----------------------+|+--------------------------------+| |nbsp| :diagtext:`'`:placeholder:`C`:diagtext:`' in the 'target' attribute string; 'target' attribute ignored`| | ||:diagtext:`unsupported`||| || | | |+-----------------------+|+--------------------------------+| | | ||:diagtext:`duplicate` ||| |nbsp| :diagtext:`architecture`|| | | |+-----------------------+|+--------------------------------+| | +---------------------------+-------------------------+----------------------------------+---------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'\_\_clang\_\_' is a predefined macro name, not an attribute scope specifier; did you mean '\_Clang' instead?`| +----------------------------------------------------------------------------------------------------------------------------------------------------+ -Wignored-optimization-argument ------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`optimization flag '`:placeholder:`A`:diagtext:`' is not supported for target '`:placeholder:`B`:diagtext:`'`| +--------------------------------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`optimization flag '`:placeholder:`A`:diagtext:`' is not supported`| +--------------------------------------------------------------------------------------------------------+ -Wignored-pragma-intrinsic -------------------------- This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not a recognized builtin`|+----------------------------------------------------------------------------+| | || || | |+----------------------------------------------------------------------------+| | ||:diagtext:`; consider including to access non-builtin intrinsics`|| | |+----------------------------------------------------------------------------+| +------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -Wignored-pragma-optimize ------------------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'#pragma optimize' is not supported`| +--------------------------------------------------------------------------+ -Wignored-pragmas ----------------- This diagnostic is enabled by default. Also controls `-Wignored-pragma-intrinsic`_, `-Wignored-pragma-optimize`_. **Diagnostic text:** +------------------------------------------------------------------------------+---------------------------+-----------------------+ |:warning:`warning:` |nbsp| :diagtext:`expected '=' following '#pragma` |nbsp| |+-------------------------+|:diagtext:`' - ignored`| | ||:diagtext:`align` || | | |+-------------------------+| | | ||:diagtext:`options align`|| | | |+-------------------------+| | +------------------------------------------------------------------------------+---------------------------+-----------------------+ +-----------------------------------------------------------------------------------+---------------------------+-----------------------+ |:warning:`warning:` |nbsp| :diagtext:`invalid alignment option in '#pragma` |nbsp| |+-------------------------+|:diagtext:`' - ignored`| | ||:diagtext:`align` || | | |+-------------------------+| | | ||:diagtext:`options align`|| | | |+-------------------------+| | +-----------------------------------------------------------------------------------+---------------------------+-----------------------+ +-----------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`OpenCL extension end directive mismatches begin directive - ignoring`| +-----------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'#pragma comment` |nbsp| :placeholder:`A`:diagtext:`' ignored`| +----------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`missing argument to debug command '`:placeholder:`A`:diagtext:`'`| +-------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unexpected debug command '`:placeholder:`A`:diagtext:`'`| +----------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unknown module '`:placeholder:`A`:diagtext:`'`| +------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`expected action or ')' in '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`| +------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`missing ':' after` |nbsp| :placeholder:`A` |nbsp| :diagtext:`- ignoring`| +--------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`missing ':' or ')' after` |nbsp| :placeholder:`A` |nbsp| :diagtext:`- ignoring`| +---------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`expected ',' in '#pragma` |nbsp| :placeholder:`A`:diagtext:`'`| +----------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`expected identifier in '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`| +---------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`expected 'compiler', 'lib', 'user', or a string literal for the section name in '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`expected integer between` |nbsp| :placeholder:`A` |nbsp| :diagtext:`and` |nbsp| :placeholder:`B` |nbsp| :diagtext:`inclusive in '#pragma` |nbsp| :placeholder:`C`:diagtext:`' - ignored`| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`missing '(' after '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignoring`| +-----------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`expected non-wide string literal in '#pragma` |nbsp| :placeholder:`A`:diagtext:`'`| +------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------+---------------------------------------------------+------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`expected` |nbsp| |+-------------------------------------------------+| |nbsp| :diagtext:`- ignoring`| | ||:diagtext:`'enable', 'disable', 'begin' or 'end'`|| | | |+-------------------------------------------------+| | | ||:diagtext:`'disable'` || | | |+-------------------------------------------------+| | +-------------------------------------------------------+---------------------------------------------------+------------------------------+ +-----------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`expected ')' or ',' in '#pragma` |nbsp| :placeholder:`A`:diagtext:`'`| +-----------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`missing ')' after '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignoring`| +-----------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`expected a stack label or a string literal for the section name in '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`expected a string literal for the section name in '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`| +------------------------------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`expected push, pop or a string literal for the section name in '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`| +-------------------------------------------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`expected string literal in '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignoring`| +--------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`extra tokens at end of '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`| +---------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`incorrect use of #pragma clang force\_cuda\_host\_device begin\|end`| +----------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'#pragma init\_seg' is only supported when targeting a Microsoft environment`| +-------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unknown action for '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`| +-----------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unexpected argument '`:placeholder:`A`:diagtext:`' to '#pragma` |nbsp| :placeholder:`B`:diagtext:`'`|+------------------------------------------------+| | || || | |+------------------------------------------------+| | ||+----------------------------------------------+|| | |||:diagtext:`; expected` |nbsp| :placeholder:`D`||| | ||+----------------------------------------------+|| | |+------------------------------------------------+| +------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unknown action '`:placeholder:`B`:diagtext:`' for '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`| +------------------------------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------+--------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`missing argument to '#pragma` |nbsp| :placeholder:`A`:diagtext:`'`|+------------------------------------------------+| | || || | |+------------------------------------------------+| | ||+----------------------------------------------+|| | |||:diagtext:`; expected` |nbsp| :placeholder:`C`||| | ||+----------------------------------------------+|| | |+------------------------------------------------+| +--------------------------------------------------------------------------------------------------------+--------------------------------------------------+ +----------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`incorrect use of '#pragma ms\_struct on\|off' - ignored`| +----------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`#pragma options align=reset failed:` |nbsp| :placeholder:`A`| +--------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`expected 'align' following '#pragma options' - ignored`| +---------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`expected #pragma pack parameter to be '1', '2', '4', '8', or '16'`| +--------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`expected integer or identifier in '#pragma pack' - ignored`| +-------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`#pragma` |nbsp| :placeholder:`A`:diagtext:`(pop, ...) failed:` |nbsp| :placeholder:`B`| +----------------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`pragma pop\_macro could not pop '`:placeholder:`A`:diagtext:`', no matching push\_macro`| +------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unknown OpenCL extension` |nbsp| :placeholder:`A` |nbsp| :diagtext:`- ignoring`| +---------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`known but unsupported action '`:placeholder:`B`:diagtext:`' for '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`| +--------------------------------------------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unsupported OpenCL extension` |nbsp| :placeholder:`A` |nbsp| :diagtext:`- ignoring`| +-------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`expected '#pragma unused' argument to be a variable name`| +-----------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`only variables can be arguments to '#pragma unused'`| +------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`undeclared variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`used as an argument for '#pragma unused'`| +----------------------------------------------------------------------------------------------------------------------------------------------+ -Wignored-qualifiers -------------------- Some of the diagnostics controlled by this flag are enabled by default. **Diagnostic text:** +--------------------------------------------------+------------------------------------+----------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ARC` |nbsp| |+----------------------------------+| |nbsp| :diagtext:`lifetime qualifier on return type is ignored`| | ||:diagtext:`unused` || | | |+----------------------------------+| | | ||:diagtext:`\_\_unsafe\_unretained`|| | | |+----------------------------------+| | | ||:diagtext:`\_\_strong` || | | |+----------------------------------+| | | ||:diagtext:`\_\_weak` || | | |+----------------------------------+| | | ||:diagtext:`\_\_autoreleasing` || | | |+----------------------------------+| | +--------------------------------------------------+------------------------------------+----------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' qualifier on omitted return type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`has no effect`| +---------------------------------------------------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------+---------------+------------------------------------------+------------------+-----------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' type qualifier`|+-------------+| |nbsp| :diagtext:`on return type` |nbsp| |+----------------+| |nbsp| :diagtext:`no effect`| | || || ||:diagtext:`has` || | | |+-------------+| |+----------------+| | | ||:diagtext:`s`|| ||:diagtext:`have`|| | | |+-------------+| |+----------------+| | +------------------------------------------------------------------------------------+---------------+------------------------------------------+------------------+-----------------------------+ +---------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' qualifier on function type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`has no effect`| +---------------------------------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' qualifier on reference type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`has no effect`| +----------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wimplicit ---------- Some of the diagnostics controlled by this flag are enabled by default. Controls `-Wimplicit-function-declaration`_, `-Wimplicit-int`_. -Wimplicit-atomic-properties ---------------------------- **Diagnostic text:** +-----------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`property is assumed atomic when auto-synthesizing the property`| +-----------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`property is assumed atomic by default`| +----------------------------------------------------------------------------+ -Wimplicit-const-int-float-conversion ------------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`implicit conversion from` |nbsp| :placeholder:`C` |nbsp| :diagtext:`to` |nbsp| :placeholder:`D` |nbsp| :diagtext:`changes value from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wimplicit-conversion-floating-point-to-bool -------------------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`implicit conversion turns floating-point number into bool:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wimplicit-exception-spec-mismatch ---------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------+----------------------+----------------------------------------------------------------------+----------------------+-------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`function previously declared with an` |nbsp| |+--------------------+| |nbsp| :diagtext:`exception specification redeclared with an` |nbsp| |+--------------------+| |nbsp| :diagtext:`exception specification`| | ||:diagtext:`explicit`|| ||:diagtext:`implicit`|| | | |+--------------------+| |+--------------------+| | | ||:diagtext:`implicit`|| ||:diagtext:`explicit`|| | | |+--------------------+| |+--------------------+| | +-----------------------------------------------------------------------------------+----------------------+----------------------------------------------------------------------+----------------------+-------------------------------------------+ -Wimplicit-fallthrough ---------------------- Also controls `-Wimplicit-fallthrough-per-function`_. **Diagnostic text:** +---------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`fallthrough annotation in unreachable code`| +---------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unannotated fall-through between switch labels`| +-------------------------------------------------------------------------------------+ -Wimplicit-fallthrough-per-function ----------------------------------- **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unannotated fall-through between switch labels in partly-annotated function`| +------------------------------------------------------------------------------------------------------------------+ -Wimplicit-fixed-point-conversion --------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`implicit conversion from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`cannot fit within the range of values for` |nbsp| :placeholder:`B`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wimplicit-float-conversion --------------------------- Some of the diagnostics controlled by this flag are enabled by default. Also controls `-Wimplicit-int-float-conversion`_, `-Wobjc-signed-char-bool-implicit-float-conversion`_. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`implicit conversion loses floating-point precision:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`implicit conversion when assigning computation result loses floating-point precision:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wimplicit-function-declaration ------------------------------- Some of the diagnostics controlled by this flag are enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`implicit declaration of function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is invalid in C99`| +------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`implicitly declaring library function '`:placeholder:`A`:diagtext:`' with type` |nbsp| :placeholder:`B`| +---------------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------+ |:error:`error:` |nbsp| :diagtext:`use of unknown builtin` |nbsp| :placeholder:`A`| +---------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`implicit declaration of function` |nbsp| :placeholder:`A`| +-----------------------------------------------------------------------------------------------+ -Wimplicit-int -------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`type specifier missing, defaults to 'int'`| +--------------------------------------------------------------------------------+ -Wimplicit-int-conversion ------------------------- Also controls `-Wobjc-signed-char-bool-implicit-int-conversion`_. **Diagnostic text:** +---------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`higher order bits are zeroes after implicit conversion`| +---------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`implicit conversion loses integer precision:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`| +---------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wimplicit-int-float-conversion ------------------------------- Some of the diagnostics controlled by this flag are enabled by default. Also controls `-Wimplicit-const-int-float-conversion`_. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`implicit conversion from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`may lose precision`| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wimplicit-retain-self ---------------------- **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`block implicitly retains 'self'; explicitly mention 'self' to indicate this is intended behavior`| +---------------------------------------------------------------------------------------------------------------------------------------+ -Wimplicitly-unsigned-literal ----------------------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`integer literal is too large to be represented in a signed integer type, interpreting as unsigned`| +----------------------------------------------------------------------------------------------------------------------------------------+ -Wimport -------- This diagnostic flag exists for GCC compatibility, and has no effect in Clang. -Wimport-preprocessor-directive-pedantic ---------------------------------------- **Diagnostic text:** +----------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`#import is a language extension`| +----------------------------------------------------------------------+ -Winaccessible-base ------------------- This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`direct base` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is inaccessible due to ambiguity:`:placeholder:`B`| +-----------------------------------------------------------------------------------------------------------------------------------------------+ -Winclude-next-absolute-path ---------------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`#include\_next in file found relative to primary source file or found by absolute path; will search from start of include path`| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Winclude-next-outside-header ----------------------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`#include\_next in primary source file; will search from start of include path`| +--------------------------------------------------------------------------------------------------------------------+ -Wincompatible-exception-spec ----------------------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------+----------------------+--------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`exception specifications of` |nbsp| |+--------------------+| |nbsp| :diagtext:`types differ`| | ||:diagtext:`return` || | | |+--------------------+| | | ||:diagtext:`argument`|| | | |+--------------------+| | +--------------------------------------------------------------------------+----------------------+--------------------------------+ +-----------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`target exception specification is not superset of source`| +-----------------------------------------------------------------------------------------------+ -Wincompatible-function-pointer-types ------------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------+----------------------------------------------------------------+---------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`incompatible function pointer types` |nbsp| |+--------------------------------------------------------------+|+-------------------------------------+| | ||:diagtext:`assigning to different types` ||| || | |+--------------------------------------------------------------+|+-------------------------------------+| | ||:diagtext:`passing to parameter of different type` |||:diagtext:`; dereference with \*` || | |+--------------------------------------------------------------+|+-------------------------------------+| | ||:diagtext:`returning from function with different return type`|||:diagtext:`; take the address with &`|| | |+--------------------------------------------------------------+|+-------------------------------------+| | ||:diagtext:`converting between types` |||:diagtext:`; remove \*` || | |+--------------------------------------------------------------+|+-------------------------------------+| | ||:diagtext:`initializing with expression of different type` |||:diagtext:`; remove &` || | |+--------------------------------------------------------------+|+-------------------------------------+| | ||:diagtext:`sending to parameter of different type` || | | |+--------------------------------------------------------------+| | | ||:diagtext:`casting between types` || | | |+--------------------------------------------------------------+| | +----------------------------------------------------------------------------------+----------------------------------------------------------------+---------------------------------------+ -Wincompatible-library-redeclaration ------------------------------------ This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`incompatible redeclaration of library function` |nbsp| :placeholder:`A`| +-------------------------------------------------------------------------------------------------------------+ -Wincompatible-ms-struct ------------------------ This diagnostic is an error by default, but the flag ``-Wno-incompatible-ms-struct`` can be used to disable the error. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------------+ |:error:`error:` |nbsp| :diagtext:`ms\_struct may not produce Microsoft-compatible layouts for classes with base classes or virtual functions`| +---------------------------------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:error:`error:` |nbsp| :diagtext:`ms\_struct may not produce Microsoft-compatible layouts with fundamental data types with sizes that aren't a power of two`| +------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wincompatible-pointer-types ---------------------------- This diagnostic is enabled by default. Also controls `-Wincompatible-function-pointer-types`_, `-Wincompatible-pointer-types-discards-qualifiers`_. **Diagnostic text:** +-------------------------------------------------------------------------+----------------------------------------------------------------+---------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`incompatible pointer types` |nbsp| |+--------------------------------------------------------------+|+-------------------------------------+| | ||:diagtext:`assigning to different types` ||| || | |+--------------------------------------------------------------+|+-------------------------------------+| | ||:diagtext:`passing to parameter of different type` |||:diagtext:`; dereference with \*` || | |+--------------------------------------------------------------+|+-------------------------------------+| | ||:diagtext:`returning from function with different return type`|||:diagtext:`; take the address with &`|| | |+--------------------------------------------------------------+|+-------------------------------------+| | ||:diagtext:`converting between types` |||:diagtext:`; remove \*` || | |+--------------------------------------------------------------+|+-------------------------------------+| | ||:diagtext:`initializing with expression of different type` |||:diagtext:`; remove &` || | |+--------------------------------------------------------------+|+-------------------------------------+| | ||:diagtext:`sending to parameter of different type` || | | |+--------------------------------------------------------------+| | | ||:diagtext:`casting between types` || | | |+--------------------------------------------------------------+| | +-------------------------------------------------------------------------+----------------------------------------------------------------+---------------------------------------+ -Wincompatible-pointer-types-discards-qualifiers ------------------------------------------------ This diagnostic is enabled by default. **Diagnostic text:** +---------------------------+----------------------------------------------------------------+---------------------------------------------------------------+ |:warning:`warning:` |nbsp| |+--------------------------------------------------------------+| |nbsp| :diagtext:`discards qualifiers in nested pointer types`| | ||:diagtext:`assigning to different types` || | | |+--------------------------------------------------------------+| | | ||:diagtext:`passing to parameter of different type` || | | |+--------------------------------------------------------------+| | | ||:diagtext:`returning from function with different return type`|| | | |+--------------------------------------------------------------+| | | ||:diagtext:`converting between types` || | | |+--------------------------------------------------------------+| | | ||:diagtext:`initializing with expression of different type` || | | |+--------------------------------------------------------------+| | | ||:diagtext:`sending to parameter of different type` || | | |+--------------------------------------------------------------+| | | ||:diagtext:`casting between types` || | | |+--------------------------------------------------------------+| | +---------------------------+----------------------------------------------------------------+---------------------------------------------------------------+ +---------------------------+----------------------------------------------------------------+---------------------------------------+ |:warning:`warning:` |nbsp| |+--------------------------------------------------------------+| |nbsp| :diagtext:`discards qualifiers`| | ||:diagtext:`assigning to different types` || | | |+--------------------------------------------------------------+| | | ||:diagtext:`passing to parameter of different type` || | | |+--------------------------------------------------------------+| | | ||:diagtext:`returning from function with different return type`|| | | |+--------------------------------------------------------------+| | | ||:diagtext:`converting between types` || | | |+--------------------------------------------------------------+| | | ||:diagtext:`initializing with expression of different type` || | | |+--------------------------------------------------------------+| | | ||:diagtext:`sending to parameter of different type` || | | |+--------------------------------------------------------------+| | | ||:diagtext:`casting between types` || | | |+--------------------------------------------------------------+| | +---------------------------+----------------------------------------------------------------+---------------------------------------+ +---------------------------+-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| |+-----------------------------+| |nbsp| :diagtext:`from` |nbsp| :placeholder:`B` |nbsp| :diagtext:`to` |nbsp| :placeholder:`C` |nbsp| :diagtext:`changes address space of nested pointers`| | ||:diagtext:`reinterpret\_cast`|| | | |+-----------------------------+| | | ||:diagtext:`C-style cast` || | | |+-----------------------------+| | +---------------------------+-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wincompatible-property-type ---------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`property type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is incompatible with type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`inherited from` |nbsp| :placeholder:`C`| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wincompatible-sysroot ---------------------- This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`using sysroot for '`:placeholder:`A`:diagtext:`' but targeting '`:placeholder:`B`:diagtext:`'`| +------------------------------------------------------------------------------------------------------------------------------------+ -Wincomplete-framework-module-declaration ----------------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`skipping '`:placeholder:`A`:diagtext:`' because module declaration of '`:placeholder:`B`:diagtext:`' lacks the 'framework' qualifier`| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wincomplete-implementation --------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`method definition for` |nbsp| :placeholder:`A` |nbsp| :diagtext:`not found`| +-----------------------------------------------------------------------------------------------------------------+ -Wincomplete-module ------------------- Some of the diagnostics controlled by this flag are enabled by default. Controls `-Wincomplete-umbrella`_, `-Wnon-modular-include-in-module`_. -Wincomplete-setjmp-declaration ------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`declaration of built-in function '`:placeholder:`A`:diagtext:`' requires the declaration of the 'jmp\_buf' type, commonly provided in the header .`| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wincomplete-umbrella --------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`missing submodule '`:placeholder:`A`:diagtext:`'`| +---------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`umbrella directory '`:placeholder:`A`:diagtext:`' not found`| +--------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`umbrella header for module '`:placeholder:`A`:diagtext:`' does not include header '`:placeholder:`B`:diagtext:`'`| +-------------------------------------------------------------------------------------------------------------------------------------------------------+ -Winconsistent-dllimport ------------------------ This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`redeclared without` |nbsp| :placeholder:`B` |nbsp| :diagtext:`attribute: previous` |nbsp| :placeholder:`B` |nbsp| :diagtext:`ignored`| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`redeclared without 'dllimport' attribute: 'dllexport' attribute added`| +------------------------------------------------------------------------------------------------------------------------------------+ -Winconsistent-missing-destructor-override ------------------------------------------ **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`overrides a destructor but is not marked 'override'`| +------------------------------------------------------------------------------------------------------------------+ -Winconsistent-missing-override ------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`overrides a member function but is not marked 'override'`| +-----------------------------------------------------------------------------------------------------------------------+ -Wincrement-bool ---------------- This diagnostic is enabled by default. Also controls `-Wdeprecated-increment-bool`_. **Diagnostic text:** +------------------------------------------------------------------------------------------------+ |:error:`error:` |nbsp| :diagtext:`ISO C++17 does not allow incrementing expression of type bool`| +------------------------------------------------------------------------------------------------+ -Winfinite-recursion -------------------- **Diagnostic text:** +---------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`all paths through this function will call itself`| +---------------------------------------------------------------------------------------+ -Winit-self ----------- This diagnostic flag exists for GCC compatibility, and has no effect in Clang. -Winitializer-overrides ----------------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------+-------------------------------+------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`initializer` |nbsp| |+-----------------------------+|:diagtext:`overrides prior initialization of this subobject`| | ||:diagtext:`partially` |nbsp| || | | |+-----------------------------+| | | || || | | |+-----------------------------+| | +----------------------------------------------------------+-------------------------------+------------------------------------------------------------+ +----------------------------------------------------------+-------------------------------+------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`initializer` |nbsp| |+-----------------------------+|:diagtext:`overrides prior initialization of this subobject`| | ||:diagtext:`partially` |nbsp| || | | |+-----------------------------+| | | || || | | |+-----------------------------+| | +----------------------------------------------------------+-------------------------------+------------------------------------------------------------+ -Winjected-class-name --------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------+--------------------------------------------------------------+------------------------+---------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ISO C++ specifies that qualified reference to` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a constructor name rather than a` |nbsp| |+-------------------------+| |nbsp| :diagtext:`in this context, despite preceding` |nbsp| |+----------------------+| |nbsp| :diagtext:`keyword`| | ||:diagtext:`template name`|| ||:diagtext:`'typename'`|| | | |+-------------------------+| |+----------------------+| | | ||:diagtext:`type` || ||:diagtext:`'template'`|| | | |+-------------------------+| |+----------------------+| | +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------+--------------------------------------------------------------+------------------------+---------------------------+ -Winline -------- This diagnostic flag exists for GCC compatibility, and has no effect in Clang. -Winline-asm ------------ This diagnostic is enabled by default. **Diagnostic text:** The text of this diagnostic is not controlled by Clang. -Winline-new-delete ------------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`replacement function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`cannot be declared 'inline'`| +----------------------------------------------------------------------------------------------------------------------------------+ -Winstantiation-after-specialization ------------------------------------ This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`explicit instantiation of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`that occurs after an explicit specialization has no effect`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wint-conversion ---------------- This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------------+----------------------------------------------------------------+---------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`incompatible integer to pointer conversion` |nbsp| |+--------------------------------------------------------------+|+-------------------------------------+| | ||:diagtext:`assigning to different types` ||| || | |+--------------------------------------------------------------+|+-------------------------------------+| | ||:diagtext:`passing to parameter of different type` |||:diagtext:`; dereference with \*` || | |+--------------------------------------------------------------+|+-------------------------------------+| | ||:diagtext:`returning from function with different return type`|||:diagtext:`; take the address with &`|| | |+--------------------------------------------------------------+|+-------------------------------------+| | ||:diagtext:`converting between types` |||:diagtext:`; remove \*` || | |+--------------------------------------------------------------+|+-------------------------------------+| | ||:diagtext:`initializing with expression of different type` |||:diagtext:`; remove &` || | |+--------------------------------------------------------------+|+-------------------------------------+| | ||:diagtext:`sending to parameter of different type` || | | |+--------------------------------------------------------------+| | | ||:diagtext:`casting between types` || | | |+--------------------------------------------------------------+| | +-----------------------------------------------------------------------------------------+----------------------------------------------------------------+---------------------------------------+ +-----------------------------------------------------------------------------------------+----------------------------------------------------------------+---------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`incompatible pointer to integer conversion` |nbsp| |+--------------------------------------------------------------+|+-------------------------------------+| | ||:diagtext:`assigning to different types` ||| || | |+--------------------------------------------------------------+|+-------------------------------------+| | ||:diagtext:`passing to parameter of different type` |||:diagtext:`; dereference with \*` || | |+--------------------------------------------------------------+|+-------------------------------------+| | ||:diagtext:`returning from function with different return type`|||:diagtext:`; take the address with &`|| | |+--------------------------------------------------------------+|+-------------------------------------+| | ||:diagtext:`converting between types` |||:diagtext:`; remove \*` || | |+--------------------------------------------------------------+|+-------------------------------------+| | ||:diagtext:`initializing with expression of different type` |||:diagtext:`; remove &` || | |+--------------------------------------------------------------+|+-------------------------------------+| | ||:diagtext:`sending to parameter of different type` || | | |+--------------------------------------------------------------+| | | ||:diagtext:`casting between types` || | | |+--------------------------------------------------------------+| | +-----------------------------------------------------------------------------------------+----------------------------------------------------------------+---------------------------------------+ -Wint-conversions ----------------- Synonym for `-Wint-conversion`_. -Wint-in-bool-context --------------------- **Diagnostic text:** +--------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`converting the enum constant to a boolean`| +--------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`converting the result of '<<' to a boolean; did you mean '(`:placeholder:`A`:diagtext:`) != 0'?`| +--------------------------------------------------------------------------------------------------------------------------------------+ -Wint-to-pointer-cast --------------------- This diagnostic is enabled by default. Also controls `-Wint-to-void-pointer-cast`_. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`cast to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`from smaller integer type` |nbsp| :placeholder:`A`| +-------------------------------------------------------------------------------------------------------------------------------------------+ -Wint-to-void-pointer-cast -------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`cast to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`from smaller integer type` |nbsp| :placeholder:`A`| +-------------------------------------------------------------------------------------------------------------------------------------------+ -Winteger-overflow ------------------ This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`overflow in expression; result is` |nbsp| :placeholder:`A` |nbsp| :diagtext:`with type` |nbsp| :placeholder:`B`| +-----------------------------------------------------------------------------------------------------------------------------------------------------+ -Winvalid-command-line-argument ------------------------------- This diagnostic is enabled by default. Also controls `-Wignored-optimization-argument`_. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`the given MCU supports` |nbsp| :placeholder:`A` |nbsp| :diagtext:`hardware multiply, but -mhwmult is set to` |nbsp| :placeholder:`B`:diagtext:`.`| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`no MCU device specified, but '-mhwmult' is set to 'auto', assuming no hardware multiply. Use -mmcu to specify a MSP430 device, or -mhwmult to set hardware multiply type explicitly.`| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`the given MCU does not support hardware multiply, but -mhwmult is set to` |nbsp| :placeholder:`A`:diagtext:`.`| +----------------------------------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`the object size sanitizer has no effect at -O0, but is explicitly enabled:` |nbsp| :placeholder:`A`| +-----------------------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`optimization level '`:placeholder:`A`:diagtext:`' is not supported; using '`:placeholder:`B`:placeholder:`C`:diagtext:`' instead`| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ignoring extension '`:placeholder:`A`:diagtext:`' because the '`:placeholder:`B`:diagtext:`' architecture does not support it`| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Winvalid-constexpr ------------------- This diagnostic is an error by default, but the flag ``-Wno-invalid-constexpr`` can be used to disable the error. **Diagnostic text:** +-----------------------+-----------------------+--------+-------------------------+--------------------------------------------------------+ |:error:`error:` |nbsp| |+---------------------+| |nbsp| |+-----------------------+| |nbsp| :diagtext:`never produces a constant expression`| | ||:diagtext:`constexpr`|| ||:diagtext:`function` || | | |+---------------------+| |+-----------------------+| | | ||:diagtext:`consteval`|| ||:diagtext:`constructor`|| | | |+---------------------+| |+-----------------------+| | +-----------------------+-----------------------+--------+-------------------------+--------------------------------------------------------+ -Winvalid-iboutlet ------------------ This diagnostic is enabled by default. **Diagnostic text:** +---------------------------+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| |+-----------------------------+| |nbsp| :diagtext:`with` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute must be an object type (invalid` |nbsp| :placeholder:`B`:diagtext:`)`| | ||:diagtext:`instance variable`|| | | |+-----------------------------+| | | ||:diagtext:`property` || | | |+-----------------------------+| | +---------------------------+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`IBOutletCollection properties should be copy/strong and not assign`| +---------------------------------------------------------------------------------------------------------+ -Winvalid-initializer-from-system-header ---------------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`invalid constructor form class in system header, should not be explicit`| +--------------------------------------------------------------------------------------------------------------+ -Winvalid-ios-deployment-target ------------------------------- This diagnostic is an error by default, but the flag ``-Wno-invalid-ios-deployment-target`` can be used to disable the error. **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:error:`error:` |nbsp| :diagtext:`invalid iOS deployment version '`:placeholder:`A`:diagtext:`', iOS 10 is the maximum deployment target for 32-bit targets`| +------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Winvalid-no-builtin-names -------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' is not a valid builtin name for` |nbsp| :placeholder:`B`| +-----------------------------------------------------------------------------------------------------------------------------+ -Winvalid-noreturn ------------------ This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`function declared 'noreturn' should not return`| +-------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`declared 'noreturn' should not return`| +--------------------------------------------------------------------------------------------------------------------------------+ -Winvalid-offsetof ------------------ This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`offset of on non-POD type` |nbsp| :placeholder:`A`| +----------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`offset of on non-standard-layout type` |nbsp| :placeholder:`A`| +----------------------------------------------------------------------------------------------------+ -Winvalid-or-nonexistent-directory ---------------------------------- Some of the diagnostics controlled by this flag are enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`environment variable SCE\_ORBIS\_SDK\_DIR is set, but points to invalid or nonexistent directory '`:placeholder:`A`:diagtext:`'`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unable to find` |nbsp| :placeholder:`A` |nbsp| :diagtext:`directory, expected to be in '`:placeholder:`B`:diagtext:`'`| +------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Winvalid-partial-specialization -------------------------------- This diagnostic is an error by default, but the flag ``-Wno-invalid-partial-specialization`` can be used to disable the error. **Diagnostic text:** +-----------------------+----------------------+-----------------------------------------------------------------------------------------------------+ |:error:`error:` |nbsp| |+--------------------+| |nbsp| :diagtext:`template partial specialization is not more specialized than the primary template`| | ||:diagtext:`class` || | | |+--------------------+| | | ||:diagtext:`variable`|| | | |+--------------------+| | +-----------------------+----------------------+-----------------------------------------------------------------------------------------------------+ -Winvalid-pch ------------- This diagnostic flag exists for GCC compatibility, and has no effect in Clang. -Winvalid-pp-token ------------------ This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`empty character constant`| +---------------------------------------------------------------+ +------------------------------------------------------------------+-----------------+-----------------------------+ |:warning:`warning:` |nbsp| :diagtext:`missing terminating` |nbsp| |+---------------+| |nbsp| :diagtext:`character`| | ||:diagtext:`'` || | | |+---------------+| | | ||:diagtext:`'"'`|| | | |+---------------+| | +------------------------------------------------------------------+-----------------+-----------------------------+ -Winvalid-source-encoding ------------------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`illegal character encoding in character literal`| +--------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`illegal character encoding in string literal`| +-----------------------------------------------------------------------------------+ -Winvalid-token-paste --------------------- This diagnostic is an error by default, but the flag ``-Wno-invalid-token-paste`` can be used to disable the error. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------+ |:error:`error:` |nbsp| :diagtext:`pasting formed '`:placeholder:`A`:diagtext:`', an invalid preprocessing token`| +----------------------------------------------------------------------------------------------------------------+ -Wjump-seh-finally ------------------ This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`jump out of \_\_finally block has undefined behavior`| +-------------------------------------------------------------------------------------------+ -Wkeyword-compat ---------------- This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`keyword '`:placeholder:`A`:diagtext:`' will be made available as an identifier` |nbsp| |+-----------------------------------------------------+| | ||:diagtext:`here` || | |+-----------------------------------------------------+| | ||:diagtext:`for the remainder of the translation unit`|| | |+-----------------------------------------------------+| +-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------+ -Wkeyword-macro --------------- **Diagnostic text:** +----------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`keyword is hidden by macro definition`| +----------------------------------------------------------------------------+ -Wknr-promoted-parameter ------------------------ This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`promoted type of K&R function parameter is not compatible with parameter type` |nbsp| :diagtext:`declared in a previous prototype`| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wlanguage-extension-token -------------------------- **Diagnostic text:** +-----------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`extension used`| +-----------------------------------------------------+ -Wlarge-by-value-copy --------------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a large (`:placeholder:`B` |nbsp| :diagtext:`bytes) pass-by-value argument; pass it by reference instead ?`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`return value of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a large (`:placeholder:`B` |nbsp| :diagtext:`bytes) pass-by-value object; pass it by reference instead ?`| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wliblto -------- This diagnostic flag exists for GCC compatibility, and has no effect in Clang. -Wliteral-conversion -------------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`implicit conversion from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`changes value from` |nbsp| :placeholder:`C` |nbsp| :diagtext:`to` |nbsp| :placeholder:`D`| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`implicit conversion of out of range value from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is undefined`| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wliteral-range --------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`magnitude of floating-point constant too large for type` |nbsp| :placeholder:`A`:diagtext:`; maximum is` |nbsp| :placeholder:`B`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`magnitude of floating-point constant too small for type` |nbsp| :placeholder:`A`:diagtext:`; minimum is` |nbsp| :placeholder:`B`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wlocal-type-template-args -------------------------- Some of the diagnostics controlled by this flag are enabled by default. Also controls `-Wc++98-compat-local-type-template-args`_. **Diagnostic text:** +------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`template argument uses local type` |nbsp| :placeholder:`A`| +------------------------------------------------------------------------------------------------+ -Wlogical-not-parentheses ------------------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------------------+------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`logical not is only applied to the left hand side of this` |nbsp| |+----------------------------+| | ||:diagtext:`comparison` || | |+----------------------------+| | ||:diagtext:`bitwise operator`|| | |+----------------------------+| +--------------------------------------------------------------------------------------------------------+------------------------------+ -Wlogical-op-parentheses ------------------------ **Diagnostic text:** +---------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'&&' within '\|\|'`| +---------------------------------------------------------+ -Wlong-long ----------- Also controls `-Wc++11-long-long`_. **Diagnostic text:** +-----------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'long long' is an extension when C99 mode is not enabled`| +-----------------------------------------------------------------------------------------------+ -Wloop-analysis --------------- Controls `-Wfor-loop-analysis`_, `-Wrange-loop-analysis`_. -Wmacro-redefined ----------------- This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`macro redefined`| +------------------------------------------------------------------------------+ -Wmain ------ Some of the diagnostics controlled by this flag are enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ISO C++ does not allow 'main' to be used by a program`| +--------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'main' is not allowed to be declared \_Noreturn`| +--------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'main' is not allowed to be declared variadic`| +------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`only one parameter on 'main' declaration`| +-------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`variable named 'main' with external linkage has undefined behavior`| +---------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`bool literal returned from 'main'`| +------------------------------------------------------------------------+ +---------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'main' should not be declared static`| +---------------------------------------------------------------------------+ -Wmain-return-type ------------------ This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`return type of 'main' is not 'int'`| +-------------------------------------------------------------------------+ -Wmalformed-warning-check ------------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`\_\_has\_warning expected option name (e.g. "-Wundef")`| +---------------------------------------------------------------------------------------------+ -Wmany-braces-around-scalar-init -------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------+----------------------------+-----------------------+ |:warning:`warning:` |nbsp| :diagtext:`too many braces around` |nbsp| |+--------------------------+|:diagtext:`initializer`| | ||:diagtext:`scalar` |nbsp| || | | |+--------------------------+| | | || || | | |+--------------------------+| | +---------------------------------------------------------------------+----------------------------+-----------------------+ -Wmax-tokens ------------ This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`the number of preprocessor source tokens (`:placeholder:`A`:diagtext:`) exceeds this token limit (`:placeholder:`B`:diagtext:`)`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`the total number of preprocessor source tokens (`:placeholder:`A`:diagtext:`) exceeds the token limit (`:placeholder:`B`:diagtext:`)`| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ The warning is issued if the number of pre-processor tokens exceeds the token limit, which can be set in three ways: 1. As a limit at a specific point in a file, using the ``clang max_tokens_here`` pragma: .. code-block: c++ #pragma clang max_tokens_here 1234 2. As a per-translation unit limit, using the ``-fmax-tokens=`` command-line flag: .. code-block: console clang -c a.cpp -fmax-tokens=1234 3. As a per-translation unit limit using the ``clang max_tokens_total`` pragma, which works like and overrides the ``-fmax-tokens=`` flag: .. code-block: c++ #pragma clang max_tokens_total 1234 These limits can be helpful in limiting code growth through included files. Setting a token limit of zero means no limit. -Wmax-unsigned-zero ------------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------+---------------------------------------+------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`taking the max of` |nbsp| |+-------------------------------------+| |nbsp| :diagtext:`is always equal to the other value`| | ||:diagtext:`a value and unsigned zero`|| | | |+-------------------------------------+| | | ||:diagtext:`unsigned zero and a value`|| | | |+-------------------------------------+| | +----------------------------------------------------------------+---------------------------------------+------------------------------------------------------+ -Wmemset-transposed-args ------------------------ This diagnostic is enabled by default. **Diagnostic text:** +---------------------------+-----------------------------------------------------+---------------------------------------------------------------+ |:warning:`warning:` |nbsp| |+---------------------------------------------------+|:diagtext:`; did you mean to transpose the last two arguments?`| | ||:diagtext:`'size' argument to memset is '0'` || | | |+---------------------------------------------------+| | | ||:diagtext:`setting buffer to a 'sizeof' expression`|| | | |+---------------------------------------------------+| | +---------------------------+-----------------------------------------------------+---------------------------------------------------------------+ -Wmemsize-comparison -------------------- This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`size argument in` |nbsp| :placeholder:`A` |nbsp| :diagtext:`call is a comparison`| +-----------------------------------------------------------------------------------------------------------------------+ -Wmethod-signatures ------------------- **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`conflicting parameter types in implementation of` |nbsp| :placeholder:`A`:diagtext:`:` |nbsp| :placeholder:`B` |nbsp| :diagtext:`vs` |nbsp| :placeholder:`C`| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`conflicting return type in implementation of` |nbsp| :placeholder:`A`:diagtext:`:` |nbsp| :placeholder:`B` |nbsp| :diagtext:`vs` |nbsp| :placeholder:`C`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wmicrosoft ----------- Some of the diagnostics controlled by this flag are enabled by default. Controls `-Winconsistent-dllimport`_, `-Wmicrosoft-anon-tag`_, `-Wmicrosoft-cast`_, `-Wmicrosoft-charize`_, `-Wmicrosoft-comment-paste`_, `-Wmicrosoft-const-init`_, `-Wmicrosoft-cpp-macro`_, `-Wmicrosoft-default-arg-redefinition`_, `-Wmicrosoft-drectve-section`_, `-Wmicrosoft-end-of-file`_, `-Wmicrosoft-enum-forward-reference`_, `-Wmicrosoft-enum-value`_, `-Wmicrosoft-exception-spec`_, `-Wmicrosoft-explicit-constructor-call`_, `-Wmicrosoft-extra-qualification`_, `-Wmicrosoft-fixed-enum`_, `-Wmicrosoft-flexible-array`_, `-Wmicrosoft-goto`_, `-Wmicrosoft-include`_, `-Wmicrosoft-mutable-reference`_, `-Wmicrosoft-pure-definition`_, `-Wmicrosoft-redeclare-static`_, `-Wmicrosoft-sealed`_, `-Wmicrosoft-template`_, `-Wmicrosoft-union-member-reference`_, `-Wmicrosoft-unqualified-friend`_, `-Wmicrosoft-using-decl`_, `-Wmicrosoft-void-pseudo-dtor`_. -Wmicrosoft-anon-tag -------------------- Some of the diagnostics controlled by this flag are enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------+--------------------+---------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`types declared in an anonymous` |nbsp| |+------------------+| |nbsp| :diagtext:`are a Microsoft extension`| | ||:diagtext:`struct`|| | | |+------------------+| | | ||:diagtext:`union` || | | |+------------------+| | +-----------------------------------------------------------------------------+--------------------+---------------------------------------------+ +--------------------------------------------------------+---------------------+---------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`anonymous` |nbsp| |+-------------------+| |nbsp| :diagtext:`are a Microsoft extension`| | ||:diagtext:`structs`|| | | |+-------------------+| | | ||:diagtext:`unions` || | | |+-------------------+| | +--------------------------------------------------------+---------------------+---------------------------------------------+ -Wmicrosoft-cast ---------------- This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`static\_cast between pointer-to-function and pointer-to-object is a Microsoft extension`| +------------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`implicit conversion between pointer-to-function and pointer-to-object is a Microsoft extension`| +-------------------------------------------------------------------------------------------------------------------------------------+ -Wmicrosoft-charize ------------------- **Diagnostic text:** +-------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`charizing operator #@ is a Microsoft extension`| +-------------------------------------------------------------------------------------+ -Wmicrosoft-comment-paste ------------------------- **Diagnostic text:** +----------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`pasting two '/' tokens into a '//' comment is a Microsoft extension`| +----------------------------------------------------------------------------------------------------------+ -Wmicrosoft-const-init ---------------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+--------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`default initialization of an object of const type` |nbsp| :placeholder:`A`|+---------------------------------------------------------------+| |nbsp| :diagtext:`is a Microsoft extension`| | || || | | |+---------------------------------------------------------------+| | | || |nbsp| :diagtext:`without a user-provided default constructor`|| | | |+---------------------------------------------------------------+| | +----------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+--------------------------------------------+ -Wmicrosoft-cpp-macro --------------------- **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`C++ operator` |nbsp| :placeholder:`A` |nbsp| :diagtext:`(aka` |nbsp| :placeholder:`B`:diagtext:`) used as a macro name`| +-------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wmicrosoft-default-arg-redefinition ------------------------------------ This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`redefinition of default argument`| +-----------------------------------------------------------------------+ -Wmicrosoft-drectve-section --------------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`#pragma` |nbsp| :placeholder:`A`:diagtext:`(".drectve") has undefined behavior, use #pragma comment(linker, ...) instead`| +---------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wmicrosoft-end-of-file ----------------------- **Diagnostic text:** +----------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`treating Ctrl-Z as end-of-file is a Microsoft extension`| +----------------------------------------------------------------------------------------------+ -Wmicrosoft-enum-forward-reference ---------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`forward references to 'enum' types are a Microsoft extension`| +---------------------------------------------------------------------------------------------------+ -Wmicrosoft-enum-value ---------------------- **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`enumerator value is not representable in the underlying type` |nbsp| :placeholder:`A`| +---------------------------------------------------------------------------------------------------------------------------+ -Wmicrosoft-exception-spec -------------------------- Some of the diagnostics controlled by this flag are enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`exception specification of '...' is a Microsoft extension`| +------------------------------------------------------------------------------------------------+ +---------------------------+----------------------------------+----------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| |+--------------------------------+|:diagtext:`incomplete type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is not allowed in exception specification`| | || || | | |+--------------------------------+| | | ||:diagtext:`pointer to` |nbsp| || | | |+--------------------------------+| | | ||:diagtext:`reference to` |nbsp| || | | |+--------------------------------+| | +---------------------------+----------------------------------+----------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`exception specification in declaration does not match previous declaration`| +-----------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`exception specification in explicit instantiation does not match instantiated one`| +------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is missing exception specification '`:placeholder:`B`:diagtext:`'`| +--------------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`exception specification of overriding function is more lax than base version`| +-------------------------------------------------------------------------------------------------------------------+ -Wmicrosoft-exists ------------------ This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------+---------------------------------+--------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`dependent` |nbsp| |+-------------------------------+| |nbsp| :diagtext:`declarations are ignored`| | ||:diagtext:`\_\_if\_not\_exists`|| | | |+-------------------------------+| | | ||:diagtext:`\_\_if\_exists` || | | |+-------------------------------+| | +--------------------------------------------------------+---------------------------------+--------------------------------------------+ -Wmicrosoft-explicit-constructor-call ------------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`explicit constructor calls are a Microsoft extension`| +-------------------------------------------------------------------------------------------+ -Wmicrosoft-extra-qualification ------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`extra qualification on member` |nbsp| :placeholder:`A`| +--------------------------------------------------------------------------------------------+ -Wmicrosoft-fixed-enum ---------------------- **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`enumeration types with a fixed underlying type are a Microsoft extension`| +---------------------------------------------------------------------------------------------------------------+ -Wmicrosoft-flexible-array -------------------------- **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------+-----------------------+--------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`flexible array member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in otherwise empty` |nbsp| |+---------------------+| |nbsp| :diagtext:`is a Microsoft extension`| | ||:diagtext:`struct` || | | |+---------------------+| | | ||:diagtext:`interface`|| | | |+---------------------+| | | ||:diagtext:`union` || | | |+---------------------+| | | ||:diagtext:`class` || | | |+---------------------+| | | ||:diagtext:`enum` || | | |+---------------------+| | +----------------------------------------------------------------------------------------------------------------------------------+-----------------------+--------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`flexible array member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in a union is a Microsoft extension`| +-------------------------------------------------------------------------------------------------------------------------------------------+ -Wmicrosoft-goto ---------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`jump from this goto statement to its label is a Microsoft extension`| +----------------------------------------------------------------------------------------------------------+ -Wmicrosoft-inaccessible-base ----------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`accessing inaccessible direct base` |nbsp| :placeholder:`A` |nbsp| :diagtext:`of` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is a Microsoft extension`| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wmicrosoft-include ------------------- This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`#include resolved using non-portable Microsoft search rules as:` |nbsp| :placeholder:`A`| +------------------------------------------------------------------------------------------------------------------------------+ -Wmicrosoft-mutable-reference ----------------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'mutable' on a reference type is a Microsoft extension`| +---------------------------------------------------------------------------------------------+ -Wmicrosoft-pure-definition --------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`function definition with pure-specifier is a Microsoft extension`| +-------------------------------------------------------------------------------------------------------+ -Wmicrosoft-redeclare-static ---------------------------- **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`redeclaring non-static` |nbsp| :placeholder:`A` |nbsp| :diagtext:`as static is a Microsoft extension`| +-------------------------------------------------------------------------------------------------------------------------------------------+ -Wmicrosoft-sealed ------------------ This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'sealed' keyword is a Microsoft extension`| +--------------------------------------------------------------------------------+ -Wmicrosoft-template -------------------- This diagnostic is enabled by default. Also controls `-Wmicrosoft-template-shadow`_. **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`duplicate explicit instantiation of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`ignored as a Microsoft extension`| +------------------------------------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`use of identifier` |nbsp| :placeholder:`A` |nbsp| :diagtext:`found via unqualified lookup into dependent bases of class templates is a Microsoft extension`| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`using the undeclared type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`as a default template argument is a Microsoft extension`| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`non-type template argument containing a dereference operation is a Microsoft extension`| +-----------------------------------------------------------------------------------------------------------------------------+ +---------------------------+---------------------------------------+-----------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------+--------------------------------------------+ |:warning:`warning:` |nbsp| |+-------------------------------------+| |nbsp| :diagtext:`specialization of` |nbsp| :placeholder:`B` |nbsp| :diagtext:`not in` |nbsp| |+----------------------------------------------------------------------------------------+| |nbsp| :diagtext:`is a Microsoft extension`| | ||:diagtext:`class template` || ||+---------------------------------------------------------+ || | | |+-------------------------------------+| |||:diagtext:`a namespace enclosing` |nbsp| :placeholder:`C`| || | | ||:diagtext:`class template partial` || ||+---------------------------------------------------------+ || | | |+-------------------------------------+| |+----------------------------------------------------------------------------------------+| | | ||:diagtext:`variable template` || ||+--------------------------------------------------------------------------------------+|| | | |+-------------------------------------+| |||:diagtext:`class` |nbsp| :placeholder:`C` |nbsp| :diagtext:`or an enclosing namespace`||| | | ||:diagtext:`variable template partial`|| ||+--------------------------------------------------------------------------------------+|| | | |+-------------------------------------+| |+----------------------------------------------------------------------------------------+| | | ||:diagtext:`function template` || | | | | |+-------------------------------------+| | | | | ||:diagtext:`member function` || | | | | |+-------------------------------------+| | | | | ||:diagtext:`static data member` || | | | | |+-------------------------------------+| | | | | ||:diagtext:`member class` || | | | | |+-------------------------------------+| | | | | ||:diagtext:`member enumeration` || | | | | |+-------------------------------------+| | | | +---------------------------+---------------------------------------+-----------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------+--------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`template argument for template type parameter must be a type; omitted 'typename' is a Microsoft extension`| +------------------------------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'static' can only be specified inside the class definition`| +-------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`use of undeclared identifier` |nbsp| :placeholder:`A`:diagtext:`; unqualified lookup into dependent bases of class template` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is a Microsoft extension`| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wmicrosoft-template-shadow --------------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`declaration of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`shadows template parameter`| +---------------------------------------------------------------------------------------------------------------------------+ -Wmicrosoft-union-member-reference ---------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`union member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has reference type` |nbsp| :placeholder:`B`:diagtext:`, which is a Microsoft extension`| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wmicrosoft-unqualified-friend ------------------------------ This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unqualified friend declaration referring to type outside of the nearest enclosing namespace is a Microsoft extension; add a nested name specifier`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wmicrosoft-using-decl ---------------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`using declaration referring to inaccessible member '`:placeholder:`A`:diagtext:`' (which refers to accessible member '`:placeholder:`B`:diagtext:`') is a Microsoft compatibility extension`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wmicrosoft-void-pseudo-dtor ---------------------------- This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`pseudo-destructors on type void are a Microsoft extension`| +------------------------------------------------------------------------------------------------+ -Wmisleading-indentation ------------------------ **Diagnostic text:** +------------------------------------------------------------------------------------------------------+-------------------+-------------+ |:warning:`warning:` |nbsp| :diagtext:`misleading indentation; statement is not part of the previous '`|+-----------------+|:diagtext:`'`| | ||:diagtext:`if` || | | |+-----------------+| | | ||:diagtext:`else` || | | |+-----------------+| | | ||:diagtext:`for` || | | |+-----------------+| | | ||:diagtext:`while`|| | | |+-----------------+| | +------------------------------------------------------------------------------------------------------+-------------------+-------------+ -Wmismatched-new-delete ----------------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------+------------------+---------------------------------------------------------------+------------------+-----------------------------------+------------------+--------------+ |:warning:`warning:` |nbsp| :diagtext:`'delete`|+----------------+|:diagtext:`' applied to a pointer that was allocated with 'new`|+----------------+|:diagtext:`'; did you mean 'delete`|+----------------+|:diagtext:`'?`| | || || ||:diagtext:`\[\]`|| ||:diagtext:`\[\]`|| | | |+----------------+| |+----------------+| |+----------------+| | | ||:diagtext:`\[\]`|| || || || || | | |+----------------+| |+----------------+| |+----------------+| | +----------------------------------------------+------------------+---------------------------------------------------------------+------------------+-----------------------------------+------------------+--------------+ -Wmismatched-parameter-types ---------------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`conflicting parameter types in implementation of` |nbsp| :placeholder:`A`| +---------------------------------------------------------------------------------------------------------------+ -Wmismatched-return-types ------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`conflicting return type in implementation of` |nbsp| :placeholder:`A`| +-----------------------------------------------------------------------------------------------------------+ -Wmismatched-tags ----------------- **Diagnostic text:** +---------------------------------------------------------------------------------+--------------------------+------------------------------+-----------------------------------------------------------+--------------------------+------------------------------+----------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`C` |nbsp| :diagtext:`defined as` |nbsp| |+------------------------+|+----------------------------+| |nbsp| :diagtext:`here but previously declared as` |nbsp| |+------------------------+|+----------------------------+|:diagtext:`; this is valid, but may result in linker errors under the Microsoft C++ ABI`| | ||:diagtext:`a struct` ||| || ||:diagtext:`a struct` ||| || | | |+------------------------+|+----------------------------+| |+------------------------+|+----------------------------+| | | ||:diagtext:`an interface`||| |nbsp| :diagtext:`template`|| ||:diagtext:`an interface`||| |nbsp| :diagtext:`template`|| | | |+------------------------+|+----------------------------+| |+------------------------+|+----------------------------+| | | ||:diagtext:`a class` || | ||:diagtext:`a class` || | | | |+------------------------+| | |+------------------------+| | | +---------------------------------------------------------------------------------+--------------------------+------------------------------+-----------------------------------------------------------+--------------------------+------------------------------+----------------------------------------------------------------------------------------+ +---------------------------+-----------------------+------------------------------+--------------------------------------------------------------------------------+-----------------------+------------------------------+----------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| |+---------------------+|+----------------------------+| |nbsp| :placeholder:`C` |nbsp| :diagtext:`was previously declared as a` |nbsp| |+---------------------+|+----------------------------+|:diagtext:`; this is valid, but may result in linker errors under the Microsoft C++ ABI`| | ||:diagtext:`struct` ||| || ||:diagtext:`struct` ||| || | | |+---------------------+|+----------------------------+| |+---------------------+|+----------------------------+| | | ||:diagtext:`interface`||| |nbsp| :diagtext:`template`|| ||:diagtext:`interface`||| |nbsp| :diagtext:`template`|| | | |+---------------------+|+----------------------------+| |+---------------------+|+----------------------------+| | | ||:diagtext:`class` || | ||:diagtext:`class` || | | | |+---------------------+| | |+---------------------+| | | +---------------------------+-----------------------+------------------------------+--------------------------------------------------------------------------------+-----------------------+------------------------------+----------------------------------------------------------------------------------------+ -Wmissing-braces ---------------- **Diagnostic text:** +----------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`suggest braces around initialization of subobject`| +----------------------------------------------------------------------------------------+ -Wmissing-constinit ------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'constinit' specifier missing on initializing declaration of` |nbsp| :placeholder:`A`| +---------------------------------------------------------------------------------------------------------------------------+ -Wmissing-declarations ---------------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`declaration does not declare anything`| +----------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' is not permitted on a declaration of a type`| +-----------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`typedef requires a name`| +--------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' ignored on this declaration`| +-------------------------------------------------------------------------------------------------+ -Wmissing-exception-spec ------------------------ This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is missing exception specification '`:placeholder:`B`:diagtext:`'`| +--------------------------------------------------------------------------------------------------------------------------------+ -Wmissing-field-initializers ---------------------------- **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`missing field` |nbsp| :placeholder:`A` |nbsp| :diagtext:`initializer`| +-----------------------------------------------------------------------------------------------------------+ -Wmissing-format-attribute -------------------------- This diagnostic flag exists for GCC compatibility, and has no effect in Clang. -Wmissing-include-dirs ---------------------- This diagnostic flag exists for GCC compatibility, and has no effect in Clang. -Wmissing-method-return-type ---------------------------- **Diagnostic text:** +--------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`method has no return type specified; defaults to 'id'`| +--------------------------------------------------------------------------------------------+ -Wmissing-noescape ------------------ This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`parameter of overriding method should be annotated with \_\_attribute\_\_((noescape))`| +----------------------------------------------------------------------------------------------------------------------------+ -Wmissing-noreturn ------------------ **Diagnostic text:** +----------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`block could be declared with attribute 'noreturn'`| +----------------------------------------------------------------------------------------+ +---------------------------+----------------------+---------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| |+--------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`could be declared with attribute 'noreturn'`| | ||:diagtext:`function`|| | | |+--------------------+| | | ||:diagtext:`method` || | | |+--------------------+| | +---------------------------+----------------------+---------------------------------------------------------------------------------------+ -Wmissing-prototype-for-cc -------------------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`function with no prototype cannot use the` |nbsp| :placeholder:`A` |nbsp| :diagtext:`calling convention`| +----------------------------------------------------------------------------------------------------------------------------------------------+ -Wmissing-prototypes -------------------- **Diagnostic text:** +-------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`no previous prototype for function` |nbsp| :placeholder:`A`| +-------------------------------------------------------------------------------------------------+ -Wmissing-selector-name ----------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`used as the name of the previous parameter rather than as part of the selector`| +---------------------------------------------------------------------------------------------------------------------------------------------+ -Wmissing-sysroot ----------------- This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`no such sysroot directory: '`:placeholder:`A`:diagtext:`'`| +------------------------------------------------------------------------------------------------+ -Wmissing-variable-declarations ------------------------------- **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`no previous extern declaration for non-static variable` |nbsp| :placeholder:`A`| +---------------------------------------------------------------------------------------------------------------------+ -Rmodule-build -------------- **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------+ |:remark:`remark:` |nbsp| :diagtext:`building module '`:placeholder:`A`:diagtext:`' as '`:placeholder:`B`:diagtext:`'`| +---------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------+ |:remark:`remark:` |nbsp| :diagtext:`finished building module '`:placeholder:`A`:diagtext:`'`| +--------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------+ |:remark:`remark:` |nbsp| :diagtext:`could not acquire lock file for module '`:placeholder:`A`:diagtext:`':` |nbsp| :placeholder:`B`| +-----------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------+ |:remark:`remark:` |nbsp| :diagtext:`timed out waiting to acquire lock file for module '`:placeholder:`A`:diagtext:`'`| +---------------------------------------------------------------------------------------------------------------------+ -Wmodule-conflict ----------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`module '`:placeholder:`A`:diagtext:`' conflicts with already-imported module '`:placeholder:`B`:diagtext:`':` |nbsp| :placeholder:`C`| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`module file '`:placeholder:`A`:diagtext:`' was validated as a system module and is now being imported as a non-system module; any difference in diagnostic options will be ignored`| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wmodule-file-config-mismatch ----------------------------- This diagnostic is an error by default, but the flag ``-Wno-module-file-config-mismatch`` can be used to disable the error. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:error:`error:` |nbsp| :diagtext:`module file` |nbsp| :placeholder:`A` |nbsp| :diagtext:`cannot be loaded due to a configuration mismatch with the current compilation`| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wmodule-file-extension ----------------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`duplicate module file extension block name '`:placeholder:`A`:diagtext:`'`| +----------------------------------------------------------------------------------------------------------------+ -Rmodule-import --------------- **Diagnostic text:** +------------------------------------------------------------------------------------+-----------------------------------------------------------+-------------------------------------------------------+ |:remark:`remark:` |nbsp| :diagtext:`importing module '`:placeholder:`A`:diagtext:`'`|+---------------------------------------------------------+| |nbsp| :diagtext:`from '`:placeholder:`B`:diagtext:`'`| | || || | | |+---------------------------------------------------------+| | | ||+-------------------------------------------------------+|| | | ||| |nbsp| :diagtext:`into '`:placeholder:`D`:diagtext:`'`||| | | ||+-------------------------------------------------------+|| | | |+---------------------------------------------------------+| | +------------------------------------------------------------------------------------+-----------------------------------------------------------+-------------------------------------------------------+ -Wmodule-import-in-extern-c --------------------------- This diagnostic is an error by default, but the flag ``-Wno-module-import-in-extern-c`` can be used to disable the error. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------------------------------------------+ |:error:`error:` |nbsp| :diagtext:`import of C++ module '`:placeholder:`A`:diagtext:`' appears within extern "C" language linkage specification`| +-----------------------------------------------------------------------------------------------------------------------------------------------+ -Wmodules-ambiguous-internal-linkage ------------------------------------ This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ambiguous use of internal linkage declaration` |nbsp| :placeholder:`A` |nbsp| :diagtext:`defined in multiple modules`| +-----------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wmodules-import-nested-redundant --------------------------------- This diagnostic is an error by default, but the flag ``-Wno-modules-import-nested-redundant`` can be used to disable the error. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------+ |:error:`error:` |nbsp| :diagtext:`redundant #include of module '`:placeholder:`A`:diagtext:`' appears within` |nbsp| :placeholder:`B`| +-------------------------------------------------------------------------------------------------------------------------------------+ -Wmost ------ Some of the diagnostics controlled by this flag are enabled by default. Controls `-Wcast-of-sel-type`_, `-Wchar-subscripts`_, `-Wcomment`_, `-Wdelete-non-virtual-dtor`_, `-Wextern-c-compat`_, `-Wfor-loop-analysis`_, `-Wformat`_, `-Wframe-address`_, `-Wimplicit`_, `-Winfinite-recursion`_, `-Wint-in-bool-context`_, `-Wmismatched-tags`_, `-Wmissing-braces`_, `-Wmove`_, `-Wmultichar`_, `-Wobjc-designated-initializers`_, `-Wobjc-flexible-array`_, `-Wobjc-missing-super-calls`_, `-Woverloaded-virtual`_, `-Wprivate-extern`_, `-Wrange-loop-construct`_, `-Wreorder`_, `-Wreturn-type`_, `-Wself-assign`_, `-Wself-move`_, `-Wsizeof-array-argument`_, `-Wsizeof-array-decay`_, `-Wstring-plus-int`_, `-Wtautological-compare`_, `-Wtrigraphs`_, `-Wuninitialized`_, `-Wunknown-pragmas`_, `-Wunused`_, `-Wuser-defined-warnings`_, `-Wvolatile-register-var`_. -Wmove ------ Controls `-Wpessimizing-move`_, `-Wredundant-move`_, `-Wreturn-std-move`_, `-Wself-move`_. -Wmsvc-include -------------- Synonym for `-Wmicrosoft-include`_. -Wmsvc-not-found ---------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unable to find a Visual Studio installation; try running Clang from a developer command prompt`| +-------------------------------------------------------------------------------------------------------------------------------------+ -Wmultichar ----------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`multi-character character constant`| +-------------------------------------------------------------------------+ -Wmultiple-move-vbase --------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`defaulted move assignment operator of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`will move assign virtual base class` |nbsp| :placeholder:`B` |nbsp| :diagtext:`multiple times`| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wnarrowing ----------- Synonym for `-Wc++11-narrowing`_. -Wnested-anon-types ------------------- **Diagnostic text:** +---------------------------------------------------------------------------------------+--------------------+------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`anonymous types declared in an anonymous` |nbsp| |+------------------+| |nbsp| :diagtext:`are an extension`| | ||:diagtext:`struct`|| | | |+------------------+| | | ||:diagtext:`union` || | | |+------------------+| | +---------------------------------------------------------------------------------------+--------------------+------------------------------------+ -Wnested-externs ---------------- This diagnostic flag exists for GCC compatibility, and has no effect in Clang. -Wnew-returns-null ------------------ This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`should not return a null pointer unless it is declared 'throw()'`|+---------------------------------+| | || || | |+---------------------------------+| | || |nbsp| :diagtext:`or 'noexcept'`|| | |+---------------------------------+| +-------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+ -Wnewline-eof ------------- **Diagnostic text:** +----------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`no newline at end of file`| +----------------------------------------------------------------+ +----------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`no newline at end of file`| +----------------------------------------------------------------+ -Wnoderef --------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`dereferencing` |nbsp| :placeholder:`A`:diagtext:`; was declared with a 'noderef' type`| +----------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`dereferencing expression marked as 'noderef'`| +-----------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`casting to dereferenceable pointer removes 'noderef' attribute`| +-----------------------------------------------------------------------------------------------------+ -Wnoexcept-type --------------- Synonym for `-Wc++17-compat-mangling`_. -Wnon-c-typedef-for-linkage --------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------------+---------------------+----------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`anonymous non-C-compatible type given name for linkage purposes by` |nbsp| |+-------------------+| |nbsp| :diagtext:`declaration; add a tag name here`| | ||:diagtext:`typedef`|| | | |+-------------------+| | | ||:diagtext:`alias` || | | |+-------------------+| | +-----------------------------------------------------------------------------------------------------------------+---------------------+----------------------------------------------------+ -Wnon-gcc --------- Some of the diagnostics controlled by this flag are enabled by default. Controls `-Wconversion`_, `-Wliteral-range`_, `-Wsign-compare`_. -Wnon-literal-null-conversion ----------------------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`expression which evaluates to zero treated as a null pointer constant of type` |nbsp| :placeholder:`A`| +--------------------------------------------------------------------------------------------------------------------------------------------+ -Wnon-modular-include-in-framework-module ----------------------------------------- **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`include of non-modular header inside framework module '`:placeholder:`A`:diagtext:`': '`:placeholder:`B`:diagtext:`'`| +-----------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wnon-modular-include-in-module ------------------------------- Also controls `-Wnon-modular-include-in-framework-module`_. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`include of non-modular header inside module '`:placeholder:`A`:diagtext:`': '`:placeholder:`B`:diagtext:`'`| +-------------------------------------------------------------------------------------------------------------------------------------------------+ -Wnon-pod-varargs ----------------- This diagnostic is an error by default, but the flag ``-Wno-non-pod-varargs`` can be used to disable the error. **Diagnostic text:** +----------------------------------------------------------------+-------------------------+--------------------------------------------------------------------------------------------+-------------------------+----------------------------------------+ |:error:`error:` |nbsp| :diagtext:`cannot pass object of` |nbsp| |+-----------------------+| |nbsp| :diagtext:`type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`through variadic` |nbsp| |+-----------------------+|:diagtext:`; call will abort at runtime`| | ||:diagtext:`non-POD` || ||:diagtext:`function` || | | |+-----------------------+| |+-----------------------+| | | ||:diagtext:`non-trivial`|| ||:diagtext:`block` || | | |+-----------------------+| |+-----------------------+| | | | | ||:diagtext:`method` || | | | | |+-----------------------+| | | | | ||:diagtext:`constructor`|| | | | | |+-----------------------+| | +----------------------------------------------------------------+-------------------------+--------------------------------------------------------------------------------------------+-------------------------+----------------------------------------+ +------------------------------------------------------+-------------------------+-------------------------------------------------------------------------------------------------+-------------------------+--------------------------------------------------------------------------+ |:error:`error:` |nbsp| :diagtext:`cannot pass` |nbsp| |+-----------------------+| |nbsp| :diagtext:`object of type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`to variadic` |nbsp| |+-----------------------+|:diagtext:`; expected type from format string was` |nbsp| :placeholder:`D`| | ||:diagtext:`non-POD` || ||:diagtext:`function` || | | |+-----------------------+| |+-----------------------+| | | ||:diagtext:`non-trivial`|| ||:diagtext:`block` || | | |+-----------------------+| |+-----------------------+| | | | | ||:diagtext:`method` || | | | | |+-----------------------+| | | | | ||:diagtext:`constructor`|| | | | | |+-----------------------+| | +------------------------------------------------------+-------------------------+-------------------------------------------------------------------------------------------------+-------------------------+--------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------+ |:error:`error:` |nbsp| :diagtext:`second argument to 'va\_arg' is of non-POD type` |nbsp| :placeholder:`A`| +----------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------+ |:error:`error:` |nbsp| :diagtext:`second argument to 'va\_arg' is of ARC ownership-qualified type` |nbsp| :placeholder:`A`| +--------------------------------------------------------------------------------------------------------------------------+ -Wnon-power-of-two-alignment ---------------------------- This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`requested alignment is not a power of 2`| +------------------------------------------------------------------------------+ -Wnon-virtual-dtor ------------------ **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has virtual functions but non-virtual destructor`| +---------------------------------------------------------------------------------------------------------------+ -Wnonnull --------- This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`null passed to a callee that requires a non-null argument`| +------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------+----------------------+---------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`null returned from` |nbsp| |+--------------------+| |nbsp| :diagtext:`that requires a non-null return value`| | ||:diagtext:`function`|| | | |+--------------------+| | | ||:diagtext:`method` || | | |+--------------------+| | +-----------------------------------------------------------------+----------------------+---------------------------------------------------------+ -Wnonportable-cfstrings ----------------------- This diagnostic flag exists for GCC compatibility, and has no effect in Clang. -Wnonportable-include-path -------------------------- This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`non-portable path to file '`:placeholder:`A`:diagtext:`'; specified path differs in case from file name on disk`| +------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wnonportable-system-include-path --------------------------------- **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`non-portable path to file '`:placeholder:`A`:diagtext:`'; specified path differs in case from file name on disk`| +------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wnonportable-vector-initialization ----------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`vector initializers are not compatible with NEON intrinsics in big endian mode`| +---------------------------------------------------------------------------------------------------------------------+ -Wnontrivial-memaccess ---------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------+-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------+ |:warning:`warning:` |nbsp| |+-----------------------------+| |nbsp| :diagtext:`this` |nbsp| :placeholder:`B` |nbsp| :diagtext:`call is a pointer to record` |nbsp| :placeholder:`C` |nbsp| :diagtext:`that is not trivial to` |nbsp| |+----------------------------------------+| | ||:diagtext:`destination for` || ||:diagtext:`primitive-default-initialize`|| | |+-----------------------------+| |+----------------------------------------+| | ||:diagtext:`source of` || ||:diagtext:`primitive-copy` || | |+-----------------------------+| |+----------------------------------------+| | ||:diagtext:`first operand of` || | | | |+-----------------------------+| | | | ||:diagtext:`second operand of`|| | | | |+-----------------------------+| | | +---------------------------+-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------+ -Wnsconsumed-mismatch --------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`overriding method has mismatched ns\_consumed attribute on its parameter`| +---------------------------------------------------------------------------------------------------------------+ -Wnsreturns-mismatch -------------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------+---------------------------+------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`overriding method has mismatched ns\_returns\_`|+-------------------------+| |nbsp| :diagtext:`attributes`| | ||:diagtext:`not\_retained`|| | | |+-------------------------+| | | ||:diagtext:`retained` || | | |+-------------------------+| | +-------------------------------------------------------------------------------------+---------------------------+------------------------------+ -Wnull-arithmetic ----------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`use of NULL in arithmetic operation`| +--------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------+--------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`comparison between NULL and non-pointer` |nbsp| |+------------------------------------------------------------+| | ||+----------------------------------------------------------+|| | |||:diagtext:`(`:placeholder:`B` |nbsp| :diagtext:`and NULL)`||| | ||+----------------------------------------------------------+|| | |+------------------------------------------------------------+| | ||+----------------------------------------------------------+|| | |||:diagtext:`(NULL and` |nbsp| :placeholder:`B`:diagtext:`)`||| | ||+----------------------------------------------------------+|| | |+------------------------------------------------------------+| +--------------------------------------------------------------------------------------+--------------------------------------------------------------+ -Wnull-character ---------------- This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------+--------------------+---------------------------+ |:warning:`warning:` |nbsp| :diagtext:`null character(s) preserved in` |nbsp| |+------------------+| |nbsp| :diagtext:`literal`| | ||:diagtext:`char` || | | |+------------------+| | | ||:diagtext:`string`|| | | |+------------------+| | +-----------------------------------------------------------------------------+--------------------+---------------------------+ +-------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`null character ignored`| +-------------------------------------------------------------+ -Wnull-conversion ----------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------+---------------------+-------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`implicit conversion of` |nbsp| |+-------------------+| |nbsp| :diagtext:`constant to` |nbsp| :placeholder:`B`| | ||:diagtext:`NULL` || | | |+-------------------+| | | ||:diagtext:`nullptr`|| | | |+-------------------+| | +---------------------------------------------------------------------+---------------------+-------------------------------------------------------+ -Wnull-dereference ------------------ This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`binding dereferenced null pointer to reference has undefined behavior`| +------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`indirection of non-volatile null pointer will be deleted, not trap`| +---------------------------------------------------------------------------------------------------------+ -Wnull-pointer-arithmetic ------------------------- **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`arithmetic on a null pointer treated as a cast from integer to pointer is a GNU extension`| +--------------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------+----------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`performing pointer arithmetic on a null pointer has undefined behavior`|+--------------------------------------------+| | || || | |+--------------------------------------------+| | || |nbsp| :diagtext:`if the offset is nonzero`|| | |+--------------------------------------------+| +-------------------------------------------------------------------------------------------------------------+----------------------------------------------+ -Wnullability ------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`conflicting nullability specifier on parameter types,` |nbsp| :placeholder:`A` |nbsp| :diagtext:`conflicts with existing specifier` |nbsp| :placeholder:`B`| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`conflicting nullability specifier on return types,` |nbsp| :placeholder:`A` |nbsp| :diagtext:`conflicts with existing specifier` |nbsp| :placeholder:`B`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`nullability specifier` |nbsp| :placeholder:`A` |nbsp| :diagtext:`conflicts with existing specifier` |nbsp| :placeholder:`B`| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`synthesized setter` |nbsp| :placeholder:`A` |nbsp| :diagtext:`for null\_resettable property` |nbsp| :placeholder:`B` |nbsp| :diagtext:`does not handle nil`| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`duplicate nullability specifier` |nbsp| :placeholder:`A`| +----------------------------------------------------------------------------------------------+ -Wnullability-completeness -------------------------- This diagnostic is enabled by default. Also controls `-Wnullability-completeness-on-arrays`_. **Diagnostic text:** +---------------------------+----------------------------+-----------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| |+--------------------------+| |nbsp| :diagtext:`is missing a nullability type specifier (\_Nonnull, \_Nullable, or \_Null\_unspecified)`| | ||:diagtext:`pointer` || | | |+--------------------------+| | | ||:diagtext:`block pointer` || | | |+--------------------------+| | | ||:diagtext:`member pointer`|| | | |+--------------------------+| | +---------------------------+----------------------------+-----------------------------------------------------------------------------------------------------------+ -Wnullability-completeness-on-arrays ------------------------------------ This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`array parameter is missing a nullability type specifier (\_Nonnull, \_Nullable, or \_Null\_unspecified)`| +----------------------------------------------------------------------------------------------------------------------------------------------+ -Wnullability-declspec ---------------------- This diagnostic is an error by default, but the flag ``-Wno-nullability-declspec`` can be used to disable the error. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------+-------------+ |:error:`error:` |nbsp| :diagtext:`nullability specifier` |nbsp| :placeholder:`A` |nbsp| :diagtext:`cannot be applied to non-pointer type` |nbsp| :placeholder:`B`:diagtext:`; did you mean to apply the specifier to the` |nbsp| |+-----------------------------------+|:diagtext:`?`| | ||:diagtext:`pointer` || | | |+-----------------------------------+| | | ||:diagtext:`block pointer` || | | |+-----------------------------------+| | | ||:diagtext:`member pointer` || | | |+-----------------------------------+| | | ||:diagtext:`function pointer` || | | |+-----------------------------------+| | | ||:diagtext:`member function pointer`|| | | |+-----------------------------------+| | +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------+-------------+ -Wnullability-extension ----------------------- **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`type nullability specifier` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a Clang extension`| +---------------------------------------------------------------------------------------------------------------------------------+ -Wnullability-inferred-on-nested-type ------------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------+-----------------------+---------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`inferring '\_Nonnull' for pointer type within` |nbsp| |+---------------------+| |nbsp| :diagtext:`is deprecated`| | ||:diagtext:`array` || | | |+---------------------+| | | ||:diagtext:`reference`|| | | |+---------------------+| | +--------------------------------------------------------------------------------------------+-----------------------+---------------------------------+ -Wnullable-to-nonnull-conversion -------------------------------- **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`implicit conversion from nullable pointer` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to non-nullable pointer type` |nbsp| :placeholder:`B`| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wobjc-autosynthesis-property-ivar-name-match --------------------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------+-------------------------+---------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`autosynthesized property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`will use` |nbsp| |+-----------------------+| |nbsp| :diagtext:`instance variable` |nbsp| :placeholder:`C`:diagtext:`, not existing instance variable` |nbsp| :placeholder:`D`| | || || | | |+-----------------------+| | | ||:diagtext:`synthesized`|| | | |+-----------------------+| | +---------------------------------------------------------------------------------------------------------------------------+-------------------------+---------------------------------------------------------------------------------------------------------------------------------+ -Wobjc-bool-constant-conversion ------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`implicit conversion from constant value` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to 'BOOL'; the only well defined values for 'BOOL' are YES and NO`| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wobjc-boxing ------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`string is ill-formed as UTF-8 and will become a null` |nbsp| :placeholder:`A` |nbsp| :diagtext:`when boxed`| +-------------------------------------------------------------------------------------------------------------------------------------------------+ -Wobjc-circular-container ------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`adding` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`might cause circular dependency in container`| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wobjc-cocoa-api ---------------- Synonym for `-Wobjc-redundant-api-use`_. -Wobjc-designated-initializers ------------------------------ This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`designated initializer missing a 'super' call to a designated initializer of the super class`| +-----------------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`designated initializer invoked a non-designated initializer`| +--------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`designated initializer should only invoke a designated initializer on 'super'`| +--------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`method override for the designated initializer of the superclass` |nbsp| :placeholder:`A` |nbsp| :diagtext:`not found`| +------------------------------------------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`convenience initializer missing a 'self' call to another initializer`| +-----------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`convenience initializer should not invoke an initializer on 'super'`| +----------------------------------------------------------------------------------------------------------+ -Wobjc-flexible-array --------------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`field` |nbsp| :placeholder:`A` |nbsp| :diagtext:`can overwrite instance variable` |nbsp| :placeholder:`B` |nbsp| :diagtext:`with variable sized type` |nbsp| :placeholder:`C` |nbsp| :diagtext:`in superclass` |nbsp| :placeholder:`D`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`field` |nbsp| :placeholder:`A` |nbsp| :diagtext:`with variable sized type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is not visible to subclasses and can conflict with their instance variables`| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wobjc-forward-class-redefinition --------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`redefinition of forward class` |nbsp| :placeholder:`A` |nbsp| :diagtext:`of a typedef name of an object type is ignored`| +--------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wobjc-interface-ivars ---------------------- **Diagnostic text:** +-------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`declaration of instance variables in the interface is deprecated`| +-------------------------------------------------------------------------------------------------------+ -Wobjc-literal-compare ---------------------- This diagnostic is enabled by default. Also controls `-Wobjc-string-compare`_. **Diagnostic text:** +-------------------------------------------------------------------+----------------------------------+------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`direct comparison of` |nbsp| |+--------------------------------+| |nbsp| :diagtext:`has undefined behavior`| | ||:diagtext:`an array literal` || | | |+--------------------------------+| | | ||:diagtext:`a dictionary literal`|| | | |+--------------------------------+| | | ||:diagtext:`a numeric literal` || | | |+--------------------------------+| | | ||:diagtext:`a boxed expression` || | | |+--------------------------------+| | | || || | | |+--------------------------------+| | +-------------------------------------------------------------------+----------------------------------+------------------------------------------+ -Wobjc-literal-conversion ------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`implicit boolean conversion of Objective-C object literal always evaluates to true`| +-------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+------------------------+ |:warning:`warning:` |nbsp| :diagtext:`object of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not compatible with` |nbsp| |+---------------------------------+| |nbsp| :placeholder:`C`| | ||:diagtext:`array element type` || | | |+---------------------------------+| | | ||:diagtext:`dictionary key type` || | | |+---------------------------------+| | | ||:diagtext:`dictionary value type`|| | | |+---------------------------------+| | +-------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+------------------------+ -Wobjc-macro-redefinition ------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ignoring redefinition of Objective-C qualifier macro`| +-------------------------------------------------------------------------------------------+ -Wobjc-messaging-id ------------------- **Diagnostic text:** +---------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`messaging unqualified id`| +---------------------------------------------------------------+ -Wobjc-method-access -------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`class method` |nbsp| :placeholder:`A` |nbsp| :diagtext:`not found (return type defaults to 'id')`| +---------------------------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`class method` |nbsp| :placeholder:`A` |nbsp| :diagtext:`not found (return type defaults to 'id'); did you mean` |nbsp| :placeholder:`C`:diagtext:`?`| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`instance method` |nbsp| :placeholder:`A` |nbsp| :diagtext:`not found (return type defaults to 'id')`| +------------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`instance method` |nbsp| :placeholder:`A` |nbsp| :diagtext:`not found (return type defaults to 'id'); did you mean` |nbsp| :placeholder:`C`:diagtext:`?`| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`instance method` |nbsp| :placeholder:`A` |nbsp| :diagtext:`found instead of class method` |nbsp| :placeholder:`B`| +-------------------------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`instance method` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is being used on 'Class' which is not in the root class`| +---------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wobjc-missing-property-synthesis --------------------------------- **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`auto property synthesis is synthesizing property not explicitly synthesized`| +------------------------------------------------------------------------------------------------------------------+ -Wobjc-missing-super-calls -------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`method possibly missing a \[super` |nbsp| :placeholder:`A`:diagtext:`\] call`| +-------------------------------------------------------------------------------------------------------------------+ -Wobjc-multiple-method-names ---------------------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`multiple methods named` |nbsp| :placeholder:`A` |nbsp| :diagtext:`found`| +--------------------------------------------------------------------------------------------------------------+ -Wobjc-noncopy-retain-block-property ------------------------------------ This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`retain'ed block property does not copy the block - use copy attribute instead`| +--------------------------------------------------------------------------------------------------------------------+ -Wobjc-nonunified-exceptions ---------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`cannot catch an exception thrown with @throw in C++ in the non-unified exception model`| +-----------------------------------------------------------------------------------------------------------------------------+ -Wobjc-property-assign-on-object-type ------------------------------------- **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'assign' property of object type may become a dangling reference; consider using 'unsafe\_unretained'`| +--------------------------------------------------------------------------------------------------------------------------------------------+ -Wobjc-property-implementation ------------------------------ This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`class property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`requires method` |nbsp| :placeholder:`B` |nbsp| :diagtext:`to be defined - use @dynamic or provide a method implementation in this class implementation`| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`class property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`requires method` |nbsp| :placeholder:`B` |nbsp| :diagtext:`to be defined - use @dynamic or provide a method implementation in this category`| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`requires method` |nbsp| :placeholder:`B` |nbsp| :diagtext:`to be defined - use @synthesize, @dynamic or provide a method implementation in this class implementation`| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`requires method` |nbsp| :placeholder:`B` |nbsp| :diagtext:`to be defined - use @dynamic or provide a method implementation in this category`| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wobjc-property-implicit-mismatch --------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`primary property declaration is implicitly strong while redeclaration in class extension is weak`| +---------------------------------------------------------------------------------------------------------------------------------------+ -Wobjc-property-matches-cocoa-ownership-rule -------------------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`property follows Cocoa naming convention for returning 'owned' objects`| +-------------------------------------------------------------------------------------------------------------+ -Wobjc-property-no-attribute ---------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`default property attribute 'assign' not appropriate for object`| +-----------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`no 'assign', 'retain', or 'copy' attribute is specified - 'assign' is assumed`| +--------------------------------------------------------------------------------------------------------------------+ -Wobjc-property-synthesis ------------------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`auto property synthesis will not synthesize property` |nbsp| :placeholder:`A`:diagtext:`; it will be implemented by its superclass, use @dynamic to acknowledge intention`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`auto property synthesis will not synthesize property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`because it is 'readwrite' but it will be synthesized 'readonly' via another property`| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`auto property synthesis will not synthesize property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`because it cannot share an ivar with another synthesized property`| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wobjc-protocol-method-implementation ------------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`category is implementing a method which will also be implemented by its primary class`| +----------------------------------------------------------------------------------------------------------------------------+ -Wobjc-protocol-property-synthesis ---------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`auto property synthesis will not synthesize property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`declared in protocol` |nbsp| :placeholder:`B`| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wobjc-protocol-qualifiers -------------------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`parameterized class` |nbsp| :placeholder:`A` |nbsp| :diagtext:`already conforms to the protocols listed; did you forget a '\*'?`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wobjc-readonly-with-setter-property ------------------------------------ This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`setter cannot be specified for a readonly property`| +-----------------------------------------------------------------------------------------+ -Wobjc-redundant-api-use ------------------------ Synonym for `-Wobjc-redundant-literal-use`_. -Wobjc-redundant-literal-use ---------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`using` |nbsp| :placeholder:`A` |nbsp| :diagtext:`with a literal is redundant`| +-------------------------------------------------------------------------------------------------------------------+ -Wobjc-root-class ----------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`class` |nbsp| :placeholder:`A` |nbsp| :diagtext:`defined without specifying a base class`| +-------------------------------------------------------------------------------------------------------------------------------+ -Wobjc-signed-char-bool ----------------------- Some of the diagnostics controlled by this flag are enabled by default. Controls `-Wobjc-bool-constant-conversion`_, `-Wobjc-signed-char-bool-implicit-float-conversion`_, `-Wobjc-signed-char-bool-implicit-int-conversion`_, `-Wtautological-objc-bool-compare`_. -Wobjc-signed-char-bool-implicit-float-conversion ------------------------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`implicit conversion from floating-point type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to 'BOOL'`| +----------------------------------------------------------------------------------------------------------------------------------------+ -Wobjc-signed-char-bool-implicit-int-conversion ----------------------------------------------- **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`implicit conversion from integral type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to 'BOOL'`| +----------------------------------------------------------------------------------------------------------------------------------+ -Wobjc-string-compare --------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`direct comparison of a string literal has undefined behavior`| +---------------------------------------------------------------------------------------------------+ -Wobjc-string-concatenation --------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`concatenated NSString literal for an NSArray expression - possibly missing a comma`| +-------------------------------------------------------------------------------------------------------------------------+ -Wobjc-unsafe-perform-selector ------------------------------ This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------+--------------------+------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is incompatible with selectors that return a` |nbsp| |+------------------+| |nbsp| :diagtext:`type`| | ||:diagtext:`struct`|| | | |+------------------+| | | ||:diagtext:`union` || | | |+------------------+| | | ||:diagtext:`vector`|| | | |+------------------+| | +-------------------------------------------------------------------------------------------------------------------+--------------------+------------------------+ -Wodr ----- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`template parameter lists have a different number of parameters (`:placeholder:`A` |nbsp| :diagtext:`vs` |nbsp| :placeholder:`B`:diagtext:`)`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`template parameter has different kinds in different translation units`| +------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`field` |nbsp| :placeholder:`A` |nbsp| :diagtext:`declared with incompatible types in different translation units (`:placeholder:`B` |nbsp| :diagtext:`vs.` |nbsp| :placeholder:`C`:diagtext:`)`| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`external function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`declared with incompatible types in different translation units (`:placeholder:`B` |nbsp| :diagtext:`vs.` |nbsp| :placeholder:`C`:diagtext:`)`| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`instance variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`declared with incompatible types in different translation units (`:placeholder:`B` |nbsp| :diagtext:`vs.` |nbsp| :placeholder:`C`:diagtext:`)`| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`non-type template parameter declared with incompatible types in different translation units (`:placeholder:`A` |nbsp| :diagtext:`vs.` |nbsp| :placeholder:`B`:diagtext:`)`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------+----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| |+--------------------+| |nbsp| :diagtext:`method` |nbsp| :placeholder:`B` |nbsp| :diagtext:`has a different number of parameters in different translation units (`:placeholder:`C` |nbsp| :diagtext:`vs.` |nbsp| :placeholder:`D`:diagtext:`)`| | ||:diagtext:`class` || | | |+--------------------+| | | ||:diagtext:`instance`|| | | |+--------------------+| | +---------------------------+----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------+----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| |+--------------------+| |nbsp| :diagtext:`method` |nbsp| :placeholder:`B` |nbsp| :diagtext:`has a parameter with a different types in different translation units (`:placeholder:`C` |nbsp| :diagtext:`vs.` |nbsp| :placeholder:`D`:diagtext:`)`| | ||:diagtext:`class` || | | |+--------------------+| | | ||:diagtext:`instance`|| | | |+--------------------+| | +---------------------------+----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------+----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| |+--------------------+| |nbsp| :diagtext:`method` |nbsp| :placeholder:`B` |nbsp| :diagtext:`has incompatible result types in different translation units (`:placeholder:`C` |nbsp| :diagtext:`vs.` |nbsp| :placeholder:`D`:diagtext:`)`| | ||:diagtext:`class` || | | |+--------------------+| | | ||:diagtext:`instance`|| | | |+--------------------+| | +---------------------------+----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------+----------------------+-------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| |+--------------------+| |nbsp| :diagtext:`method` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is variadic in one translation unit and not variadic in another`| | ||:diagtext:`class` || | | |+--------------------+| | | ||:diagtext:`instance`|| | | |+--------------------+| | +---------------------------+----------------------+-------------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------+-------------------------+--------------------------------------------------+-------------------------+-----------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is implemented with` |nbsp| |+-----------------------+| |nbsp| :diagtext:`in one translation but` |nbsp| |+-----------------------+| |nbsp| :diagtext:`in another translation unit`| | ||:diagtext:`@synthesize`|| ||:diagtext:`@dynamic` || | | |+-----------------------+| |+-----------------------+| | | ||:diagtext:`@dynamic` || ||:diagtext:`@synthesize`|| | | |+-----------------------+| |+-----------------------+| | +----------------------------------------------------------------------------------------------------------------------+-------------------------+--------------------------------------------------+-------------------------+-----------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`declared with incompatible types in different translation units (`:placeholder:`B` |nbsp| :diagtext:`vs.` |nbsp| :placeholder:`C`:diagtext:`)`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`class` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has incompatible superclasses`| +---------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is synthesized to different ivars in different translation units (`:placeholder:`B` |nbsp| :diagtext:`vs.` |nbsp| :placeholder:`C`:diagtext:`)`| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------+-------------------+----------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`parameter kind mismatch; parameter is` |nbsp| |+-----------------+| |nbsp| :diagtext:`parameter pack`| | ||:diagtext:`not a`|| | | |+-----------------+| | | ||:diagtext:`a` || | | |+-----------------+| | +------------------------------------------------------------------------------------+-------------------+----------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has incompatible definitions in different translation units`| +--------------------------------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`external variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`defined in multiple translation units`| +-----------------------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`external variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`declared with incompatible types in different translation units (`:placeholder:`B` |nbsp| :diagtext:`vs.` |nbsp| :placeholder:`C`:diagtext:`)`| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wold-style-cast ---------------- **Diagnostic text:** +------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`use of old-style cast`| +------------------------------------------------------------+ -Wold-style-definition ---------------------- This diagnostic flag exists for GCC compatibility, and has no effect in Clang. -Wopencl-unsupported-rgba ------------------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`vector component name '`:placeholder:`A`:diagtext:`' is an OpenCL version 2.2 feature`| +----------------------------------------------------------------------------------------------------------------------------+ -Wopenmp -------- Some of the diagnostics controlled by this flag are enabled by default. Controls `-Wopenmp-clauses`_, `-Wopenmp-loop-form`_, `-Wopenmp-mapping`_, `-Wopenmp-target`_, `-Wsource-uses-openmp`_. -Wopenmp-clauses ---------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`aligned clause will be ignored because the requested alignment is not a power of 2`| +-------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`allocator with the 'thread' trait access has unspecified behavior on '`:placeholder:`A`:diagtext:`' directive`| +----------------------------------------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`the context property '`:placeholder:`A`:diagtext:`' is not valid for the context selector '`:placeholder:`B`:diagtext:`' and the context set '`:placeholder:`C`:diagtext:`'; property ignored`| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`the context selector '`:placeholder:`A`:diagtext:`' in the context set '`:placeholder:`B`:diagtext:`' cannot have a score ('`:placeholder:`C`:diagtext:`'); score ignored`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`the context selector '`:placeholder:`A`:diagtext:`' is not valid for the context set '`:placeholder:`B`:diagtext:`'; selector ignored`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`the context selector '`:placeholder:`A`:diagtext:`' in context set '`:placeholder:`B`:diagtext:`' requires a context property defined in parentheses; selector ignored`| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------+----------------------+------------------------------------------------------------------------------------------------------------------------+----------------------+---------------------------+ |:warning:`warning:` |nbsp| :diagtext:`the context` |nbsp| |+--------------------+| |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' was used already in the same 'omp declare variant' directive;` |nbsp| |+--------------------+| |nbsp| :diagtext:`ignored`| | ||:diagtext:`set` || ||:diagtext:`set` || | | |+--------------------+| |+--------------------+| | | ||:diagtext:`selector`|| ||:diagtext:`selector`|| | | |+--------------------+| |+--------------------+| | | ||:diagtext:`property`|| ||:diagtext:`property`|| | | |+--------------------+| |+--------------------+| | +----------------------------------------------------------+----------------------+------------------------------------------------------------------------------------------------------------------------+----------------------+---------------------------+ +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' is not a valid context property for the context selector '`:placeholder:`B`:diagtext:`' and the context set '`:placeholder:`C`:diagtext:`'; property ignored`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' is not a valid context selector for the context set '`:placeholder:`B`:diagtext:`'; selector ignored`| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' is not a valid context set in a \`declare variant\`; set ignored`| +--------------------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`expected '`:placeholder:`A`:diagtext:`' after the` |nbsp| :placeholder:`B`:diagtext:`; '`:placeholder:`A`:diagtext:`' assumed`| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------+----------------------+---------------------+----------------------+---------------------------+ |:warning:`warning:` |nbsp| :diagtext:`expected identifier or string literal describing a context` |nbsp| |+--------------------+|:diagtext:`;` |nbsp| |+--------------------+| |nbsp| :diagtext:`skipped`| | ||:diagtext:`set` || ||:diagtext:`set` || | | |+--------------------+| |+--------------------+| | | ||:diagtext:`selector`|| ||:diagtext:`selector`|| | | |+--------------------+| |+--------------------+| | | ||:diagtext:`property`|| ||:diagtext:`property`|| | | |+--------------------+| |+--------------------+| | +---------------------------------------------------------------------------------------------------------+----------------------+---------------------+----------------------+---------------------------+ +---------------------------------------------------------------------------------+---------------------------------------------------+-------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`zero linear step (`:placeholder:`A` |nbsp| |+-------------------------------------------------+|:diagtext:`should probably be const)`| | || || | | |+-------------------------------------------------+| | | ||:diagtext:`and other variables in clause` |nbsp| || | | |+-------------------------------------------------+| | +---------------------------------------------------------------------------------+---------------------------------------------------+-------------------------------------+ +---------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`more than one 'device\_type' clause is specified`| +---------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------+----------------------------------------------+-----------------------------------------------------------+----------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`allocate directive specifies` |nbsp| |+--------------------------------------------+| |nbsp| :diagtext:`allocator while previously used` |nbsp| |+--------------------------------------------+| | ||:diagtext:`default` || ||:diagtext:`default` || | |+--------------------------------------------+| |+--------------------------------------------+| | ||+------------------------------------------+|| ||+------------------------------------------+|| | |||:diagtext:`'`:placeholder:`B`:diagtext:`'`||| |||:diagtext:`'`:placeholder:`D`:diagtext:`'`||| | ||+------------------------------------------+|| ||+------------------------------------------+|| | |+--------------------------------------------+| |+--------------------------------------------+| +---------------------------------------------------------------------------+----------------------------------------------+-----------------------------------------------------------+----------------------------------------------+ -Wopenmp-loop-form ------------------ This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`initialization clause of OpenMP for loop is not in canonical form ('var = init' or 'T var = init')`| +-----------------------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`OpenMP loop iteration variable cannot have more than 64 bits size and will be narrowed`| +-----------------------------------------------------------------------------------------------------------------------------+ -Wopenmp-mapping ---------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`Type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not trivially copyable and not guaranteed to be mapped correctly`| +----------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wopenmp-target --------------- This diagnostic is enabled by default. Also controls `-Wopenmp-mapping`_. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`The OpenMP offloading target '`:placeholder:`A`:diagtext:`' is similar to target '`:placeholder:`B`:diagtext:`' already specified - will be ignored.`| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`No library '`:placeholder:`A`:diagtext:`' found in the default clang lib directory or in LIBRARY\_PATH. Expect degraded performance due to no inlining of runtime functions on target devices.`| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`declaration marked as declare target after first use, it may lead to incorrect results`| +-----------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`declaration is not declared in any declare target region`| +-----------------------------------------------------------------------------------------------+ -Woption-ignored ---------------- This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`option '-ffine-grained-bitfield-accesses' cannot be enabled together with a sanitizer; flag ignored`| +------------------------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`The '`:placeholder:`A`:diagtext:`' architecture does not support -moutline; flag ignored`| +-------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`option '`:placeholder:`A`:diagtext:`' was ignored by the PS4 toolchain, using '-fPIC'`| +----------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------+-------------------------------------------+----------------------+ |:warning:`warning:` |nbsp| :diagtext:`ignoring '-mlong-calls' option as it is not currently supported with` |nbsp| |+-----------------------------------------+|:diagtext:`-mabicalls`| | || || | | |+-----------------------------------------+| | | ||:diagtext:`the implicit usage of` |nbsp| || | | |+-----------------------------------------+| | +-------------------------------------------------------------------------------------------------------------------+-------------------------------------------+----------------------+ +-----------------------------------------------------------------------------------------------------------------------+-------------------------------+----------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ignoring '`:placeholder:`A`:diagtext:`' option as it cannot be used with` |nbsp| |+-----------------------------+| |nbsp| :diagtext:`-mabicalls and the N64 ABI`| | ||:diagtext:`implicit usage of`|| | | |+-----------------------------+| | | || || | | |+-----------------------------+| | +-----------------------------------------------------------------------------------------------------------------------+-------------------------------+----------------------------------------------+ +-----------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ignoring '-msmall-data-limit=' with -mcmodel=large for -fpic or RV64`| +-----------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`auto-vectorization requires HVX, use -mhvx to enable it`| +----------------------------------------------------------------------------------------------+ -Wordered-compare-function-pointers ----------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ordered comparison of function pointers (`:placeholder:`A` |nbsp| :diagtext:`and` |nbsp| :placeholder:`B`:diagtext:`)`| +------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wout-of-line-declaration ------------------------- This diagnostic is an error by default, but the flag ``-Wno-out-of-line-declaration`` can be used to disable the error. **Diagnostic text:** +-------------------------------------------------------------------------------------------+ |:error:`error:` |nbsp| :diagtext:`out-of-line declaration of a member must be a definition`| +-------------------------------------------------------------------------------------------+ -Wout-of-scope-function ----------------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`use of out-of-scope declaration of` |nbsp| :placeholder:`A`|+-------------------------------------------------------------------------------------+| | || || | |+-------------------------------------------------------------------------------------+| | || |nbsp| :diagtext:`whose type is not compatible with that of an implicit declaration`|| | |+-------------------------------------------------------------------------------------+| +-------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------+ -Wover-aligned -------------- **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`requires` |nbsp| :placeholder:`B` |nbsp| :diagtext:`bytes of alignment and the default allocator only guarantees` |nbsp| :placeholder:`C` |nbsp| :diagtext:`bytes`| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Woverflow ---------- This diagnostic flag exists for GCC compatibility, and has no effect in Clang. -Woverlength-strings -------------------- **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------+-----------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`string literal of length` |nbsp| :placeholder:`A` |nbsp| :diagtext:`exceeds maximum length` |nbsp| :placeholder:`B` |nbsp| :diagtext:`that` |nbsp| |+-------------------+| |nbsp| :diagtext:`compilers are required to support`| | ||:diagtext:`C90` || | | |+-------------------+| | | ||:diagtext:`ISO C99`|| | | |+-------------------+| | | ||:diagtext:`C++` || | | |+-------------------+| | +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------+-----------------------------------------------------+ -Woverloaded-shift-op-parentheses --------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------+----------------+------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`overloaded operator` |nbsp| |+--------------+| |nbsp| :diagtext:`has higher precedence than comparison operator`| | ||:diagtext:`>>`|| | | |+--------------+| | | ||:diagtext:`<<`|| | | |+--------------+| | +------------------------------------------------------------------+----------------+------------------------------------------------------------------+ -Woverloaded-virtual -------------------- **Diagnostic text:** +-----------------------------------------------------------------------------------------------+-----------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`hides overloaded virtual` |nbsp| |+---------------------+| | ||:diagtext:`function` || | |+---------------------+| | ||:diagtext:`functions`|| | |+---------------------+| +-----------------------------------------------------------------------------------------------+-----------------------+ -Woverride-init --------------- Synonym for `-Winitializer-overrides`_. -Woverride-module ----------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`overriding the module target triple with` |nbsp| :placeholder:`A`| +-------------------------------------------------------------------------------------------------------+ -Woverriding-method-mismatch ---------------------------- **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`conflicting distributed object modifiers on parameter type in declaration of` |nbsp| :placeholder:`A`| +-------------------------------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`conflicting parameter types in declaration of` |nbsp| :placeholder:`A`| +------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`conflicting distributed object modifiers on return type in declaration of` |nbsp| :placeholder:`A`| +----------------------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`conflicting return type in declaration of` |nbsp| :placeholder:`A`| +--------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`conflicting variadic declaration of method and its implementation`| +--------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`conflicting parameter types in declaration of` |nbsp| :placeholder:`A`:diagtext:`:` |nbsp| :placeholder:`B` |nbsp| :diagtext:`vs` |nbsp| :placeholder:`C`| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`conflicting return type in declaration of` |nbsp| :placeholder:`A`:diagtext:`:` |nbsp| :placeholder:`B` |nbsp| :diagtext:`vs` |nbsp| :placeholder:`C`| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Woverriding-t-option --------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`overriding '`:placeholder:`A`:diagtext:`' option with '`:placeholder:`B`:diagtext:`'`| +---------------------------------------------------------------------------------------------------------------------------+ -Wpacked -------- **Diagnostic text:** +--------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`packed attribute is unnecessary for` |nbsp| :placeholder:`A`| +--------------------------------------------------------------------------------------------------+ -Wpadded -------- **Diagnostic text:** +------------------------------------------------------+-----------------------+--------------------------------------------------------------------------------+------------------+---------------+------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`padding` |nbsp| |+---------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`with` |nbsp| :placeholder:`C` |nbsp| |+----------------+|+-------------+| |nbsp| :diagtext:`to align anonymous bit-field`| | ||:diagtext:`struct` || ||:diagtext:`byte`||| || | | |+---------------------+| |+----------------+|+-------------+| | | ||:diagtext:`interface`|| ||:diagtext:`bit` |||:diagtext:`s`|| | | |+---------------------+| |+----------------+|+-------------+| | | ||:diagtext:`class` || | | | | | |+---------------------+| | | | | +------------------------------------------------------+-----------------------+--------------------------------------------------------------------------------+------------------+---------------+------------------------------------------------+ +------------------------------------------------------+-----------------------+--------------------------------------------------------------------------------+------------------+---------------+----------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`padding` |nbsp| |+---------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`with` |nbsp| :placeholder:`C` |nbsp| |+----------------+|+-------------+| |nbsp| :diagtext:`to align` |nbsp| :placeholder:`E`| | ||:diagtext:`struct` || ||:diagtext:`byte`||| || | | |+---------------------+| |+----------------+|+-------------+| | | ||:diagtext:`interface`|| ||:diagtext:`bit` |||:diagtext:`s`|| | | |+---------------------+| |+----------------+|+-------------+| | | ||:diagtext:`class` || | | | | | |+---------------------+| | | | | +------------------------------------------------------+-----------------------+--------------------------------------------------------------------------------+------------------+---------------+----------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------+------------------+---------------+-----------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`padding size of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`with` |nbsp| :placeholder:`B` |nbsp| |+----------------+|+-------------+| |nbsp| :diagtext:`to alignment boundary`| | ||:diagtext:`byte`||| || | | |+----------------+|+-------------+| | | ||:diagtext:`bit` |||:diagtext:`s`|| | | |+----------------+|+-------------+| | +--------------------------------------------------------------------------------------------------------------------------------------+------------------+---------------+-----------------------------------------+ -Wparentheses ------------- Some of the diagnostics controlled by this flag are enabled by default. Also controls `-Wbitwise-conditional-parentheses`_, `-Wbitwise-op-parentheses`_, `-Wdangling-else`_, `-Wlogical-not-parentheses`_, `-Wlogical-op-parentheses`_, `-Woverloaded-shift-op-parentheses`_, `-Wparentheses-equality`_, `-Wshift-op-parentheses`_. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`using the result of an assignment as a condition without parentheses`| +-----------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has lower precedence than` |nbsp| :placeholder:`B`:diagtext:`;` |nbsp| :placeholder:`B` |nbsp| :diagtext:`will be evaluated first`| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`operator '?:' has lower precedence than '`:placeholder:`A`:diagtext:`'; '`:placeholder:`A`:diagtext:`' will be evaluated first`| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wparentheses-equality ---------------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`equality comparison with extraneous parentheses`| +--------------------------------------------------------------------------------------+ -Wpartial-availability ---------------------- Synonym for `-Wunguarded-availability`_. -Rpass ------ **Diagnostic text:** The text of this diagnostic is not controlled by Clang. -Rpass-analysis --------------- **Diagnostic text:** The text of this diagnostic is not controlled by Clang. +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:remark:`remark:` |nbsp| :placeholder:`A`:diagtext:`; allow reordering by specifying '#pragma clang loop vectorize(enable)' before the loop. If the arrays will always be independent specify '#pragma clang loop vectorize(assume\_safety)' before the loop or provide the '\_\_restrict\_\_' qualifier with the independent array arguments. Erroneous results will occur if these options are incorrectly applied!`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:remark:`remark:` |nbsp| :placeholder:`A`:diagtext:`; allow reordering by specifying '#pragma clang loop vectorize(enable)' before the loop or by providing the compiler option '-ffast-math'.`| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wpass-failed ------------- This diagnostic is enabled by default. **Diagnostic text:** The text of this diagnostic is not controlled by Clang. -Rpass-missed ------------- **Diagnostic text:** The text of this diagnostic is not controlled by Clang. -Wpch-date-time --------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------+--------------------------------+-----------------------------------------------------+ |:warning:`warning:` |nbsp| |+------------------------------+| |nbsp| :diagtext:`uses \_\_DATE\_\_ or \_\_TIME\_\_`| | ||:diagtext:`precompiled header`|| | | |+------------------------------+| | | ||:diagtext:`module` || | | |+------------------------------+| | +---------------------------+--------------------------------+-----------------------------------------------------+ -Wpedantic ---------- Also controls `-Wc++11-extra-semi`_, `-Wc++11-long-long`_, `-Wc++14-binary-literal`_, `-Wc++20-designator`_, `-Wc11-extensions`_, `-Wcomplex-component-init`_, `-Wdeclaration-after-statement`_, `-Wdollar-in-identifier-extension`_, `-Wembedded-directive`_, `-Wempty-translation-unit`_, `-Wfixed-enum-extension`_, `-Wflexible-array-extensions`_, `-Wfour-char-constants`_, `-Wgnu-anonymous-struct`_, `-Wgnu-auto-type`_, `-Wgnu-binary-literal`_, `-Wgnu-case-range`_, `-Wgnu-complex-integer`_, `-Wgnu-compound-literal-initializer`_, `-Wgnu-conditional-omitted-operand`_, `-Wgnu-empty-initializer`_, `-Wgnu-empty-struct`_, `-Wgnu-flexible-array-initializer`_, `-Wgnu-flexible-array-union-member`_, `-Wgnu-folding-constant`_, `-Wgnu-imaginary-constant`_, `-Wgnu-include-next`_, `-Wgnu-label-as-value`_, `-Wgnu-redeclared-enum`_, `-Wgnu-statement-expression`_, `-Wgnu-union-cast`_, `-Wgnu-zero-line-directive`_, `-Wgnu-zero-variadic-macro-arguments`_, `-Wimport-preprocessor-directive-pedantic`_, `-Wkeyword-macro`_, `-Wlanguage-extension-token`_, `-Wlong-long`_, `-Wmicrosoft-charize`_, `-Wmicrosoft-comment-paste`_, `-Wmicrosoft-cpp-macro`_, `-Wmicrosoft-end-of-file`_, `-Wmicrosoft-enum-value`_, `-Wmicrosoft-fixed-enum`_, `-Wmicrosoft-flexible-array`_, `-Wmicrosoft-redeclare-static`_, `-Wnested-anon-types`_, `-Wnullability-extension`_, `-Woverlength-strings`_, `-Wretained-language-linkage`_, `-Wundefined-internal-type`_, `-Wvla-extension`_, `-Wzero-length-array`_. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`duplicate '`:placeholder:`A`:diagtext:`' declaration specifier`| +-----------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'enable\_if' is a clang extension`| +------------------------------------------------------------------------+ +--------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'diagnose\_if' is a clang extension`| +--------------------------------------------------------------------------+ +--------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`designated initializers are a C99 feature`| +--------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ISO C++ does not allow 'main' to be used by a program`| +--------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+ |:warning:`warning:` |nbsp| :diagtext:`C++98 requires an accessible copy constructor for class` |nbsp| :placeholder:`C` |nbsp| :diagtext:`when binding a reference to a temporary; was` |nbsp| |+---------------------+| | ||:diagtext:`private` || | |+---------------------+| | ||:diagtext:`protected`|| | |+---------------------+| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+ +--------------------------------------------------------+--------------------+------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`anonymous` |nbsp| |+------------------+| |nbsp| :diagtext:`cannot be '`:placeholder:`B`:diagtext:`'`| | ||:diagtext:`struct`|| | | |+------------------+| | | ||:diagtext:`union` || | | |+------------------+| | +--------------------------------------------------------+--------------------+------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ISO C++ requires the name after '::~' to be found in the same scope as the name before '::~'`| +-----------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ISO C++ considers this destructor name lookup to be ambiguous`| +----------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------+------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`no viable constructor` |nbsp| |+----------------------------------------------------+| |nbsp| :diagtext:`of type` |nbsp| :placeholder:`B`:diagtext:`; C++98 requires a copy constructor when binding a reference to a temporary`| | ||:diagtext:`copying variable` || | | |+----------------------------------------------------+| | | ||:diagtext:`copying parameter` || | | |+----------------------------------------------------+| | | ||:diagtext:`returning object` || | | |+----------------------------------------------------+| | | ||:diagtext:`initializing statement expression result`|| | | |+----------------------------------------------------+| | | ||:diagtext:`throwing object` || | | |+----------------------------------------------------+| | | ||:diagtext:`copying member subobject` || | | |+----------------------------------------------------+| | | ||:diagtext:`copying array element` || | | |+----------------------------------------------------+| | | ||:diagtext:`allocating object` || | | |+----------------------------------------------------+| | | ||:diagtext:`copying temporary` || | | |+----------------------------------------------------+| | | ||:diagtext:`initializing base subobject` || | | |+----------------------------------------------------+| | | ||:diagtext:`initializing vector element` || | | |+----------------------------------------------------+| | | ||:diagtext:`capturing value` || | | |+----------------------------------------------------+| | +--------------------------------------------------------------------+------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ISO C++ standards before C++17 do not allow new expression for type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to use list-initialization`| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`parameter` |nbsp| :placeholder:`A` |nbsp| :diagtext:`was not declared, defaulting to type 'int'`| +--------------------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`invoking a pointer to a 'const &' member function on an rvalue is a C++20 extension`| +--------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`qualifier in explicit instantiation of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`requires a template-id (a typedef is not permitted)`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------+----------------------+-----------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`static` |nbsp| |+--------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`is used in an inline function with external linkage`| | ||:diagtext:`function`|| | | |+--------------------+| | | ||:diagtext:`variable`|| | | |+--------------------+| | +-----------------------------------------------------+----------------------+-----------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ISO C forbids forward references to 'enum' types`| +---------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------------------+-------------------+-------------+ |:warning:`warning:` |nbsp| :diagtext:`ISO C restricts enumerator values to range of 'int' (`:placeholder:`A` |nbsp| :diagtext:`is too` |nbsp| |+-----------------+|:diagtext:`)`| | ||:diagtext:`small`|| | | |+-----------------+| | | ||:diagtext:`large`|| | | |+-----------------+| | +----------------------------------------------------------------------------------------------------------------------------------------------+-------------------+-------------+ +--------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`size of static array must be an integer constant expression`| +--------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`initializer for aggregate is not a compile-time constant`| +-----------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`flexible array members are a C99 feature`| +-------------------------------------------------------------------------------+ +---------------------------------------------------------------+-----------------------------------------------------+--------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`invalid application of '`|+---------------------------------------------------+|:diagtext:`' to a function type`| | ||:diagtext:`sizeof` || | | |+---------------------------------------------------+| | | ||:diagtext:`alignof` || | | |+---------------------------------------------------+| | | ||:diagtext:`vec\_step` || | | |+---------------------------------------------------+| | | ||:diagtext:`\_\_builtin\_omp\_required\_simd\_align`|| | | |+---------------------------------------------------+| | | ||:diagtext:`\_\_alignof` || | | |+---------------------------------------------------+| | +---------------------------------------------------------------+-----------------------------------------------------+--------------------------------+ +---------------------------------------------------------------+-----------------------------------------------------+----------------------------+ |:warning:`warning:` |nbsp| :diagtext:`invalid application of '`|+---------------------------------------------------+|:diagtext:`' to a void type`| | ||:diagtext:`sizeof` || | | |+---------------------------------------------------+| | | ||:diagtext:`alignof` || | | |+---------------------------------------------------+| | | ||:diagtext:`vec\_step` || | | |+---------------------------------------------------+| | | ||:diagtext:`\_\_builtin\_omp\_required\_simd\_align`|| | | |+---------------------------------------------------+| | | ||:diagtext:`\_\_alignof` || | | |+---------------------------------------------------+| | +---------------------------------------------------------------+-----------------------------------------------------+----------------------------+ +-------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ISO C90 does not allow subscripting non-lvalue array`| +-------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`subscript of a pointer to void is a GNU extension`| +----------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ISO C forbids taking the address of an expression of type 'void'`| +-------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ordered comparison between pointer and zero (`:placeholder:`A` |nbsp| :diagtext:`and` |nbsp| :placeholder:`B`:diagtext:`) is an extension`| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`equality comparison between function pointer and void pointer (`:placeholder:`A` |nbsp| :diagtext:`and` |nbsp| :placeholder:`B`:diagtext:`)`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------+-----------------------+---------------------------+---------------+----------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`arithmetic on`|+---------------------+| |nbsp| :diagtext:`pointer`|+-------------+| |nbsp| :diagtext:`to void is a GNU extension`| | || |nbsp| :diagtext:`a`|| || || | | |+---------------------+| |+-------------+| | | || || ||:diagtext:`s`|| | | |+---------------------+| |+-------------+| | +----------------------------------------------------+-----------------------+---------------------------+---------------+----------------------------------------------+ +----------------------------------------------------+-----------------------+---------------------------+---------------+----------------------+-------------------------+---------------------------------+---------------+------------------------+---------------------------------------------------+--------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`arithmetic on`|+---------------------+| |nbsp| :diagtext:`pointer`|+-------------+| |nbsp| :diagtext:`to`|+-----------------------+| |nbsp| :diagtext:`function type`|+-------------+| |nbsp| :placeholder:`B`|+-------------------------------------------------+| |nbsp| :diagtext:`is a GNU extension`| | || |nbsp| :diagtext:`a`|| || || || |nbsp| :diagtext:`the`|| || || || || | | |+---------------------+| |+-------------+| |+-----------------------+| |+-------------+| |+-------------------------------------------------+| | | || || ||:diagtext:`s`|| || || ||:diagtext:`s`|| ||+-----------------------------------------------+|| | | |+---------------------+| |+-------------+| |+-----------------------+| |+-------------+| ||| |nbsp| :diagtext:`and` |nbsp| :placeholder:`D`||| | | | | | | | | | | ||+-----------------------------------------------+|| | | | | | | | | | | |+-------------------------------------------------+| | +----------------------------------------------------+-----------------------+---------------------------+---------------+----------------------+-------------------------+---------------------------------+---------------+------------------------+---------------------------------------------------+--------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ISO C does not support '++'/'--' on complex integer type` |nbsp| :placeholder:`A`| +-----------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ISO C does not support '~' for complex conjugation of` |nbsp| :placeholder:`A`| +--------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`complex numbers are an extension in a freestanding C99 implementation`| +------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`cast between pointer-to-function and pointer-to-object is an extension`| +-------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`implicit conversion from array size expression of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| |+-----------------------+| |nbsp| :diagtext:`type` |nbsp| :placeholder:`C` |nbsp| :diagtext:`is a C++11 extension`| | ||:diagtext:`integral` || | | |+-----------------------+| | | ||:diagtext:`enumeration`|| | | |+-----------------------+| | +---------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------------------------+ +---------------------------+----------------------------------------------------------------+----------------------------------------------------------------------+ |:warning:`warning:` |nbsp| |+--------------------------------------------------------------+| |nbsp| :diagtext:`converts between void pointer and function pointer`| | ||:diagtext:`assigning to different types` || | | |+--------------------------------------------------------------+| | | ||:diagtext:`passing to parameter of different type` || | | |+--------------------------------------------------------------+| | | ||:diagtext:`returning from function with different return type`|| | | |+--------------------------------------------------------------+| | | ||:diagtext:`converting between types` || | | |+--------------------------------------------------------------+| | | ||:diagtext:`initializing with expression of different type` || | | |+--------------------------------------------------------------+| | | ||:diagtext:`sending to parameter of different type` || | | |+--------------------------------------------------------------+| | | ||:diagtext:`casting between types` || | | |+--------------------------------------------------------------+| | +---------------------------+----------------------------------------------------------------+----------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`kernel function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a member function; this may not be accepted by nvcc`| +--------------------------------------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`C99 forbids conditional expressions with only one void side`| +--------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`C99 forbids casting nonscalar type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to the same type`| +-------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`use of the` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute is a C++14 extension`| +---------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`use of the` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute is a C++17 extension`| +---------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`use of the` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute is a C++20 extension`| +---------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------+--------------------+---------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`types declared in an anonymous` |nbsp| |+------------------+| |nbsp| :diagtext:`are a Microsoft extension`| | ||:diagtext:`struct`|| | | |+------------------+| | | ||:diagtext:`union` || | | |+------------------+| | +-----------------------------------------------------------------------------+--------------------+---------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------------------+-----------------------------+------------------------+ |:warning:`warning:` |nbsp| :diagtext:`format specifies type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`but the argument has` |nbsp| |+---------------------------+| |nbsp| :placeholder:`B`| | ||:diagtext:`type` || | | |+---------------------------+| | | ||:diagtext:`underlying type`|| | | |+---------------------------+| | +------------------------------------------------------------------------------------------------------------------------------------+-----------------------------+------------------------+ +---------------------------------------------------+----------------------+-----------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`void` |nbsp| |+--------------------+| |nbsp| :placeholder:`A` |nbsp| :diagtext:`should not return void expression`| | ||:diagtext:`function`|| | | |+--------------------+| | | ||:diagtext:`method` || | | |+--------------------+| | | ||:diagtext:`block` || | | |+--------------------+| | +---------------------------------------------------+----------------------+-----------------------------------------------------------------------------+ +---------------------------+----------------------------------+------------------------------+-----------------------+----------------------------+ |:warning:`warning:` |nbsp| |+--------------------------------+|:diagtext:`array size` |nbsp| |+---------------------+|:diagtext:`is a C99 feature`| | ||:diagtext:`qualifier in` |nbsp| || || || | | |+--------------------------------+| |+---------------------+| | | ||:diagtext:`static` |nbsp| || || || | | |+--------------------------------+| |+---------------------+| | | || || ||:diagtext:`'\[\*\] '`|| | | |+--------------------------------+| |+---------------------+| | +---------------------------+----------------------------------+------------------------------+-----------------------+----------------------------+ +--------------------------------------------------------+------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`extra ';'` |nbsp| |+----------------------------------------------+| | ||:diagtext:`outside of a function` || | |+----------------------------------------------+| | ||+--------------------------------------------+|| | |||:diagtext:`inside a` |nbsp| :placeholder:`B`||| | ||+--------------------------------------------+|| | |+----------------------------------------------+| | ||:diagtext:`inside instance variable list` || | |+----------------------------------------------+| | ||:diagtext:`after member function definition` || | |+----------------------------------------------+| +--------------------------------------------------------+------------------------------------------------+ +-----------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'\_\_thread' before '`:placeholder:`A`:diagtext:`'`| +-----------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`type-less parameter names in function declaration`| +----------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`variable declaration in for loop is a C99-specific feature`| +-------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`compound literals are a C99-specific feature`| +-----------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`commas at the end of enumerator lists are a C99-specific feature`| +-------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`commas at the end of enumerator lists are a C++11 extension`| +--------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`enumeration types with a fixed underlying type are a C++11 extension`| +-----------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' is a C99 extension`| +----------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`use of GNU array range extension`| +-----------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`exception specification of '...' is a Microsoft extension`| +------------------------------------------------------------------------------------------------+ +------------------------------------------------------------+---------------------------+-----------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`attributes on` |nbsp| |+-------------------------+| |nbsp| :diagtext:`declaration are a C++17 extension`| | ||:diagtext:`a namespace` || | | |+-------------------------+| | | ||:diagtext:`an enumerator`|| | | |+-------------------------+| | +------------------------------------------------------------+---------------------------+-----------------------------------------------------+ +-----------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`extern templates are a C++11 extension`| +-----------------------------------------------------------------------------+ +------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`multi-line // comment`| +------------------------------------------------------------+ +-----------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`// comments are not allowed in this language`| +-----------------------------------------------------------------------------------+ +----------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`no newline at end of file`| +----------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`use of non-standard escape character '\\`:placeholder:`A`:diagtext:`'`| +------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`hexadecimal floating constants are a C99 feature`| +---------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`hexadecimal floating literals are a C++17 feature`| +----------------------------------------------------------------------------------------+ +---------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`#ident is a language extension`| +---------------------------------------------------------------------+ +-----------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`#warning is a language extension`| +-----------------------------------------------------------------------+ +-----------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`comma operator in operand of #if`| +-----------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`\_\_VA\_ARGS\_\_ can only appear in the expansion of a C99 variadic macro`| +----------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`variadic macros are a C99 feature`| +------------------------------------------------------------------------+ +--------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`named variadic macros are a GNU extension`| +--------------------------------------------------------------------------------+ +------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`empty macro arguments are a C99 feature`| +------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`variadic macros are a Clang extension in OpenCL`| +--------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`C requires #line number to be less than` |nbsp| :placeholder:`A`:diagtext:`, allowed as extension`| +----------------------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`macro expansion producing 'defined' has undefined behavior`| +-------------------------------------------------------------------------------------------------+ -Wpedantic-core-features ------------------------ **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`OpenCL extension` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is core feature or supported optional core feature - ignoring`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wpessimizing-move ------------------ **Diagnostic text:** +--------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`moving a temporary object prevents copy elision`| +--------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`moving a local object in a return statement prevents copy elision`| +--------------------------------------------------------------------------------------------------------+ -Wpointer-arith --------------- Some of the diagnostics controlled by this flag are enabled by default. **Diagnostic text:** +----------------------------------------------------+-----------------------+---------------------------+---------------+----------------------+-------------------------+---------------------------------+---------------+------------------------+---------------------------------------------------+--------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`arithmetic on`|+---------------------+| |nbsp| :diagtext:`pointer`|+-------------+| |nbsp| :diagtext:`to`|+-----------------------+| |nbsp| :diagtext:`function type`|+-------------+| |nbsp| :placeholder:`B`|+-------------------------------------------------+| |nbsp| :diagtext:`is a GNU extension`| | || |nbsp| :diagtext:`a`|| || || || |nbsp| :diagtext:`the`|| || || || || | | |+---------------------+| |+-------------+| |+-----------------------+| |+-------------+| |+-------------------------------------------------+| | | || || ||:diagtext:`s`|| || || ||:diagtext:`s`|| ||+-----------------------------------------------+|| | | |+---------------------+| |+-------------+| |+-----------------------+| |+-------------+| ||| |nbsp| :diagtext:`and` |nbsp| :placeholder:`D`||| | | | | | | | | | | ||+-----------------------------------------------+|| | | | | | | | | | | |+-------------------------------------------------+| | +----------------------------------------------------+-----------------------+---------------------------+---------------+----------------------+-------------------------+---------------------------------+---------------+------------------------+---------------------------------------------------+--------------------------------------+ +----------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`subscript of a pointer to void is a GNU extension`| +----------------------------------------------------------------------------------------+ +----------------------------------------------------+-----------------------+---------------------------+---------------+----------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`arithmetic on`|+---------------------+| |nbsp| :diagtext:`pointer`|+-------------+| |nbsp| :diagtext:`to void is a GNU extension`| | || |nbsp| :diagtext:`a`|| || || | | |+---------------------+| |+-------------+| | | || || ||:diagtext:`s`|| | | |+---------------------+| |+-------------+| | +----------------------------------------------------+-----------------------+---------------------------+---------------+----------------------------------------------+ +---------------------------------------------------------------+-----------------------------------------------------+--------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`invalid application of '`|+---------------------------------------------------+|:diagtext:`' to a function type`| | ||:diagtext:`sizeof` || | | |+---------------------------------------------------+| | | ||:diagtext:`alignof` || | | |+---------------------------------------------------+| | | ||:diagtext:`vec\_step` || | | |+---------------------------------------------------+| | | ||:diagtext:`\_\_builtin\_omp\_required\_simd\_align`|| | | |+---------------------------------------------------+| | | ||:diagtext:`\_\_alignof` || | | |+---------------------------------------------------+| | +---------------------------------------------------------------+-----------------------------------------------------+--------------------------------+ +---------------------------------------------------------------+-----------------------------------------------------+----------------------------+ |:warning:`warning:` |nbsp| :diagtext:`invalid application of '`|+---------------------------------------------------+|:diagtext:`' to a void type`| | ||:diagtext:`sizeof` || | | |+---------------------------------------------------+| | | ||:diagtext:`alignof` || | | |+---------------------------------------------------+| | | ||:diagtext:`vec\_step` || | | |+---------------------------------------------------+| | | ||:diagtext:`\_\_builtin\_omp\_required\_simd\_align`|| | | |+---------------------------------------------------+| | | ||:diagtext:`\_\_alignof` || | | |+---------------------------------------------------+| | +---------------------------------------------------------------+-----------------------------------------------------+----------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`subtraction of pointers to type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`of zero size has undefined behavior`| +-----------------------------------------------------------------------------------------------------------------------------------------------------+ -Wpointer-bool-conversion ------------------------- This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------+---------------------------+---------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`nonnull` |nbsp| |+-------------------------+| |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' will evaluate to 'true' on first encounter`| | ||:diagtext:`function call`|| | | |+-------------------------+| | | ||:diagtext:`parameter` || | | |+-------------------------+| | +------------------------------------------------------+---------------------------+---------------------------------------------------------------------------------------------+ +-------------------------------------------------+------------------------------+---------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`address of`|+----------------------------+| |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' will always evaluate to 'true'`| | || || | | |+----------------------------+| | | || |nbsp| :diagtext:`function`|| | | |+----------------------------+| | | || |nbsp| :diagtext:`array` || | | |+----------------------------+| | +-------------------------------------------------+------------------------------+---------------------------------------------------------------------------------+ -Wpointer-compare ----------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------+------------------------+-------------+ |:warning:`warning:` |nbsp| :diagtext:`comparing a pointer to a null character constant; did you mean to compare to` |nbsp| |+----------------------+|:diagtext:`?`| | ||:diagtext:`NULL` || | | |+----------------------+| | | ||:diagtext:`(void \*)0`|| | | |+----------------------+| | +---------------------------------------------------------------------------------------------------------------------------+------------------------+-------------+ -Wpointer-integer-compare ------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`comparison between pointer and integer (`:placeholder:`A` |nbsp| :diagtext:`and` |nbsp| :placeholder:`B`:diagtext:`)`| +-----------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wpointer-sign -------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------+----------------------------------------------------------------+----------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| |+--------------------------------------------------------------+| |nbsp| :diagtext:`converts between pointers to integer types with different sign`| | ||:diagtext:`assigning to different types` || | | |+--------------------------------------------------------------+| | | ||:diagtext:`passing to parameter of different type` || | | |+--------------------------------------------------------------+| | | ||:diagtext:`returning from function with different return type`|| | | |+--------------------------------------------------------------+| | | ||:diagtext:`converting between types` || | | |+--------------------------------------------------------------+| | | ||:diagtext:`initializing with expression of different type` || | | |+--------------------------------------------------------------+| | | ||:diagtext:`sending to parameter of different type` || | | |+--------------------------------------------------------------+| | | ||:diagtext:`casting between types` || | | |+--------------------------------------------------------------+| | +---------------------------+----------------------------------------------------------------+----------------------------------------------------------------------------------+ -Wpointer-to-enum-cast ---------------------- This diagnostic is enabled by default. Also controls `-Wvoid-pointer-to-enum-cast`_. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`cast to smaller integer type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`from` |nbsp| :placeholder:`A`| +-------------------------------------------------------------------------------------------------------------------------------------------+ -Wpointer-to-int-cast --------------------- This diagnostic is enabled by default. Also controls `-Wpointer-to-enum-cast`_, `-Wvoid-pointer-to-int-cast`_. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`cast to smaller integer type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`from` |nbsp| :placeholder:`A`| +-------------------------------------------------------------------------------------------------------------------------------------------+ -Wpointer-to-int-cast --------------------- This diagnostic is enabled by default. Also controls `-Wpointer-to-enum-cast`_, `-Wvoid-pointer-to-int-cast`_. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`cast to smaller integer type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`from` |nbsp| :placeholder:`A`| +-------------------------------------------------------------------------------------------------------------------------------------------+ -Wpointer-type-mismatch ----------------------- This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`pointer type mismatch`| +------------------------------------------------------------+ -Wpoison-system-directories --------------------------- **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`include location '`:placeholder:`A`:diagtext:`' is unsafe for cross-compilation`| +----------------------------------------------------------------------------------------------------------------------+ -Wpotentially-evaluated-expression ---------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`expression with side effects will be evaluated despite being used as an operand to 'typeid'`| +----------------------------------------------------------------------------------------------------------------------------------+ -Wpragma-clang-attribute ------------------------ This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unused attribute` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in '#pragma clang attribute push' region`| +-------------------------------------------------------------------------------------------------------------------------------------------+ -Wpragma-once-outside-header ---------------------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`#pragma once in main file`| +----------------------------------------------------------------+ -Wpragma-pack ------------- Some of the diagnostics controlled by this flag are enabled by default. Also controls `-Wpragma-pack-suspicious-include`_. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`the current #pragma pack alignment value is modified in the included file`| +----------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unterminated '#pragma pack (push, ...)' at end of file`| +---------------------------------------------------------------------------------------------+ -Wpragma-pack-suspicious-include -------------------------------- **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`non-default #pragma pack value changes the alignment of struct or union members in the included file`| +-------------------------------------------------------------------------------------------------------------------------------------------+ -Wpragma-system-header-outside-header ------------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`#pragma system\_header ignored in main file`| +----------------------------------------------------------------------------------+ -Wpragmas --------- Some of the diagnostics controlled by this flag are enabled by default. Also controls `-Wignored-pragmas`_, `-Wpragma-clang-attribute`_, `-Wpragma-pack`_, `-Wunknown-pragmas`_. **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------------------------+----------------------+------------------------+ |:warning:`warning:` |nbsp| :diagtext:`#pragma redefine\_extname is applicable to external C declarations only; not applied to` |nbsp| |+--------------------+| |nbsp| :placeholder:`B`| | ||:diagtext:`function`|| | | |+--------------------+| | | ||:diagtext:`variable`|| | | |+--------------------+| | +--------------------------------------------------------------------------------------------------------------------------------------+----------------------+------------------------+ -Wpredefined-identifier-outside-function ---------------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`predefined identifier is only valid inside function`| +------------------------------------------------------------------------------------------+ -Wprivate-extern ---------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`use of \_\_private\_extern\_\_ on a declaration may not produce external symbol private to the linkage unit and is deprecated`| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wprivate-header ---------------- This diagnostic is an error by default, but the flag ``-Wno-private-header`` can be used to disable the error. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------+ |:error:`error:` |nbsp| :diagtext:`use of private header from outside its module: '`:placeholder:`A`:diagtext:`'`| +----------------------------------------------------------------------------------------------------------------+ -Wprivate-module ---------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`expected canonical name for private module '`:placeholder:`A`:diagtext:`'`| +----------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`private submodule '`:placeholder:`A`:diagtext:`' in private module map, expected top-level module`| +----------------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`module '`:placeholder:`A`:diagtext:`' already re-exported as '`:placeholder:`B`:diagtext:`'`| +----------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`no submodule named` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in module '`:placeholder:`B`:diagtext:`'; using top level '`:placeholder:`C`:diagtext:`'`| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wprofile-instr-missing ----------------------- **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------------------------+---------------+---------------------------------------------+------------------+---------------------------+ |:warning:`warning:` |nbsp| :diagtext:`profile data may be incomplete: of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`function`|+-------------+|:diagtext:`,` |nbsp| :placeholder:`B` |nbsp| |+----------------+| |nbsp| :diagtext:`no data`| | || || ||:diagtext:`has` || | | |+-------------+| |+----------------+| | | ||:diagtext:`s`|| ||:diagtext:`have`|| | | |+-------------+| |+----------------+| | +-----------------------------------------------------------------------------------------------------------------------------+---------------+---------------------------------------------+------------------+---------------------------+ -Wprofile-instr-out-of-date --------------------------- This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------------------+---------------+---------------------------------------------+------------------+--------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`profile data may be out of date: of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`function`|+-------------+|:diagtext:`,` |nbsp| :placeholder:`B` |nbsp| |+----------------+| |nbsp| :diagtext:`mismatched data that will be ignored`| | || || ||:diagtext:`has` || | | |+-------------+| |+----------------+| | | ||:diagtext:`s`|| ||:diagtext:`have`|| | | |+-------------+| |+----------------+| | +------------------------------------------------------------------------------------------------------------------------------+---------------+---------------------------------------------+------------------+--------------------------------------------------------+ -Wprofile-instr-unprofiled -------------------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`no profile data available for file "`:placeholder:`A`:diagtext:`"`| +--------------------------------------------------------------------------------------------------------+ -Wproperty-access-dot-syntax ---------------------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`not found on object of type` |nbsp| :placeholder:`B`:diagtext:`; did you mean to access property` |nbsp| :placeholder:`C`:diagtext:`?`| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wproperty-attribute-mismatch ----------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`property attribute in class extension does not match the primary class`| +-------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' attribute on property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`does not match the property inherited from` |nbsp| :placeholder:`C`| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`getter name mismatch between property redeclaration (`:placeholder:`B`:diagtext:`) and its original declaration (`:placeholder:`A`:diagtext:`)`| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`attribute 'readonly' of property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`restricts attribute 'readwrite' of property inherited from` |nbsp| :placeholder:`B`| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wprotocol ---------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`method` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in protocol` |nbsp| :placeholder:`B` |nbsp| :diagtext:`not implemented`| +---------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wprotocol-property-synthesis-ambiguity --------------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------+----------------------------------------------------------------+----------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`property` |nbsp| |+--------------------------------------------------------------+| |nbsp| :diagtext:`was selected for synthesis`| | ||+-------------------------------------------+ || | | |||:diagtext:`of type` |nbsp| :placeholder:`B`| || | | ||+-------------------------------------------+ || | | |+--------------------------------------------------------------+| | | ||+---------------------------------------------------------+ || | | |||:diagtext:`with attribute '`:placeholder:`B`:diagtext:`'`| || | | ||+---------------------------------------------------------+ || | | |+--------------------------------------------------------------+| | | ||+------------------------------------------------------------+|| | | |||:diagtext:`without attribute '`:placeholder:`B`:diagtext:`'`||| | | ||+------------------------------------------------------------+|| | | |+--------------------------------------------------------------+| | | ||+-----------------------------------------------+ || | | |||:diagtext:`with getter` |nbsp| :placeholder:`B`| || | | ||+-----------------------------------------------+ || | | |+--------------------------------------------------------------+| | | ||+-----------------------------------------------+ || | | |||:diagtext:`with setter` |nbsp| :placeholder:`B`| || | | ||+-----------------------------------------------+ || | | |+--------------------------------------------------------------+| | +-------------------------------------------------------+----------------------------------------------------------------+----------------------------------------------+ -Wqualified-void-return-type ---------------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`function cannot return qualified void type` |nbsp| :placeholder:`A`| +---------------------------------------------------------------------------------------------------------+ -Wquoted-include-in-framework-header ------------------------------------ **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`double-quoted include "`:placeholder:`A`:diagtext:`" in framework header, expected angle-bracketed instead`| +-------------------------------------------------------------------------------------------------------------------------------------------------+ -Wrange-loop-analysis --------------------- Controls `-Wrange-loop-bind-reference`_, `-Wrange-loop-construct`_. -Wrange-loop-bind-reference --------------------------- **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`loop variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`binds to a temporary value produced by a range of type` |nbsp| :placeholder:`B`| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wrange-loop-construct ---------------------- **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`loop variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`binds to a temporary constructed from a different type`| +------------------------------------------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`loop variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`creates a copy from type` |nbsp| :placeholder:`B`| +------------------------------------------------------------------------------------------------------------------------------------------------+ -Wreadonly-iboutlet-property ---------------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`readonly IBOutlet property` |nbsp| :placeholder:`A` |nbsp| :diagtext:`when auto-synthesized may not work correctly with 'nib' loader`| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wreceiver-expr --------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`receiver type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not 'id' or interface pointer, consider casting it to 'id'`| +-------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wreceiver-forward-class ------------------------ Some of the diagnostics controlled by this flag are enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`receiver` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a forward class and corresponding @interface may not exist`| +--------------------------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`receiver type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`for instance message is a forward declaration`| +---------------------------------------------------------------------------------------------------------------------------------------------+ -Wredeclared-class-member ------------------------- This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`class member cannot be redeclared`| +------------------------------------------------------------------------+ -Wredundant-decls ----------------- This diagnostic flag exists for GCC compatibility, and has no effect in Clang. -Wredundant-move ---------------- **Diagnostic text:** +-------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`redundant move in return statement`| +-------------------------------------------------------------------------+ -Wredundant-parens ------------------ **Diagnostic text:** +-----------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`redundant parentheses surrounding declarator`| +-----------------------------------------------------------------------------------+ -Wregister ---------- This diagnostic is enabled by default. Also controls `-Wdeprecated-register`_. **Diagnostic text:** +----------------------------------------------------------------------------------------------+ |:error:`error:` |nbsp| :diagtext:`ISO C++17 does not allow 'register' storage class specifier`| +----------------------------------------------------------------------------------------------+ -Wreinterpret-base-class ------------------------ This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------+------------------+---------------------------------------------------------+------------------+-------------------------------+-------------------------------------+-----------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'reinterpret\_cast'` |nbsp| |+----------------+| |nbsp| :diagtext:`class` |nbsp| :placeholder:`A` |nbsp| |+----------------+| |nbsp| :diagtext:`its` |nbsp| |+-----------------------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`behaves differently from 'static\_cast'`| | ||:diagtext:`from`|| ||:diagtext:`to` || ||:diagtext:`virtual base` || | | |+----------------+| |+----------------+| |+-----------------------------------+| | | ||:diagtext:`to` || ||:diagtext:`from`|| ||:diagtext:`base at non-zero offset`|| | | |+----------------+| |+----------------+| |+-----------------------------------+| | +------------------------------------------------------------------+------------------+---------------------------------------------------------+------------------+-------------------------------+-------------------------------------+-----------------------------------------------------------------------------------+ -Rremark-backend-plugin ----------------------- **Diagnostic text:** The text of this diagnostic is not controlled by Clang. -Wreorder --------- Some of the diagnostics controlled by this flag are enabled by default. Controls `-Wreorder-ctor`_, `-Wreorder-init-list`_. -Wreorder-ctor -------------- **Diagnostic text:** +---------------------------+------------------------+-----------------------------------------------------------------------------+-------------------+------------------------+ |:warning:`warning:` |nbsp| |+----------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`will be initialized after` |nbsp| |+-----------------+| |nbsp| :placeholder:`D`| | ||:diagtext:`field` || ||:diagtext:`field`|| | | |+----------------------+| |+-----------------+| | | ||:diagtext:`base class`|| ||:diagtext:`base` || | | |+----------------------+| |+-----------------+| | +---------------------------+------------------------+-----------------------------------------------------------------------------+-------------------+------------------------+ -Wreorder-init-list ------------------- This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ISO C++ requires field designators to be specified in declaration order; field` |nbsp| :placeholder:`B` |nbsp| :diagtext:`will be initialized after field` |nbsp| :placeholder:`A`| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wrequires-expression --------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`this requires expression will only be checked for syntactic validity; did you intend to place it in a nested requirement? (add another 'requires' before the expression)`| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wrequires-super-attribute -------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------+----------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute cannot be applied to` |nbsp| |+--------------------------------+| | ||:diagtext:`methods in protocols`|| | |+--------------------------------+| | ||:diagtext:`dealloc` || | |+--------------------------------+| +-----------------------------------------------------------------------------------------------------+----------------------------------+ -Wreserved-id-macro ------------------- **Diagnostic text:** +--------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`macro name is a reserved identifier`| +--------------------------------------------------------------------------+ -Wreserved-user-defined-literal ------------------------------- Some of the diagnostics controlled by this flag are enabled by default. Also controls `-Wc++11-compat-reserved-user-defined-literal`_. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`invalid suffix on literal; C++11 requires a space between literal and identifier`| +-----------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------+ |:error:`error:` |nbsp| :diagtext:`invalid suffix on literal; C++11 requires a space between literal and identifier`| +-------------------------------------------------------------------------------------------------------------------+ -Wretained-language-linkage --------------------------- **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`friend function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`retaining previous language linkage is an extension`| +-----------------------------------------------------------------------------------------------------------------------------------------------------+ -Wreturn-stack-address ---------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`returning address of label, which is local`| +---------------------------------------------------------------------------------+ +--------------------------------------------------------+--------------------------+------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`returning` |nbsp| |+------------------------+| |nbsp| :diagtext:`local temporary object`| | ||:diagtext:`address of` || | | |+------------------------+| | | ||:diagtext:`reference to`|| | | |+------------------------+| | +--------------------------------------------------------+--------------------------+------------------------------------------+ +---------------------------+--------------------------+--------------------------------------------------------+----------------------------+----------------------------------------------------+ |:warning:`warning:` |nbsp| |+------------------------+| |nbsp| :diagtext:`stack memory associated with` |nbsp| |+--------------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`returned`| | ||:diagtext:`address of` || ||:diagtext:`local variable`|| | | |+------------------------+| |+--------------------------+| | | ||:diagtext:`reference to`|| ||:diagtext:`parameter` || | | |+------------------------+| |+--------------------------+| | +---------------------------+--------------------------+--------------------------------------------------------+----------------------------+----------------------------------------------------+ -Wreturn-std-move ----------------- **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------+----------------------+---------------------------+ |:warning:`warning:` |nbsp| :diagtext:`local variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`will be copied despite being` |nbsp| |+--------------------+| |nbsp| :diagtext:`by name`| | ||:diagtext:`returned`|| | | |+--------------------+| | | ||:diagtext:`thrown` || | | |+--------------------+| | +-------------------------------------------------------------------------------------------------------------------------------------+----------------------+---------------------------+ -Wreturn-std-move-in-c++11 -------------------------- **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`prior to the resolution of a defect report against ISO C++11, local variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`would have been copied despite being returned by name, due to its not matching the function return type`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wreturn-type ------------- This diagnostic is enabled by default. Also controls `-Wreturn-type-c-linkage`_. **Diagnostic text:** +-----------------------+---------------------------+---------------------------------------------------------------------+ |:error:`error:` |nbsp| |+-------------------------+| |nbsp| :placeholder:`A` |nbsp| :diagtext:`should not return a value`| | ||:diagtext:`void function`|| | | |+-------------------------+| | | ||:diagtext:`void method` || | | |+-------------------------+| | | ||:diagtext:`constructor` || | | |+-------------------------+| | | ||:diagtext:`destructor` || | | |+-------------------------+| | +-----------------------+---------------------------+---------------------------------------------------------------------+ +---------------------------------------------------+----------------------+-----------------------------------------------------------------+ |:error:`error:` |nbsp| :diagtext:`non-void` |nbsp| |+--------------------+| |nbsp| :placeholder:`A` |nbsp| :diagtext:`should return a value`| | ||:diagtext:`function`|| | | |+--------------------+| | | ||:diagtext:`method` || | | |+--------------------+| | +---------------------------------------------------+----------------------+-----------------------------------------------------------------+ +---------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`non-void coroutine does not return a value`| +---------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`non-void function does not return a value`| +--------------------------------------------------------------------------------+ +------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`non-void lambda does not return a value`| +------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`non-void coroutine does not return a value in all control paths`| +------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`non-void function does not return a value in all control paths`| +-----------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`non-void lambda does not return a value in all control paths`| +---------------------------------------------------------------------------------------------------+ +---------------------------------------------------+----------------------+-----------------------------------------------------------------+ |:error:`error:` |nbsp| :diagtext:`non-void` |nbsp| |+--------------------+| |nbsp| :placeholder:`A` |nbsp| :diagtext:`should return a value`| | ||:diagtext:`function`|| | | |+--------------------+| | | ||:diagtext:`method` || | | |+--------------------+| | +---------------------------------------------------+----------------------+-----------------------------------------------------------------+ -Wreturn-type-c-linkage ----------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has C-linkage specified, but returns user-defined type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`which is incompatible with C`| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has C-linkage specified, but returns incomplete type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`which could be incompatible with C`| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wrewrite-not-bool ------------------ This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ISO C++20 requires return type of selected 'operator==' function for rewritten '`:placeholder:`B`:diagtext:`' comparison to be 'bool', not` |nbsp| :placeholder:`A`| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Rsanitize-address ------------------ **Diagnostic text:** +--------------------------------------------------------------------------------------------------------+ |:remark:`remark:` |nbsp| :diagtext:`-fsanitize-address-field-padding applied to` |nbsp| :placeholder:`A`| +--------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------+ |:remark:`remark:` |nbsp| :diagtext:`-fsanitize-address-field-padding ignored for` |nbsp| :placeholder:`A` |nbsp| :diagtext:`because it` |nbsp| |+------------------------------------+| | ||:diagtext:`is not C++` || | |+------------------------------------+| | ||:diagtext:`is packed` || | |+------------------------------------+| | ||:diagtext:`is a union` || | |+------------------------------------+| | ||:diagtext:`is trivially copyable` || | |+------------------------------------+| | ||:diagtext:`has trivial destructor` || | |+------------------------------------+| | ||:diagtext:`is standard layout` || | |+------------------------------------+| | ||:diagtext:`is in a blacklisted file`|| | |+------------------------------------+| | ||:diagtext:`is blacklisted` || | |+------------------------------------+| +-----------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------+ -Wsection --------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`section attribute is specified on redeclared variable`| +--------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`duplicate code segment specifiers`| +------------------------------------------------------------------------+ +---------------------------+---------------------+-------------------------------------------------------+ |:warning:`warning:` |nbsp| |+-------------------+| |nbsp| :diagtext:`does not match previous declaration`| | ||:diagtext:`codeseg`|| | | |+-------------------+| | | ||:diagtext:`section`|| | | |+-------------------+| | +---------------------------+---------------------+-------------------------------------------------------+ -Wselector ---------- Also controls `-Wselector-type-mismatch`_. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`no method with selector` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is implemented in this translation unit`| +-------------------------------------------------------------------------------------------------------------------------------------------------+ -Wselector-type-mismatch ------------------------ **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`several methods with selector` |nbsp| :placeholder:`A` |nbsp| :diagtext:`of mismatched types are found for the @selector expression`| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wself-assign ------------- Some of the diagnostics controlled by this flag are enabled by default. Also controls `-Wself-assign-field`_, `-Wself-assign-overloaded`_. **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`explicitly assigning value of variable of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to itself`| +------------------------------------------------------------------------------------------------------------------------------------------+ -Wself-assign-field ------------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------+-------------------------------+-----------------------------+ |:warning:`warning:` |nbsp| :diagtext:`assigning` |nbsp| |+-----------------------------+| |nbsp| :diagtext:`to itself`| | ||:diagtext:`field` || | | |+-----------------------------+| | | ||:diagtext:`instance variable`|| | | |+-----------------------------+| | +--------------------------------------------------------+-------------------------------+-----------------------------+ -Wself-assign-overloaded ------------------------ **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`explicitly assigning value of variable of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to itself`| +------------------------------------------------------------------------------------------------------------------------------------------+ -Wself-move ----------- **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`explicitly moving variable of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to itself`| +------------------------------------------------------------------------------------------------------------------------------+ -Wsemicolon-before-method-body ------------------------------ **Diagnostic text:** +------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`semicolon before method body is ignored`| +------------------------------------------------------------------------------+ -Wsentinel ---------- This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------+-----------------------------+ |:warning:`warning:` |nbsp| :diagtext:`missing sentinel in` |nbsp| |+---------------------------+| | ||:diagtext:`function call` || | |+---------------------------+| | ||:diagtext:`method dispatch`|| | |+---------------------------+| | ||:diagtext:`block call` || | |+---------------------------+| +------------------------------------------------------------------+-----------------------------+ +------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`not enough variable arguments in` |nbsp| :placeholder:`A` |nbsp| :diagtext:`declaration to fit a sentinel`| +------------------------------------------------------------------------------------------------------------------------------------------------+ -Wsequence-point ---------------- Synonym for `-Wunsequenced`_. -Wserialized-diagnostics ------------------------ This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unable to open file` |nbsp| :placeholder:`A` |nbsp| :diagtext:`for serializing diagnostics (`:placeholder:`B`:diagtext:`)`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unable to merge a subprocess's serialized diagnostics`| +--------------------------------------------------------------------------------------------+ -Wshadow -------- Some of the diagnostics controlled by this flag are enabled by default. Also controls `-Wshadow-field-in-constructor-modified`_, `-Wshadow-ivar`_. **Diagnostic text:** +--------------------------------------------------------------------+-------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`declaration shadows a` |nbsp| |+-----------------------------------------------------------+| | ||:diagtext:`local variable` || | |+-----------------------------------------------------------+| | ||+-----------------------------------------------+ || | |||:diagtext:`variable in` |nbsp| :placeholder:`C`| || | ||+-----------------------------------------------+ || | |+-----------------------------------------------------------+| | ||+---------------------------------------------------------+|| | |||:diagtext:`static data member of` |nbsp| :placeholder:`C`||| | ||+---------------------------------------------------------+|| | |+-----------------------------------------------------------+| | ||+--------------------------------------------+ || | |||:diagtext:`field of` |nbsp| :placeholder:`C`| || | ||+--------------------------------------------+ || | |+-----------------------------------------------------------+| | ||+----------------------------------------------+ || | |||:diagtext:`typedef in` |nbsp| :placeholder:`C`| || | ||+----------------------------------------------+ || | |+-----------------------------------------------------------+| | ||+-------------------------------------------------+ || | |||:diagtext:`type alias in` |nbsp| :placeholder:`C`| || | ||+-------------------------------------------------+ || | |+-----------------------------------------------------------+| +--------------------------------------------------------------------+-------------------------------------------------------------+ -Wshadow-all ------------ Some of the diagnostics controlled by this flag are enabled by default. Controls `-Wshadow`_, `-Wshadow-field`_, `-Wshadow-field-in-constructor`_, `-Wshadow-uncaptured-local`_. -Wshadow-field -------------- **Diagnostic text:** +---------------------------+------------------------------------+--------------------------------+--------------------------------------------------+----------------------------------------------------------------------+ |:warning:`warning:` |nbsp| |+----------------------------------+| |nbsp| :placeholder:`A` |nbsp| |+------------------------------------------------+|:diagtext:`shadows member inherited from type` |nbsp| :placeholder:`C`| | ||:diagtext:`parameter` || || || | | |+----------------------------------+| |+------------------------------------------------+| | | ||:diagtext:`non-static data member`|| ||+----------------------------------------------+|| | | |+----------------------------------+| |||:diagtext:`of` |nbsp| :placeholder:`B` |nbsp| ||| | | | | ||+----------------------------------------------+|| | | | | |+------------------------------------------------+| | +---------------------------+------------------------------------+--------------------------------+--------------------------------------------------+----------------------------------------------------------------------+ -Wshadow-field-in-constructor ----------------------------- Also controls `-Wshadow-field-in-constructor-modified`_. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`constructor parameter` |nbsp| :placeholder:`A` |nbsp| :diagtext:`shadows the field` |nbsp| :placeholder:`B` |nbsp| :diagtext:`of` |nbsp| :placeholder:`C`| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wshadow-field-in-constructor-modified -------------------------------------- **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`modifying constructor parameter` |nbsp| :placeholder:`A` |nbsp| :diagtext:`that shadows a field of` |nbsp| :placeholder:`B`| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wshadow-ivar ------------- This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`local declaration of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`hides instance variable`| +------------------------------------------------------------------------------------------------------------------------------+ -Wshadow-uncaptured-local ------------------------- **Diagnostic text:** +--------------------------------------------------------------------+-------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`declaration shadows a` |nbsp| |+-----------------------------------------------------------+| | ||:diagtext:`local variable` || | |+-----------------------------------------------------------+| | ||+-----------------------------------------------+ || | |||:diagtext:`variable in` |nbsp| :placeholder:`C`| || | ||+-----------------------------------------------+ || | |+-----------------------------------------------------------+| | ||+---------------------------------------------------------+|| | |||:diagtext:`static data member of` |nbsp| :placeholder:`C`||| | ||+---------------------------------------------------------+|| | |+-----------------------------------------------------------+| | ||+--------------------------------------------+ || | |||:diagtext:`field of` |nbsp| :placeholder:`C`| || | ||+--------------------------------------------+ || | |+-----------------------------------------------------------+| | ||+----------------------------------------------+ || | |||:diagtext:`typedef in` |nbsp| :placeholder:`C`| || | ||+----------------------------------------------+ || | |+-----------------------------------------------------------+| | ||+-------------------------------------------------+ || | |||:diagtext:`type alias in` |nbsp| :placeholder:`C`| || | ||+-------------------------------------------------+ || | |+-----------------------------------------------------------+| +--------------------------------------------------------------------+-------------------------------------------------------------+ -Wshift-count-negative ---------------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`shift count is negative`| +--------------------------------------------------------------+ -Wshift-count-overflow ---------------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`shift count >= width of type`| +-------------------------------------------------------------------+ -Wshift-negative-value ---------------------- This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`shifting a negative signed value is undefined`| +------------------------------------------------------------------------------------+ -Wshift-op-parentheses ---------------------- This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`operator '`:placeholder:`A`:diagtext:`' has lower precedence than '`:placeholder:`B`:diagtext:`'; '`:placeholder:`B`:diagtext:`' will be evaluated first`| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wshift-overflow ---------------- This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`signed shift result (`:placeholder:`A`:diagtext:`) requires` |nbsp| :placeholder:`B` |nbsp| :diagtext:`bits to represent, but` |nbsp| :placeholder:`C` |nbsp| :diagtext:`only has` |nbsp| :placeholder:`D` |nbsp| :diagtext:`bits`| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wshift-sign-overflow --------------------- **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`signed shift result (`:placeholder:`A`:diagtext:`) sets the sign bit of the shift expression's type (`:placeholder:`B`:diagtext:`) and becomes negative`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wshorten-64-to-32 ------------------ **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`implicit conversion loses integer precision:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`| +---------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wsign-compare -------------- **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`comparison of integers of different signs:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`and` |nbsp| :placeholder:`B`| +--------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wsign-conversion ----------------- **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`implicit conversion changes signedness:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`| +----------------------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`operand of ? changes signedness:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`| +---------------------------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`the resulting value is always non-negative after implicit conversion`| +-----------------------------------------------------------------------------------------------------------+ -Wsign-promo ------------ This diagnostic flag exists for GCC compatibility, and has no effect in Clang. -Wsigned-enum-bitfield ---------------------- **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`enums in the Microsoft ABI are signed integers by default; consider giving the enum` |nbsp| :placeholder:`A` |nbsp| :diagtext:`an unsigned underlying type to make this code portable`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wsigned-unsigned-wchar ----------------------- This diagnostic is an error by default, but the flag ``-Wno-signed-unsigned-wchar`` can be used to disable the error. **Diagnostic text:** +----------------------------------------------------------------------------------------------+ |:error:`error:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' cannot be signed or unsigned`| +----------------------------------------------------------------------------------------------+ -Wsizeof-array-argument ----------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`sizeof on array function parameter will return size of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`instead of` |nbsp| :placeholder:`B`| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wsizeof-array-decay -------------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`sizeof on pointer operation will return size of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`instead of` |nbsp| :placeholder:`B`| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wsizeof-array-div ------------------ This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`expression does not compute the number of elements in this array; element type is` |nbsp| :placeholder:`A`:diagtext:`, not` |nbsp| :placeholder:`B`| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wsizeof-pointer-div -------------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' will return the size of the pointer, not the array itself`| +-------------------------------------------------------------------------------------------------------------------------------+ -Wsizeof-pointer-memaccess -------------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' call operates on objects of type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`while the size is based on a different type` |nbsp| :placeholder:`C`| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+---------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`argument to 'sizeof' in` |nbsp| :placeholder:`A` |nbsp| :diagtext:`call is the same pointer type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`as the` |nbsp| |+-----------------------+|:diagtext:`; expected` |nbsp| :placeholder:`D` |nbsp| :diagtext:`or an explicit length`| | ||:diagtext:`destination`|| | | |+-----------------------+| | | ||:diagtext:`source` || | | |+-----------------------+| | +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+---------------------------------------------------------------------------------------+ -Wslash-u-filename ------------------ This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'/U`:placeholder:`A`:diagtext:`' treated as the '/U' option`| +--------------------------------------------------------------------------------------------------+ -Wsometimes-uninitialized ------------------------- **Diagnostic text:** +-----------------------------------------------------------------------------------------------------+----------------------+--------------------------------------------------+--------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is` |nbsp| |+--------------------+| |nbsp| :diagtext:`uninitialized whenever` |nbsp| |+------------------------------------------------------------------------------------------------------------+| | ||:diagtext:`used` || ||+---------------------------------------------------------------+-------------------+ || | |+--------------------+| |||:diagtext:`'`:placeholder:`D`:diagtext:`' condition is` |nbsp| |+-----------------+| || | ||:diagtext:`captured`|| ||| ||:diagtext:`true` || || | |+--------------------+| ||| |+-----------------+| || | | | ||| ||:diagtext:`false`|| || | | | ||| |+-----------------+| || | | | ||+---------------------------------------------------------------+-------------------+ || | | | |+------------------------------------------------------------------------------------------------------------+| | | | ||+-------------------------------------------------------+--------------------------------------------------+|| | | | |||:diagtext:`'`:placeholder:`D`:diagtext:`' loop` |nbsp| |+------------------------------------------------+||| | | | ||| ||:diagtext:`is entered` |||| | | | ||| |+------------------------------------------------+||| | | | ||| ||:diagtext:`exits because its condition is false`|||| | | | ||| |+------------------------------------------------+||| | | | ||+-------------------------------------------------------+--------------------------------------------------+|| | | | |+------------------------------------------------------------------------------------------------------------+| | | | ||+-------------------------------------------------------+--------------------------------------------------+|| | | | |||:diagtext:`'`:placeholder:`D`:diagtext:`' loop` |nbsp| |+------------------------------------------------+||| | | | ||| ||:diagtext:`condition is true` |||| | | | ||| |+------------------------------------------------+||| | | | ||| ||:diagtext:`exits because its condition is false`|||| | | | ||| |+------------------------------------------------+||| | | | ||+-------------------------------------------------------+--------------------------------------------------+|| | | | |+------------------------------------------------------------------------------------------------------------+| | | | ||+----------------------------------------------------------------------+ || | | | |||:diagtext:`switch` |nbsp| :placeholder:`D` |nbsp| :diagtext:`is taken`| || | | | ||+----------------------------------------------------------------------+ || | | | |+------------------------------------------------------------------------------------------------------------+| | | | ||:diagtext:`its declaration is reached` || | | | |+------------------------------------------------------------------------------------------------------------+| | | | ||+---------------------------------------------+ || | | | |||:placeholder:`D` |nbsp| :diagtext:`is called`| || | | | ||+---------------------------------------------+ || | | | |+------------------------------------------------------------------------------------------------------------+| +-----------------------------------------------------------------------------------------------------+----------------------+--------------------------------------------------+--------------------------------------------------------------------------------------------------------------+ -Wsource-uses-openmp -------------------- Some of the diagnostics controlled by this flag are enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`nesting \`omp begin/end declare variant\` is not supported yet; nested context ignored`| +-----------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'#pragma omp declare variant' cannot be applied to the function that was defined already; the original function might be used`| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'#pragma omp declare variant' cannot be applied for function after first usage; the original function might be used`| +----------------------------------------------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`variant function in '#pragma omp declare variant' is itself marked as '#pragma omp declare variant'`| +------------------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`score expressions in the OpenMP context selector need to be constant;` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not and will be ignored`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`OpenMP only allows an ordered construct with the simd clause nested in a simd construct`| +------------------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unexpected '#pragma omp ...' in program`| +------------------------------------------------------------------------------+ -Wspir-compat ------------- **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`sampler initializer has invalid` |nbsp| :placeholder:`A` |nbsp| :diagtext:`bits`| +----------------------------------------------------------------------------------------------------------------------+ -Wstack-exhausted ----------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`stack nearly exhausted; compilation time may suffer, and crashes due to stack overflow are likely`| +----------------------------------------------------------------------------------------------------------------------------------------+ -Wstack-protector ----------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`Unable to protect inline asm that clobbers stack pointer against stack clash`| +-------------------------------------------------------------------------------------------------------------------+ -Wstack-protector ----------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`Unable to protect inline asm that clobbers stack pointer against stack clash`| +-------------------------------------------------------------------------------------------------------------------+ -Wstatic-float-init ------------------- This diagnostic is enabled by default. Also controls `-Wgnu-static-float-init`_. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:error:`error:` |nbsp| :diagtext:`in-class initializer for static data member of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`requires 'constexpr' specifier`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wstatic-in-inline ------------------ Some of the diagnostics controlled by this flag are enabled by default. **Diagnostic text:** +-----------------------------------------------------+----------------------+-----------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`static` |nbsp| |+--------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`is used in an inline function with external linkage`| | ||:diagtext:`function`|| | | |+--------------------+| | | ||:diagtext:`variable`|| | | |+--------------------+| | +-----------------------------------------------------+----------------------+-----------------------------------------------------------------------------------------------+ +-----------------------------------------------------+----------------------+-----------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`static` |nbsp| |+--------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`is used in an inline function with external linkage`| | ||:diagtext:`function`|| | | |+--------------------+| | | ||:diagtext:`variable`|| | | |+--------------------+| | +-----------------------------------------------------+----------------------+-----------------------------------------------------------------------------------------------+ -Wstatic-inline-explicit-instantiation -------------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------+--------------------+--------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ignoring '`|+------------------+|:diagtext:`' keyword on explicit template instantiation`| | ||:diagtext:`static`|| | | |+------------------+| | | ||:diagtext:`inline`|| | | |+------------------+| | +-------------------------------------------------+--------------------+--------------------------------------------------------+ -Wstatic-local-in-inline ------------------------ This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`non-constant static local variable in inline function may be different in different files`| +--------------------------------------------------------------------------------------------------------------------------------+ -Wstatic-self-init ------------------ This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`static variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is suspiciously used within its own initialization`| +----------------------------------------------------------------------------------------------------------------------------------------------------+ -Wstdlibcxx-not-found --------------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`include path for libstdc++ headers not found; pass '-stdlib=libc++' on the command line to use the libc++ standard library instead`| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wstrict-aliasing ----------------- This diagnostic flag exists for GCC compatibility, and has no effect in Clang. -Wstrict-aliasing=0 ------------------- This diagnostic flag exists for GCC compatibility, and has no effect in Clang. -Wstrict-aliasing=1 ------------------- This diagnostic flag exists for GCC compatibility, and has no effect in Clang. -Wstrict-aliasing=2 ------------------- This diagnostic flag exists for GCC compatibility, and has no effect in Clang. -Wstrict-overflow ----------------- This diagnostic flag exists for GCC compatibility, and has no effect in Clang. -Wstrict-overflow=0 ------------------- This diagnostic flag exists for GCC compatibility, and has no effect in Clang. -Wstrict-overflow=1 ------------------- This diagnostic flag exists for GCC compatibility, and has no effect in Clang. -Wstrict-overflow=2 ------------------- This diagnostic flag exists for GCC compatibility, and has no effect in Clang. -Wstrict-overflow=3 ------------------- This diagnostic flag exists for GCC compatibility, and has no effect in Clang. -Wstrict-overflow=4 ------------------- This diagnostic flag exists for GCC compatibility, and has no effect in Clang. -Wstrict-overflow=5 ------------------- This diagnostic flag exists for GCC compatibility, and has no effect in Clang. -Wstrict-prototypes ------------------- **Diagnostic text:** +---------------------------------------------------+--------------------------------------------------------------+-------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`this` |nbsp| |+------------------------------------------------------------+| |nbsp| :diagtext:`a prototype`| | ||:diagtext:`function declaration is not` || | | |+------------------------------------------------------------+| | | ||:diagtext:`block declaration is not` || | | |+------------------------------------------------------------+| | | ||:diagtext:`old-style function definition is not preceded by`|| | | |+------------------------------------------------------------+| | +---------------------------------------------------+--------------------------------------------------------------+-------------------------------+ -Wstrict-prototypes ------------------- **Diagnostic text:** +---------------------------------------------------+--------------------------------------------------------------+-------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`this` |nbsp| |+------------------------------------------------------------+| |nbsp| :diagtext:`a prototype`| | ||:diagtext:`function declaration is not` || | | |+------------------------------------------------------------+| | | ||:diagtext:`block declaration is not` || | | |+------------------------------------------------------------+| | | ||:diagtext:`old-style function definition is not preceded by`|| | | |+------------------------------------------------------------+| | +---------------------------------------------------+--------------------------------------------------------------+-------------------------------+ -Wstrict-selector-match ----------------------- **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`multiple methods named` |nbsp| :placeholder:`A` |nbsp| :diagtext:`found`| +--------------------------------------------------------------------------------------------------------------+ -Wstring-compare ---------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------+------------------------------+---------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`result of comparison against` |nbsp| |+----------------------------+| |nbsp| :diagtext:`is unspecified (use an explicit string comparison function instead)`| | ||:diagtext:`a string literal`|| | | |+----------------------------+| | | ||:diagtext:`@encode` || | | |+----------------------------+| | +---------------------------------------------------------------------------+------------------------------+---------------------------------------------------------------------------------------+ -Wstring-conversion ------------------- **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`implicit conversion turns string literal into bool:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wstring-plus-char ------------------ This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`adding` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to a string pointer does not append to the string`| +------------------------------------------------------------------------------------------------------------------------------------------+ -Wstring-plus-int ----------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`adding` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to a string does not append to the string`| +----------------------------------------------------------------------------------------------------------------------------------+ -Wstrlcpy-strlcat-size ---------------------- This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`size argument in` |nbsp| :placeholder:`A` |nbsp| :diagtext:`call appears to be size of the source; expected the size of the destination`| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wstrncat-size -------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`the value of the size argument in 'strncat' is too large, might lead to a buffer overflow`| +--------------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`size argument in 'strncat' call appears to be size of the source`| +-------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`the value of the size argument to 'strncat' is wrong`| +-------------------------------------------------------------------------------------------+ -Wsuper-class-method-mismatch ----------------------------- **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`method parameter type` |nbsp| :diagtext:`does not match super class method parameter type`| +--------------------------------------------------------------------------------------------------------------------------------+ -Wsuspicious-bzero ------------------ This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'size' argument to bzero is '0'`| +----------------------------------------------------------------------+ -Wsuspicious-memaccess ---------------------- This diagnostic is enabled by default. Controls `-Wdynamic-class-memaccess`_, `-Wmemset-transposed-args`_, `-Wnontrivial-memaccess`_, `-Wsizeof-pointer-memaccess`_, `-Wsuspicious-bzero`_. -Wswitch -------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`overflow converting case value to switch condition type (`:placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`:diagtext:`)`| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| |+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| | ||+----------------------------------------------------------------------------------------------+ || | |||:diagtext:`enumeration value` |nbsp| :placeholder:`B` |nbsp| :diagtext:`not handled in switch`| || | ||+----------------------------------------------------------------------------------------------+ || | |+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| | ||+----------------------------------------------------------------------------------------------------------------------------------------------+ || | |||:diagtext:`enumeration values` |nbsp| :placeholder:`B` |nbsp| :diagtext:`and` |nbsp| :placeholder:`C` |nbsp| :diagtext:`not handled in switch`| || | ||+----------------------------------------------------------------------------------------------------------------------------------------------+ || | |+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| | ||+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ || | |||:diagtext:`enumeration values` |nbsp| :placeholder:`B`:diagtext:`,` |nbsp| :placeholder:`C`:diagtext:`, and` |nbsp| :placeholder:`D` |nbsp| :diagtext:`not handled in switch`| || | ||+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ || | |+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| | ||+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|| | |||:placeholder:`A` |nbsp| :diagtext:`enumeration values not handled in switch:` |nbsp| :placeholder:`B`:diagtext:`,` |nbsp| :placeholder:`C`:diagtext:`,` |nbsp| :placeholder:`D`:diagtext:`...`||| | ||+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|| | |+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| +---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`case value not in enumerated type` |nbsp| :placeholder:`A`| +------------------------------------------------------------------------------------------------+ -Wswitch-bool ------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`switch condition has boolean value`| +-------------------------------------------------------------------------+ -Wswitch-default ---------------- This diagnostic flag exists for GCC compatibility, and has no effect in Clang. -Wswitch-enum ------------- **Diagnostic text:** +---------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| |+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| | ||+---------------------------------------------------------------------------------------------------------+ || | |||:diagtext:`enumeration value` |nbsp| :placeholder:`B` |nbsp| :diagtext:`not explicitly handled in switch`| || | ||+---------------------------------------------------------------------------------------------------------+ || | |+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| | ||+---------------------------------------------------------------------------------------------------------------------------------------------------------+ || | |||:diagtext:`enumeration values` |nbsp| :placeholder:`B` |nbsp| :diagtext:`and` |nbsp| :placeholder:`C` |nbsp| :diagtext:`not explicitly handled in switch`| || | ||+---------------------------------------------------------------------------------------------------------------------------------------------------------+ || | |+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| | ||+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ || | |||:diagtext:`enumeration values` |nbsp| :placeholder:`B`:diagtext:`,` |nbsp| :placeholder:`C`:diagtext:`, and` |nbsp| :placeholder:`D` |nbsp| :diagtext:`not explicitly handled in switch`| || | ||+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ || | |+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| | ||+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|| | |||:placeholder:`A` |nbsp| :diagtext:`enumeration values not explicitly handled in switch:` |nbsp| :placeholder:`B`:diagtext:`,` |nbsp| :placeholder:`C`:diagtext:`,` |nbsp| :placeholder:`D`:diagtext:`...`||| | ||+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|| | |+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| +---------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wsync-fetch-and-nand-semantics-changed --------------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`the semantics of this intrinsic changed with GCC version 4.4 - the newer semantics are provided here`| +-------------------------------------------------------------------------------------------------------------------------------------------+ -Wsynth ------- This diagnostic flag exists for GCC compatibility, and has no effect in Clang. -Wtautological-bitwise-compare ------------------------------ **Diagnostic text:** +-------------------------------------------------------------------------------------+-------------------+ |:warning:`warning:` |nbsp| :diagtext:`bitwise comparison always evaluates to` |nbsp| |+-----------------+| | ||:diagtext:`false`|| | |+-----------------+| | ||:diagtext:`true` || | |+-----------------+| +-------------------------------------------------------------------------------------+-------------------+ +----------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`bitwise or with non-zero value always evaluates to true`| +----------------------------------------------------------------------------------------------+ -Wtautological-compare ---------------------- Some of the diagnostics controlled by this flag are enabled by default. Also controls `-Wtautological-bitwise-compare`_, `-Wtautological-constant-compare`_, `-Wtautological-objc-bool-compare`_, `-Wtautological-overlap-compare`_, `-Wtautological-pointer-compare`_, `-Wtautological-undefined-compare`_. **Diagnostic text:** +---------------------------+---------------------------------------------------------------+----------------------------------------+-------------------------+ |:warning:`warning:` |nbsp| |+-------------------------------------------------------------+| |nbsp| :diagtext:`to 1 byte is` |nbsp| |+-----------------------+| | ||:diagtext:`aligning a value` || ||:diagtext:`a no-op` || | |+-------------------------------------------------------------+| |+-----------------------+| | ||:diagtext:`the result of checking whether a value is aligned`|| ||:diagtext:`always true`|| | |+-------------------------------------------------------------+| |+-----------------------+| +---------------------------+---------------------------------------------------------------+----------------------------------------+-------------------------+ +---------------------------+---------------------------+--------------------------------------------------+--------------------------------------------+ |:warning:`warning:` |nbsp| |+-------------------------+|:diagtext:`comparison always evaluates to` |nbsp| |+------------------------------------------+| | ||:diagtext:`self-` || ||:diagtext:`a constant` || | |+-------------------------+| |+------------------------------------------+| | ||:diagtext:`array` |nbsp| || ||:diagtext:`true` || | |+-------------------------+| |+------------------------------------------+| | | | ||:diagtext:`false` || | | | |+------------------------------------------+| | | | ||:diagtext:`'std::strong\_ordering::equal'`|| | | | |+------------------------------------------+| +---------------------------+---------------------------+--------------------------------------------------+--------------------------------------------+ -Wtautological-constant-compare ------------------------------- This diagnostic is enabled by default. Also controls `-Wtautological-constant-out-of-range-compare`_. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`converting the result of '?:' with integer constants to a boolean always evaluates to 'true'`| +-----------------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------+-------------------+ |:warning:`warning:` |nbsp| :diagtext:`converting the result of '<<' to a boolean always evaluates to` |nbsp| |+-----------------+| | ||:diagtext:`false`|| | |+-----------------+| | ||:diagtext:`true` || | |+-----------------+| +-------------------------------------------------------------------------------------------------------------+-------------------+ +----------------------------------------------------------------------+------------------------------------------------+--------------------------------+----------------------------------------------------------+-----------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`result of comparison of` |nbsp| |+----------------------------------------------+| |nbsp| :diagtext:`with` |nbsp| |+--------------------------------------------------------+| |nbsp| :diagtext:`is always` |nbsp| :placeholder:`E`| | ||+--------------------------------------------+|| ||+------------------------------------------------------+|| | | |||:diagtext:`constant` |nbsp| :placeholder:`A`||| |||:diagtext:`expression of type` |nbsp| :placeholder:`C`||| | | ||+--------------------------------------------+|| ||+------------------------------------------------------+|| | | |+----------------------------------------------+| |+--------------------------------------------------------+| | | ||:diagtext:`true` || ||:diagtext:`boolean expression` || | | |+----------------------------------------------+| |+--------------------------------------------------------+| | | ||:diagtext:`false` || | | | | |+----------------------------------------------+| | | | +----------------------------------------------------------------------+------------------------------------------------+--------------------------------+----------------------------------------------------------+-----------------------------------------------------+ -Wtautological-constant-in-range-compare ---------------------------------------- Controls `-Wtautological-type-limit-compare`_, `-Wtautological-unsigned-enum-zero-compare`_, `-Wtautological-unsigned-zero-compare`_. -Wtautological-constant-out-of-range-compare -------------------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------+------------------------------------------------+--------------------------------+----------------------------------------------------------+-----------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`result of comparison of` |nbsp| |+----------------------------------------------+| |nbsp| :diagtext:`with` |nbsp| |+--------------------------------------------------------+| |nbsp| :diagtext:`is always` |nbsp| :placeholder:`E`| | ||+--------------------------------------------+|| ||+------------------------------------------------------+|| | | |||:diagtext:`constant` |nbsp| :placeholder:`A`||| |||:diagtext:`expression of type` |nbsp| :placeholder:`C`||| | | ||+--------------------------------------------+|| ||+------------------------------------------------------+|| | | |+----------------------------------------------+| |+--------------------------------------------------------+| | | ||:diagtext:`true` || ||:diagtext:`boolean expression` || | | |+----------------------------------------------+| |+--------------------------------------------------------+| | | ||:diagtext:`false` || | | | | |+----------------------------------------------+| | | | +----------------------------------------------------------------------+------------------------------------------------+--------------------------------+----------------------------------------------------------+-----------------------------------------------------+ -Wtautological-objc-bool-compare -------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`result of comparison of constant` |nbsp| :placeholder:`A` |nbsp| :diagtext:`with expression of type 'BOOL' is always` |nbsp| :placeholder:`B`:diagtext:`, as the only well defined values for 'BOOL' are YES and NO`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wtautological-overlap-compare ------------------------------ **Diagnostic text:** +-----------------------------------------------------------------------------------------+-------------------+ |:warning:`warning:` |nbsp| :diagtext:`overlapping comparisons always evaluate to` |nbsp| |+-----------------+| | ||:diagtext:`false`|| | |+-----------------+| | ||:diagtext:`true` || | |+-----------------+| +-----------------------------------------------------------------------------------------+-------------------+ -Wtautological-pointer-compare ------------------------------ This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------+---------------------------+----------------------------------------------------------+-------------------------+----------------------------------------+-------------------+--------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`comparison of nonnull` |nbsp| |+-------------------------+| |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`'` |nbsp| |+-----------------------+|:diagtext:`equal to a null pointer is '`|+-----------------+|:diagtext:`' on first encounter`| | ||:diagtext:`function call`|| ||:diagtext:`not` |nbsp| || ||:diagtext:`true` || | | |+-------------------------+| |+-----------------------+| |+-----------------+| | | ||:diagtext:`parameter` || || || ||:diagtext:`false`|| | | |+-------------------------+| |+-----------------------+| |+-----------------+| | +--------------------------------------------------------------------+---------------------------+----------------------------------------------------------+-------------------------+----------------------------------------+-------------------+--------------------------------+ +------------------------------------------------------------+------------------------+----------------------------------------------------------+-------------------------+-----------------------------------------------------+-------------------+ |:warning:`warning:` |nbsp| :diagtext:`comparison of` |nbsp| |+----------------------+| |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`'` |nbsp| |+-----------------------+|:diagtext:`equal to a null pointer is always` |nbsp| |+-----------------+| | ||:diagtext:`address of`|| ||:diagtext:`not` |nbsp| || ||:diagtext:`true` || | |+----------------------+| |+-----------------------+| |+-----------------+| | ||:diagtext:`function` || || || ||:diagtext:`false`|| | |+----------------------+| |+-----------------------+| |+-----------------+| | ||:diagtext:`array` || | | | | | |+----------------------+| | | | | +------------------------------------------------------------+------------------------+----------------------------------------------------------+-------------------------+-----------------------------------------------------+-------------------+ -Wtautological-type-limit-compare --------------------------------- **Diagnostic text:** +-------------------------------------------------------------------+------------------+--------------------------------+------------------+-----------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`result of comparison` |nbsp| |+----------------+| |nbsp| :placeholder:`C` |nbsp| |+----------------+| |nbsp| :diagtext:`is always` |nbsp| :placeholder:`E`| | ||:placeholder:`D`|| ||:placeholder:`B`|| | | |+----------------+| |+----------------+| | | ||:placeholder:`B`|| ||:placeholder:`D`|| | | |+----------------+| |+----------------+| | +-------------------------------------------------------------------+------------------+--------------------------------+------------------+-----------------------------------------------------+ -Wtautological-undefined-compare -------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------+ |:warning:`warning:` |nbsp| :diagtext:`reference cannot be bound to dereferenced null pointer in well-defined C++ code; comparison may be assumed to always evaluate to` |nbsp| |+-----------------+| | ||:diagtext:`true` || | |+-----------------+| | ||:diagtext:`false`|| | |+-----------------+| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------+ +------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------+ |:warning:`warning:` |nbsp| :diagtext:`'this' pointer cannot be null in well-defined C++ code; comparison may be assumed to always evaluate to` |nbsp| |+-----------------+| | ||:diagtext:`true` || | |+-----------------+| | ||:diagtext:`false`|| | |+-----------------+| +------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------+ -Wtautological-unsigned-enum-zero-compare ----------------------------------------- **Diagnostic text:** +----------------------------------------------------------------------+--------------------------------------+--------------------------------+--------------------------------------+-----------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`result of comparison of` |nbsp| |+------------------------------------+| |nbsp| :placeholder:`C` |nbsp| |+------------------------------------+| |nbsp| :diagtext:`is always` |nbsp| :placeholder:`E`| | ||:placeholder:`D` || ||:diagtext:`unsigned enum expression`|| | | |+------------------------------------+| |+------------------------------------+| | | ||:diagtext:`unsigned enum expression`|| ||:placeholder:`D` || | | |+------------------------------------+| |+------------------------------------+| | +----------------------------------------------------------------------+--------------------------------------+--------------------------------+--------------------------------------+-----------------------------------------------------+ -Wtautological-unsigned-zero-compare ------------------------------------ **Diagnostic text:** +----------------------------------------------------------------------+---------------------------------+--------------------------------+---------------------------------+-----------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`result of comparison of` |nbsp| |+-------------------------------+| |nbsp| :placeholder:`C` |nbsp| |+-------------------------------+| |nbsp| :diagtext:`is always` |nbsp| :placeholder:`E`| | ||:placeholder:`D` || ||:diagtext:`unsigned expression`|| | | |+-------------------------------+| |+-------------------------------+| | | ||:diagtext:`unsigned expression`|| ||:placeholder:`D` || | | |+-------------------------------+| |+-------------------------------+| | +----------------------------------------------------------------------+---------------------------------+--------------------------------+---------------------------------+-----------------------------------------------------+ -Wtentative-definition-incomplete-type -------------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`tentative definition of variable with internal linkage has incomplete non-array type` |nbsp| :placeholder:`A`| +---------------------------------------------------------------------------------------------------------------------------------------------------+ -Wthread-safety --------------- Controls `-Wthread-safety-analysis`_, `-Wthread-safety-attributes`_, `-Wthread-safety-precise`_, `-Wthread-safety-reference`_. -Wthread-safety-analysis ------------------------ **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' must be acquired before '`:placeholder:`C`:diagtext:`'`| +----------------------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`Cycle in acquired\_before/after dependencies, starting with '`:placeholder:`A`:diagtext:`'`| +---------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`cannot resolve lock expression`| +---------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`acquiring` |nbsp| :placeholder:`A` |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' that is already held`| +-----------------------------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`expecting` |nbsp| :placeholder:`A` |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' to be held at start of each loop`| +-----------------------------------------------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`expecting` |nbsp| :placeholder:`A` |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' to be held at the end of function`| +------------------------------------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`cannot call function '`:placeholder:`B`:diagtext:`' while` |nbsp| :placeholder:`A` |nbsp| :diagtext:`'`:placeholder:`C`:diagtext:`' is held`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`calling function` |nbsp| :placeholder:`B` |nbsp| :diagtext:`requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+| | ||+------------------------------------------+ || | |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| || | ||+------------------------------------------+ || | |+--------------------------------------------------------+| | ||+------------------------------------------------------+|| | |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`||| | ||+------------------------------------------------------+|| | |+--------------------------------------------------------+| +---------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' is acquired exclusively and shared in the same scope`| +--------------------------------------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' is not held on every path through here`| +------------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' is still held at the end of function`| +----------------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`releasing` |nbsp| :placeholder:`A` |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' that was not held`| +--------------------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------------+-----------------------+--------------------------------------------+-----------------------+--------------------------+ |:warning:`warning:` |nbsp| :diagtext:`releasing` |nbsp| :placeholder:`A` |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' using` |nbsp| |+---------------------+| |nbsp| :diagtext:`access, expected` |nbsp| |+---------------------+| |nbsp| :diagtext:`access`| | ||:diagtext:`shared` || ||:diagtext:`shared` || | | |+---------------------+| |+---------------------+| | | ||:diagtext:`exclusive`|| ||:diagtext:`exclusive`|| | | |+---------------------+| |+---------------------+| | +----------------------------------------------------------------------------------------------------------------------------------------+-----------------------+--------------------------------------------+-----------------------+--------------------------+ +---------------------------+---------------------+---------------------------------------------------------------------------------------------------------------+-----------------------------------+ |:warning:`warning:` |nbsp| |+-------------------+| |nbsp| :diagtext:`the value pointed to by` |nbsp| :placeholder:`A` |nbsp| :diagtext:`requires holding` |nbsp| |+---------------------------------+| | ||:diagtext:`reading`|| ||:diagtext:`any mutex` || | |+-------------------+| |+---------------------------------+| | ||:diagtext:`writing`|| ||:diagtext:`any mutex exclusively`|| | |+-------------------+| |+---------------------------------+| +---------------------------+---------------------+---------------------------------------------------------------------------------------------------------------+-----------------------------------+ +---------------------------+---------------------+---------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ |:warning:`warning:` |nbsp| |+-------------------+| |nbsp| :diagtext:`the value pointed to by` |nbsp| :placeholder:`B` |nbsp| :diagtext:`requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+| | ||:diagtext:`reading`|| ||+------------------------------------------+ || | |+-------------------+| |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| || | ||:diagtext:`writing`|| ||+------------------------------------------+ || | |+-------------------+| |+--------------------------------------------------------+| | | | ||+------------------------------------------------------+|| | | | |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`||| | | | ||+------------------------------------------------------+|| | | | |+--------------------------------------------------------+| +---------------------------+---------------------+---------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ +---------------------------+---------------------+------------------------------------------------------------------------------------------------+-----------------------------------+ |:warning:`warning:` |nbsp| |+-------------------+| |nbsp| :diagtext:`variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`requires holding` |nbsp| |+---------------------------------+| | ||:diagtext:`reading`|| ||:diagtext:`any mutex` || | |+-------------------+| |+---------------------------------+| | ||:diagtext:`writing`|| ||:diagtext:`any mutex exclusively`|| | |+-------------------+| |+---------------------------------+| +---------------------------+---------------------+------------------------------------------------------------------------------------------------+-----------------------------------+ +---------------------------+---------------------+------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ |:warning:`warning:` |nbsp| |+-------------------+| |nbsp| :diagtext:`variable` |nbsp| :placeholder:`B` |nbsp| :diagtext:`requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+| | ||:diagtext:`reading`|| ||+------------------------------------------+ || | |+-------------------+| |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| || | ||:diagtext:`writing`|| ||+------------------------------------------+ || | |+-------------------+| |+--------------------------------------------------------+| | | | ||+------------------------------------------------------+|| | | | |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`||| | | | ||+------------------------------------------------------+|| | | | |+--------------------------------------------------------+| +---------------------------+---------------------+------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ -Wthread-safety-attributes -------------------------- **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute requires arguments whose type is annotated with 'capability' attribute; type here is` |nbsp| :placeholder:`B`| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute can only be applied in a context annotated with 'capability' attribute`| +-----------------------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`only applies to pointer types; type here is` |nbsp| :placeholder:`B`| +----------------------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ignoring` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute because its argument is invalid`| +------------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute without capability arguments refers to 'this', but` |nbsp| :placeholder:`B` |nbsp| :diagtext:`isn't annotated with 'capability' or 'scoped\_lockable' attribute`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute without capability arguments can only be applied to non-static methods of a class`| +----------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wthread-safety-beta -------------------- **Diagnostic text:** +------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`Thread safety beta warning.`| +------------------------------------------------------------------+ -Wthread-safety-negative ------------------------ **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`acquiring` |nbsp| :placeholder:`A` |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' requires negative capability '`:placeholder:`C`:diagtext:`'`| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wthread-safety-precise ----------------------- **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`calling function` |nbsp| :placeholder:`B` |nbsp| :diagtext:`requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+| | ||+------------------------------------------+ || | |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| || | ||+------------------------------------------+ || | |+--------------------------------------------------------+| | ||+------------------------------------------------------+|| | |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`||| | ||+------------------------------------------------------+|| | |+--------------------------------------------------------+| +---------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ +---------------------------+---------------------+---------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ |:warning:`warning:` |nbsp| |+-------------------+| |nbsp| :diagtext:`the value pointed to by` |nbsp| :placeholder:`B` |nbsp| :diagtext:`requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+| | ||:diagtext:`reading`|| ||+------------------------------------------+ || | |+-------------------+| |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| || | ||:diagtext:`writing`|| ||+------------------------------------------+ || | |+-------------------+| |+--------------------------------------------------------+| | | | ||+------------------------------------------------------+|| | | | |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`||| | | | ||+------------------------------------------------------+|| | | | |+--------------------------------------------------------+| +---------------------------+---------------------+---------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ +---------------------------+---------------------+------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ |:warning:`warning:` |nbsp| |+-------------------+| |nbsp| :diagtext:`variable` |nbsp| :placeholder:`B` |nbsp| :diagtext:`requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+| | ||:diagtext:`reading`|| ||+------------------------------------------+ || | |+-------------------+| |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| || | ||:diagtext:`writing`|| ||+------------------------------------------+ || | |+-------------------+| |+--------------------------------------------------------+| | | | ||+------------------------------------------------------+|| | | | |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`||| | | | ||+------------------------------------------------------+|| | | | |+--------------------------------------------------------+| +---------------------------+---------------------+------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ -Wthread-safety-reference ------------------------- **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`passing variable` |nbsp| :placeholder:`B` |nbsp| :diagtext:`by reference requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+| | ||+------------------------------------------+ || | |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| || | ||+------------------------------------------+ || | |+--------------------------------------------------------+| | ||+------------------------------------------------------+|| | |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`||| | ||+------------------------------------------------------+|| | |+--------------------------------------------------------+| +----------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`passing the value that` |nbsp| :placeholder:`B` |nbsp| :diagtext:`points to by reference requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+| | ||+------------------------------------------+ || | |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| || | ||+------------------------------------------+ || | |+--------------------------------------------------------+| | ||+------------------------------------------------------+|| | |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`||| | ||+------------------------------------------------------+|| | |+--------------------------------------------------------+| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+ -Wthread-safety-verbose ----------------------- **Diagnostic text:** +---------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`Thread safety verbose warning.`| +---------------------------------------------------------------------+ -Wtrigraphs ----------- This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`trigraph converted to '`:placeholder:`A`:diagtext:`' character`| +-----------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`trigraph ends block comment`| +------------------------------------------------------------------+ +-------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`trigraph ignored`| +-------------------------------------------------------+ +-------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ignored trigraph would end block comment`| +-------------------------------------------------------------------------------+ -Wtype-limits ------------- Synonym for `-Wtautological-constant-in-range-compare`_. -Wtype-limits ------------- Synonym for `-Wtautological-constant-in-range-compare`_. -Wtype-safety ------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`specified` |nbsp| :placeholder:`A` |nbsp| :diagtext:`type tag requires a null pointer`| +----------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`argument type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`doesn't match specified` |nbsp| :placeholder:`B` |nbsp| :diagtext:`type tag` |nbsp| |+---------------------------------------------------+| | ||+-------------------------------------------------+|| | |||:diagtext:`that requires` |nbsp| :placeholder:`D`||| | ||+-------------------------------------------------+|| | |+---------------------------------------------------+| | || || | |+---------------------------------------------------+| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------+ +---------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`this type tag was not designed to be used with this function`| +---------------------------------------------------------------------------------------------------+ -Wtypedef-redefinition ---------------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`redefinition of typedef` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a C11 feature`| +--------------------------------------------------------------------------------------------------------------------------+ -Wtypename-missing ------------------ This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`missing 'typename' prior to dependent type name '`:placeholder:`A`:placeholder:`B`:diagtext:`'`| +-------------------------------------------------------------------------------------------------------------------------------------+ -Wunable-to-open-stats-file --------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unable to open statistics output file '`:placeholder:`A`:diagtext:`': '`:placeholder:`B`:diagtext:`'`| +-------------------------------------------------------------------------------------------------------------------------------------------+ -Wunavailable-declarations -------------------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`may be unavailable because the receiver type is unknown`| +----------------------------------------------------------------------------------------------------------------------+ -Wundeclared-selector --------------------- **Diagnostic text:** +----------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`undeclared selector` |nbsp| :placeholder:`A`| +----------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`undeclared selector` |nbsp| :placeholder:`A`:diagtext:`; did you mean` |nbsp| :placeholder:`B`:diagtext:`?`| +-------------------------------------------------------------------------------------------------------------------------------------------------+ -Wundef ------- **Diagnostic text:** +---------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not defined, evaluates to 0`| +---------------------------------------------------------------------------------------------+ -Wundefined-bool-conversion --------------------------- This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`reference cannot be bound to dereferenced null pointer in well-defined C++ code; pointer may be assumed to always convert to true`| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'this' pointer cannot be null in well-defined C++ code; pointer may be assumed to always convert to true`| +-----------------------------------------------------------------------------------------------------------------------------------------------+ -Wundefined-func-template ------------------------- **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`instantiation of function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`required here, but no definition is available`| +---------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wundefined-inline ------------------ This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`inline function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not defined`| +----------------------------------------------------------------------------------------------------------------+ -Wundefined-internal -------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------+----------------------+-----------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| |+--------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`has internal linkage but is not defined`| | ||:diagtext:`function`|| | | |+--------------------+| | | ||:diagtext:`variable`|| | | |+--------------------+| | +---------------------------+----------------------+-----------------------------------------------------------------------------------+ -Wundefined-internal-type ------------------------- **Diagnostic text:** +---------------------------------------------------------------------------------------------------------+----------------------+----------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ISO C++ requires a definition in this translation unit for` |nbsp| |+--------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`because its type does not have linkage`| | ||:diagtext:`function`|| | | |+--------------------+| | | ||:diagtext:`variable`|| | | |+--------------------+| | +---------------------------------------------------------------------------------------------------------+----------------------+----------------------------------------------------------------------------------+ -Wundefined-reinterpret-cast ---------------------------- **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`dereference of type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`that was reinterpret\_cast from type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has undefined behavior`| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`reinterpret\_cast from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`has undefined behavior`| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wundefined-var-template ------------------------ This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`instantiation of variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`required here, but no definition is available`| +---------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wunderaligned-exception-object ------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`underaligned exception object thrown`| +---------------------------------------------------------------------------+ -Wunevaluated-expression ------------------------ This diagnostic is enabled by default. Also controls `-Wpotentially-evaluated-expression`_. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`expression with side effects has no effect in an unevaluated context`| +-----------------------------------------------------------------------------------------------------------+ -Wunguarded-availability ------------------------ Some of the diagnostics controlled by this flag are enabled by default. Also controls `-Wunguarded-availability-new`_. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is only available on` |nbsp| :placeholder:`B` |nbsp| :placeholder:`C` |nbsp| :diagtext:`or newer`| +---------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wunguarded-availability-new ---------------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is only available on` |nbsp| :placeholder:`B` |nbsp| :placeholder:`C` |nbsp| :diagtext:`or newer`| +---------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wunicode --------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`incomplete universal character name; treating as '\\' followed by identifier`| +-------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`\\`:placeholder:`A` |nbsp| :diagtext:`used with no following hex digits; treating as '\\' followed by identifier`| +-------------------------------------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`universal character name refers to a surrogate character`| +-----------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`universal character names are only valid in C99 or C++; treating as '\\' followed by identifier`| +--------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`universal character names are only valid in C99 or C++`| +---------------------------------------------------------------------------------------------+ -Wunicode-homoglyph ------------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`treating Unicode character as identifier character rather than as '`:placeholder:`B`:diagtext:`' symbol`| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wunicode-whitespace -------------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`treating Unicode character as whitespace`| +-------------------------------------------------------------------------------+ -Wunicode-zero-width -------------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`identifier contains Unicode character that is invisible in some environments`| +----------------------------------------------------------------------------------------------------------------------------------------------------+ -Wuninitialized --------------- Some of the diagnostics controlled by this flag are enabled by default. Also controls `-Wsometimes-uninitialized`_, `-Wstatic-self-init`_. **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`base class` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is uninitialized when used here to access` |nbsp| :placeholder:`B`| +--------------------------------------------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`field` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is uninitialized when used here`| +-----------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`reference` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not yet bound to a value when used here`| +--------------------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------+---------------------------+------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`block pointer variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is` |nbsp| |+-------------------------+| |nbsp| :diagtext:`when captured by block`| | ||:diagtext:`uninitialized`|| | | |+-------------------------+| | | ||:diagtext:`null` || | | |+-------------------------+| | +-------------------------------------------------------------------------------------------------------------------+---------------------------+------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is uninitialized when used within its own initialization`| +---------------------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`reference` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not yet bound to a value when used within its own initialization`| +---------------------------------------------------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------+-------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is uninitialized when` |nbsp| |+-----------------------------+| | ||:diagtext:`used here` || | |+-----------------------------+| | ||:diagtext:`captured by block`|| | |+-----------------------------+| +------------------------------------------------------------------------------------------------------------------------+-------------------------------+ -Wunknown-argument ------------------ This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unknown argument ignored in clang-cl: '`:placeholder:`A`:diagtext:`'`| +-----------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unknown argument ignored in clang-cl '`:placeholder:`A`:diagtext:`'; did you mean '`:placeholder:`B`:diagtext:`'?`| +--------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wunknown-attributes -------------------- This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unknown attribute` |nbsp| :placeholder:`A` |nbsp| :diagtext:`ignored`| +-----------------------------------------------------------------------------------------------------------+ -Wunknown-cuda-version ---------------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`Unknown CUDA version` |nbsp| :placeholder:`A`:diagtext:`. Assuming the latest supported version` |nbsp| :placeholder:`B`| +--------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wunknown-escape-sequence ------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unknown escape sequence '\\`:placeholder:`A`:diagtext:`'`| +-----------------------------------------------------------------------------------------------+ -Wunknown-pragmas ----------------- Some of the diagnostics controlled by this flag are enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`expected 'ON' or 'OFF' or 'DEFAULT' in pragma`| +------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`expected end of directive in pragma`| +--------------------------------------------------------------------------+ +-----------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unknown pragma in STDC namespace`| +-----------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`pragma diagnostic pop could not pop, no matching push`| +--------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`pragma diagnostic expected 'error', 'warning', 'ignored', 'fatal', 'push', or 'pop'`| +--------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`pragma diagnostic expected option name (e.g. "-Wundef")`| +----------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unexpected token in pragma diagnostic`| +----------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`#pragma execution\_character\_set expected '`:placeholder:`A`:diagtext:`'`| +----------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`#pragma execution\_character\_set invalid value '`:placeholder:`A`:diagtext:`', only 'UTF-8' is supported`| +------------------------------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`#pragma execution\_character\_set expected 'push' or 'pop'`| +-------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unknown pragma ignored`| +-------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`pragma include\_alias expected '`:placeholder:`A`:diagtext:`'`| +----------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`pragma include\_alias expected include filename`| +--------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`angle-bracketed include <`:placeholder:`A`:diagtext:`> cannot be aliased to double-quoted include "`:placeholder:`B`:diagtext:`"`| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`double-quoted include "`:placeholder:`A`:diagtext:`" cannot be aliased to angle-bracketed include <`:placeholder:`B`:diagtext:`>`| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`#pragma warning expected '`:placeholder:`A`:diagtext:`'`| +----------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`#pragma warning expected a warning number`| +--------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`#pragma warning(push, level) requires a level between 0 and 4`| +----------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`#pragma warning expected 'push', 'pop', 'default', 'disable', 'error', 'once', 'suppress', 1, 2, 3, or 4`| +-----------------------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`pragma STDC FENV\_ACCESS ON is not supported, ignoring pragma`| +----------------------------------------------------------------------------------------------------+ -Wunknown-sanitizers -------------------- This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unknown sanitizer '`:placeholder:`A`:diagtext:`' ignored`| +-----------------------------------------------------------------------------------------------+ -Wunknown-warning-option ------------------------ This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unknown warning group '`:placeholder:`A`:diagtext:`', ignored`| +----------------------------------------------------------------------------------------------------+ +------------------------------------------------------+---------------------+---------------------------------------------------------+--------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unknown` |nbsp| |+-------------------+| |nbsp| :diagtext:`option '`:placeholder:`B`:diagtext:`'`|+------------------------------------------------------------+| | ||:diagtext:`warning`|| || || | |+-------------------+| |+------------------------------------------------------------+| | ||:diagtext:`remark` || ||+----------------------------------------------------------+|| | |+-------------------+| |||:diagtext:`; did you mean '`:placeholder:`D`:diagtext:`'?`||| | | | ||+----------------------------------------------------------+|| | | | |+------------------------------------------------------------+| +------------------------------------------------------+---------------------+---------------------------------------------------------+--------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unknown` |nbsp| :placeholder:`A` |nbsp| :diagtext:`warning specifier: '`:placeholder:`B`:diagtext:`'`| +-------------------------------------------------------------------------------------------------------------------------------------------+ -Wunnamed-type-template-args ---------------------------- Some of the diagnostics controlled by this flag are enabled by default. Also controls `-Wc++98-compat-unnamed-type-template-args`_. **Diagnostic text:** +--------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`template argument uses unnamed type`| +--------------------------------------------------------------------------+ -Wunneeded-internal-declaration ------------------------------- **Diagnostic text:** +---------------------------+----------------------+---------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| |+--------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`is not needed and will not be emitted`| | ||:diagtext:`function`|| | | |+--------------------+| | | ||:diagtext:`variable`|| | | |+--------------------+| | +---------------------------+----------------------+---------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'static' function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`declared in header file should be declared 'static inline'`| +--------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wunneeded-member-function -------------------------- **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`member function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not needed and will not be emitted`| +---------------------------------------------------------------------------------------------------------------------------------------+ -Wunreachable-code ------------------ Also controls `-Wunreachable-code-loop-increment`_. **Diagnostic text:** +------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`code will never be executed`| +------------------------------------------------------------------+ -Wunreachable-code-aggressive ----------------------------- Controls `-Wunreachable-code`_, `-Wunreachable-code-break`_, `-Wunreachable-code-return`_. -Wunreachable-code-break ------------------------ **Diagnostic text:** +---------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'break' will never be executed`| +---------------------------------------------------------------------+ -Wunreachable-code-loop-increment --------------------------------- **Diagnostic text:** +-------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`loop will run at most once (loop increment never executed)`| +-------------------------------------------------------------------------------------------------+ -Wunreachable-code-return ------------------------- **Diagnostic text:** +----------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'return' will never be executed`| +----------------------------------------------------------------------+ -Wunsequenced ------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`multiple unsequenced modifications to` |nbsp| :placeholder:`A`| +----------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unsequenced modification and access to` |nbsp| :placeholder:`A`| +-----------------------------------------------------------------------------------------------------+ -Wunsupported-abs ----------------- This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ignoring '-mabs=2008' option because the '`:placeholder:`A`:diagtext:`' architecture does not support it`| +-----------------------------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ignoring '-mabs=legacy' option because the '`:placeholder:`A`:diagtext:`' architecture does not support it`| +-------------------------------------------------------------------------------------------------------------------------------------------------+ -Wunsupported-availability-guard -------------------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------+------------------------------------+--------------------------------------------------------------+------------------------------------+---------------------+ |:warning:`warning:` |nbsp| |+----------------------------------+| |nbsp| :diagtext:`does not guard availability here; use if (`|+----------------------------------+|:diagtext:`) instead`| | ||:diagtext:`@available` || ||:diagtext:`@available` || | | |+----------------------------------+| |+----------------------------------+| | | ||:diagtext:`\_\_builtin\_available`|| ||:diagtext:`\_\_builtin\_available`|| | | |+----------------------------------+| |+----------------------------------+| | +---------------------------+------------------------------------+--------------------------------------------------------------+------------------------------------+---------------------+ -Wunsupported-cb ---------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ignoring '-mcompact-branches=' option because the '`:placeholder:`A`:diagtext:`' architecture does not support it`| +--------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wunsupported-dll-base-class-template ------------------------------------- **Diagnostic text:** +---------------------------------------------------------------------------+------------------------------------+------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`propagating dll attribute to` |nbsp| |+----------------------------------+| |nbsp| :diagtext:`base class template without dll attribute is not supported`| | ||:diagtext:`already instantiated` || | | |+----------------------------------+| | | ||:diagtext:`explicitly specialized`|| | | |+----------------------------------+| | +---------------------------------------------------------------------------+------------------------------------+------------------------------------------------------------------------------+ -Wunsupported-friend -------------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`dependent nested name specifier '`:placeholder:`A`:diagtext:`' for friend template declaration is not supported; ignoring this friend declaration`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`dependent nested name specifier '`:placeholder:`A`:diagtext:`' for friend class declaration is not supported; turning off access control for` |nbsp| :placeholder:`B`| +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wunsupported-gpopt ------------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------------+-------------------------------------------+----------------------+ |:warning:`warning:` |nbsp| :diagtext:`ignoring '-mgpopt' option as it cannot be used with` |nbsp| |+-----------------------------------------+|:diagtext:`-mabicalls`| | || || | | |+-----------------------------------------+| | | ||:diagtext:`the implicit usage of` |nbsp| || | | |+-----------------------------------------+| | +--------------------------------------------------------------------------------------------------+-------------------------------------------+----------------------+ -Wunsupported-nan ----------------- This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ignoring '-mnan=2008' option because the '`:placeholder:`A`:diagtext:`' architecture does not support it`| +-----------------------------------------------------------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ignoring '-mnan=legacy' option because the '`:placeholder:`A`:diagtext:`' architecture does not support it`| +-------------------------------------------------------------------------------------------------------------------------------------------------+ -Wunsupported-target-opt ------------------------ This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`debug information option '`:placeholder:`A`:diagtext:`' is not supported for target '`:placeholder:`B`:diagtext:`'`| +---------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wunsupported-visibility ------------------------ This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`target does not support 'protected' visibility; using 'default'`| +------------------------------------------------------------------------------------------------------+ -Wunusable-partial-specialization --------------------------------- This diagnostic is an error by default, but the flag ``-Wno-unusable-partial-specialization`` can be used to disable the error. **Diagnostic text:** +-----------------------+----------------------+--------------------------------------------------------------------+----------------------------------+------------------------------------------------------------------------------------------+ |:error:`error:` |nbsp| |+--------------------+| |nbsp| :diagtext:`template partial specialization contains` |nbsp| |+--------------------------------+| |nbsp| :diagtext:`that cannot be deduced; this partial specialization will never be used`| | ||:diagtext:`class` || ||:diagtext:`a template parameter`|| | | |+--------------------+| |+--------------------------------+| | | ||:diagtext:`variable`|| ||:diagtext:`template parameters` || | | |+--------------------+| |+--------------------------------+| | +-----------------------+----------------------+--------------------------------------------------------------------+----------------------------------+------------------------------------------------------------------------------------------+ -Wunused -------- Some of the diagnostics controlled by this flag are enabled by default. Controls `-Wunused-argument`_, `-Wunused-function`_, `-Wunused-label`_, `-Wunused-lambda-capture`_, `-Wunused-local-typedef`_, `-Wunused-private-field`_, `-Wunused-property-ivar`_, `-Wunused-value`_, `-Wunused-variable`_. -Wunused-argument ----------------- This diagnostic flag exists for GCC compatibility, and has no effect in Clang. -Wunused-command-line-argument ------------------------------ This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`argument '`:placeholder:`A`:diagtext:`' requires profile-guided optimization information`| +-------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`joined argument expects additional value: '`:placeholder:`A`:diagtext:`'`| +---------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------+----------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A`:diagtext:`: '`:placeholder:`B`:diagtext:`' input unused`|+--------------------------------------------------------------------+| | ||+------------------------------------------------------------------+|| | ||| |nbsp| :diagtext:`when '`:placeholder:`D`:diagtext:`' is present`||| | ||+------------------------------------------------------------------+|| | |+--------------------------------------------------------------------+| | || || | |+--------------------------------------------------------------------+| +----------------------------------------------------------------------------------------------------+----------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A`:diagtext:`: '`:placeholder:`B`:diagtext:`' input unused in cpp mode`| +----------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------+-----------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A`:diagtext:`: previously preprocessed input`|+---------------------------------------------------------------------------+| | ||+-------------------------------------------------------------------------+|| | ||| |nbsp| :diagtext:`unused when '`:placeholder:`C`:diagtext:`' is present`||| | ||+-------------------------------------------------------------------------+|| | |+---------------------------------------------------------------------------+| | || || | |+---------------------------------------------------------------------------+| +--------------------------------------------------------------------------------------+-----------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`argument unused during compilation: '`:placeholder:`A`:diagtext:`'`| +---------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`the flag '`:placeholder:`A`:diagtext:`' has been deprecated and will be ignored`| +----------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ignoring -fdiscard-value-names for LLVM Bitcode`| +--------------------------------------------------------------------------------------+ -Wunused-comparison ------------------- This diagnostic is enabled by default. **Diagnostic text:** +---------------------------+------------------------+--------------------------------------------+ |:warning:`warning:` |nbsp| |+----------------------+| |nbsp| :diagtext:`comparison result unused`| | ||:diagtext:`equality` || | | |+----------------------+| | | ||:diagtext:`inequality`|| | | |+----------------------+| | | ||:diagtext:`relational`|| | | |+----------------------+| | | ||:diagtext:`three-way` || | | |+----------------------+| | +---------------------------+------------------------+--------------------------------------------+ -Wunused-const-variable ----------------------- **Diagnostic text:** +------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unused variable` |nbsp| :placeholder:`A`| +------------------------------------------------------------------------------+ -Wunused-exception-parameter ---------------------------- **Diagnostic text:** +-----------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unused exception parameter` |nbsp| :placeholder:`A`| +-----------------------------------------------------------------------------------------+ -Wunused-function ----------------- Also controls `-Wunneeded-internal-declaration`_. **Diagnostic text:** +------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unused function` |nbsp| :placeholder:`A`| +------------------------------------------------------------------------------+ -Wunused-getter-return-value ---------------------------- This diagnostic is enabled by default. **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`property access result unused - getters should not be used for side effects`| +------------------------------------------------------------------------------------------------------------------+ -Wunused-label -------------- **Diagnostic text:** +---------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unused label` |nbsp| :placeholder:`A`| +---------------------------------------------------------------------------+ -Wunused-lambda-capture ----------------------- **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------+--------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`lambda capture` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not` |nbsp| |+------------------------------------------------+| | ||:diagtext:`used` || | |+------------------------------------------------+| | ||:diagtext:`required to be captured for this use`|| | |+------------------------------------------------+| +---------------------------------------------------------------------------------------------------------------+--------------------------------------------------+ -Wunused-local-typedef ---------------------- **Diagnostic text:** +-----------------------------------------------------+------------------------+------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unused` |nbsp| |+----------------------+| |nbsp| :placeholder:`B`| | ||:diagtext:`typedef` || | | |+----------------------+| | | ||:diagtext:`type alias`|| | | |+----------------------+| | +-----------------------------------------------------+------------------------+------------------------+ -Wunused-local-typedefs ----------------------- Synonym for `-Wunused-local-typedef`_. -Wunused-macros --------------- **Diagnostic text:** +--------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`macro is not used`| +--------------------------------------------------------+ -Wunused-member-function ------------------------ Also controls `-Wunneeded-member-function`_. **Diagnostic text:** +-------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unused member function` |nbsp| :placeholder:`A`| +-------------------------------------------------------------------------------------+ -Wunused-parameter ------------------ **Diagnostic text:** +-------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unused parameter` |nbsp| :placeholder:`A`| +-------------------------------------------------------------------------------+ -Wunused-private-field ---------------------- **Diagnostic text:** +-----------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`private field` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not used`| +-----------------------------------------------------------------------------------------------------------+ -Wunused-property-ivar ---------------------- **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ivar` |nbsp| :placeholder:`A` |nbsp| :diagtext:`which backs the property is not referenced in this property's accessor`| +-------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wunused-result --------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ignoring return value of function declared with` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute`| +-------------------------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ignoring return value of function declared with` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute:` |nbsp| :placeholder:`B`| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wunused-template ----------------- Also controls `-Wunneeded-internal-declaration`_. **Diagnostic text:** +-----------------------------------------------------+----------------------+----------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unused` |nbsp| |+--------------------+| |nbsp| :diagtext:`template` |nbsp| :placeholder:`B`| | ||:diagtext:`function`|| | | |+--------------------+| | | ||:diagtext:`variable`|| | | |+--------------------+| | +-----------------------------------------------------+----------------------+----------------------------------------------------+ -Wunused-value -------------- This diagnostic is enabled by default. Also controls `-Wunevaluated-expression`_, `-Wunused-comparison`_, `-Wunused-result`_. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ignoring return value of function declared with` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute`| +-------------------------------------------------------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ignoring temporary created by a constructor declared with` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute`| +-----------------------------------------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ignoring temporary created by a constructor declared with` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute:` |nbsp| :placeholder:`B`| +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`container access result unused - container access should not be used for side effects`| +----------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`expression result unused`| +---------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`expression result unused; should this cast be to 'void'?`| +-----------------------------------------------------------------------------------------------+ -Wunused-variable ----------------- Also controls `-Wunused-const-variable`_. **Diagnostic text:** +------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unused variable` |nbsp| :placeholder:`A`| +------------------------------------------------------------------------------+ -Wunused-volatile-lvalue ------------------------ This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`expression result unused; assign into a variable to force a volatile load`| +----------------------------------------------------------------------------------------------------------------+ -Wused-but-marked-unused ------------------------ **Diagnostic text:** +---------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`was marked unused but was used`| +---------------------------------------------------------------------------------------------+ -Wuser-defined-literals ----------------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------------------+----------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`user-defined literal suffixes not starting with '\_' are reserved`|+--------------------------------------------------+| | ||:diagtext:`; no literal will invoke this operator`|| | |+--------------------------------------------------+| | || || | |+--------------------------------------------------+| +--------------------------------------------------------------------------------------------------------+----------------------------------------------------+ -Wuser-defined-warnings ----------------------- This diagnostic is enabled by default. **Diagnostic text:** The text of this diagnostic is not controlled by Clang. -Wvarargs --------- This diagnostic is enabled by default. **Diagnostic text:** +-----------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`second argument to 'va\_start' is not the last named parameter`| +-----------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`second argument to 'va\_arg' is of promotable type` |nbsp| :placeholder:`A`:diagtext:`; this va\_arg has undefined behavior because arguments will be promoted to` |nbsp| :placeholder:`B`| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +------------------------------------------------------+-----------------------------------------------------------------+---------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`passing` |nbsp| |+---------------------------------------------------------------+| |nbsp| :diagtext:`to 'va\_start' has undefined behavior`| | ||:diagtext:`an object that undergoes default argument promotion`|| | | |+---------------------------------------------------------------+| | | ||:diagtext:`an object of reference type` || | | |+---------------------------------------------------------------+| | | ||:diagtext:`a parameter declared with the 'register' keyword` || | | |+---------------------------------------------------------------+| | +------------------------------------------------------+-----------------------------------------------------------------+---------------------------------------------------------+ -Wvariadic-macros ----------------- Some of the diagnostics controlled by this flag are enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`named variadic macros are a GNU extension`| +--------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`\_\_VA\_OPT\_\_ can only appear in the expansion of a variadic macro`| +-----------------------------------------------------------------------------------------------------------+ +------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`variadic macros are a C99 feature`| +------------------------------------------------------------------------+ -Wvec-elem-size --------------- This diagnostic is an error by default, but the flag ``-Wno-vec-elem-size`` can be used to disable the error. **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:error:`error:` |nbsp| :diagtext:`vector operands do not have the same elements sizes (`:placeholder:`A` |nbsp| :diagtext:`and` |nbsp| :placeholder:`B`:diagtext:`)`| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wvector-conversion ------------------- **Diagnostic text:** +------------------------------------------------------------------------+----------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`incompatible vector types` |nbsp| |+--------------------------------------------------------------+| | ||:diagtext:`assigning to different types` || | |+--------------------------------------------------------------+| | ||:diagtext:`passing to parameter of different type` || | |+--------------------------------------------------------------+| | ||:diagtext:`returning from function with different return type`|| | |+--------------------------------------------------------------+| | ||:diagtext:`converting between types` || | |+--------------------------------------------------------------+| | ||:diagtext:`initializing with expression of different type` || | |+--------------------------------------------------------------+| | ||:diagtext:`sending to parameter of different type` || | |+--------------------------------------------------------------+| | ||:diagtext:`casting between types` || | |+--------------------------------------------------------------+| +------------------------------------------------------------------------+----------------------------------------------------------------+ -Wvector-conversions -------------------- Synonym for `-Wvector-conversion`_. -Wvexing-parse -------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`empty parentheses interpreted as a function declaration`| +----------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`parentheses were disambiguated as a function declaration`| +-----------------------------------------------------------------------------------------------+ +-----------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`parentheses were disambiguated as redundant parentheses around declaration of variable named` |nbsp| :placeholder:`A`| +-----------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wvisibility ------------ This diagnostic is enabled by default. **Diagnostic text:** +---------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`declaration of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`will not be visible outside of this function`| +---------------------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`redefinition of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`will not be visible outside of this function`| +----------------------------------------------------------------------------------------------------------------------------------------------+ -Wvla ----- **Diagnostic text:** +-----------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`variable length array used`| +-----------------------------------------------------------------+ -Wvla-extension --------------- **Diagnostic text:** +-------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`variable length arrays are a C99 feature`| +-------------------------------------------------------------------------------+ -Wvoid-pointer-to-enum-cast --------------------------- This diagnostic is enabled by default. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`cast to smaller integer type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`from` |nbsp| :placeholder:`A`| +-------------------------------------------------------------------------------------------------------------------------------------------+ -Wvoid-pointer-to-int-cast -------------------------- This diagnostic is enabled by default. Also controls `-Wvoid-pointer-to-enum-cast`_. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`cast to smaller integer type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`from` |nbsp| :placeholder:`A`| +-------------------------------------------------------------------------------------------------------------------------------------------+ -Wvoid-ptr-dereference ---------------------- This diagnostic is enabled by default. **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ISO C++ does not allow indirection on operand of type` |nbsp| :placeholder:`A`| +--------------------------------------------------------------------------------------------------------------------+ -Wvolatile-register-var ----------------------- This diagnostic flag exists for GCC compatibility, and has no effect in Clang. -Wweak-template-vtables ----------------------- **Diagnostic text:** +--------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`explicit template instantiation` |nbsp| :placeholder:`A` |nbsp| :diagtext:`will emit a vtable in every translation unit`| +--------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wweak-vtables -------------- **Diagnostic text:** +------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`has no out-of-line virtual method definitions; its vtable will be emitted in every translation unit`| +------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wwritable-strings ------------------ This diagnostic is enabled by default. Also controls `-Wdeprecated-writable-strings`_. **Diagnostic text:** +-------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`ISO C++11 does not allow conversion from string literal to` |nbsp| :placeholder:`A`| +-------------------------------------------------------------------------------------------------------------------------+ -Wwrite-strings --------------- Synonym for `-Wwritable-strings`_. -Wxor-used-as-pow ----------------- This diagnostic is enabled by default. **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`result of '`:placeholder:`A`:diagtext:`' is` |nbsp| :placeholder:`B`:diagtext:`; did you mean exponentiation?`| +----------------------------------------------------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`result of '`:placeholder:`A`:diagtext:`' is` |nbsp| :placeholder:`B`:diagtext:`; did you mean '`:placeholder:`C`:diagtext:`'?`| +--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`result of '`:placeholder:`A`:diagtext:`' is` |nbsp| :placeholder:`B`:diagtext:`; did you mean '`:placeholder:`C`:diagtext:`' (`:placeholder:`D`:diagtext:`)?`| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -Wzero-as-null-pointer-constant ------------------------------- **Diagnostic text:** +--------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`zero as null pointer constant`| +--------------------------------------------------------------------+ -Wzero-length-array ------------------- **Diagnostic text:** +------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`zero size arrays are an extension`| +------------------------------------------------------------------------+ -Wwasm-exception-spec --------------------- **Diagnostic text:** +----------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`dynamic exception specifications with types are currently ignored in wasm`| +----------------------------------------------------------------------------------------------------------------+