r281433 - Update DiagnosticsReference and fix emitter to emit -Wpedantic diagnostics and groups in a deterministic order.

Richard Smith via cfe-commits cfe-commits at lists.llvm.org
Tue Sep 13 18:51:10 PDT 2016


Author: rsmith
Date: Tue Sep 13 20:51:10 2016
New Revision: 281433

URL: http://llvm.org/viewvc/llvm-project?rev=281433&view=rev
Log:
Update DiagnosticsReference and fix emitter to emit -Wpedantic diagnostics and groups in a deterministic order.

Modified:
    cfe/trunk/docs/DiagnosticsReference.rst
    cfe/trunk/utils/TableGen/ClangDiagnosticsEmitter.cpp

Modified: cfe/trunk/docs/DiagnosticsReference.rst
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/DiagnosticsReference.rst?rev=281433&r1=281432&r2=281433&view=diff
==============================================================================
--- cfe/trunk/docs/DiagnosticsReference.rst (original)
+++ cfe/trunk/docs/DiagnosticsReference.rst Tue Sep 13 20:51:10 2016
@@ -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-expre
 ssion`_, `-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`_, `-Wdo
 |                                                                    |+---------------------------------------+|                                                                                                                                          |
 +--------------------------------------------------------------------+-----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+
 
-+--------------------------------------------------------------------------------------------------------------------+
-|: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`_, `-Wdo
 |                                                     |+--------------------+|                                                                                               |
 +-----------------------------------------------------+----------------------+-----------------------------------------------------------------------------------------------+
 
-+--------------------------------------------------------+--------------------+------------------------------------------------------------+
-|: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`_, `-Wdo
 |                                                                                                                                              |+-----------------+|             |
 +----------------------------------------------------------------------------------------------------------------------------------------------+-------------------+-------------+
 
-+---------------------------------------------------------------------------------------------------------------------------+
-|: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`_, `-Wdo
 |                           |+--------------------------------------------------------------+|                                                                      |
 +---------------------------+----------------------------------------------------------------+----------------------------------------------------------------------+
 
-+-----------------------------------------------------------------------------------+
-|: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`_, `-Wdo
 |                                                        |+----------------------------------------------+|
 +--------------------------------------------------------+------------------------------------------------+
 
-+-----------------------------------------------------------------------+
-|: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-constru
 
 -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`|+--------------------------------------------------------------------+|
 |                                                                                                    ||+------------------------------------------------------------------+||

Modified: cfe/trunk/utils/TableGen/ClangDiagnosticsEmitter.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/TableGen/ClangDiagnosticsEmitter.cpp?rev=281433&r1=281432&r2=281433&view=diff
==============================================================================
--- cfe/trunk/utils/TableGen/ClangDiagnosticsEmitter.cpp (original)
+++ cfe/trunk/utils/TableGen/ClangDiagnosticsEmitter.cpp Tue Sep 13 20:51:10 2016
@@ -1248,11 +1248,20 @@ void EmitClangDiagDocs(RecordKeeper &Rec
 
   // 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());




More information about the cfe-commits mailing list