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


_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to