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
This commit is contained in:
Richard Smith 2016-09-14 01:51:10 +00:00
parent 6c177e5153
commit b7ad5ad5f8
2 changed files with 263 additions and 234 deletions

View File

@ -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 <intrin.h> 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:`designated initializers 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++ does not allow 'main' to be used by a program`|
+--------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ISO C forbids taking the address of an expression of type 'void'`|
+-------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+
|: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:`#ident is a language extension`|
+---------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`initializer for aggregate is not a compile-time constant`|
+-----------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' cannot be signed or unsigned`|
+--------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ISO C90 does not allow subscripting non-lvalue array`|
+-------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`flexible array members are a C99 feature`|
+-------------------------------------------------------------------------------+
+-----------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`use of GNU array range extension`|
+-----------------------------------------------------------------------+
+------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`empty macro arguments are a C99 feature`|
+------------------------------------------------------------------------------+
+--------------------------------------------------------+--------------------+------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`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:`initializer for aggregate is not a compile-time constant`|
+-----------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`flexible array members are a C99 feature`|
+-------------------------------------------------------------------------------+
+---------------------------------------------------------------+-----------------------+--------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`invalid application of '`|+---------------------+|:diagtext:`' to a function type`|
| ||:diagtext:`sizeof` || |
| |+---------------------+| |
| ||:diagtext:`alignof` || |
| |+---------------------+| |
| ||:diagtext:`vec\_step`|| |
| |+---------------------+| |
+---------------------------------------------------------------+-----------------------+--------------------------------+
+---------------------------------------------------------------+-----------------------+----------------------------+
|:warning:`warning:` |nbsp| :diagtext:`invalid application of '`|+---------------------+|:diagtext:`' to a void type`|
| ||:diagtext:`sizeof` || |
| |+---------------------+| |
| ||:diagtext:`alignof` || |
| |+---------------------+| |
| ||:diagtext:`vec\_step`|| |
| |+---------------------+| |
+---------------------------------------------------------------+-----------------------+----------------------------+
+-------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`ISO C90 does not allow subscripting non-lvalue array`|
+-------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`hexadecimal floating literals are a C++1z feature`|
|:warning:`warning:` |nbsp| :diagtext:`subscript of a pointer to void is a GNU extension`|
+----------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
|: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:`ISO C forbids taking the address of an expression of type 'void'`|
+-------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`type-less parameter names in function declaration`|
+----------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`C requires #line number to be less than` |nbsp| :placeholder:`A`:diagtext:`, allowed as extension`|
+----------------------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------+----------------------+-----------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`void` |nbsp| |+--------------------+| |nbsp| :placeholder:`A` |nbsp| :diagtext:`should not return void expression`|
| ||:diagtext:`function`|| |
| |+--------------------+| |
| ||:diagtext:`method` || |
| |+--------------------+| |
| ||:diagtext:`block` || |
| |+--------------------+| |
+---------------------------------------------------+----------------------+-----------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`complex numbers are an extension in a freestanding C99 implementation`|
+------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`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`|+--------------------------------------------------------------------+|
| ||+------------------------------------------------------------------+||

View File

@ -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());