aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2018-09-11 10:09:57 +0000
committerDimitry Andric <dim@FreeBSD.org>2018-09-11 10:09:57 +0000
commit71bf09e840ae8223ff6cc128b489f06f4e447b3d (patch)
treeb0305a9eb9221e8f254e5a67b29102a27da14c7e
parentfe208f5606bc4a82b573ac32db2897616d3abc24 (diff)
downloadsrc-71bf09e840ae8223ff6cc128b489f06f4e447b3d.tar.gz
src-71bf09e840ae8223ff6cc128b489f06f4e447b3d.zip
Vendor import of clang release_70 branch r341916:vendor/clang/clang-release_70-r341916
Notes
Notes: svn path=/vendor/clang/dist-release_70/; revision=338577 svn path=/vendor/clang/clang-release_70-r341916/; revision=338578; tag=vendor/clang/clang-release_70-r341916
-rw-r--r--docs/DiagnosticsReference.rst1526
-rw-r--r--docs/ReleaseNotes.rst197
-rw-r--r--lib/Driver/ToolChains/Clang.cpp3
3 files changed, 1029 insertions, 697 deletions
diff --git a/docs/DiagnosticsReference.rst b/docs/DiagnosticsReference.rst
index 734a45902484..7ff94334ecf3 100644
--- a/docs/DiagnosticsReference.rst
+++ b/docs/DiagnosticsReference.rst
@@ -207,17 +207,6 @@ This diagnostic is enabled by default.
Controls `-Wpointer-bool-conversion`_, `-Wstring-compare`_, `-Wtautological-pointer-compare`_.
--Waddress-of-array-temporary
-----------------------------
-This diagnostic is enabled by default.
-
-**Diagnostic text:**
-
-+---------------------------------------------------------------------------------------------------------------------------------------------+
-|:warning:`warning:` |nbsp| :diagtext:`pointer is initialized by a temporary array, which will be destroyed at the end of the full-expression`|
-+---------------------------------------------------------------------------------------------------------------------------------------------+
-
-
-Waddress-of-packed-member
--------------------------
This diagnostic is enabled by default.
@@ -244,21 +233,6 @@ This diagnostic is an error by default, but the flag ``-Wno-address-of-temporary
------------------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
--Waligned-allocation-unavailable
---------------------------------
-This diagnostic is an error by default, but the flag ``-Wno-aligned-allocation-unavailable`` can be used to disable the error.
-
-**Diagnostic text:**
-
-+--------------------------------------------------+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-|:error:`error:` |nbsp| :diagtext:`aligned` |nbsp| |+------------------------+| |nbsp| :diagtext:`function of type '`:placeholder:`B`:diagtext:`' is only available on` |nbsp| :placeholder:`C` |nbsp| :placeholder:`D` |nbsp| :diagtext:`or newer`|
-| ||:diagtext:`allocation` || |
-| |+------------------------+| |
-| ||:diagtext:`deallocation`|| |
-| |+------------------------+| |
-+--------------------------------------------------+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-
-
-Wall
-----
Some of the diagnostics controlled by this flag are enabled by default.
@@ -473,6 +447,17 @@ This diagnostic is enabled by default.
+-----------------------------------------------------------------------------------------------------------------------------+
+-Wargument-outside-range
+------------------------
+This diagnostic is an error by default, but the flag ``-Wno-argument-outside-range`` can be used to disable the error.
+
+**Diagnostic text:**
+
++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+|:error:`error:` |nbsp| :diagtext:`argument value` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is outside the valid range \[`:placeholder:`B`:diagtext:`,` |nbsp| :placeholder:`C`:diagtext:`\]`|
++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+
+
-Warray-bounds
--------------
This diagnostic is enabled by default.
@@ -581,6 +566,28 @@ This diagnostic is enabled by default.
+-------------------------------------------------------------------------------------------------------------------+
+-Watimport-in-framework-header
+------------------------------
+This diagnostic is enabled by default.
+
+**Diagnostic text:**
+
++------------------------------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`use of '@import' in framework header is discouraged, including this header requires -fmodules`|
++------------------------------------------------------------------------------------------------------------------------------------+
+
+
+-Watomic-alignment
+------------------
+This diagnostic is enabled by default.
+
+**Diagnostic text:**
+
++---------------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`misaligned or large atomic operation may incur significant performance penalty`|
++---------------------------------------------------------------------------------------------------------------------+
+
+
-Watomic-memory-ordering
------------------------
This diagnostic is enabled by default.
@@ -690,6 +697,16 @@ This diagnostic is enabled by default.
|:warning:`warning:` |nbsp| :diagtext:`'unavailable' availability overrides all other availability information`|
+--------------------------------------------------------------------------------------------------------------+
++------------------------------------------------------------------------------+----------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`ignoring availability attribute` |nbsp| |+--------------------------------------+|
+| ||:diagtext:`on '+load' method` ||
+| |+--------------------------------------+|
+| ||:diagtext:`with constructor attribute`||
+| |+--------------------------------------+|
+| ||:diagtext:`with destructor attribute` ||
+| |+--------------------------------------+|
++------------------------------------------------------------------------------+----------------------------------------+
+
+------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`unknown platform` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in availability macro`|
+------------------------------------------------------------------------------------------------------------------------+
@@ -779,31 +796,44 @@ Also controls `-Wc++98-compat-bind-to-temporary-copy`_.
| |+---------------------+|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+
-+--------------------------------------------------------------------+-----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+
-|:warning:`warning:` |nbsp| :diagtext:`no viable constructor` |nbsp| |+---------------------------------------+| |nbsp| :diagtext:`of type` |nbsp| :placeholder:`B`:diagtext:`; C++98 requires a copy constructor when binding a reference to a temporary`|
-| ||:diagtext:`copying variable` || |
-| |+---------------------------------------+| |
-| ||:diagtext:`copying parameter` || |
-| |+---------------------------------------+| |
-| ||:diagtext:`returning object` || |
-| |+---------------------------------------+| |
-| ||:diagtext:`throwing object` || |
-| |+---------------------------------------+| |
-| ||:diagtext:`copying member subobject` || |
-| |+---------------------------------------+| |
-| ||:diagtext:`copying array element` || |
-| |+---------------------------------------+| |
-| ||:diagtext:`allocating object` || |
-| |+---------------------------------------+| |
-| ||:diagtext:`copying temporary` || |
-| |+---------------------------------------+| |
-| ||:diagtext:`initializing base subobject`|| |
-| |+---------------------------------------+| |
-| ||:diagtext:`initializing vector element`|| |
-| |+---------------------------------------+| |
-| ||:diagtext:`capturing value` || |
-| |+---------------------------------------+| |
-+--------------------------------------------------------------------+-----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+
++--------------------------------------------------------------------+------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`no viable constructor` |nbsp| |+----------------------------------------------------+| |nbsp| :diagtext:`of type` |nbsp| :placeholder:`B`:diagtext:`; C++98 requires a copy constructor when binding a reference to a temporary`|
+| ||:diagtext:`copying variable` || |
+| |+----------------------------------------------------+| |
+| ||:diagtext:`copying parameter` || |
+| |+----------------------------------------------------+| |
+| ||:diagtext:`returning object` || |
+| |+----------------------------------------------------+| |
+| ||:diagtext:`initializing statement expression result`|| |
+| |+----------------------------------------------------+| |
+| ||:diagtext:`throwing object` || |
+| |+----------------------------------------------------+| |
+| ||:diagtext:`copying member subobject` || |
+| |+----------------------------------------------------+| |
+| ||:diagtext:`copying array element` || |
+| |+----------------------------------------------------+| |
+| ||:diagtext:`allocating object` || |
+| |+----------------------------------------------------+| |
+| ||:diagtext:`copying temporary` || |
+| |+----------------------------------------------------+| |
+| ||:diagtext:`initializing base subobject` || |
+| |+----------------------------------------------------+| |
+| ||:diagtext:`initializing vector element` || |
+| |+----------------------------------------------------+| |
+| ||:diagtext:`capturing value` || |
+| |+----------------------------------------------------+| |
++--------------------------------------------------------------------+------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+
+
+
+-Wbinding-in-condition
+----------------------
+This diagnostic is enabled by default.
+
+**Diagnostic text:**
+
++--------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`ISO C++17 does not permit structured binding declaration in a condition`|
++--------------------------------------------------------------------------------------------------------------+
-Wbitfield-constant-conversion
@@ -1180,28 +1210,6 @@ Also controls `-Wc++11-extra-semi`_, `-Wc++11-inline-namespace`_, `-Wc++11-long-
|:warning:`warning:` |nbsp| :diagtext:`default template arguments for a function template are a C++11 extension`|
+---------------------------------------------------------------------------------------------------------------+
-+-------------------------------------------------------------------+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-|:warning:`warning:` |nbsp| :diagtext:`first declaration of` |nbsp| |+-------------------------------------+| |nbsp| :diagtext:`specialization of` |nbsp| :placeholder:`B` |nbsp| :diagtext:`outside namespace` |nbsp| :placeholder:`C` |nbsp| :diagtext:`is a C++11 extension`|
-| ||:diagtext:`class template` || |
-| |+-------------------------------------+| |
-| ||:diagtext:`class template partial` || |
-| |+-------------------------------------+| |
-| ||:diagtext:`variable template` || |
-| |+-------------------------------------+| |
-| ||:diagtext:`variable template partial`|| |
-| |+-------------------------------------+| |
-| ||:diagtext:`function template` || |
-| |+-------------------------------------+| |
-| ||:diagtext:`member function` || |
-| |+-------------------------------------+| |
-| ||:diagtext:`static data member` || |
-| |+-------------------------------------+| |
-| ||:diagtext:`member class` || |
-| |+-------------------------------------+| |
-| ||:diagtext:`member enumeration` || |
-| |+-------------------------------------+| |
-+-------------------------------------------------------------------+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-
+------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'typename' occurs outside of a template`|
+------------------------------------------------------------------------------+
@@ -1402,6 +1410,10 @@ Some of the diagnostics controlled by this flag are enabled by default.
**Diagnostic text:**
++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`ISO C++ standards before C++17 do not allow new expression for type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to use list-initialization`|
++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+
+------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`constexpr if is a C++17 extension`|
+------------------------------------------------------------------------+
@@ -1501,8 +1513,14 @@ Synonym for `-Wc++17-extensions`_.
-Wc++2a-compat
--------------
+Some of the diagnostics controlled by this flag are enabled by default.
+
**Diagnostic text:**
++------------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`'<=>' is a single token in C++2a; add a space to avoid a change in behavior`|
++------------------------------------------------------------------------------------------------------------------+
+
+-------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' is a keyword in C++2a`|
+-------------------------------------------------------------------------------------------+
@@ -1544,6 +1562,14 @@ Some of the diagnostics controlled by this flag are enabled by default.
|:warning:`warning:` |nbsp| :diagtext:`explicit capture of 'this' with a capture default of '=' is incompatible with C++ standards before C++2a`|
+-----------------------------------------------------------------------------------------------------------------------------------------------+
++-----------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`'<=>' operator is incompatible with C++ standards before C++2a`|
++-----------------------------------------------------------------------------------------------------+
+
++----------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`'char8\_t' type specifier is incompatible with C++ standards before C++20`|
++----------------------------------------------------------------------------------------------------------------+
+
-Wc++98-c++11-c++14-c++17-compat-pedantic
-----------------------------------------
@@ -1855,7 +1881,7 @@ Also controls `-Wc++98-c++11-c++14-c++17-compat`_, `-Wc++98-c++11-c++14-compat`_
+---------------------------+------------------------------+------------------------------------------------------------------------------------------------+--------------------------------------+----------------------------------------------+
|:warning:`warning:` |nbsp| |+----------------------------+| |nbsp| :diagtext:`member` |nbsp| :placeholder:`B` |nbsp| :diagtext:`with a non-trivial` |nbsp| |+------------------------------------+| |nbsp| :diagtext:`is incompatible with C++98`|
-| ||:diagtext:`anonymous struct`|| ||:diagtext:`constructor` || |
+| ||:diagtext:`anonymous struct`|| ||:diagtext:`default constructor` || |
| |+----------------------------+| |+------------------------------------+| |
| ||:diagtext:`union` || ||:diagtext:`copy constructor` || |
| |+----------------------------+| |+------------------------------------+| |
@@ -1949,28 +1975,6 @@ Also controls `-Wc++98-c++11-c++14-c++17-compat`_, `-Wc++98-c++11-c++14-compat`_
|:warning:`warning:` |nbsp| :diagtext:`default template arguments for a function template are incompatible with C++98`|
+---------------------------------------------------------------------------------------------------------------------+
-+---------------------------+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-|:warning:`warning:` |nbsp| |+-------------------------------------+| |nbsp| :diagtext:`specialization of` |nbsp| :placeholder:`B` |nbsp| :diagtext:`outside namespace` |nbsp| :placeholder:`C` |nbsp| :diagtext:`is incompatible with C++98`|
-| ||:diagtext:`class template` || |
-| |+-------------------------------------+| |
-| ||:diagtext:`class template partial` || |
-| |+-------------------------------------+| |
-| ||:diagtext:`variable template` || |
-| |+-------------------------------------+| |
-| ||:diagtext:`variable template partial`|| |
-| |+-------------------------------------+| |
-| ||:diagtext:`function template` || |
-| |+-------------------------------------+| |
-| ||:diagtext:`member function` || |
-| |+-------------------------------------+| |
-| ||:diagtext:`static data member` || |
-| |+-------------------------------------+| |
-| ||:diagtext:`member class` || |
-| |+-------------------------------------+| |
-| ||:diagtext:`member enumeration` || |
-| |+-------------------------------------+| |
-+---------------------------+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-
+----------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`trailing return types are incompatible with C++98`|
+----------------------------------------------------------------------------------------+
@@ -2022,29 +2026,42 @@ Also controls `-Wc++98-c++11-c++14-c++17-compat`_, `-Wc++98-c++11-c++14-compat`_
-------------------------------------
**Diagnostic text:**
-+---------------------------+-----------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------+----------------------------+
-|:warning:`warning:` |nbsp| |+---------------------------------------+| |nbsp| :diagtext:`of type` |nbsp| :placeholder:`C` |nbsp| :diagtext:`when binding a reference to a temporary would` |nbsp| |+----------------------------------------------+| |nbsp| :diagtext:`in C++98`|
-| ||:diagtext:`copying variable` || ||:diagtext:`invoke an inaccessible constructor`|| |
-| |+---------------------------------------+| |+----------------------------------------------+| |
-| ||:diagtext:`copying parameter` || ||:diagtext:`find no viable constructor` || |
-| |+---------------------------------------+| |+----------------------------------------------+| |
-| ||:diagtext:`returning object` || ||:diagtext:`find ambiguous constructors` || |
-| |+---------------------------------------+| |+----------------------------------------------+| |
-| ||:diagtext:`throwing object` || ||:diagtext:`invoke a deleted constructor` || |
-| |+---------------------------------------+| |+----------------------------------------------+| |
-| ||:diagtext:`copying member subobject` || | | |
-| |+---------------------------------------+| | | |
-| ||:diagtext:`copying array element` || | | |
-| |+---------------------------------------+| | | |
-| ||:diagtext:`allocating object` || | | |
-| |+---------------------------------------+| | | |
-| ||:diagtext:`copying temporary` || | | |
-| |+---------------------------------------+| | | |
-| ||:diagtext:`initializing base subobject`|| | | |
-| |+---------------------------------------+| | | |
-| ||:diagtext:`initializing vector element`|| | | |
-| |+---------------------------------------+| | | |
-+---------------------------+-----------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------+----------------------------+
++---------------------------+------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------+----------------------------+
+|:warning:`warning:` |nbsp| |+----------------------------------------------------+| |nbsp| :diagtext:`of type` |nbsp| :placeholder:`C` |nbsp| :diagtext:`when binding a reference to a temporary would` |nbsp| |+----------------------------------------------+| |nbsp| :diagtext:`in C++98`|
+| ||:diagtext:`copying variable` || ||:diagtext:`invoke an inaccessible constructor`|| |
+| |+----------------------------------------------------+| |+----------------------------------------------+| |
+| ||:diagtext:`copying parameter` || ||:diagtext:`find no viable constructor` || |
+| |+----------------------------------------------------+| |+----------------------------------------------+| |
+| ||:diagtext:`returning object` || ||:diagtext:`find ambiguous constructors` || |
+| |+----------------------------------------------------+| |+----------------------------------------------+| |
+| ||:diagtext:`initializing statement expression result`|| ||:diagtext:`invoke a deleted constructor` || |
+| |+----------------------------------------------------+| |+----------------------------------------------+| |
+| ||:diagtext:`throwing object` || | | |
+| |+----------------------------------------------------+| | | |
+| ||:diagtext:`copying member subobject` || | | |
+| |+----------------------------------------------------+| | | |
+| ||:diagtext:`copying array element` || | | |
+| |+----------------------------------------------------+| | | |
+| ||:diagtext:`allocating object` || | | |
+| |+----------------------------------------------------+| | | |
+| ||:diagtext:`copying temporary` || | | |
+| |+----------------------------------------------------+| | | |
+| ||:diagtext:`initializing base subobject` || | | |
+| |+----------------------------------------------------+| | | |
+| ||:diagtext:`initializing vector element` || | | |
+| |+----------------------------------------------------+| | | |
+| ||:diagtext:`capturing value` || | | |
+| |+----------------------------------------------------+| | | |
++---------------------------+------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------+----------------------------+
+
+
+-Wc++98-compat-extra-semi
+-------------------------
+**Diagnostic text:**
+
++-------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`extra ';' outside of a function is incompatible with C++98`|
++-------------------------------------------------------------------------------------------------+
-Wc++98-compat-local-type-template-args
@@ -2058,7 +2075,7 @@ Also controls `-Wc++98-c++11-c++14-c++17-compat`_, `-Wc++98-c++11-c++14-compat`_
-Wc++98-compat-pedantic
-----------------------
-Also controls `-Wc++98-c++11-c++14-c++17-compat-pedantic`_, `-Wc++98-c++11-c++14-compat-pedantic`_, `-Wc++98-c++11-compat-pedantic`_, `-Wc++98-compat`_, `-Wc++98-compat-bind-to-temporary-copy`_.
+Also controls `-Wc++98-c++11-c++14-c++17-compat-pedantic`_, `-Wc++98-c++11-c++14-compat-pedantic`_, `-Wc++98-c++11-compat-pedantic`_, `-Wc++98-compat`_, `-Wc++98-compat-bind-to-temporary-copy`_, `-Wc++98-compat-extra-semi`_.
**Diagnostic text:**
@@ -2098,10 +2115,6 @@ Also controls `-Wc++98-c++11-c++14-c++17-compat-pedantic`_, `-Wc++98-c++11-c++14
|:warning:`warning:` |nbsp| :diagtext:`#line number greater than 32767 is incompatible with C++98`|
+-------------------------------------------------------------------------------------------------+
-+-------------------------------------------------------------------------------------------------+
-|:warning:`warning:` |nbsp| :diagtext:`extra ';' outside of a function is incompatible with C++98`|
-+-------------------------------------------------------------------------------------------------+
-
+----------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`variadic macros are incompatible with C++98`|
+----------------------------------------------------------------------------------+
@@ -2275,6 +2288,29 @@ This diagnostic is enabled by default.
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+-Wcast-qual-unrelated
+---------------------
+This diagnostic is enabled by default.
+
+**Diagnostic text:**
+
++---------------------------------------------------------------------+-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`ISO C++ does not allow` |nbsp| |+---------------------------------+| |nbsp| :diagtext:`from` |nbsp| :placeholder:`B` |nbsp| :diagtext:`to` |nbsp| :placeholder:`C` |nbsp| :diagtext:`because it casts away qualifiers, even though the source and destination types are unrelated`|
+| ||:diagtext:`const\_cast` || |
+| |+---------------------------------+| |
+| ||:diagtext:`static\_cast` || |
+| |+---------------------------------+| |
+| ||:diagtext:`reinterpret\_cast` || |
+| |+---------------------------------+| |
+| ||:diagtext:`dynamic\_cast` || |
+| |+---------------------------------+| |
+| ||:diagtext:`C-style cast` || |
+| |+---------------------------------+| |
+| ||:diagtext:`functional-style cast`|| |
+| |+---------------------------------+| |
++---------------------------------------------------------------------+-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+
+
-Wchar-align
------------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
@@ -2318,6 +2354,10 @@ This diagnostic is enabled by default.
|:warning:`warning:` |nbsp| :diagtext:`support for '`:placeholder:`A`:diagtext:`' without a corresponding /FI flag not implemented yet; flag ignored`|
+----------------------------------------------------------------------------------------------------------------------------------------------------+
++-----------------------------------------------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`definition of macro` |nbsp| :placeholder:`A` |nbsp| :diagtext:`does not match definition in precompiled header`|
++-----------------------------------------------------------------------------------------------------------------------------------------------------+
+
-Wclass-varargs
---------------
@@ -2528,6 +2568,10 @@ Also controls `-Wbitfield-enum-conversion`_, `-Wbool-conversion`_, `-Wconstant-c
|:warning:`warning:` |nbsp| :diagtext:`implicit conversion loses floating-point precision:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`implicit conversion when assigning computation result loses floating-point precision:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`|
++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+
+---------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`implicit conversion loses integer precision:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`|
+---------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -2637,6 +2681,55 @@ Some of the diagnostics controlled by this flag are enabled by default.
+---------------------------------------------------------------------------------------------------------------------------------------+--------------------+----------------------------------------------------------------------------+
+-Wdangling
+----------
+This diagnostic is enabled by default.
+
+Also controls `-Wdangling-field`_, `-Wdangling-initializer-list`_, `-Wreturn-stack-address`_.
+
+**Diagnostic text:**
+
++---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------+----------------------------+---------------------------------------------------------------+
+|:warning:`warning:` |nbsp| |+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| |nbsp| |+--------------------------+|:diagtext:`will be destroyed at the end of the full-expression`|
+| ||+-----------------------------+---------------------------------------------------------+--------+------------------------------------------------------------------------+|| ||+------------------------+|| |
+| |||:diagtext:`temporary` |nbsp| |+-------------------------------------------------------+| |nbsp| |+----------------------------------------------------------------------+||| |||:placeholder:`D` |nbsp| ||| |
+| ||| ||:diagtext:`whose address is used as value of` || ||+-------------------------------+------------------------------------+|||| ||+------------------------+|| |
+| ||| |+-------------------------------------------------------+| |||+-----------------------------+|:diagtext:`member of local variable`||||| |+--------------------------+| |
+| ||| ||+--------------------------------+--------------------+|| |||| || ||||| || || |
+| ||| |||+------------------------------+|:diagtext:`bound to`||| |||+-----------------------------+| ||||| |+--------------------------+| |
+| ||| |||| || ||| ||||:diagtext:`reference` |nbsp| || ||||| | | |
+| ||| |||+------------------------------+| ||| |||+-----------------------------+| ||||| | | |
+| ||| ||||:diagtext:`implicitly` |nbsp| || ||| ||+-------------------------------+------------------------------------+|||| | | |
+| ||| |||+------------------------------+| ||| |+----------------------------------------------------------------------+||| | | |
+| ||| ||+--------------------------------+--------------------+|| ||+-------------------------+-----------------------+ |||| | | |
+| ||| |+-------------------------------------------------------+| |||:diagtext:`local` |nbsp| |+---------------------+| |||| | | |
+| ||| | | ||| ||:diagtext:`variable` || |||| | | |
+| ||| | | ||| |+---------------------+| |||| | | |
+| ||| | | ||| ||:diagtext:`reference`|| |||| | | |
+| ||| | | ||| |+---------------------+| |||| | | |
+| ||| | | ||+-------------------------+-----------------------+ |||| | | |
+| ||| | | |+----------------------------------------------------------------------+||| | | |
+| ||+-----------------------------+---------------------------------------------------------+--------+------------------------------------------------------------------------+|| | | |
+| |+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| | | |
+| ||+---------------------------------+----------------------------------------------------------+ || | | |
+| |||:diagtext:`array backing` |nbsp| |+--------------------------------------------------------+| || | | |
+| ||| ||:diagtext:`initializer list subobject of local variable`|| || | | |
+| ||| |+--------------------------------------------------------+| || | | |
+| ||| ||:diagtext:`local initializer list` || || | | |
+| ||| |+--------------------------------------------------------+| || | | |
+| ||+---------------------------------+----------------------------------------------------------+ || | | |
+| |+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| | | |
++---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------+----------------------------+---------------------------------------------------------------+
+
++---------------------------------------------------------------------------+-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+---------------------------+--------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`sorry, lifetime extension of` |nbsp| |+---------------------------------------------+| |nbsp| :diagtext:`created by aggregate initialization using default member initializer is not supported; lifetime of` |nbsp| |+-------------------------+| |nbsp| :diagtext:`will end at the end of the full-expression`|
+| ||:diagtext:`temporary` || ||:diagtext:`temporary` || |
+| |+---------------------------------------------+| |+-------------------------+| |
+| ||:diagtext:`backing array of initializer list`|| ||:diagtext:`backing array`|| |
+| |+---------------------------------------------+| |+-------------------------+| |
++---------------------------------------------------------------------------+-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+---------------------------+--------------------------------------------------------------+
+
+
-Wdangling-else
---------------
This diagnostic is enabled by default.
@@ -2654,21 +2747,33 @@ This diagnostic is enabled by default.
**Diagnostic text:**
-+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
-|:warning:`warning:` |nbsp| :diagtext:`binding reference member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to stack allocated parameter` |nbsp| :placeholder:`B`|
-+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
++-------------------------------------------------------------------------------------------------------------------------------------+-----------------------+------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`binding reference member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to stack allocated` |nbsp| |+---------------------+| |nbsp| :placeholder:`B`|
+| ||:diagtext:`variable` || |
+| |+---------------------+| |
+| ||:diagtext:`parameter`|| |
+| |+---------------------+| |
++-------------------------------------------------------------------------------------------------------------------------------------+-----------------------+------------------------+
+
++---------------------------+--------------------------------------------------------+--------+----------------------------------+--------------------------------------------------+----------------------+------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| |+------------------------------------------------------+| |nbsp| |+--------------------------------+|:diagtext:`member` |nbsp| :placeholder:`A` |nbsp| |+--------------------+| |nbsp| :diagtext:`a temporary object whose lifetime is shorter than the lifetime of the constructed object`|
+| ||:diagtext:`reference` || || || ||:diagtext:`binds to`|| |
+| |+------------------------------------------------------+| |+--------------------------------+| |+--------------------+| |
+| ||:diagtext:`backing array for 'std::initializer\_list'`|| ||:diagtext:`subobject of` |nbsp| || ||:diagtext:`is` || |
+| |+------------------------------------------------------+| |+--------------------------------+| |+--------------------+| |
++---------------------------+--------------------------------------------------------+--------+----------------------------------+--------------------------------------------------+----------------------+------------------------------------------------------------------------------------------------------------+
-+----------------------------------------------------------------+----------------------------------+----------------------------------------------------------------------------------+
-|:warning:`warning:` |nbsp| :diagtext:`binding reference` |nbsp| |+--------------------------------+|:diagtext:`member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to a temporary value`|
-| || || |
-| |+--------------------------------+| |
-| ||:diagtext:`subobject of` |nbsp| || |
-| |+--------------------------------+| |
-+----------------------------------------------------------------+----------------------------------+----------------------------------------------------------------------------------+
++-----------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`initializing pointer member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`with the stack address of` |nbsp| |+---------------------+| |nbsp| :placeholder:`B`|
+| ||:diagtext:`variable` || |
+| |+---------------------+| |
+| ||:diagtext:`parameter`|| |
+| |+---------------------+| |
++-----------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+------------------------+
-+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-|:warning:`warning:` |nbsp| :diagtext:`initializing pointer member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`with the stack address of parameter` |nbsp| :placeholder:`B`|
-+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++--------------------------------------------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`temporary bound to reference member of allocated object will be destroyed at the end of the full-expression`|
++--------------------------------------------------------------------------------------------------------------------------------------------------+
-Wdangling-initializer-list
@@ -2677,13 +2782,13 @@ This diagnostic is enabled by default.
**Diagnostic text:**
-+-----------------------------------------------------------------------------------------------------------------+---------------------------------+
-|:warning:`warning:` |nbsp| :diagtext:`array backing the initializer list will be destroyed at the end of` |nbsp| |+-------------------------------+|
-| ||:diagtext:`the full-expression`||
-| |+-------------------------------+|
-| ||:diagtext:`the constructor` ||
-| |+-------------------------------+|
-+-----------------------------------------------------------------------------------------------------------------+---------------------------------+
++------------------------------------------------------------+----------------------------------------------------------------+-----------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`array backing` |nbsp| |+--------------------------------------------------------------+| |nbsp| :diagtext:`will be destroyed at the end of the full-expression`|
+| ||:diagtext:`initializer list subobject of the allocated object`|| |
+| |+--------------------------------------------------------------+| |
+| ||:diagtext:`the allocated initializer list` || |
+| |+--------------------------------------------------------------+| |
++------------------------------------------------------------+----------------------------------------------------------------+-----------------------------------------------------------------------+
-Wdate-time
@@ -2779,7 +2884,7 @@ Some of the diagnostics controlled by this flag are enabled by default.
------------
Some of the diagnostics controlled by this flag are enabled by default.
-Also controls `-Wdeprecated-attributes`_, `-Wdeprecated-declarations`_, `-Wdeprecated-dynamic-exception-spec`_, `-Wdeprecated-increment-bool`_, `-Wdeprecated-register`_, `-Wdeprecated-writable-strings`_.
+Also controls `-Wdeprecated-attributes`_, `-Wdeprecated-declarations`_, `-Wdeprecated-dynamic-exception-spec`_, `-Wdeprecated-increment-bool`_, `-Wdeprecated-register`_, `-Wdeprecated-this-capture`_, `-Wdeprecated-writable-strings`_.
**Diagnostic text:**
@@ -2957,6 +3062,15 @@ This diagnostic is enabled by default.
+-------------------------------------------------------------------------------------------------------------------+
+-Wdeprecated-this-capture
+-------------------------
+**Diagnostic text:**
+
++-------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`implicit capture of 'this' with a capture default of '=' is deprecated`|
++-------------------------------------------------------------------------------------------------------------+
+
+
-Wdeprecated-writable-strings
-----------------------------
Synonym for `-Wc++11-compat-deprecated-writable-strings`_.
@@ -3291,6 +3405,10 @@ This diagnostic is enabled by default.
|:warning:`warning:` |nbsp| :diagtext:`duplicate '`:placeholder:`A`:diagtext:`' declaration specifier`|
+-----------------------------------------------------------------------------------------------------+
++-------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`multiple identical address spaces specified for type`|
++-------------------------------------------------------------------------------------------+
+
+-----------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`duplicate '`:placeholder:`A`:diagtext:`' declaration specifier`|
+-----------------------------------------------------------------------------------------------------+
@@ -3540,6 +3658,21 @@ Some of the diagnostics controlled by this flag are enabled by default.
+-------------------------------------------------------------------------------------------------+
+-Wexperimental-isel
+-------------------
+This diagnostic is enabled by default.
+
+**Diagnostic text:**
+
++------------------------------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`-fexperimental-isel support for the '`:placeholder:`A`:diagtext:`' architecture is incomplete`|
++------------------------------------------------------------------------------------------------------------------------------------+
+
++----------------------------------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`-fexperimental-isel support is incomplete for this architecture at the current optimization level`|
++----------------------------------------------------------------------------------------------------------------------------------------+
+
+
-Wexplicit-initialize-call
--------------------------
This diagnostic is enabled by default.
@@ -3564,15 +3697,6 @@ This diagnostic is enabled by default.
+-------------------------------------------------------------------------------------------------------------------------------------+
--Wextended-offsetof
--------------------
-**Diagnostic text:**
-
-+--------------------------------------------------------------------------------------+
-|:warning:`warning:` |nbsp| :diagtext:`using extended field designator is an extension`|
-+--------------------------------------------------------------------------------------+
-
-
-Wextern-c-compat
-----------------
This diagnostic is enabled by default.
@@ -3625,7 +3749,7 @@ This diagnostic is enabled by default.
-Wextra-semi
------------
-Also controls `-Wc++11-extra-semi`_.
+Also controls `-Wc++11-extra-semi`_, `-Wc++98-compat-extra-semi`_.
**Diagnostic text:**
@@ -3722,9 +3846,13 @@ Also controls `-Wfloat-overflow-conversion`_, `-Wfloat-zero-conversion`_.
---------------------------
**Diagnostic text:**
-+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-|:warning:`warning:` |nbsp| :diagtext:`implicit conversion of out of range value from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`changes value from` |nbsp| :placeholder:`C` |nbsp| :diagtext:`to` |nbsp| :placeholder:`D`|
-+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`implicit conversion from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`changes value from` |nbsp| :placeholder:`C` |nbsp| :diagtext:`to` |nbsp| :placeholder:`D`|
++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+
++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`implicit conversion of out of range value from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is undefined`|
++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wfloat-zero-conversion
@@ -3960,6 +4088,14 @@ This diagnostic is enabled by default.
-----------------
**Diagnostic text:**
++---------------------------+----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| |+--------------------------------------------+| |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' should not be used as format arguments; add an explicit cast to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`instead`|
+| ||:diagtext:`values of type` || |
+| |+--------------------------------------------+| |
+| ||:diagtext:`enum values with underlying type`|| |
+| |+--------------------------------------------+| |
++---------------------------+----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+
+------------------------------------------------------------------------------------------------------------------------------------+-----------------------------+------------------------+
|:warning:`warning:` |nbsp| :diagtext:`format specifies type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`but the argument has` |nbsp| |+---------------------------+| |nbsp| :placeholder:`B`|
| ||:diagtext:`type` || |
@@ -4024,6 +4160,17 @@ The text of this diagnostic is not controlled by Clang.
+--------------------------------------------------------------------------------------------------------------------------------------+
+-Wframework-include-private-from-public
+---------------------------------------
+This diagnostic is enabled by default.
+
+**Diagnostic text:**
+
++-------------------------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`public framework header includes private framework header '`:placeholder:`A`:diagtext:`'`|
++-------------------------------------------------------------------------------------------------------------------------------+
+
+
-Wfunction-def-in-objc-container
--------------------------------
This diagnostic is enabled by default.
@@ -4035,6 +4182,21 @@ This diagnostic is enabled by default.
+--------------------------------------------------------------------------------------------------------+
+-Wfunction-multiversion
+-----------------------
+This diagnostic is enabled by default.
+
+**Diagnostic text:**
+
++-------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`body of cpu\_dispatch function will be ignored`|
++-------------------------------------------------------------------------------------+
+
++---------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`CPU list contains duplicate entries; attribute ignored`|
++---------------------------------------------------------------------------------------------+
+
+
-Wfuture-compat
---------------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
@@ -4073,6 +4235,14 @@ Some of the diagnostics controlled by this flag are enabled by default.
|:warning:`warning:` |nbsp| :diagtext:`GCC does not allow an attribute in this position on a function declaration`|
+-----------------------------------------------------------------------------------------------------------------+
++------------------------------------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`GCC does not allow the` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute to be written on a type`|
++------------------------------------------------------------------------------------------------------------------------------------------+
+
++-------------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`GCC does not allow variable declarations in for loop initializers before C99`|
++-------------------------------------------------------------------------------------------------------------------+
+
+----------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' is bound to current loop, GCC binds it to the enclosing loop`|
+----------------------------------------------------------------------------------------------------------------------------------+
@@ -4433,6 +4603,10 @@ This diagnostic is enabled by default.
**Diagnostic text:**
++--------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`'trivial\_abi' cannot be applied to` |nbsp| :placeholder:`A`|
++--------------------------------------------------------------------------------------------------+
+
+---------------------------+-------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| |+-----------------+| |nbsp| :diagtext:`will always resolve to` |nbsp| :placeholder:`A` |nbsp| :diagtext:`even if weak definition of` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is overridden`|
| ||:diagtext:`alias`|| |
@@ -4557,103 +4731,39 @@ This diagnostic is enabled by default.
|:warning:`warning:` |nbsp| :diagtext:`\_\_weak attribute cannot be specified on an automatic variable when ARC is not enabled`|
+------------------------------------------------------------------------------------------------------------------------------+
-+------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+
-|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute only applies to` |nbsp| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`functions` ||
-| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`unions` ||
-| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`variables and functions` ||
-| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`functions and global variables` ||
-| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`functions, variables, and Objective-C interfaces` ||
-| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`functions and methods` ||
-| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`parameters` ||
-| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`functions, methods and blocks` ||
-| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`functions, methods, and classes` ||
-| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`functions, methods, and parameters` ||
-| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`functions, methods, and global variables` ||
-| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`classes` ||
-| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`enums` ||
-| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`variables` ||
-| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`methods` ||
-| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`fields and global variables` ||
-| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`structs` ||
-| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`parameters and typedefs` ||
-| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`variables and typedefs` ||
-| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`thread-local variables` ||
-| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`variables and fields` ||
-| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`variables, data members and tag types` ||
-| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`types and namespaces` ||
-| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`Objective-C interfaces` ||
-| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`methods and properties` ||
-| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`functions, methods, and properties` ||
-| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`struct or union` ||
-| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`struct, union or class` ||
-| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`types` ||
-| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`Objective-C instance methods` ||
-| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`init methods of interface or class extension declarations` ||
-| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`variables, functions and classes` ||
-| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`functions, variables, classes, and Objective-C interfaces` ||
-| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`Objective-C protocols` ||
-| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`variables with static or thread storage duration` ||
-| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`functions, methods, properties, and global variables` ||
-| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`structs, unions, and typedefs` ||
-| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`structs and typedefs` ||
-| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`interface or protocol declarations` ||
-| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`kernel functions` ||
-| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`non-K&R-style functions` ||
-| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`variables, enums, fields and typedefs` ||
-| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`functions, methods, enums, and classes` ||
-| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`structs, classes, variables, functions, and inline namespaces` ||
-| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`variables, functions, methods, types, enumerations, enumerators, labels, and non-static data members`||
-| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`classes and enumerations` ||
-| |+----------------------------------------------------------------------------------------------------------------+|
-| ||:diagtext:`named declarations` ||
-| |+----------------------------------------------------------------------------------------------------------------+|
-+------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+
++------------------------------------------------------------------------------------------------+---------------------------------------------------+
+|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute only applies to` |nbsp| |+-------------------------------------------------+|
+| ||:diagtext:`functions` ||
+| |+-------------------------------------------------+|
+| ||:diagtext:`unions` ||
+| |+-------------------------------------------------+|
+| ||:diagtext:`variables and functions` ||
+| |+-------------------------------------------------+|
+| ||:diagtext:`functions and methods` ||
+| |+-------------------------------------------------+|
+| ||:diagtext:`functions, methods and blocks` ||
+| |+-------------------------------------------------+|
+| ||:diagtext:`functions, methods, and parameters` ||
+| |+-------------------------------------------------+|
+| ||:diagtext:`variables` ||
+| |+-------------------------------------------------+|
+| ||:diagtext:`variables and fields` ||
+| |+-------------------------------------------------+|
+| ||:diagtext:`variables, data members and tag types`||
+| |+-------------------------------------------------+|
+| ||:diagtext:`types and namespaces` ||
+| |+-------------------------------------------------+|
+| ||:diagtext:`variables, functions and classes` ||
+| |+-------------------------------------------------+|
+| ||:diagtext:`kernel functions` ||
+| |+-------------------------------------------------+|
+| ||:diagtext:`non-K&R-style functions` ||
+| |+-------------------------------------------------+|
++------------------------------------------------------------------------------------------------+---------------------------------------------------+
+
++----------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute only applies to` |nbsp| :placeholder:`B`|
++----------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`attribute` |nbsp| :placeholder:`A` |nbsp| :diagtext:`ignored, because it cannot be applied to omitted return type`|
@@ -4741,6 +4851,10 @@ This diagnostic is enabled by default.
|:warning:`warning:` |nbsp| :diagtext:`unknown attribute '`:placeholder:`A`:diagtext:`'`|
+---------------------------------------------------------------------------------------+
++-------------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`'nocf\_check' attribute ignored; use -fcf-protection to enable the attribute`|
++-------------------------------------------------------------------------------------------------------------------+
+
+------------------------------------------------------------------------------------------------+-----------------------------------+------------------------------+
|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute only applies to` |nbsp| |+---------------------------------+| |nbsp| :diagtext:`parameters`|
| ||:diagtext:`Objective-C object` || |
@@ -4765,6 +4879,18 @@ This diagnostic is enabled by default.
|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`attribute is deprecated and ignored in OpenCL version` |nbsp| :placeholder:`B`|
+--------------------------------------------------------------------------------------------------------------------------------------------+
++---------------------------------------------------------------------------------------------------------------+----------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`RISC-V 'interrupt' attribute only applies to functions that have` |nbsp| |+--------------------------------+|
+| ||:diagtext:`no parameters` ||
+| |+--------------------------------+|
+| ||:diagtext:`a 'void' return type`||
+| |+--------------------------------+|
++---------------------------------------------------------------------------------------------------------------+----------------------------------+
+
++----------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`repeated RISC-V 'interrupt' attribute`|
++----------------------------------------------------------------------------+
+
+---------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+-------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| |+---------------------+| |nbsp| :diagtext:`of field` |nbsp| :placeholder:`B` |nbsp| :diagtext:`(`:placeholder:`C` |nbsp| :diagtext:`bits) does not match the` |nbsp| |+---------------------+| |nbsp| :diagtext:`of the first field in transparent union; transparent\_union attribute ignored`|
| ||:diagtext:`alignment`|| ||:diagtext:`alignment`|| |
@@ -4803,13 +4929,13 @@ This diagnostic is enabled by default.
|:warning:`warning:` |nbsp| :diagtext:`\_\_declspec attribute` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is not supported`|
+-------------------------------------------------------------------------------------------------------------------------+
-+-------------------------------------------------------+-------------------------+----------------------------------+---------------------------------------------------------------------------------+
-|:warning:`warning:` |nbsp| :diagtext:`ignoring` |nbsp| |+-----------------------+|+--------------------------------+| |nbsp| :diagtext:`'`:placeholder:`C`:diagtext:`' in the target attribute string`|
-| ||:diagtext:`unsupported`||| || |
-| |+-----------------------+|+--------------------------------+| |
-| ||:diagtext:`duplicate` ||| |nbsp| :diagtext:`architecture`|| |
-| |+-----------------------+|+--------------------------------+| |
-+-------------------------------------------------------+-------------------------+----------------------------------+---------------------------------------------------------------------------------+
++---------------------------+-------------------------+----------------------------------+---------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| |+-----------------------+|+--------------------------------+| |nbsp| :diagtext:`'`:placeholder:`C`:diagtext:`' in the 'target' attribute string; 'target' attribute ignored`|
+| ||:diagtext:`unsupported`||| || |
+| |+-----------------------+|+--------------------------------+| |
+| ||:diagtext:`duplicate` ||| |nbsp| :diagtext:`architecture`|| |
+| |+-----------------------+|+--------------------------------+| |
++---------------------------+-------------------------+----------------------------------+---------------------------------------------------------------------------------------------------------------+
-Wignored-optimization-argument
@@ -4842,11 +4968,22 @@ This diagnostic is enabled by default.
+------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+
+-Wignored-pragma-optimize
+-------------------------
+This diagnostic is enabled by default.
+
+**Diagnostic text:**
+
++--------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`'#pragma optimize' is not supported`|
++--------------------------------------------------------------------------+
+
+
-Wignored-pragmas
-----------------
This diagnostic is enabled by default.
-Also controls `-Wignored-pragma-intrinsic`_.
+Also controls `-Wignored-pragma-intrinsic`_, `-Wignored-pragma-optimize`_.
**Diagnostic text:**
@@ -4894,6 +5031,10 @@ Also controls `-Wignored-pragma-intrinsic`_.
|:warning:`warning:` |nbsp| :diagtext:`missing ':' or ')' after` |nbsp| :placeholder:`A` |nbsp| :diagtext:`- ignoring`|
+---------------------------------------------------------------------------------------------------------------------+
++----------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`expected ',' in '#pragma` |nbsp| :placeholder:`A`:diagtext:`'`|
++----------------------------------------------------------------------------------------------------+
+
+---------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`expected identifier in '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`|
+---------------------------------------------------------------------------------------------------------------------+
@@ -4942,6 +5083,10 @@ Also controls `-Wignored-pragma-intrinsic`_.
|:warning:`warning:` |nbsp| :diagtext:`expected push, pop or a string literal for the section name in '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`|
+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
++--------------------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`expected string literal in '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignoring`|
++--------------------------------------------------------------------------------------------------------------------------+
+
+---------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`extra tokens at end of '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`|
+---------------------------------------------------------------------------------------------------------------------+
@@ -4958,10 +5103,30 @@ Also controls `-Wignored-pragma-intrinsic`_.
|:warning:`warning:` |nbsp| :diagtext:`unknown action for '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`|
+-----------------------------------------------------------------------------------------------------------------+
++------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`unexpected argument '`:placeholder:`A`:diagtext:`' to '#pragma` |nbsp| :placeholder:`B`:diagtext:`'`|+------------------------------------------------+|
+| || ||
+| |+------------------------------------------------+|
+| ||+----------------------------------------------+||
+| |||:diagtext:`; expected` |nbsp| :placeholder:`D`|||
+| ||+----------------------------------------------+||
+| |+------------------------------------------------+|
++------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------+
+
+------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`unknown action '`:placeholder:`B`:diagtext:`' for '#pragma` |nbsp| :placeholder:`A`:diagtext:`' - ignored`|
+------------------------------------------------------------------------------------------------------------------------------------------------+
++--------------------------------------------------------------------------------------------------------+--------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`missing argument to '#pragma` |nbsp| :placeholder:`A`:diagtext:`'`|+------------------------------------------------+|
+| || ||
+| |+------------------------------------------------+|
+| ||+----------------------------------------------+||
+| |||:diagtext:`; expected` |nbsp| :placeholder:`C`|||
+| ||+----------------------------------------------+||
+| |+------------------------------------------------+|
++--------------------------------------------------------------------------------------------------------+--------------------------------------------------+
+
+----------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`incorrect use of '#pragma ms\_struct on\|off' - ignored`|
+----------------------------------------------------------------------------------------------+
@@ -5039,13 +5204,13 @@ Some of the diagnostics controlled by this flag are enabled by default.
|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' qualifier on omitted return type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`has no effect`|
+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
-+------------------------------------------------------------------------------------+---------------+------------------------------------------+-------------------+-----------------------------+
-|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' type qualifier`|+-------------+| |nbsp| :diagtext:`on return type` |nbsp| |+-----------------+| |nbsp| :diagtext:`no effect`|
-| || || ||:diagtext:`:has` || |
-| |+-------------+| |+-----------------+| |
-| ||:diagtext:`s`|| ||:diagtext:`:have`|| |
-| |+-------------+| |+-----------------+| |
-+------------------------------------------------------------------------------------+---------------+------------------------------------------+-------------------+-----------------------------+
++------------------------------------------------------------------------------------+---------------+------------------------------------------+------------------+-----------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' type qualifier`|+-------------+| |nbsp| :diagtext:`on return type` |nbsp| |+----------------+| |nbsp| :diagtext:`no effect`|
+| || || ||:diagtext:`has` || |
+| |+-------------+| |+----------------+| |
+| ||:diagtext:`s`|| ||:diagtext:`have`|| |
+| |+-------------+| |+----------------+| |
++------------------------------------------------------------------------------------+---------------+------------------------------------------+------------------+-----------------------------+
+---------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`'`:placeholder:`A`:diagtext:`' qualifier on function type` |nbsp| :placeholder:`B` |nbsp| :diagtext:`has no effect`|
@@ -5295,6 +5460,10 @@ This diagnostic is an error by default, but the flag ``-Wno-incompatible-ms-stru
|:error:`error:` |nbsp| :diagtext:`ms\_struct may not produce Microsoft-compatible layouts for classes with base classes or virtual functions`|
+---------------------------------------------------------------------------------------------------------------------------------------------+
++------------------------------------------------------------------------------------------------------------------------------------------------------------+
+|:error:`error:` |nbsp| :diagtext:`ms\_struct may not produce Microsoft-compatible layouts with fundamental data types with sizes that aren't a power of two`|
++------------------------------------------------------------------------------------------------------------------------------------------------------------+
+
-Wincompatible-pointer-types
----------------------------
@@ -5388,6 +5557,17 @@ This diagnostic is enabled by default.
+------------------------------------------------------------------------------------------------------------------------------------+
+-Wincomplete-framework-module-declaration
+-----------------------------------------
+This diagnostic is enabled by default.
+
+**Diagnostic text:**
+
++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`skipping '`:placeholder:`A`:diagtext:`' because module declaration of '`:placeholder:`B`:diagtext:`' lacks the 'framework' qualifier`|
++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+
+
-Wincomplete-implementation
---------------------------
This diagnostic is enabled by default.
@@ -5900,6 +6080,10 @@ This diagnostic is enabled by default.
|:warning:`warning:` |nbsp| :diagtext:`implicit conversion from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`changes value from` |nbsp| :placeholder:`C` |nbsp| :diagtext:`to` |nbsp| :placeholder:`D`|
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`implicit conversion of out of range value from` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is undefined`|
++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+
-Wliteral-range
---------------
@@ -6065,6 +6249,21 @@ This diagnostic is enabled by default.
+----------------------------------------------------------------+---------------------------------------+------------------------------------------------------+
+-Wmemset-transposed-args
+------------------------
+This diagnostic is enabled by default.
+
+**Diagnostic text:**
+
++---------------------------+-----------------------------------------------------+---------------------------------------------------------------+
+|:warning:`warning:` |nbsp| |+---------------------------------------------------+|:diagtext:`; did you mean to transpose the last two arguments?`|
+| ||:diagtext:`'size' argument to memset is '0'` || |
+| |+---------------------------------------------------+| |
+| ||:diagtext:`setting buffer to a 'sizeof' expression`|| |
+| |+---------------------------------------------------+| |
++---------------------------+-----------------------------------------------------+---------------------------------------------------------------+
+
+
-Wmemsize-comparison
--------------------
This diagnostic is enabled by default.
@@ -6333,6 +6532,17 @@ This diagnostic is enabled by default.
+----------------------------------------------------------------------------------------------------------+
+-Wmicrosoft-inaccessible-base
+-----------------------------
+This diagnostic is enabled by default.
+
+**Diagnostic text:**
+
++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`accessing inaccessible direct base` |nbsp| :placeholder:`A` |nbsp| :diagtext:`of` |nbsp| :placeholder:`B` |nbsp| :diagtext:`is a Microsoft extension`|
++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+
+
-Wmicrosoft-include
-------------------
This diagnostic is enabled by default.
@@ -6400,10 +6610,6 @@ This diagnostic is enabled by default.
|:warning:`warning:` |nbsp| :diagtext:`use of identifier` |nbsp| :placeholder:`A` |nbsp| :diagtext:`found via unqualified lookup into dependent bases of class templates is a Microsoft extension`|
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-+--------------------------------------------------------------------------------------------------------------------------------------------------------+
-|:warning:`warning:` |nbsp| :diagtext:`explicit specialization of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`within class scope is a Microsoft extension`|
-+--------------------------------------------------------------------------------------------------------------------------------------------------------+
-
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`using the undeclared type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`as a default template argument is a Microsoft extension`|
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -6412,27 +6618,27 @@ This diagnostic is enabled by default.
|:warning:`warning:` |nbsp| :diagtext:`non-type template argument containing a dereference operation is a Microsoft extension`|
+-----------------------------------------------------------------------------------------------------------------------------+
-+---------------------------+---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-|:warning:`warning:` |nbsp| |+-------------------------------------+| |nbsp| :diagtext:`specialization of` |nbsp| :placeholder:`B` |nbsp| :diagtext:`outside namespace enclosing` |nbsp| :placeholder:`C` |nbsp| :diagtext:`is a Microsoft extension`|
-| ||:diagtext:`class template` || |
-| |+-------------------------------------+| |
-| ||:diagtext:`class template partial` || |
-| |+-------------------------------------+| |
-| ||:diagtext:`variable template` || |
-| |+-------------------------------------+| |
-| ||:diagtext:`variable template partial`|| |
-| |+-------------------------------------+| |
-| ||:diagtext:`function template` || |
-| |+-------------------------------------+| |
-| ||:diagtext:`member function` || |
-| |+-------------------------------------+| |
-| ||:diagtext:`static data member` || |
-| |+-------------------------------------+| |
-| ||:diagtext:`member class` || |
-| |+-------------------------------------+| |
-| ||:diagtext:`member enumeration` || |
-| |+-------------------------------------+| |
-+---------------------------+---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++---------------------------+---------------------------------------+-----------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------+--------------------------------------------+
+|:warning:`warning:` |nbsp| |+-------------------------------------+| |nbsp| :diagtext:`specialization of` |nbsp| :placeholder:`B` |nbsp| :diagtext:`not in` |nbsp| |+----------------------------------------------------------------------------------------+| |nbsp| :diagtext:`is a Microsoft extension`|
+| ||:diagtext:`class template` || ||+---------------------------------------------------------+ || |
+| |+-------------------------------------+| |||:diagtext:`a namespace enclosing` |nbsp| :placeholder:`C`| || |
+| ||:diagtext:`class template partial` || ||+---------------------------------------------------------+ || |
+| |+-------------------------------------+| |+----------------------------------------------------------------------------------------+| |
+| ||:diagtext:`variable template` || ||+--------------------------------------------------------------------------------------+|| |
+| |+-------------------------------------+| |||:diagtext:`class` |nbsp| :placeholder:`C` |nbsp| :diagtext:`or an enclosing namespace`||| |
+| ||:diagtext:`variable template partial`|| ||+--------------------------------------------------------------------------------------+|| |
+| |+-------------------------------------+| |+----------------------------------------------------------------------------------------+| |
+| ||:diagtext:`function template` || | | |
+| |+-------------------------------------+| | | |
+| ||:diagtext:`member function` || | | |
+| |+-------------------------------------+| | | |
+| ||:diagtext:`static data member` || | | |
+| |+-------------------------------------+| | | |
+| ||:diagtext:`member class` || | | |
+| |+-------------------------------------+| | | |
+| ||:diagtext:`member enumeration` || | | |
+| |+-------------------------------------+| | | |
++---------------------------+---------------------------------------+-----------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------+--------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`template argument for template type parameter must be a type; omitted 'typename' is a Microsoft extension`|
@@ -6797,7 +7003,7 @@ Controls `-Wcast-of-sel-type`_, `-Wchar-subscripts`_, `-Wcomment`_, `-Wdelete-no
-Wmove
------
-Controls `-Wpessimizing-move`_, `-Wredundant-move`_, `-Wself-move`_.
+Controls `-Wpessimizing-move`_, `-Wredundant-move`_, `-Wreturn-std-move`_, `-Wself-move`_.
-Wmsvc-include
@@ -7033,6 +7239,25 @@ This diagnostic is enabled by default.
+---------------------------------------------------------------------------------------------------------------------+
+-Wnontrivial-memaccess
+----------------------
+This diagnostic is enabled by default.
+
+**Diagnostic text:**
+
++---------------------------+-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------+
+|:warning:`warning:` |nbsp| |+-----------------------------+| |nbsp| :diagtext:`this` |nbsp| :placeholder:`B` |nbsp| :diagtext:`call is a pointer to record` |nbsp| :placeholder:`C` |nbsp| :diagtext:`that is not trivial to` |nbsp| |+----------------------------------------+|
+| ||:diagtext:`destination for` || ||:diagtext:`primitive-default-initialize`||
+| |+-----------------------------+| |+----------------------------------------+|
+| ||:diagtext:`source of` || ||:diagtext:`primitive-copy` ||
+| |+-----------------------------+| |+----------------------------------------+|
+| ||:diagtext:`first operand of` || | |
+| |+-----------------------------+| | |
+| ||:diagtext:`second operand of`|| | |
+| |+-----------------------------+| | |
++---------------------------+-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------+
+
+
-Wnsconsumed-mismatch
---------------------
This diagnostic is enabled by default.
@@ -7280,9 +7505,9 @@ This diagnostic is enabled by default.
**Diagnostic text:**
-+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
-|:warning:`warning:` |nbsp| :diagtext:`adding '`:placeholder:`A`:diagtext:`' to '`:placeholder:`B`:diagtext:`' might cause circular dependency in container`|
-+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`adding` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B` |nbsp| :diagtext:`might cause circular dependency in container`|
++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wobjc-cocoa-api
@@ -7772,6 +7997,14 @@ This diagnostic is enabled by default.
|:warning:`warning:` |nbsp| :diagtext:`The OpenMP offloading target '`:placeholder:`A`:diagtext:`' is similar to target '`:placeholder:`B`:diagtext:`' already specified - will be ignored.`|
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`No library '`:placeholder:`A`:diagtext:`' found in the default clang lib directory or in LIBRARY\_PATH. Expect degraded performance due to no inlining of runtime functions on target devices.`|
++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+
++----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`Non-trivial type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`is mapped, only trivial types are guaranteed to be mapped correctly`|
++----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+
+-----------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`declaration is not declared in any declare target region`|
+-----------------------------------------------------------------------------------------------+
@@ -7787,14 +8020,14 @@ This diagnostic is enabled by default.
|:warning:`warning:` |nbsp| :diagtext:`option '-ffine-grained-bitfield-accesses' cannot be enabled together with a sanitizer; flag ignored`|
+------------------------------------------------------------------------------------------------------------------------------------------+
++-------------------------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`The '`:placeholder:`A`:diagtext:`' architecture does not support -moutline; flag ignored`|
++-------------------------------------------------------------------------------------------------------------------------------+
+
+----------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`option '`:placeholder:`A`:diagtext:`' was ignored by the PS4 toolchain, using '-fPIC'`|
+----------------------------------------------------------------------------------------------------------------------------+
-+-------------------------------------------------------------------------------------------------------------------------------------------+
-|:warning:`warning:` |nbsp| :diagtext:`ignoring '-mabicalls' option as it cannot be used with non position-independent code and the N64 ABI`|
-+-------------------------------------------------------------------------------------------------------------------------------------------+
-
+-------------------------------------------------------------------------------------------------------------------+-------------------------------------------+----------------------+
|:warning:`warning:` |nbsp| :diagtext:`ignoring '-mlong-calls' option as it is not currently supported with` |nbsp| |+-----------------------------------------+|:diagtext:`-mabicalls`|
| || || |
@@ -7803,6 +8036,29 @@ This diagnostic is enabled by default.
| |+-----------------------------------------+| |
+-------------------------------------------------------------------------------------------------------------------+-------------------------------------------+----------------------+
++-----------------------------------------------------------------------------------------------------------------------+-------------------------------+----------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`ignoring '`:placeholder:`A`:diagtext:`' option as it cannot be used with` |nbsp| |+-----------------------------+| |nbsp| :diagtext:`-mabicalls and the N64 ABI`|
+| ||:diagtext:`implicit usage of`|| |
+| |+-----------------------------+| |
+| || || |
+| |+-----------------------------+| |
++-----------------------------------------------------------------------------------------------------------------------+-------------------------------+----------------------------------------------+
+
++----------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`auto-vectorization requires HVX, use -mhvx to enable it`|
++----------------------------------------------------------------------------------------------+
+
+
+-Wordered-compare-function-pointers
+-----------------------------------
+This diagnostic is enabled by default.
+
+**Diagnostic text:**
+
++------------------------------------------------------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`ordered comparison of function pointers (`:placeholder:`A` |nbsp| :diagtext:`and` |nbsp| :placeholder:`B`:diagtext:`)`|
++------------------------------------------------------------------------------------------------------------------------------------------------------------+
+
-Wout-of-line-declaration
-------------------------
@@ -8075,7 +8331,7 @@ This diagnostic is enabled by default.
-Wpedantic
----------
-Also controls `-Wc++11-extra-semi`_, `-Wc++11-long-long`_, `-Wc++14-binary-literal`_, `-Wc11-extensions`_, `-Wcomplex-component-init`_, `-Wdeclaration-after-statement`_, `-Wdollar-in-identifier-extension`_, `-Wembedded-directive`_, `-Wempty-translation-unit`_, `-Wextended-offsetof`_, `-Wflexible-array-extensions`_, `-Wformat-pedantic`_, `-Wfour-char-constants`_, `-Wgnu-anonymous-struct`_, `-Wgnu-auto-type`_, `-Wgnu-binary-literal`_, `-Wgnu-case-range`_, `-Wgnu-complex-integer`_, `-Wgnu-compound-literal-initializer`_, `-Wgnu-conditional-omitted-operand`_, `-Wgnu-empty-initializer`_, `-Wgnu-empty-struct`_, `-Wgnu-flexible-array-initializer`_, `-Wgnu-flexible-array-union-member`_, `-Wgnu-folding-constant`_, `-Wgnu-imaginary-constant`_, `-Wgnu-include-next`_, `-Wgnu-label-as-value`_, `-Wgnu-redeclared-enum`_, `-Wgnu-statement-expression`_, `-Wgnu-union-cast`_, `-Wgnu-zero-line-directive`_, `-Wgnu-zero-variadic-macro-arguments`_, `-Wimport-preprocessor-directive-pedantic`_, `-Wkeyword-macro`_, `-Wlanguage-extension-token`_, `-Wlong-long`_, `-Wmicrosoft-charize`_, `-Wmicrosoft-comment-paste`_, `-Wmicrosoft-cpp-macro`_, `-Wmicrosoft-end-of-file`_, `-Wmicrosoft-enum-value`_, `-Wmicrosoft-fixed-enum`_, `-Wmicrosoft-flexible-array`_, `-Wmicrosoft-redeclare-static`_, `-Wnested-anon-types`_, `-Wnullability-extension`_, `-Woverlength-strings`_, `-Wretained-language-linkage`_, `-Wundefined-internal-type`_, `-Wvla-extension`_, `-Wzero-length-array`_.
+Also controls `-Wc++11-extra-semi`_, `-Wc++11-long-long`_, `-Wc++14-binary-literal`_, `-Wc11-extensions`_, `-Wcomplex-component-init`_, `-Wdeclaration-after-statement`_, `-Wdollar-in-identifier-extension`_, `-Wembedded-directive`_, `-Wempty-translation-unit`_, `-Wflexible-array-extensions`_, `-Wfour-char-constants`_, `-Wgnu-anonymous-struct`_, `-Wgnu-auto-type`_, `-Wgnu-binary-literal`_, `-Wgnu-case-range`_, `-Wgnu-complex-integer`_, `-Wgnu-compound-literal-initializer`_, `-Wgnu-conditional-omitted-operand`_, `-Wgnu-empty-initializer`_, `-Wgnu-empty-struct`_, `-Wgnu-flexible-array-initializer`_, `-Wgnu-flexible-array-union-member`_, `-Wgnu-folding-constant`_, `-Wgnu-imaginary-constant`_, `-Wgnu-include-next`_, `-Wgnu-label-as-value`_, `-Wgnu-redeclared-enum`_, `-Wgnu-statement-expression`_, `-Wgnu-union-cast`_, `-Wgnu-zero-line-directive`_, `-Wgnu-zero-variadic-macro-arguments`_, `-Wimport-preprocessor-directive-pedantic`_, `-Wkeyword-macro`_, `-Wlanguage-extension-token`_, `-Wlong-long`_, `-Wmicrosoft-charize`_, `-Wmicrosoft-comment-paste`_, `-Wmicrosoft-cpp-macro`_, `-Wmicrosoft-end-of-file`_, `-Wmicrosoft-enum-value`_, `-Wmicrosoft-fixed-enum`_, `-Wmicrosoft-flexible-array`_, `-Wmicrosoft-redeclare-static`_, `-Wnested-anon-types`_, `-Wnullability-extension`_, `-Woverlength-strings`_, `-Wretained-language-linkage`_, `-Wundefined-internal-type`_, `-Wvla-extension`_, `-Wzero-length-array`_.
**Diagnostic text:**
@@ -8111,31 +8367,37 @@ Also controls `-Wc++11-extra-semi`_, `-Wc++11-long-long`_, `-Wc++14-binary-liter
| |+------------------+| |
+--------------------------------------------------------+--------------------+------------------------------------------------------------+
-+--------------------------------------------------------------------+-----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+
-|:warning:`warning:` |nbsp| :diagtext:`no viable constructor` |nbsp| |+---------------------------------------+| |nbsp| :diagtext:`of type` |nbsp| :placeholder:`B`:diagtext:`; C++98 requires a copy constructor when binding a reference to a temporary`|
-| ||:diagtext:`copying variable` || |
-| |+---------------------------------------+| |
-| ||:diagtext:`copying parameter` || |
-| |+---------------------------------------+| |
-| ||:diagtext:`returning object` || |
-| |+---------------------------------------+| |
-| ||:diagtext:`throwing object` || |
-| |+---------------------------------------+| |
-| ||:diagtext:`copying member subobject` || |
-| |+---------------------------------------+| |
-| ||:diagtext:`copying array element` || |
-| |+---------------------------------------+| |
-| ||:diagtext:`allocating object` || |
-| |+---------------------------------------+| |
-| ||:diagtext:`copying temporary` || |
-| |+---------------------------------------+| |
-| ||:diagtext:`initializing base subobject`|| |
-| |+---------------------------------------+| |
-| ||:diagtext:`initializing vector element`|| |
-| |+---------------------------------------+| |
-| ||:diagtext:`capturing value` || |
-| |+---------------------------------------+| |
-+--------------------------------------------------------------------+-----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+
++--------------------------------------------------------------------+------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`no viable constructor` |nbsp| |+----------------------------------------------------+| |nbsp| :diagtext:`of type` |nbsp| :placeholder:`B`:diagtext:`; C++98 requires a copy constructor when binding a reference to a temporary`|
+| ||:diagtext:`copying variable` || |
+| |+----------------------------------------------------+| |
+| ||:diagtext:`copying parameter` || |
+| |+----------------------------------------------------+| |
+| ||:diagtext:`returning object` || |
+| |+----------------------------------------------------+| |
+| ||:diagtext:`initializing statement expression result`|| |
+| |+----------------------------------------------------+| |
+| ||:diagtext:`throwing object` || |
+| |+----------------------------------------------------+| |
+| ||:diagtext:`copying member subobject` || |
+| |+----------------------------------------------------+| |
+| ||:diagtext:`copying array element` || |
+| |+----------------------------------------------------+| |
+| ||:diagtext:`allocating object` || |
+| |+----------------------------------------------------+| |
+| ||:diagtext:`copying temporary` || |
+| |+----------------------------------------------------+| |
+| ||:diagtext:`initializing base subobject` || |
+| |+----------------------------------------------------+| |
+| ||:diagtext:`initializing vector element` || |
+| |+----------------------------------------------------+| |
+| ||:diagtext:`capturing value` || |
+| |+----------------------------------------------------+| |
++--------------------------------------------------------------------+------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+
+
++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`ISO C++ standards before C++17 do not allow new expression for type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to use list-initialization`|
++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`parameter` |nbsp| :placeholder:`A` |nbsp| :diagtext:`was not declared, defaulting to type 'int'`|
@@ -8309,6 +8571,14 @@ Also controls `-Wc++11-extra-semi`_, `-Wc++11-long-long`_, `-Wc++14-binary-liter
| |+------------------+| |
+-----------------------------------------------------------------------------+--------------------+---------------------------------------------+
++------------------------------------------------------------------------------------------------------------------------------------+-----------------------------+------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`format specifies type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`but the argument has` |nbsp| |+---------------------------+| |nbsp| :placeholder:`B`|
+| ||:diagtext:`type` || |
+| |+---------------------------+| |
+| ||:diagtext:`underlying type`|| |
+| |+---------------------------+| |
++------------------------------------------------------------------------------------------------------------------------------------+-----------------------------+------------------------+
+
+---------------------------------------------------+----------------------+-----------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`void` |nbsp| |+--------------------+| |nbsp| :placeholder:`A` |nbsp| :diagtext:`should not return void expression`|
| ||:diagtext:`function`|| |
@@ -8722,26 +8992,34 @@ This diagnostic is enabled by default.
**Diagnostic text:**
-+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-|:warning:`warning:` |nbsp| :diagtext:`top-level module '`:placeholder:`A`:diagtext:`' in private module map, expected a submodule of '`:placeholder:`B`:diagtext:`'`|
-+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++----------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`expected canonical name for private module '`:placeholder:`A`:diagtext:`'`|
++----------------------------------------------------------------------------------------------------------------+
+
++----------------------------------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`private submodule '`:placeholder:`A`:diagtext:`' in private module map, expected top-level module`|
++----------------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`module '`:placeholder:`A`:diagtext:`' already re-exported as '`:placeholder:`B`:diagtext:`'`|
+----------------------------------------------------------------------------------------------------------------------------------+
++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`no submodule named` |nbsp| :placeholder:`A` |nbsp| :diagtext:`in module '`:placeholder:`B`:diagtext:`'; using top level '`:placeholder:`C`:diagtext:`'`|
++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+
-Wprofile-instr-missing
-----------------------
**Diagnostic text:**
-+-----------------------------------------------------------------------------------------------------------------------------+---------------+---------------------------------------------+-------------------+---------------------------+
-|:warning:`warning:` |nbsp| :diagtext:`profile data may be incomplete: of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`function`|+-------------+|:diagtext:`,` |nbsp| :placeholder:`B` |nbsp| |+-----------------+| |nbsp| :diagtext:`no data`|
-| || || ||:diagtext:`:has` || |
-| |+-------------+| |+-----------------+| |
-| ||:diagtext:`s`|| ||:diagtext:`:have`|| |
-| |+-------------+| |+-----------------+| |
-+-----------------------------------------------------------------------------------------------------------------------------+---------------+---------------------------------------------+-------------------+---------------------------+
++-----------------------------------------------------------------------------------------------------------------------------+---------------+---------------------------------------------+------------------+---------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`profile data may be incomplete: of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`function`|+-------------+|:diagtext:`,` |nbsp| :placeholder:`B` |nbsp| |+----------------+| |nbsp| :diagtext:`no data`|
+| || || ||:diagtext:`has` || |
+| |+-------------+| |+----------------+| |
+| ||:diagtext:`s`|| ||:diagtext:`have`|| |
+| |+-------------+| |+----------------+| |
++-----------------------------------------------------------------------------------------------------------------------------+---------------+---------------------------------------------+------------------+---------------------------+
-Wprofile-instr-out-of-date
@@ -8750,13 +9028,13 @@ This diagnostic is enabled by default.
**Diagnostic text:**
-+------------------------------------------------------------------------------------------------------------------------------+---------------+---------------------------------------------+-------------------+--------------------------------------------------------+
-|:warning:`warning:` |nbsp| :diagtext:`profile data may be out of date: of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`function`|+-------------+|:diagtext:`,` |nbsp| :placeholder:`B` |nbsp| |+-----------------+| |nbsp| :diagtext:`mismatched data that will be ignored`|
-| || || ||:diagtext:`:has` || |
-| |+-------------+| |+-----------------+| |
-| ||:diagtext:`s`|| ||:diagtext:`:have`|| |
-| |+-------------+| |+-----------------+| |
-+------------------------------------------------------------------------------------------------------------------------------+---------------+---------------------------------------------+-------------------+--------------------------------------------------------+
++------------------------------------------------------------------------------------------------------------------------------+---------------+---------------------------------------------+------------------+--------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`profile data may be out of date: of` |nbsp| :placeholder:`A` |nbsp| :diagtext:`function`|+-------------+|:diagtext:`,` |nbsp| :placeholder:`B` |nbsp| |+----------------+| |nbsp| :diagtext:`mismatched data that will be ignored`|
+| || || ||:diagtext:`has` || |
+| |+-------------+| |+----------------+| |
+| ||:diagtext:`s`|| ||:diagtext:`have`|| |
+| |+-------------+| |+----------------+| |
++------------------------------------------------------------------------------------------------------------------------------+---------------+---------------------------------------------+------------------+--------------------------------------------------------+
-Wprofile-instr-unprofiled
@@ -8857,6 +9135,15 @@ This diagnostic is enabled by default.
+---------------------------------------------------------------------------------------------------------+
+-Wquoted-include-in-framework-header
+------------------------------------
+**Diagnostic text:**
+
++-------------------------------------------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`double-quoted include "`:placeholder:`A`:diagtext:`" in framework header, expected angle-bracketed instead`|
++-------------------------------------------------------------------------------------------------------------------------------------------------+
+
+
-Wrange-loop-analysis
---------------------
**Diagnostic text:**
@@ -9060,13 +9347,35 @@ This diagnostic is enabled by default.
| |+------------------------+| |
+--------------------------------------------------------+--------------------------+------------------------------------------+
-+---------------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------+
-|:warning:`warning:` |nbsp| |+------------------------+| |nbsp| :diagtext:`stack memory associated with local variable` |nbsp| :placeholder:`B` |nbsp| :diagtext:`returned`|
-| ||:diagtext:`address of` || |
-| |+------------------------+| |
-| ||:diagtext:`reference to`|| |
-| |+------------------------+| |
-+---------------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------+
++---------------------------+--------------------------+--------------------------------------------------------+----------------------------+----------------------------------------------------+
+|:warning:`warning:` |nbsp| |+------------------------+| |nbsp| :diagtext:`stack memory associated with` |nbsp| |+--------------------------+| |nbsp| :placeholder:`B` |nbsp| :diagtext:`returned`|
+| ||:diagtext:`address of` || ||:diagtext:`local variable`|| |
+| |+------------------------+| |+--------------------------+| |
+| ||:diagtext:`reference to`|| ||:diagtext:`parameter` || |
+| |+------------------------+| |+--------------------------+| |
++---------------------------+--------------------------+--------------------------------------------------------+----------------------------+----------------------------------------------------+
+
+
+-Wreturn-std-move
+-----------------
+**Diagnostic text:**
+
++-------------------------------------------------------------------------------------------------------------------------------------+----------------------+---------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`local variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`will be copied despite being` |nbsp| |+--------------------+| |nbsp| :diagtext:`by name`|
+| ||:diagtext:`returned`|| |
+| |+--------------------+| |
+| ||:diagtext:`thrown` || |
+| |+--------------------+| |
++-------------------------------------------------------------------------------------------------------------------------------------+----------------------+---------------------------+
+
+
+-Wreturn-std-move-in-c++11
+--------------------------
+**Diagnostic text:**
+
++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`prior to the resolution of a defect report against ISO C++11, local variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`would have been copied despite being returned by name, due to its not matching the function return type`|
++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wreturn-type
@@ -9145,17 +9454,6 @@ This diagnostic is enabled by default.
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
--Wrtti-for-exceptions
----------------------
-This diagnostic is enabled by default.
-
-**Diagnostic text:**
-
-+--------------------------------------------------------------------------------------+
-|:warning:`warning:` |nbsp| :diagtext:`implicitly enabling rtti for exception handling`|
-+--------------------------------------------------------------------------------------+
-
-
-Rsanitize-address
------------------
**Diagnostic text:**
@@ -9195,9 +9493,17 @@ This diagnostic is enabled by default.
|:warning:`warning:` |nbsp| :diagtext:`section attribute is specified on redeclared variable`|
+--------------------------------------------------------------------------------------------+
-+----------------------------------------------------------------------------------+
-|:warning:`warning:` |nbsp| :diagtext:`section does not match previous declaration`|
-+----------------------------------------------------------------------------------+
++------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`duplicate code segment specifiers`|
++------------------------------------------------------------------------+
+
++---------------------------+---------------------+-------------------------------------------------------+
+|:warning:`warning:` |nbsp| |+-------------------+| |nbsp| :diagtext:`does not match previous declaration`|
+| ||:diagtext:`codeseg`|| |
+| |+-------------------+| |
+| ||:diagtext:`section`|| |
+| |+-------------------+| |
++---------------------------+---------------------+-------------------------------------------------------+
-Wselector
@@ -9224,7 +9530,7 @@ Also controls `-Wselector-type-mismatch`_.
-------------
Some of the diagnostics controlled by this flag are enabled by default.
-Also controls `-Wself-assign-field`_.
+Also controls `-Wself-assign-field`_, `-Wself-assign-overloaded`_.
**Diagnostic text:**
@@ -9248,6 +9554,15 @@ This diagnostic is enabled by default.
+--------------------------------------------------------+-------------------------------+-----------------------------+
+-Wself-assign-overloaded
+------------------------
+**Diagnostic text:**
+
++------------------------------------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`explicitly assigning value of variable of type` |nbsp| :placeholder:`A` |nbsp| :diagtext:`to itself`|
++------------------------------------------------------------------------------------------------------------------------------------------+
+
+
-Wself-move
-----------
**Diagnostic text:**
@@ -9353,9 +9668,9 @@ Controls `-Wshadow`_, `-Wshadow-field`_, `-Wshadow-field-in-constructor`_, `-Wsh
--------------
**Diagnostic text:**
-+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-|:warning:`warning:` |nbsp| :diagtext:`non-static data member '`:placeholder:`A`:diagtext:`' of '`:placeholder:`B`:diagtext:`' shadows member inherited from type '`:placeholder:`C`:diagtext:`'`|
-+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`non-static data member` |nbsp| :placeholder:`A` |nbsp| :diagtext:`of` |nbsp| :placeholder:`B` |nbsp| :diagtext:`shadows member inherited from type` |nbsp| :placeholder:`C`|
++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wshadow-field-in-constructor
@@ -9724,6 +10039,17 @@ This diagnostic is enabled by default.
+----------------------------------------------------------------------------------------------------------------------------------------------------+
+-Wstdlibcxx-not-found
+---------------------
+This diagnostic is enabled by default.
+
+**Diagnostic text:**
+
++----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`include path for stdlibc++ headers not found; pass '-std=libc++' on the command line to use the libc++ standard library instead`|
++----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+
+
-Wstrict-aliasing
-----------------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
@@ -9892,6 +10218,24 @@ This diagnostic is enabled by default.
+--------------------------------------------------------------------------------------------------------------------------------+
+-Wsuspicious-bzero
+------------------
+This diagnostic is enabled by default.
+
+**Diagnostic text:**
+
++----------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`'size' argument to bzero is '0'`|
++----------------------------------------------------------------------+
+
+
+-Wsuspicious-memaccess
+----------------------
+This diagnostic is enabled by default.
+
+Controls `-Wdynamic-class-memaccess`_, `-Wmemset-transposed-args`_, `-Wnontrivial-memaccess`_, `-Wsizeof-pointer-memaccess`_, `-Wsuspicious-bzero`_.
+
+
-Wswitch
--------
This diagnostic is enabled by default.
@@ -9902,25 +10246,25 @@ This diagnostic is enabled by default.
|:warning:`warning:` |nbsp| :diagtext:`overflow converting case value to switch condition type (`:placeholder:`A` |nbsp| :diagtext:`to` |nbsp| :placeholder:`B`:diagtext:`)`|
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-+---------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-|:warning:`warning:` |nbsp| |+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|
-| ||+-----------------------------------------------------------------------------------------------+ ||
-| |||:diagtext:`:enumeration value` |nbsp| :placeholder:`B` |nbsp| :diagtext:`not handled in switch`| ||
-| ||+-----------------------------------------------------------------------------------------------+ ||
-| |+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|
-| ||+-----------------------------------------------------------------------------------------------------------------------------------------------+ ||
-| |||:diagtext:`:enumeration values` |nbsp| :placeholder:`B` |nbsp| :diagtext:`and` |nbsp| :placeholder:`C` |nbsp| :diagtext:`not handled in switch`| ||
-| ||+-----------------------------------------------------------------------------------------------------------------------------------------------+ ||
-| |+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|
-| ||+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ ||
-| |||:diagtext:`:enumeration values` |nbsp| :placeholder:`B`:diagtext:`,` |nbsp| :placeholder:`C`:diagtext:`, and` |nbsp| :placeholder:`D` |nbsp| :diagtext:`not handled in switch`| ||
-| ||+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ ||
-| |+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|
-| ||+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+||
-| |||:diagtext:`:`:placeholder:`A` |nbsp| :diagtext:`enumeration values not handled in switch:` |nbsp| :placeholder:`B`:diagtext:`,` |nbsp| :placeholder:`C`:diagtext:`,` |nbsp| :placeholder:`D`:diagtext:`...`|||
-| ||+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+||
-| |+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|
-+---------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| |+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|
+| ||+----------------------------------------------------------------------------------------------+ ||
+| |||:diagtext:`enumeration value` |nbsp| :placeholder:`B` |nbsp| :diagtext:`not handled in switch`| ||
+| ||+----------------------------------------------------------------------------------------------+ ||
+| |+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|
+| ||+----------------------------------------------------------------------------------------------------------------------------------------------+ ||
+| |||:diagtext:`enumeration values` |nbsp| :placeholder:`B` |nbsp| :diagtext:`and` |nbsp| :placeholder:`C` |nbsp| :diagtext:`not handled in switch`| ||
+| ||+----------------------------------------------------------------------------------------------------------------------------------------------+ ||
+| |+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|
+| ||+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ ||
+| |||:diagtext:`enumeration values` |nbsp| :placeholder:`B`:diagtext:`,` |nbsp| :placeholder:`C`:diagtext:`, and` |nbsp| :placeholder:`D` |nbsp| :diagtext:`not handled in switch`| ||
+| ||+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ ||
+| |+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|
+| ||+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+||
+| |||:placeholder:`A` |nbsp| :diagtext:`enumeration values not handled in switch:` |nbsp| :placeholder:`B`:diagtext:`,` |nbsp| :placeholder:`C`:diagtext:`,` |nbsp| :placeholder:`D`:diagtext:`...`|||
+| ||+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+||
+| |+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|
++---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :diagtext:`case value not in enumerated type` |nbsp| :placeholder:`A`|
@@ -9946,25 +10290,25 @@ This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
-------------
**Diagnostic text:**
-+---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-|:warning:`warning:` |nbsp| |+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|
-| ||+----------------------------------------------------------------------------------------------------------+ ||
-| |||:diagtext:`:enumeration value` |nbsp| :placeholder:`B` |nbsp| :diagtext:`not explicitly handled in switch`| ||
-| ||+----------------------------------------------------------------------------------------------------------+ ||
-| |+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|
-| ||+----------------------------------------------------------------------------------------------------------------------------------------------------------+ ||
-| |||:diagtext:`:enumeration values` |nbsp| :placeholder:`B` |nbsp| :diagtext:`and` |nbsp| :placeholder:`C` |nbsp| :diagtext:`not explicitly handled in switch`| ||
-| ||+----------------------------------------------------------------------------------------------------------------------------------------------------------+ ||
-| |+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|
-| ||+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ ||
-| |||:diagtext:`:enumeration values` |nbsp| :placeholder:`B`:diagtext:`,` |nbsp| :placeholder:`C`:diagtext:`, and` |nbsp| :placeholder:`D` |nbsp| :diagtext:`not explicitly handled in switch`| ||
-| ||+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ ||
-| |+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|
-| ||+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+||
-| |||:diagtext:`:`:placeholder:`A` |nbsp| :diagtext:`enumeration values not explicitly handled in switch:` |nbsp| :placeholder:`B`:diagtext:`,` |nbsp| :placeholder:`C`:diagtext:`,` |nbsp| :placeholder:`D`:diagtext:`...`|||
-| ||+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+||
-| |+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|
-+---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++---------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| |+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|
+| ||+---------------------------------------------------------------------------------------------------------+ ||
+| |||:diagtext:`enumeration value` |nbsp| :placeholder:`B` |nbsp| :diagtext:`not explicitly handled in switch`| ||
+| ||+---------------------------------------------------------------------------------------------------------+ ||
+| |+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|
+| ||+---------------------------------------------------------------------------------------------------------------------------------------------------------+ ||
+| |||:diagtext:`enumeration values` |nbsp| :placeholder:`B` |nbsp| :diagtext:`and` |nbsp| :placeholder:`C` |nbsp| :diagtext:`not explicitly handled in switch`| ||
+| ||+---------------------------------------------------------------------------------------------------------------------------------------------------------+ ||
+| |+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|
+| ||+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ ||
+| |||:diagtext:`enumeration values` |nbsp| :placeholder:`B`:diagtext:`,` |nbsp| :placeholder:`C`:diagtext:`, and` |nbsp| :placeholder:`D` |nbsp| :diagtext:`not explicitly handled in switch`| ||
+| ||+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ ||
+| |+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|
+| ||+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+||
+| |||:placeholder:`A` |nbsp| :diagtext:`enumeration values not explicitly handled in switch:` |nbsp| :placeholder:`B`:diagtext:`,` |nbsp| :placeholder:`C`:diagtext:`,` |nbsp| :placeholder:`D`:diagtext:`...`|||
+| ||+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+||
+| |+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|
++---------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wsync-fetch-and-nand-semantics-changed
@@ -9992,12 +10336,10 @@ Also controls `-Wtautological-constant-compare`_, `-Wtautological-overlap-compar
+---------------------------+---------------------------+--------------------------------------------------+------------------------+
|:warning:`warning:` |nbsp| |+-------------------------+|:diagtext:`comparison always evaluates to` |nbsp| |+----------------------+|
-| ||:diagtext:`self-` || ||:diagtext:`false` ||
+| ||:diagtext:`self-` || ||:diagtext:`a constant`||
| |+-------------------------+| |+----------------------+|
-| ||:diagtext:`array` |nbsp| || ||:diagtext:`true` ||
+| ||:diagtext:`array` |nbsp| || ||:placeholder:`C` ||
| |+-------------------------+| |+----------------------+|
-| | | ||:diagtext:`a constant`||
-| | | |+----------------------+|
+---------------------------+---------------------------+--------------------------------------------------+------------------------+
+-------------------------------------------------------------------------------------+-------------------+
@@ -10013,17 +10355,26 @@ Also controls `-Wtautological-constant-compare`_, `-Wtautological-overlap-compar
-------------------------------
This diagnostic is enabled by default.
-Also controls `-Wtautological-constant-out-of-range-compare`_, `-Wtautological-unsigned-enum-zero-compare`_, `-Wtautological-unsigned-zero-compare`_.
+Also controls `-Wtautological-constant-out-of-range-compare`_.
**Diagnostic text:**
-+---------------------------------------------------------+------------------+--------------------------------+------------------+-------------------------------------+-------------------+
-|:warning:`warning:` |nbsp| :diagtext:`comparison` |nbsp| |+----------------+| |nbsp| :placeholder:`C` |nbsp| |+----------------+| |nbsp| :diagtext:`is always` |nbsp| |+-----------------+|
-| ||:placeholder:`D`|| ||:placeholder:`B`|| ||:diagtext:`false`||
-| |+----------------+| |+----------------+| |+-----------------+|
-| ||:placeholder:`B`|| ||:placeholder:`D`|| ||:diagtext:`true` ||
-| |+----------------+| |+----------------+| |+-----------------+|
-+---------------------------------------------------------+------------------+--------------------------------+------------------+-------------------------------------+-------------------+
++----------------------------------------------------------------------+------------------------------------------------+--------------------------------+----------------------------------------------------------+-----------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`result of comparison of` |nbsp| |+----------------------------------------------+| |nbsp| :diagtext:`with` |nbsp| |+--------------------------------------------------------+| |nbsp| :diagtext:`is always` |nbsp| :placeholder:`E`|
+| ||+--------------------------------------------+|| ||+------------------------------------------------------+|| |
+| |||:diagtext:`constant` |nbsp| :placeholder:`A`||| |||:diagtext:`expression of type` |nbsp| :placeholder:`C`||| |
+| ||+--------------------------------------------+|| ||+------------------------------------------------------+|| |
+| |+----------------------------------------------+| |+--------------------------------------------------------+| |
+| ||:diagtext:`true` || ||:diagtext:`boolean expression` || |
+| |+----------------------------------------------+| |+--------------------------------------------------------+| |
+| ||:diagtext:`false` || | | |
+| |+----------------------------------------------+| | | |
++----------------------------------------------------------------------+------------------------------------------------+--------------------------------+----------------------------------------------------------+-----------------------------------------------------+
+
+
+-Wtautological-constant-in-range-compare
+----------------------------------------
+Controls `-Wtautological-type-limit-compare`_, `-Wtautological-unsigned-enum-zero-compare`_, `-Wtautological-unsigned-zero-compare`_.
-Wtautological-constant-out-of-range-compare
@@ -10032,17 +10383,17 @@ This diagnostic is enabled by default.
**Diagnostic text:**
-+------------------------------------------------------------+------------------------------------------------+--------------------------------+----------------------------------------------------------+-------------------------------------+-------------------+
-|:warning:`warning:` |nbsp| :diagtext:`comparison of` |nbsp| |+----------------------------------------------+| |nbsp| :diagtext:`with` |nbsp| |+--------------------------------------------------------+| |nbsp| :diagtext:`is always` |nbsp| |+-----------------+|
-| ||+--------------------------------------------+|| ||+------------------------------------------------------+|| ||:diagtext:`false`||
-| |||:diagtext:`constant` |nbsp| :placeholder:`A`||| |||:diagtext:`expression of type` |nbsp| :placeholder:`C`||| |+-----------------+|
-| ||+--------------------------------------------+|| ||+------------------------------------------------------+|| ||:diagtext:`true` ||
-| |+----------------------------------------------+| |+--------------------------------------------------------+| |+-----------------+|
-| ||:diagtext:`true` || ||:diagtext:`boolean expression` || | |
-| |+----------------------------------------------+| |+--------------------------------------------------------+| | |
-| ||:diagtext:`false` || | | | |
-| |+----------------------------------------------+| | | | |
-+------------------------------------------------------------+------------------------------------------------+--------------------------------+----------------------------------------------------------+-------------------------------------+-------------------+
++----------------------------------------------------------------------+------------------------------------------------+--------------------------------+----------------------------------------------------------+-----------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`result of comparison of` |nbsp| |+----------------------------------------------+| |nbsp| :diagtext:`with` |nbsp| |+--------------------------------------------------------+| |nbsp| :diagtext:`is always` |nbsp| :placeholder:`E`|
+| ||+--------------------------------------------+|| ||+------------------------------------------------------+|| |
+| |||:diagtext:`constant` |nbsp| :placeholder:`A`||| |||:diagtext:`expression of type` |nbsp| :placeholder:`C`||| |
+| ||+--------------------------------------------+|| ||+------------------------------------------------------+|| |
+| |+----------------------------------------------+| |+--------------------------------------------------------+| |
+| ||:diagtext:`true` || ||:diagtext:`boolean expression` || |
+| |+----------------------------------------------+| |+--------------------------------------------------------+| |
+| ||:diagtext:`false` || | | |
+| |+----------------------------------------------+| | | |
++----------------------------------------------------------------------+------------------------------------------------+--------------------------------+----------------------------------------------------------+-----------------------------------------------------+
-Wtautological-overlap-compare
@@ -10083,6 +10434,19 @@ This diagnostic is enabled by default.
+------------------------------------------------------------+------------------------+----------------------------------------------------------+-------------------------+-----------------------------------------------------+-------------------+
+-Wtautological-type-limit-compare
+---------------------------------
+**Diagnostic text:**
+
++-------------------------------------------------------------------+------------------+--------------------------------+------------------+-----------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`result of comparison` |nbsp| |+----------------+| |nbsp| :placeholder:`C` |nbsp| |+----------------+| |nbsp| :diagtext:`is always` |nbsp| :placeholder:`E`|
+| ||:placeholder:`D`|| ||:placeholder:`B`|| |
+| |+----------------+| |+----------------+| |
+| ||:placeholder:`B`|| ||:placeholder:`D`|| |
+| |+----------------+| |+----------------+| |
++-------------------------------------------------------------------+------------------+--------------------------------+------------------+-----------------------------------------------------+
+
+
-Wtautological-undefined-compare
--------------------------------
This diagnostic is enabled by default.
@@ -10108,32 +10472,28 @@ This diagnostic is enabled by default.
-Wtautological-unsigned-enum-zero-compare
-----------------------------------------
-This diagnostic is enabled by default.
-
**Diagnostic text:**
-+------------------------------------------------------------+--------------------------------------+--------------------------------+--------------------------------------+-------------------------------------+-------------------+
-|:warning:`warning:` |nbsp| :diagtext:`comparison of` |nbsp| |+------------------------------------+| |nbsp| :placeholder:`C` |nbsp| |+------------------------------------+| |nbsp| :diagtext:`is always` |nbsp| |+-----------------+|
-| ||:placeholder:`D` || ||:diagtext:`unsigned enum expression`|| ||:diagtext:`false`||
-| |+------------------------------------+| |+------------------------------------+| |+-----------------+|
-| ||:diagtext:`unsigned enum expression`|| ||:placeholder:`D` || ||:diagtext:`true` ||
-| |+------------------------------------+| |+------------------------------------+| |+-----------------+|
-+------------------------------------------------------------+--------------------------------------+--------------------------------+--------------------------------------+-------------------------------------+-------------------+
++----------------------------------------------------------------------+--------------------------------------+--------------------------------+--------------------------------------+-----------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`result of comparison of` |nbsp| |+------------------------------------+| |nbsp| :placeholder:`C` |nbsp| |+------------------------------------+| |nbsp| :diagtext:`is always` |nbsp| :placeholder:`E`|
+| ||:placeholder:`D` || ||:diagtext:`unsigned enum expression`|| |
+| |+------------------------------------+| |+------------------------------------+| |
+| ||:diagtext:`unsigned enum expression`|| ||:placeholder:`D` || |
+| |+------------------------------------+| |+------------------------------------+| |
++----------------------------------------------------------------------+--------------------------------------+--------------------------------+--------------------------------------+-----------------------------------------------------+
-Wtautological-unsigned-zero-compare
------------------------------------
-This diagnostic is enabled by default.
-
**Diagnostic text:**
-+------------------------------------------------------------+---------------------------------+--------------------------------+---------------------------------+-------------------------------------+-------------------+
-|:warning:`warning:` |nbsp| :diagtext:`comparison of` |nbsp| |+-------------------------------+| |nbsp| :placeholder:`C` |nbsp| |+-------------------------------+| |nbsp| :diagtext:`is always` |nbsp| |+-----------------+|
-| ||:placeholder:`D` || ||:diagtext:`unsigned expression`|| ||:diagtext:`false`||
-| |+-------------------------------+| |+-------------------------------+| |+-----------------+|
-| ||:diagtext:`unsigned expression`|| ||:placeholder:`D` || ||:diagtext:`true` ||
-| |+-------------------------------+| |+-------------------------------+| |+-----------------+|
-+------------------------------------------------------------+---------------------------------+--------------------------------+---------------------------------+-------------------------------------+-------------------+
++----------------------------------------------------------------------+---------------------------------+--------------------------------+---------------------------------+-----------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`result of comparison of` |nbsp| |+-------------------------------+| |nbsp| :placeholder:`C` |nbsp| |+-------------------------------+| |nbsp| :diagtext:`is always` |nbsp| :placeholder:`E`|
+| ||:placeholder:`D` || ||:diagtext:`unsigned expression`|| |
+| |+-------------------------------+| |+-------------------------------+| |
+| ||:diagtext:`unsigned expression`|| ||:placeholder:`D` || |
+| |+-------------------------------+| |+-------------------------------+| |
++----------------------------------------------------------------------+---------------------------------+--------------------------------+---------------------------------+-----------------------------------------------------+
-Wtentative-definition-incomplete-type
@@ -10184,17 +10544,17 @@ Controls `-Wthread-safety-analysis`_, `-Wthread-safety-attributes`_, `-Wthread-s
|:warning:`warning:` |nbsp| :diagtext:`cannot call function '`:placeholder:`B`:diagtext:`' while` |nbsp| :placeholder:`A` |nbsp| :diagtext:`'`:placeholder:`C`:diagtext:`' is held`|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-+---------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
-|:warning:`warning:` |nbsp| :diagtext:`calling function '`:placeholder:`B`:diagtext:`' requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+|
-| ||+------------------------------------------+ ||
-| |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| ||
-| ||+------------------------------------------+ ||
-| |+--------------------------------------------------------+|
-| ||+------------------------------------------------------+||
-| |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`|||
-| ||+------------------------------------------------------+||
-| |+--------------------------------------------------------+|
-+---------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
++---------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`calling function` |nbsp| :placeholder:`B` |nbsp| :diagtext:`requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+|
+| ||+------------------------------------------+ ||
+| |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| ||
+| ||+------------------------------------------+ ||
+| |+--------------------------------------------------------+|
+| ||+------------------------------------------------------+||
+| |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`|||
+| ||+------------------------------------------------------+||
+| |+--------------------------------------------------------+|
++---------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning:`warning:` |nbsp| :placeholder:`A` |nbsp| :diagtext:`'`:placeholder:`B`:diagtext:`' is acquired exclusively and shared in the same scope`|
@@ -10220,45 +10580,45 @@ Controls `-Wthread-safety-analysis`_, `-Wthread-safety-attributes`_, `-Wthread-s
| |+---------------------+| |+---------------------+| |
+----------------------------------------------------------------------------------------------------------------------------------------+-----------------------+--------------------------------------------+-----------------------+--------------------------+
-+---------------------------+---------------------+---------------------------------------------------------------------------------------------------+-----------------------------------+
-|:warning:`warning:` |nbsp| |+-------------------+| |nbsp| :diagtext:`the value pointed to by '`:placeholder:`A`:diagtext:`' requires holding` |nbsp| |+---------------------------------+|
-| ||:diagtext:`reading`|| ||:diagtext:`any mutex` ||
-| |+-------------------+| |+---------------------------------+|
-| ||:diagtext:`writing`|| ||:diagtext:`any mutex exclusively`||
-| |+-------------------+| |+---------------------------------+|
-+---------------------------+---------------------+---------------------------------------------------------------------------------------------------+-----------------------------------+
-
-+---------------------------+---------------------+---------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
-|:warning:`warning:` |nbsp| |+-------------------+| |nbsp| :diagtext:`the value pointed to by '`:placeholder:`B`:diagtext:`' requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+|
-| ||:diagtext:`reading`|| ||+------------------------------------------+ ||
-| |+-------------------+| |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| ||
-| ||:diagtext:`writing`|| ||+------------------------------------------+ ||
-| |+-------------------+| |+--------------------------------------------------------+|
-| | | ||+------------------------------------------------------+||
-| | | |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`|||
-| | | ||+------------------------------------------------------+||
-| | | |+--------------------------------------------------------+|
-+---------------------------+---------------------+---------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
-
-+---------------------------+---------------------+------------------------------------------------------------------------------------+-----------------------------------+
-|:warning:`warning:` |nbsp| |+-------------------+| |nbsp| :diagtext:`variable '`:placeholder:`A`:diagtext:`' requires holding` |nbsp| |+---------------------------------+|
-| ||:diagtext:`reading`|| ||:diagtext:`any mutex` ||
-| |+-------------------+| |+---------------------------------+|
-| ||:diagtext:`writing`|| ||:diagtext:`any mutex exclusively`||
-| |+-------------------+| |+---------------------------------+|
-+---------------------------+---------------------+------------------------------------------------------------------------------------+-----------------------------------+
-
-+---------------------------+---------------------+------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
-|:warning:`warning:` |nbsp| |+-------------------+| |nbsp| :diagtext:`variable '`:placeholder:`B`:diagtext:`' requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+|
-| ||:diagtext:`reading`|| ||+------------------------------------------+ ||
-| |+-------------------+| |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| ||
-| ||:diagtext:`writing`|| ||+------------------------------------------+ ||
-| |+-------------------+| |+--------------------------------------------------------+|
-| | | ||+------------------------------------------------------+||
-| | | |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`|||
-| | | ||+------------------------------------------------------+||
-| | | |+--------------------------------------------------------+|
-+---------------------------+---------------------+------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
++---------------------------+---------------------+---------------------------------------------------------------------------------------------------------------+-----------------------------------+
+|:warning:`warning:` |nbsp| |+-------------------+| |nbsp| :diagtext:`the value pointed to by` |nbsp| :placeholder:`A` |nbsp| :diagtext:`requires holding` |nbsp| |+---------------------------------+|
+| ||:diagtext:`reading`|| ||:diagtext:`any mutex` ||
+| |+-------------------+| |+---------------------------------+|
+| ||:diagtext:`writing`|| ||:diagtext:`any mutex exclusively`||
+| |+-------------------+| |+---------------------------------+|
++---------------------------+---------------------+---------------------------------------------------------------------------------------------------------------+-----------------------------------+
+
++---------------------------+---------------------+---------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
+|:warning:`warning:` |nbsp| |+-------------------+| |nbsp| :diagtext:`the value pointed to by` |nbsp| :placeholder:`B` |nbsp| :diagtext:`requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+|
+| ||:diagtext:`reading`|| ||+------------------------------------------+ ||
+| |+-------------------+| |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| ||
+| ||:diagtext:`writing`|| ||+------------------------------------------+ ||
+| |+-------------------+| |+--------------------------------------------------------+|
+| | | ||+------------------------------------------------------+||
+| | | |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`|||
+| | | ||+------------------------------------------------------+||
+| | | |+--------------------------------------------------------+|
++---------------------------+---------------------+---------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
+
++---------------------------+---------------------+------------------------------------------------------------------------------------------------+-----------------------------------+
+|:warning:`warning:` |nbsp| |+-------------------+| |nbsp| :diagtext:`variable` |nbsp| :placeholder:`A` |nbsp| :diagtext:`requires holding` |nbsp| |+---------------------------------+|
+| ||:diagtext:`reading`|| ||:diagtext:`any mutex` ||
+| |+-------------------+| |+---------------------------------+|
+| ||:diagtext:`writing`|| ||:diagtext:`any mutex exclusively`||
+| |+-------------------+| |+---------------------------------+|
++---------------------------+---------------------+------------------------------------------------------------------------------------------------+-----------------------------------+
+
++---------------------------+---------------------+------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
+|:warning:`warning:` |nbsp| |+-------------------+| |nbsp| :diagtext:`variable` |nbsp| :placeholder:`B` |nbsp| :diagtext:`requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+|
+| ||:diagtext:`reading`|| ||+------------------------------------------+ ||
+| |+-------------------+| |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| ||
+| ||:diagtext:`writing`|| ||+------------------------------------------+ ||
+| |+-------------------+| |+--------------------------------------------------------+|
+| | | ||+------------------------------------------------------+||
+| | | |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`|||
+| | | ||+------------------------------------------------------+||
+| | | |+--------------------------------------------------------+|
++---------------------------+---------------------+------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
-Wthread-safety-attributes
@@ -10308,70 +10668,70 @@ Controls `-Wthread-safety-analysis`_, `-Wthread-safety-attributes`_, `-Wthread-s
-----------------------
**Diagnostic text:**
-+---------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
-|:warning:`warning:` |nbsp| :diagtext:`calling function '`:placeholder:`B`:diagtext:`' requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+|
-| ||+------------------------------------------+ ||
-| |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| ||
-| ||+------------------------------------------+ ||
-| |+--------------------------------------------------------+|
-| ||+------------------------------------------------------+||
-| |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`|||
-| ||+------------------------------------------------------+||
-| |+--------------------------------------------------------+|
-+---------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
-
-+---------------------------+---------------------+---------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
-|:warning:`warning:` |nbsp| |+-------------------+| |nbsp| :diagtext:`the value pointed to by '`:placeholder:`B`:diagtext:`' requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+|
-| ||:diagtext:`reading`|| ||+------------------------------------------+ ||
-| |+-------------------+| |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| ||
-| ||:diagtext:`writing`|| ||+------------------------------------------+ ||
-| |+-------------------+| |+--------------------------------------------------------+|
-| | | ||+------------------------------------------------------+||
-| | | |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`|||
-| | | ||+------------------------------------------------------+||
-| | | |+--------------------------------------------------------+|
-+---------------------------+---------------------+---------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
-
-+---------------------------+---------------------+------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
-|:warning:`warning:` |nbsp| |+-------------------+| |nbsp| :diagtext:`variable '`:placeholder:`B`:diagtext:`' requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+|
-| ||:diagtext:`reading`|| ||+------------------------------------------+ ||
-| |+-------------------+| |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| ||
-| ||:diagtext:`writing`|| ||+------------------------------------------+ ||
-| |+-------------------+| |+--------------------------------------------------------+|
-| | | ||+------------------------------------------------------+||
-| | | |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`|||
-| | | ||+------------------------------------------------------+||
-| | | |+--------------------------------------------------------+|
-+---------------------------+---------------------+------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
++---------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`calling function` |nbsp| :placeholder:`B` |nbsp| :diagtext:`requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+|
+| ||+------------------------------------------+ ||
+| |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| ||
+| ||+------------------------------------------+ ||
+| |+--------------------------------------------------------+|
+| ||+------------------------------------------------------+||
+| |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`|||
+| ||+------------------------------------------------------+||
+| |+--------------------------------------------------------+|
++---------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
+
++---------------------------+---------------------+---------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
+|:warning:`warning:` |nbsp| |+-------------------+| |nbsp| :diagtext:`the value pointed to by` |nbsp| :placeholder:`B` |nbsp| :diagtext:`requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+|
+| ||:diagtext:`reading`|| ||+------------------------------------------+ ||
+| |+-------------------+| |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| ||
+| ||:diagtext:`writing`|| ||+------------------------------------------+ ||
+| |+-------------------+| |+--------------------------------------------------------+|
+| | | ||+------------------------------------------------------+||
+| | | |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`|||
+| | | ||+------------------------------------------------------+||
+| | | |+--------------------------------------------------------+|
++---------------------------+---------------------+---------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
+
++---------------------------+---------------------+------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
+|:warning:`warning:` |nbsp| |+-------------------+| |nbsp| :diagtext:`variable` |nbsp| :placeholder:`B` |nbsp| :diagtext:`requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+|
+| ||:diagtext:`reading`|| ||+------------------------------------------+ ||
+| |+-------------------+| |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| ||
+| ||:diagtext:`writing`|| ||+------------------------------------------+ ||
+| |+-------------------+| |+--------------------------------------------------------+|
+| | | ||+------------------------------------------------------+||
+| | | |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`|||
+| | | ||+------------------------------------------------------+||
+| | | |+--------------------------------------------------------+|
++---------------------------+---------------------+------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
-Wthread-safety-reference
-------------------------
**Diagnostic text:**
-+----------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
-|:warning:`warning:` |nbsp| :diagtext:`passing variable '`:placeholder:`B`:diagtext:`' by reference requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+|
-| ||+------------------------------------------+ ||
-| |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| ||
-| ||+------------------------------------------+ ||
-| |+--------------------------------------------------------+|
-| ||+------------------------------------------------------+||
-| |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`|||
-| ||+------------------------------------------------------+||
-| |+--------------------------------------------------------+|
-+----------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
-
-+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
-|:warning:`warning:` |nbsp| :diagtext:`passing the value that '`:placeholder:`B`:diagtext:`' points to by reference requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+|
-| ||+------------------------------------------+ ||
-| |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| ||
-| ||+------------------------------------------+ ||
-| |+--------------------------------------------------------+|
-| ||+------------------------------------------------------+||
-| |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`|||
-| ||+------------------------------------------------------+||
-| |+--------------------------------------------------------+|
-+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
++----------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`passing variable` |nbsp| :placeholder:`B` |nbsp| :diagtext:`by reference requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+|
+| ||+------------------------------------------+ ||
+| |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| ||
+| ||+------------------------------------------+ ||
+| |+--------------------------------------------------------+|
+| ||+------------------------------------------------------+||
+| |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`|||
+| ||+------------------------------------------------------+||
+| |+--------------------------------------------------------+|
++----------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
+
++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`passing the value that` |nbsp| :placeholder:`B` |nbsp| :diagtext:`points to by reference requires holding` |nbsp| :placeholder:`A` |nbsp| |+--------------------------------------------------------+|
+| ||+------------------------------------------+ ||
+| |||:diagtext:`'`:placeholder:`C`:diagtext:`'`| ||
+| ||+------------------------------------------+ ||
+| |+--------------------------------------------------------+|
+| ||+------------------------------------------------------+||
+| |||:diagtext:`'`:placeholder:`C`:diagtext:`' exclusively`|||
+| ||+------------------------------------------------------+||
+| |+--------------------------------------------------------+|
++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
-Wthread-safety-verbose
@@ -10652,6 +11012,17 @@ This diagnostic is enabled by default.
+---------------------------------------------------------------------------------------------+
+-Wunicode-homoglyph
+-------------------
+This diagnostic is enabled by default.
+
+**Diagnostic text:**
+
++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`treating Unicode character <U+`:placeholder:`A`:diagtext:`> as identifier character rather than as '`:placeholder:`B`:diagtext:`' symbol`|
++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+
+
-Wunicode-whitespace
--------------------
This diagnostic is enabled by default.
@@ -10714,6 +11085,10 @@ This diagnostic is enabled by default.
|:warning:`warning:` |nbsp| :diagtext:`unknown argument ignored in clang-cl: '`:placeholder:`A`:diagtext:`'`|
+-----------------------------------------------------------------------------------------------------------+
++---------------------------------------------------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`unknown argument ignored in clang-cl '`:placeholder:`A`:diagtext:`' (did you mean '`:placeholder:`B`:diagtext:`'?)`|
++---------------------------------------------------------------------------------------------------------------------------------------------------------+
+
-Wunknown-attributes
--------------------
@@ -11044,6 +11419,17 @@ This diagnostic is enabled by default.
+-------------------------------------------------------------------------------------------------------------------------------------------------+
+-Wunsupported-target-opt
+------------------------
+This diagnostic is enabled by default.
+
+**Diagnostic text:**
+
++---------------------------------------------------------------------------------------------------------------------------------------------------------+
+|:warning:`warning:` |nbsp| :diagtext:`debug information option '`:placeholder:`A`:diagtext:`' is not supported for target '`:placeholder:`B`:diagtext:`'`|
++---------------------------------------------------------------------------------------------------------------------------------------------------------+
+
+
-Wunsupported-visibility
------------------------
This diagnostic is enabled by default.
@@ -11134,19 +11520,17 @@ This diagnostic is enabled by default.
**Diagnostic text:**
-+---------------------------+-----------------------------------------+--------------------------------------------+
-|:warning:`warning:` |nbsp| |+---------------------------------------+| |nbsp| :diagtext:`comparison result unused`|
-| ||+----------------+--------------------+|| |
-| |||+--------------+|:diagtext:`equality`||| |
-| |||| || ||| |
-| |||+--------------+| ||| |
-| ||||:diagtext:`in`|| ||| |
-| |||+--------------+| ||| |
-| ||+----------------+--------------------+|| |
-| |+---------------------------------------+| |
-| ||:diagtext:`relational` || |
-| |+---------------------------------------+| |
-+---------------------------+-----------------------------------------+--------------------------------------------+
++---------------------------+------------------------+--------------------------------------------+
+|:warning:`warning:` |nbsp| |+----------------------+| |nbsp| :diagtext:`comparison result unused`|
+| ||:diagtext:`equality` || |
+| |+----------------------+| |
+| ||:diagtext:`inequality`|| |
+| |+----------------------+| |
+| ||:diagtext:`relational`|| |
+| |+----------------------+| |
+| ||:diagtext:`three-way` || |
+| |+----------------------+| |
++---------------------------+------------------------+--------------------------------------------+
-Wunused-const-variable
diff --git a/docs/ReleaseNotes.rst b/docs/ReleaseNotes.rst
index 71df974ae151..f655c67ea2c7 100644
--- a/docs/ReleaseNotes.rst
+++ b/docs/ReleaseNotes.rst
@@ -1,18 +1,12 @@
-=======================================
-Clang 7.0.0 (In-Progress) Release Notes
-=======================================
+=========================
+Clang 7.0.0 Release Notes
+=========================
.. contents::
:local:
:depth: 2
-Written by the `LLVM Team <http://llvm.org/>`_
-
-.. warning::
-
- These are in-progress notes for the upcoming Clang 7 release.
- Release notes for previous releases can be found on
- `the Download Page <http://releases.llvm.org/download.html>`_.
+Written by the `LLVM Team <https://llvm.org/>`_
Introduction
============
@@ -22,18 +16,13 @@ frontend, part of the LLVM Compiler Infrastructure, release 7.0.0. Here we
describe the status of Clang in some detail, including major
improvements from the previous release and new feature work. For the
general LLVM release notes, see `the LLVM
-documentation <http://llvm.org/docs/ReleaseNotes.html>`_. All LLVM
+documentation <https://llvm.org/docs/ReleaseNotes.html>`_. All LLVM
releases may be downloaded from the `LLVM releases web
-site <http://llvm.org/releases/>`_.
+site <https://llvm.org/releases/>`_.
For more information about Clang or LLVM, including information about the
-latest release, please see the `Clang Web Site <http://clang.llvm.org>`_ or the
-`LLVM Web Site <http://llvm.org>`_.
-
-Note that if you are reading this file from a Subversion checkout or the
-main Clang web page, this document applies to the *next* release, not
-the current one. To see the release notes for a specific release, please
-see the `releases page <http://llvm.org/releases/>`_.
+latest release, please see the `Clang Web Site <https://clang.llvm.org>`_ or the
+`LLVM Web Site <https://llvm.org>`_.
What's New in Clang 7.0.0?
==========================
@@ -55,9 +44,9 @@ Major New Features
information, including the new .debug_names accelerator table. Type units
and split DWARF are known not to conform, and higher optimization levels
will likely get a mix of v4 and v5 formats.
-
+
Improvements to Clang's diagnostics
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+-----------------------------------
- ``-Wc++98-compat-extra-semi`` is a new flag, which was previously inseparable
from ``-Wc++98-compat-pedantic``. The latter still controls the new flag.
@@ -81,6 +70,9 @@ Non-comprehensive list of changes in this release
For example, the ``clang`` binary will be called ``clang-7``
instead of ``clang-7.0``.
+- The optimization flag to merge constants (``-fmerge-all-constants``) is no
+ longer applied by default.
+
- Clang implements a collection of recent fixes to the C++ standard's definition
of "standard-layout". In particular, a class is only considered to be
standard-layout if all base classes and the first data member (or bit-field)
@@ -90,7 +82,7 @@ Non-comprehensive list of changes in this release
to apply only to non-static data members and not to base classes. This fixes
an ABI difference between Clang and GCC, but creates an ABI difference between
Clang 7 and earlier versions. The old behavior can be restored by setting
- ``-fclang-abi-compat`` to ``6`` or earlier.
+ ``-fclang-abi-compat`` to ``6`` or lower.
- Clang implements the proposed resolution of LWG issue 2358, along with the
`corresponding change to the Itanium C++ ABI
@@ -114,49 +106,50 @@ Non-comprehensive list of changes in this release
relocation scanning. The ``-faddrsig`` and ``-fno-addrsig`` flags can be
used to control whether to emit the address-significance table.
-- ...
+- The integrated assembler is enabled by default on OpenBSD / FreeBSD
+ for MIPS 64-bit targets.
+
+- On MIPS FreeBSD, default CPUs have been changed to ``mips2``
+ for 32-bit targets and ``mips3`` for 64-bit targets.
+
New Compiler Flags
------------------
- ``-fstrict-float-cast-overflow`` and ``-fno-strict-float-cast-overflow``.
- When a floating-point value is not representable in a destination integer
- type, the code has undefined behavior according to the language standard. By
+ When converting a floating-point value to int and the value is not
+ representable in the destination integer type,
+ the code has undefined behavior according to the language standard. By
default, Clang will not guarantee any particular result in that case. With the
'no-strict' option, Clang attempts to match the overflowing behavior of the
target's native float-to-int conversion instructions.
- ``-fforce-emit-vtables`` and ``-fno-force-emit-vtables``.
- In order to improve devirtualization, forces emitting of vtables even in
- modules where it isn't necessary. It causes more inline virtual functions
- to be emitted.
+ In order to improve devirtualization, forces emission of vtables even in
+ modules where it isn't necessary. It causes more inline virtual functions
+ to be emitted.
-- ...
+- Added the ``-mcrc`` and ``-mno-crc`` flags to enable/disable using
+ of MIPS Cyclic Redundancy Check instructions.
-Deprecated Compiler Flags
--------------------------
+- Added the ``-mvirt`` and ``-mno-virt`` flags to enable/disable using
+ of MIPS Virtualization instructions.
-The following options are deprecated and ignored. They will be removed in
-future versions of Clang.
+- Added the ``-mginv`` and ``-mno-ginv`` flags to enable/disable using
+ of MIPS Global INValidate instructions.
-- ...
Modified Compiler Flags
-----------------------
-- Before Clang 7, we prepended the `#` character to the `--autocomplete`
- argument to enable cc1 flags. For example, when the `-cc1` or `-Xclang` flag
+- Before Clang 7, we prepended the `#` character to the ``--autocomplete``
+ argument to enable cc1 flags. For example, when the ``-cc1`` or ``-Xclang`` flag
is in the :program:`clang` invocation, the shell executed
- `clang --autocomplete=#-<flag to be completed>`. Clang 7 now requires the
- whole invocation including all flags to be passed to the `--autocomplete` like
- this: `clang --autocomplete=-cc1,-xc++,-fsyn`.
-
-New Pragmas in Clang
---------------------
-
-Clang now supports the ...
+ ``clang --autocomplete=#-<flag to be completed>``. Clang 7 now requires the
+ whole invocation including all flags to be passed to the ``--autocomplete`` like
+ this: ``clang --autocomplete=-cc1,-xc++,-fsyn``.
Attribute Changes in Clang
@@ -166,10 +159,8 @@ Attribute Changes in Clang
based x86/x86-64 environments by using indirect functions. This implementation
has a few minor limitations over the GCC implementation for the sake of AST
sanity, however it is otherwise compatible with existing code using this
- feature for GCC. Consult the documentation for the target attribute for more
- information.
-
-- ...
+ feature for GCC. Consult the `documentation for the target attribute
+ <AttributeReference.html#target-gnu-target>`_ for more information.
Windows Support
---------------
@@ -181,8 +172,8 @@ Windows Support
the pch file (matching cl.exe). This speeds up builds using pch files
by around 30%.
- - The /Ycfoo.h and /Yufoo.h flags can now be used without /FIfoo.h when
- foo.h is instead included by an explicit `#include` directive. This means
+ - The ``/Ycfoo.h`` and ``/Yufoo.h`` flags can now be used without ``/FIfoo.h`` when
+ foo.h is instead included by an explicit ``#include`` directive. This means
Visual Studio's default stdafx.h setup now uses precompiled headers with
clang-cl.
@@ -192,35 +183,17 @@ Windows Support
explicit specify ``extern "C"``. (This was already the case for MSVC
targets.)
-- ...
-
-
-C Language Changes in Clang
----------------------------
-
-- ...
-
-...
-
-C11 Feature Support
-^^^^^^^^^^^^^^^^^^^
-
-...
-
-C++ Language Changes in Clang
------------------------------
-
-- ...
-
-C++1z Feature Support
-^^^^^^^^^^^^^^^^^^^^^
-
-...
Objective-C Language Changes in Clang
-------------------------------------
-...
+Clang now supports the GNUstep Objective-C ABI v2 on ELF platforms. This is
+enabled with the ``-fobjc-runtime=gnustep-2.0`` flag. The new ABI is incompatible
+with the older GNUstep ABIs, which were incremental changes on the old GCC ABI.
+The new ABI provides richer reflection metadata and allows the linker to remove
+duplicate selector and protocol definitions, giving smaller binaries. Windows
+support for the new ABI is underway, but was not completed in time for the LLVM
+7.0.0 release.
OpenCL C/C++ Language Changes in Clang
--------------------------------------
@@ -252,18 +225,19 @@ OpenMP Support in Clang
----------------------------------
- Clang gained basic support for OpenMP 4.5 offloading for NVPTX target.
- To compile your program for NVPTX target use the following options:
- `-fopenmp -fopenmp-targets=nvptx64-nvidia-cuda` for 64 bit platforms or
- `-fopenmp -fopenmp-targets=nvptx-nvidia-cuda` for 32 bit platform.
+
+ To compile your program for NVPTX target use the following options:
+ ``-fopenmp -fopenmp-targets=nvptx64-nvidia-cuda`` for 64 bit platforms or
+ ``-fopenmp -fopenmp-targets=nvptx-nvidia-cuda`` for 32 bit platform.
- Passing options to the OpenMP device offloading toolchain can be done using
- the `-Xopenmp-target=<triple> -opt=val` flag. In this way the `-opt=val`
+ the ``-Xopenmp-target=<triple> -opt=val`` flag. In this way the ``-opt=val``
option will be forwarded to the respective OpenMP device offloading toolchain
described by the triple. For example passing the compute capability to
the OpenMP NVPTX offloading toolchain can be done as follows:
- `-Xopenmp-target=nvptx64-nvidia-cuda -march=sm_60`. For the case when only one
- target offload toolchain is specified under the `-fopenmp-targets=<triples>`
- option, then the triple can be skipped: `-Xopenmp-target -march=sm_60`.
+ ``-Xopenmp-target=nvptx64-nvidia-cuda -march=sm_60``. For the case when only one
+ target offload toolchain is specified under the ``-fopenmp-targets=<triples>``
+ option, then the triple can be skipped: ``-Xopenmp-target -march=sm_60``.
- Other bugfixes.
@@ -272,10 +246,10 @@ CUDA Support in Clang
- Clang will now try to locate the CUDA installation next to :program:`ptxas`
in the `PATH` environment variable. This behavior can be turned off by passing
- the new flag `--cuda-path-ignore-env`.
+ the new flag ``--cuda-path-ignore-env``.
- Clang now supports generating object files with relocatable device code. This
- feature needs to be enabled with `-fcuda-rdc` and my result in performance
+ feature needs to be enabled with ``-fcuda-rdc`` and may result in performance
penalties compared to whole program compilation. Please note that NVIDIA's
:program:`nvcc` must be used for linking.
@@ -286,38 +260,22 @@ These are major API changes that have happened since the 6.0.0 release of
Clang. If upgrading an external codebase that uses Clang as a library,
this section should help get you past the largest hurdles of upgrading.
-- The methods ``getLocStart``, ``getStartLoc`` and ``getLocEnd`` in the AST
- classes are deprecated. New APIs ``getBeginLoc`` and ``getEndLoc`` should
- be used instead. While the old methods remain in this release, they will
+- The methods ``getLocStart``, ``getStartLoc`` and ``getLocEnd`` in the AST
+ classes are deprecated. New APIs ``getBeginLoc`` and ``getEndLoc`` should
+ be used instead. While the old methods remain in this release, they will
not be present in the next release of Clang.
-AST Matchers
-------------
-
-- ...
-
clang-format
------------
- Clang-format will now support detecting and formatting code snippets in raw
- string literals. This is configured through the `RawStringFormats` style
+ string literals. This is configured through the ``RawStringFormats`` style
option.
-- ...
-
-libclang
---------
-
-...
-
-
Static Analyzer
---------------
-- The new `MmapWriteExec` checker had been introduced to detect attempts to map pages
-both writable and executable.
-
-...
+- The new `MmapWriteExec` checker had been introduced to detect attempts to map pages both writable and executable.
.. _release-notes-ubsan:
@@ -350,31 +308,22 @@ Undefined Behavior Sanitizer (UBSan)
but the ``-fsanitize=implicit-integer-truncation`` check
is enabled by ``-fsanitize=integer``.
-Core Analysis Improvements
-==========================
-
-- ...
-
-New Issues Found
-================
-- ...
+libc++ Changes
+==============
+Users that wish to link together translation units built with different
+versions of libc++'s headers into the same final linked image should define the
+`_LIBCPP_HIDE_FROM_ABI_PER_TU` macro to `1` when building those translation
+units. In a future release, not defining `_LIBCPP_HIDE_FROM_ABI_PER_TU` to `1`
+and linking translation units built with different versions of libc++'s headers
+together may lead to ODR violations and ABI issues.
-Python Binding Changes
-----------------------
-
-The following methods have been added:
-
-- ...
-
-Significant Known Problems
-==========================
Additional Information
======================
A wide variety of additional information is available on the `Clang web
-page <http://clang.llvm.org/>`_. The web page contains versions of the
+page <https://clang.llvm.org/>`_. The web page contains versions of the
API documentation which are up-to-date with the Subversion version of
the source code. You can access versions of these documents specific to
this release by going into the "``clang/docs/``" directory in the Clang
@@ -382,4 +331,4 @@ tree.
If you have any questions or comments about Clang, please feel free to
contact us via the `mailing
-list <http://lists.llvm.org/mailman/listinfo/cfe-dev>`_.
+list <https://lists.llvm.org/mailman/listinfo/cfe-dev>`_.
diff --git a/lib/Driver/ToolChains/Clang.cpp b/lib/Driver/ToolChains/Clang.cpp
index 45a29a0225a4..8e9c4c6aecb8 100644
--- a/lib/Driver/ToolChains/Clang.cpp
+++ b/lib/Driver/ToolChains/Clang.cpp
@@ -4912,8 +4912,7 @@ ObjCRuntime Clang::AddObjCRuntimeArgs(const ArgList &args,
}
if ((runtime.getKind() == ObjCRuntime::GNUstep) &&
(runtime.getVersion() >= VersionTuple(2, 0)))
- if (!getToolChain().getTriple().isOSBinFormatELF() &&
- !getToolChain().getTriple().isOSBinFormatCOFF()) {
+ if (!getToolChain().getTriple().isOSBinFormatELF()) {
getToolChain().getDriver().Diag(
diag::err_drv_gnustep_objc_runtime_incompatible_binary)
<< runtime.getVersion().getMajor();