From: Richard Smith Date: Wed, 14 Sep 2016 01:51:10 +0000 (+0000) Subject: Update DiagnosticsReference and fix emitter to emit -Wpedantic diagnostics and groups... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b7ad5ad5f8efc93d1838f99ae173455857b93225;p=clang Update DiagnosticsReference and fix emitter to emit -Wpedantic diagnostics and groups in a deterministic order. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@281433 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/docs/DiagnosticsReference.rst b/docs/DiagnosticsReference.rst index 05ce32f4c5..a4c10ccd0e 100644 --- a/docs/DiagnosticsReference.rst +++ b/docs/DiagnosticsReference.rst @@ -2769,7 +2769,8 @@ This diagnostic is enabled by default. -Wdiv-by-zero ------------- -This diagnostic flag exists for GCC compatibility, and has no effect in Clang. +Synonym for `-Wdivision-by-zero`_. + -Wdivision-by-zero ------------------ @@ -3107,7 +3108,8 @@ This diagnostic is enabled by default. -Weffc++ -------- -This diagnostic flag exists for GCC compatibility, and has no effect in Clang. +Synonym for `-Wnon-virtual-dtor`_. + -Wembedded-directive -------------------- @@ -4320,6 +4322,8 @@ This diagnostic is enabled by default. | |+----------------------------------------------------------------------------------------------------------------+| | ||:diagtext:`Objective-C protocols` || | |+----------------------------------------------------------------------------------------------------------------+| +| ||:diagtext:`variables with static or thread storage duration` || +| |+----------------------------------------------------------------------------------------------------------------+| | ||:diagtext:`functions and global variables` || | |+----------------------------------------------------------------------------------------------------------------+| | ||:diagtext:`structs, unions, and typedefs` || @@ -4608,6 +4612,14 @@ This diagnostic is enabled by default. |:warning:`warning:` |nbsp| :diagtext:`'#pragma init\_seg' is only supported when targeting a Microsoft environment`| +-------------------------------------------------------------------------------------------------------------------+ ++------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not a recognized builtin`|+----------------------------------------------------------------------------+| +| || || +| |+----------------------------------------------------------------------------+| +| ||:diagtext:`; consider including to access non-builtin intrinsics`|| +| |+----------------------------------------------------------------------------+| ++------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ + +-----------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`unknown action for '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`| +-----------------------------------------------------------------------------------------------------------------+ @@ -7446,131 +7458,37 @@ This diagnostic is enabled by default. -Wpedantic ---------- -Also controls `-Wgnu-union-cast`_, `-Wdollar-in-identifier-extension`_, `-Wgnu-zero-line-directive`_, `-Wc11-extensions`_, `-Wgnu-flexible-array-union-member`_, `-Wvariadic-macros`_, `-Wempty-translation-unit`_, `-Wgnu-include-next`_, `-Wembedded-directive`_, `-Wgnu-statement-expression`_, `-Wimport-preprocessor-directive-pedantic`_, `-Wfour-char-constants`_, `-Wgnu-conditional-omitted-operand`_, `-Wgnu-redeclared-enum`_, `-Wmicrosoft-enum-forward-reference`_, `-Wc++14-binary-literal`_, `-Wgnu-empty-initializer`_, `-Wmicrosoft-charize`_, `-Wdeclaration-after-statement`_, `-Woverlength-strings`_, `-Wcomplex-component-init`_, `-Wmicrosoft-end-of-file`_, `-Wgnu-folding-constant`_, `-Wmicrosoft-fixed-enum`_, `-Wkeyword-macro`_, `-Wlong-long`_, `-Wgnu-compound-literal-initializer`_, `-Wc++11-extra-semi`_, `-Wformat-pedantic`_, `-Wnullability-extension`_, `-Wgnu-flexible-array-initializer`_, `-Wmicrosoft-flexible-array`_, `-Wmicrosoft-cpp-macro`_, `-Wgnu-case-range`_, `-Wvla-extension`_, `-Wgnu-zero-variadic-macro-arguments`_, `-Wlanguage-extension-token`_, `-Wgnu-empty-struct`_, `-Wgnu-auto-type`_, `-Wzero-length-array`_, `-Wgnu-complex-integer`_, `-Wmicrosoft-redeclare-static`_, `-Wc++11-long-long`_, `-Wretained-language-linkage`_, `-Wgnu-imaginary-constant`_, `-Wgnu-anonymous-struct`_, `-Wflexible-array-extensions`_, `-Wgnu-binary-literal`_, `-Wgnu-label-as-value`_, `-Wnested-anon-types`_, `-Wmicrosoft-comment-paste`_, `-Wextended-offsetof`_. +Also controls `-Wretained-language-linkage`_, `-Wcomplex-component-init`_, `-Wextended-offsetof`_, `-Wnested-anon-types`_, `-Wdeclaration-after-statement`_, `-Wempty-translation-unit`_, `-Wnullability-extension`_, `-Wdollar-in-identifier-extension`_, `-Wlanguage-extension-token`_, `-Wimport-preprocessor-directive-pedantic`_, `-Wembedded-directive`_, `-Wgnu-anonymous-struct`_, `-Wgnu-auto-type`_, `-Wc++14-binary-literal`_, `-Wgnu-binary-literal`_, `-Wgnu-compound-literal-initializer`_, `-Wgnu-case-range`_, `-Wgnu-complex-integer`_, `-Wgnu-conditional-omitted-operand`_, `-Wgnu-empty-initializer`_, `-Wgnu-empty-struct`_, `-Wc++11-extra-semi`_, `-Wgnu-flexible-array-initializer`_, `-Wgnu-flexible-array-union-member`_, `-Wgnu-folding-constant`_, `-Wflexible-array-extensions`_, `-Wfour-char-constants`_, `-Wgnu-imaginary-constant`_, `-Wgnu-include-next`_, `-Wgnu-label-as-value`_, `-Wc++11-long-long`_, `-Wlong-long`_, `-Woverlength-strings`_, `-Wgnu-redeclared-enum`_, `-Wgnu-statement-expression`_, `-Wgnu-union-cast`_, `-Wkeyword-macro`_, `-Wvariadic-macros`_, `-Wvla-extension`_, `-Wzero-length-array`_, `-Wgnu-zero-line-directive`_, `-Wgnu-zero-variadic-macro-arguments`_, `-Wformat-pedantic`_, `-Wc11-extensions`_, `-Wmicrosoft-charize`_, `-Wmicrosoft-cpp-macro`_, `-Wmicrosoft-fixed-enum`_, `-Wmicrosoft-redeclare-static`_, `-Wmicrosoft-enum-forward-reference`_, `-Wmicrosoft-flexible-array`_, `-Wmicrosoft-comment-paste`_, `-Wmicrosoft-end-of-file`_. **Diagnostic text:** -+----------------------------------------------------+-----------------------+---------------------------+---------------+----------------------+-------------------------+---------------------------------+---------------+------------------------+---------------------------------------------------+--------------------------------------+ -|:warning:`warning:` |nbsp| :diagtext:`arithmetic on`|+---------------------+| |nbsp| :diagtext:`pointer`|+-------------+| |nbsp| :diagtext:`to`|+-----------------------+| |nbsp| :diagtext:`function type`|+-------------+| |nbsp| :placeholder:`B`|+-------------------------------------------------+| |nbsp| :diagtext:`is a GNU extension`| -| || |nbsp| :diagtext:`a`|| || || || |nbsp| :diagtext:`the`|| || || || || | -| |+---------------------+| |+-------------+| |+-----------------------+| |+-------------+| |+-------------------------------------------------+| | -| || || ||:diagtext:`s`|| || || ||:diagtext:`s`|| ||+-----------------------------------------------+|| | -| |+---------------------+| |+-------------+| |+-----------------------+| |+-------------+| ||| |nbsp| :diagtext:`and` |nbsp| :placeholder:`D`||| | -| | | | | | | | | ||+-----------------------------------------------+|| | -| | | | | | | | | |+-------------------------------------------------+| | -+----------------------------------------------------+-----------------------+---------------------------+---------------+----------------------+-------------------------+---------------------------------+---------------+------------------------+---------------------------------------------------+--------------------------------------+ - -+---------------------------------------------------------------+-----------------------+----------------------------+ -|:warning:`warning:` |nbsp| :diagtext:`invalid application of '`|+---------------------+|:diagtext:`' to a void type`| -| ||:diagtext:`sizeof` || | -| |+---------------------+| | -| ||:diagtext:`alignof` || | -| |+---------------------+| | -| ||:diagtext:`vec\_step`|| | -| |+---------------------+| | -+---------------------------------------------------------------+-----------------------+----------------------------+ - -+----------------------------------------------------------------------------------------------------------------+ -|:warning:`warning:` |nbsp| :diagtext:`\_\_VA\_ARGS\_\_ can only appear in the expansion of a C99 variadic macro`| -+----------------------------------------------------------------------------------------------------------------+ - -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -|:warning:`warning:` |nbsp| :diagtext:`ordered comparison between pointer and zero (`:placeholder:`A` |nbsp| :diagtext:`and` |nbsp| :placeholder:`B`:diagtext:`) is an extension`| -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -+---------------------------------------------------------------------------------------+ -|:warning:`warning:` |nbsp| :diagtext:`ISO C forbids forward references to 'enum' types`| -+---------------------------------------------------------------------------------------+ - -+---------------------------------------------------------------------------------------------------------------------------+ -|:warning:`warning:` |nbsp| :diagtext:`use of the` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute is a C++1z extension`| -+---------------------------------------------------------------------------------------------------------------------------+ - -+------------------------------------------------------------------------------------------------------------+ -|:warning:`warning:` |nbsp| :diagtext:`use of non-standard escape character '\\`:placeholder:`A`:diagtext:`'`| -+------------------------------------------------------------------------------------------------------------+ - -+---------------------------+----------------------------------+------------------------------+-----------------------+----------------------------+ -|:warning:`warning:` |nbsp| |+--------------------------------+|:diagtext:`array size` |nbsp| |+---------------------+|:diagtext:`is a C99 feature`| -| ||:diagtext:`qualifier in` |nbsp| || || || | -| |+--------------------------------+| |+---------------------+| | -| ||:diagtext:`static` |nbsp| || || || | -| |+--------------------------------+| |+---------------------+| | -| || || ||:diagtext:`'\[\*\] '`|| | -| |+--------------------------------+| |+---------------------+| | -+---------------------------+----------------------------------+------------------------------+-----------------------+----------------------------+ - -+----------------------------------------------------------------+ -|:warning:`warning:` |nbsp| :diagtext:`no newline at end of file`| -+----------------------------------------------------------------+ - -+-------------------------------------------------------------------------------------------------+ -|:warning:`warning:` |nbsp| :diagtext:`macro expansion producing 'defined' has undefined behavior`| -+-------------------------------------------------------------------------------------------------+ - -+------------------------------------------------------------------------------------------------+ -|:warning:`warning:` |nbsp| :diagtext:`exception specification of '...' is a Microsoft extension`| -+------------------------------------------------------------------------------------------------+ - -+-------------------------------------------------------------------------------------------------+ -|:warning:`warning:` |nbsp| :diagtext:`variable declaration in for loop is a C99-specific feature`| -+-------------------------------------------------------------------------------------------------+ - -+---------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------------------------+ -|:warning:`warning:` |nbsp| :diagtext:`implicit conversion from array size expression of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| |+-----------------------+| |nbsp| :diagtext:`type` |nbsp| :placeholder:`C` |nbsp| :diagtext:`is a C++11 extension`| -| ||:diagtext:`integral` || | -| |+-----------------------+| | -| ||:diagtext:`enumeration`|| | -| |+-----------------------+| | -+---------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------------------------+ - -+-------------------------------------------------------------------------------------------------------------+ -|:warning:`warning:` |nbsp| :diagtext:`cast between pointer-to-function and pointer-to-object is an extension`| -+-------------------------------------------------------------------------------------------------------------+ - +------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`'enable\_if' is a clang extension`| +------------------------------------------------------------------------+ -+---------------------------------------------------------------------------------------+ -|:warning:`warning:` |nbsp| :diagtext:`hexadecimal floating constants are a C99 feature`| -+---------------------------------------------------------------------------------------+ - -+-------------------------------------------------------------------------------------------------------------------------------------+ -|:warning:`warning:` |nbsp| :diagtext:`C99 forbids casting nonscalar type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to the same type`| -+-------------------------------------------------------------------------------------------------------------------------------------+ - -+-------------------------------------------------------------------------------------------------------+ -|:warning:`warning:` |nbsp| :diagtext:`ISO C forbids taking the address of an expression of type 'void'`| -+-------------------------------------------------------------------------------------------------------+ - -+---------------------------------------------------------------------+ -|:warning:`warning:` |nbsp| :diagtext:`#ident is a language extension`| -+---------------------------------------------------------------------+ - -+-----------------------------------------------------------------------------------------------+ -|:warning:`warning:` |nbsp| :diagtext:`initializer for aggregate is not a compile-time constant`| -+-----------------------------------------------------------------------------------------------+ - -+--------------------------------------------------------------------------------------------------+ -|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' cannot be signed or unsigned`| -+--------------------------------------------------------------------------------------------------+ - -+-------------------------------------------------------------------------------------------+ -|:warning:`warning:` |nbsp| :diagtext:`ISO C90 does not allow subscripting non-lvalue array`| -+-------------------------------------------------------------------------------------------+ ++--------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`designated initializers are a C99 feature`| ++--------------------------------------------------------------------------------+ -+-------------------------------------------------------------------------------+ -|:warning:`warning:` |nbsp| :diagtext:`flexible array members are a C99 feature`| -+-------------------------------------------------------------------------------+ ++--------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`ISO C++ does not allow 'main' to be used by a program`| ++--------------------------------------------------------------------------------------------+ -+-----------------------------------------------------------------------+ -|:warning:`warning:` |nbsp| :diagtext:`use of GNU array range extension`| -+-----------------------------------------------------------------------+ ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+ +|: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:`empty macro arguments are a C99 feature`| -+------------------------------------------------------------------------------+ ++--------------------------------------------------------+--------------------+------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`anonymous` |nbsp| |+------------------+| |nbsp| :diagtext:`cannot be '`:placeholder:`B`:diagtext:`'`| +| ||:diagtext:`struct`|| | +| |+------------------+| | +| ||:diagtext:`union` || | +| |+------------------+| | ++--------------------------------------------------------+--------------------+------------------------------------------------------------+ +--------------------------------------------------------------------+-----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`no viable constructor` |nbsp| |+---------------------------------------+| |nbsp| :diagtext:`of type` |nbsp| :placeholder:`B`:diagtext:`; C++98 requires a copy constructor when binding a reference to a temporary`| @@ -7598,46 +7516,14 @@ Also controls `-Wgnu-union-cast`_, `-Wdollar-in-identifier-extension`_, `-Wgnu-z | |+---------------------------------------+| | +--------------------------------------------------------------------+-----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+ -+--------------------------------------------------------------------------------------------------------------------+ -|:warning:`warning:` |nbsp| :diagtext:`ISO C does not support '~' for complex conjugation of` |nbsp| :placeholder:`A`| -+--------------------------------------------------------------------------------------------------------------------+ - -+-----------------------------------------------------------------------------+--------------------+---------------------------------------------+ -|:warning:`warning:` |nbsp| :diagtext:`types declared in an anonymous` |nbsp| |+------------------+| |nbsp| :diagtext:`are a Microsoft extension`| -| ||:diagtext:`struct`|| | -| |+------------------+| | -| ||:diagtext:`union` || | -| |+------------------+| | -+-----------------------------------------------------------------------------+--------------------+---------------------------------------------+ - +--------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`parameter` |nbsp| :placeholder:`A` |nbsp| :diagtext:`was not declared, defaulting to type 'int'`| +--------------------------------------------------------------------------------------------------------------------------------------+ -+--------------------------------------------------------------------------------------------+ -|:warning:`warning:` |nbsp| :diagtext:`ISO C++ does not allow 'main' to be used by a program`| -+--------------------------------------------------------------------------------------------+ - -+-----------------------------------------------------------------------------+ -|:warning:`warning:` |nbsp| :diagtext:`extern templates are a C++11 extension`| -+-----------------------------------------------------------------------------+ - +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`qualifier in explicit instantiation of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`requires a template-id (a typedef is not permitted)`| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -+----------------------------------------------------+-----------------------+---------------------------+---------------+----------------------------------------------+ -|:warning:`warning:` |nbsp| :diagtext:`arithmetic on`|+---------------------+| |nbsp| :diagtext:`pointer`|+-------------+| |nbsp| :diagtext:`to void is a GNU extension`| -| || |nbsp| :diagtext:`a`|| || || | -| |+---------------------+| |+-------------+| | -| || || ||:diagtext:`s`|| | -| |+---------------------+| |+-------------+| | -+----------------------------------------------------+-----------------------+---------------------------+---------------+----------------------------------------------+ - -+-----------------------------------------------------------------------+ -|:warning:`warning:` |nbsp| :diagtext:`comma operator in operand of #if`| -+-----------------------------------------------------------------------+ - +-----------------------------------------------------+----------------------+-----------------------------------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`static` |nbsp| |+--------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`is used in an inline function with external linkage`| | ||:diagtext:`function`|| | @@ -7646,21 +7532,9 @@ Also controls `-Wgnu-union-cast`_, `-Wdollar-in-identifier-extension`_, `-Wgnu-z | |+--------------------+| | +-----------------------------------------------------+----------------------+-----------------------------------------------------------------------------------------------+ -+--------------------------------------------------------+--------------------+------------------------------------------------------------+ -|:warning:`warning:` |nbsp| :diagtext:`anonymous` |nbsp| |+------------------+| |nbsp| :diagtext:`cannot be '`:placeholder:`B`:diagtext:`'`| -| ||:diagtext:`struct`|| | -| |+------------------+| | -| ||:diagtext:`union` || | -| |+------------------+| | -+--------------------------------------------------------+--------------------+------------------------------------------------------------+ - -+-----------------------------------------------------------------------------------------------------------------------+ -|:warning:`warning:` |nbsp| :diagtext:`ISO C does not support '++'/'--' on complex integer type` |nbsp| :placeholder:`A`| -+-----------------------------------------------------------------------------------------------------------------------+ - -+--------------------------------------------------------------------------------------------------+ -|:warning:`warning:` |nbsp| :diagtext:`commas at the end of enumerator lists are a C++11 extension`| -+--------------------------------------------------------------------------------------------------+ ++---------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`ISO C 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:`)`| @@ -7670,63 +7544,99 @@ Also controls `-Wgnu-union-cast`_, `-Wdollar-in-identifier-extension`_, `-Wgnu-z | |+-----------------+| | +----------------------------------------------------------------------------------------------------------------------------------------------+-------------------+-------------+ -+---------------------------------------------------------------------------------------------------------------------------+ -|:warning:`warning:` |nbsp| :diagtext:`use of the` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute is a C++14 extension`| -+---------------------------------------------------------------------------------------------------------------------------+ ++--------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`size of static array must be an integer constant expression`| ++--------------------------------------------------------------------------------------------------+ -+----------------------------------------------------------------------------------------+ -|:warning:`warning:` |nbsp| :diagtext:`hexadecimal floating literals are a C++1z feature`| -+----------------------------------------------------------------------------------------+ ++-----------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`initializer for aggregate is not a compile-time constant`| ++-----------------------------------------------------------------------------------------------+ -+--------------------------------------------------------------------------------------------------------------------------------------------------------+ -|: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:`flexible array members are a C99 feature`| ++-------------------------------------------------------------------------------+ + ++---------------------------------------------------------------+-----------------------+--------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`invalid application of '`|+---------------------+|:diagtext:`' to a function type`| +| ||:diagtext:`sizeof` || | +| |+---------------------+| | +| ||:diagtext:`alignof` || | +| |+---------------------+| | +| ||:diagtext:`vec\_step`|| | +| |+---------------------+| | ++---------------------------------------------------------------+-----------------------+--------------------------------+ + ++---------------------------------------------------------------+-----------------------+----------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`invalid application of '`|+---------------------+|:diagtext:`' to a void type`| +| ||:diagtext:`sizeof` || | +| |+---------------------+| | +| ||:diagtext:`alignof` || | +| |+---------------------+| | +| ||:diagtext:`vec\_step`|| | +| |+---------------------+| | ++---------------------------------------------------------------+-----------------------+----------------------------+ + ++-------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`ISO C90 does not allow subscripting non-lvalue array`| ++-------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------+ -|:warning:`warning:` |nbsp| :diagtext:`type-less parameter names in function declaration`| +|:warning:`warning:` |nbsp| :diagtext:`subscript of a pointer to void is a GNU extension`| +----------------------------------------------------------------------------------------+ -+----------------------------------------------------------------------------------------------------------------------------------------+ -|:warning:`warning:` |nbsp| :diagtext:`C requires #line number to be less than` |nbsp| :placeholder:`A`:diagtext:`, allowed as extension`| -+----------------------------------------------------------------------------------------------------------------------------------------+ - -+---------------------------------------------------+----------------------+-----------------------------------------------------------------------------+ -|:warning:`warning:` |nbsp| :diagtext:`void` |nbsp| |+--------------------+| |nbsp| :placeholder:`A` |nbsp| :diagtext:`should not return void expression`| -| ||:diagtext:`function`|| | -| |+--------------------+| | -| ||:diagtext:`method` || | -| |+--------------------+| | -| ||:diagtext:`block` || | -| |+--------------------+| | -+---------------------------------------------------+----------------------+-----------------------------------------------------------------------------+ ++-------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`ISO C forbids taking the address of an expression of type 'void'`| ++-------------------------------------------------------------------------------------------------------+ -+------------------------------------------------------------------------------------------------------------+ -|:warning:`warning:` |nbsp| :diagtext:`complex numbers are an extension in a freestanding C99 implementation`| -+------------------------------------------------------------------------------------------------------------+ ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|: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:`'\_\_thread' before '`:placeholder:`A`: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:`C99 forbids conditional expressions with only one void side`| -+--------------------------------------------------------------------------------------------------+ ++----------------------------------------------------+-----------------------+---------------------------+---------------+----------------------+-------------------------+---------------------------------+---------------+------------------------+---------------------------------------------------+--------------------------------------+ +|: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:`multi-line // comment`| -+------------------------------------------------------------+ ++-----------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`ISO C does not support '++'/'--' on complex integer type` |nbsp| :placeholder:`A`| ++-----------------------------------------------------------------------------------------------------------------------+ -+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+ -|: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:`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`| @@ -7746,9 +7656,57 @@ Also controls `-Wgnu-union-cast`_, `-Wdollar-in-identifier-extension`_, `-Wgnu-z | |+--------------------------------------------------------------+| | +---------------------------+----------------------------------------------------------------+----------------------------------------------------------------------+ -+-----------------------------------------------------------------------------------+ -|:warning:`warning:` |nbsp| :diagtext:`compound literals are a C99-specific feature`| -+-----------------------------------------------------------------------------------+ ++--------------------------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`kernel function` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is a member function; this may not be accepted by nvcc`| ++--------------------------------------------------------------------------------------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`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++1z 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:`void` |nbsp| |+--------------------+| |nbsp| :placeholder:`A` |nbsp| :diagtext:`should not return void expression`| +| ||:diagtext:`function`|| | +| |+--------------------+| | +| ||:diagtext:`method` || | +| |+--------------------+| | +| ||:diagtext:`block` || | +| |+--------------------+| | ++---------------------------------------------------+----------------------+-----------------------------------------------------------------------------+ + ++--------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' cannot be signed or unsigned`| ++--------------------------------------------------------------------------------------------------+ + ++---------------------------+----------------------------------+------------------------------+-----------------------+----------------------------+ +|:warning:`warning:` |nbsp| |+--------------------------------+|:diagtext:`array size` |nbsp| |+---------------------+|:diagtext:`is a C99 feature`| +| ||:diagtext:`qualifier in` |nbsp| || || || | +| |+--------------------------------+| |+---------------------+| | +| ||:diagtext:`static` |nbsp| || || || | +| |+--------------------------------+| |+---------------------+| | +| || || ||:diagtext:`'\[\*\] '`|| | +| |+--------------------------------+| |+---------------------+| | ++---------------------------+----------------------------------+------------------------------+-----------------------+----------------------------+ +--------------------------------------------------------+------------------------------------------------+ |:warning:`warning:` |nbsp| :diagtext:`extra ';'` |nbsp| |+----------------------------------------------+| @@ -7764,44 +7722,98 @@ Also controls `-Wgnu-union-cast`_, `-Wdollar-in-identifier-extension`_, `-Wgnu-z | |+----------------------------------------------+| +--------------------------------------------------------+------------------------------------------------+ -+-----------------------------------------------------------------------+ -|:warning:`warning:` |nbsp| :diagtext:`#warning is a language extension`| -+-----------------------------------------------------------------------+ ++-----------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`'\_\_thread' before '`:placeholder:`A`:diagtext:`'`| ++-----------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------+ -|:warning:`warning:` |nbsp| :diagtext:`subscript of a pointer to void is a GNU extension`| +|:warning:`warning:` |nbsp| :diagtext:`type-less parameter names in function declaration`| +----------------------------------------------------------------------------------------+ -+--------------------------------------------------------------------------------------------------+ -|:warning:`warning:` |nbsp| :diagtext:`size of static array must be an integer constant expression`| -+--------------------------------------------------------------------------------------------------+ ++-------------------------------------------------------------------------------------------------+ +|: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:`designated initializers are a C99 feature`| -+--------------------------------------------------------------------------------+ ++-----------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`use of GNU array range extension`| ++-----------------------------------------------------------------------+ -+---------------------------------------------------------------+-----------------------+--------------------------------+ -|:warning:`warning:` |nbsp| :diagtext:`invalid application of '`|+---------------------+|:diagtext:`' to a function type`| -| ||:diagtext:`sizeof` || | -| |+---------------------+| | -| ||:diagtext:`alignof` || | -| |+---------------------+| | -| ||:diagtext:`vec\_step`|| | -| |+---------------------+| | -+---------------------------------------------------------------+-----------------------+--------------------------------+ ++------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`exception specification of '...' is a Microsoft extension`| ++------------------------------------------------------------------------------------------------+ + ++-----------------------------------------------------------------------------+ +|: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++1z 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:`empty macro arguments are a C99 feature`| ++------------------------------------------------------------------------------+ + ++----------------------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`C requires #line number to be less than` |nbsp| :placeholder:`A`:diagtext:`, allowed as extension`| ++----------------------------------------------------------------------------------------------------------------------------------------+ + ++-------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`macro expansion producing 'defined' has undefined behavior`| ++-------------------------------------------------------------------------------------------------+ + -Wpedantic-core-features ------------------------ @@ -8550,7 +8562,9 @@ This diagnostic is enabled by default. -Wshadow -------- -Also controls `-Wshadow-field-in-constructor-modified`_. +Some of the diagnostics controlled by this flag are enabled by default. + +Also controls `-Wshadow-field-in-constructor-modified`_, `-Wshadow-ivar`_. **Diagnostic text:** @@ -8575,6 +8589,8 @@ Also controls `-Wshadow-field-in-constructor-modified`_. -Wshadow-all ------------ +Some of the diagnostics controlled by this flag are enabled by default. + Controls `-Wshadow`_, `-Wshadow-field-in-constructor`_. @@ -10116,6 +10132,10 @@ This diagnostic is enabled by default. |:warning:`warning:` |nbsp| :diagtext:`joined argument expects additional value: '`:placeholder:`A`:diagtext:`'`| +---------------------------------------------------------------------------------------------------------------+ ++-----------------------------------------------------------------------------------------------------------------------------+ +|:warning:`warning:` |nbsp| :diagtext:`argument '-fdiagnostics-show-hotness' requires profile-guided optimization information`| ++-----------------------------------------------------------------------------------------------------------------------------+ + +----------------------------------------------------------------------------------------------------+----------------------------------------------------------------------+ |:warning:`warning:` |nbsp| :placeholder:`A`:diagtext:`: '`:placeholder:`B`:diagtext:`' input unused`|+--------------------------------------------------------------------+| | ||+------------------------------------------------------------------+|| diff --git a/utils/TableGen/ClangDiagnosticsEmitter.cpp b/utils/TableGen/ClangDiagnosticsEmitter.cpp index 036e742311..58a53b6470 100644 --- a/utils/TableGen/ClangDiagnosticsEmitter.cpp +++ b/utils/TableGen/ClangDiagnosticsEmitter.cpp @@ -1248,11 +1248,20 @@ void EmitClangDiagDocs(RecordKeeper &Records, raw_ostream &OS) { // Compute the set of diagnostics that are in -Wpedantic. { - RecordSet DiagsInPedantic; - RecordSet GroupsInPedantic; + RecordSet DiagsInPedanticSet; + RecordSet GroupsInPedanticSet; InferPedantic inferPedantic(DGParentMap, Diags, DiagGroups, DiagsInGroup); - inferPedantic.compute(&DiagsInPedantic, &GroupsInPedantic); + inferPedantic.compute(&DiagsInPedanticSet, &GroupsInPedanticSet); auto &PedDiags = DiagsInGroup["pedantic"]; + // Put the diagnostics into a deterministic order. + RecordVec DiagsInPedantic(DiagsInPedanticSet.begin(), + DiagsInPedanticSet.end()); + RecordVec GroupsInPedantic(GroupsInPedanticSet.begin(), + GroupsInPedanticSet.end()); + std::sort(DiagsInPedantic.begin(), DiagsInPedantic.end(), + beforeThanCompare); + std::sort(GroupsInPedantic.begin(), GroupsInPedantic.end(), + beforeThanCompare); PedDiags.DiagsInGroup.insert(PedDiags.DiagsInGroup.end(), DiagsInPedantic.begin(), DiagsInPedantic.end());