parent
5a1606d562
commit
fbb21e0315
|
|
@ -1,5 +1,5 @@
|
||||||
=======================================
|
=======================================
|
||||||
Clang 5.0.0 (In-Progress) Release Notes
|
Clang 6.0.0 (In-Progress) Release Notes
|
||||||
=======================================
|
=======================================
|
||||||
|
|
||||||
.. contents::
|
.. contents::
|
||||||
|
|
@ -10,7 +10,7 @@ Written by the `LLVM Team <http://llvm.org/>`_
|
||||||
|
|
||||||
.. warning::
|
.. warning::
|
||||||
|
|
||||||
These are in-progress notes for the upcoming Clang 5 release.
|
These are in-progress notes for the upcoming Clang 6 release.
|
||||||
Release notes for previous releases can be found on
|
Release notes for previous releases can be found on
|
||||||
`the Download Page <http://releases.llvm.org/download.html>`_.
|
`the Download Page <http://releases.llvm.org/download.html>`_.
|
||||||
|
|
||||||
|
|
@ -18,7 +18,7 @@ Introduction
|
||||||
============
|
============
|
||||||
|
|
||||||
This document contains the release notes for the Clang C/C++/Objective-C
|
This document contains the release notes for the Clang C/C++/Objective-C
|
||||||
frontend, part of the LLVM Compiler Infrastructure, release 5.0.0. Here we
|
frontend, part of the LLVM Compiler Infrastructure, release 6.0.0. Here we
|
||||||
describe the status of Clang in some detail, including major
|
describe the status of Clang in some detail, including major
|
||||||
improvements from the previous release and new feature work. For the
|
improvements from the previous release and new feature work. For the
|
||||||
general LLVM release notes, see `the LLVM
|
general LLVM release notes, see `the LLVM
|
||||||
|
|
@ -36,7 +36,7 @@ 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
|
the current one. To see the release notes for a specific release, please
|
||||||
see the `releases page <http://llvm.org/releases/>`_.
|
see the `releases page <http://llvm.org/releases/>`_.
|
||||||
|
|
||||||
What's New in Clang 5.0.0?
|
What's New in Clang 6.0.0?
|
||||||
==========================
|
==========================
|
||||||
|
|
||||||
Some of the major new features and improvements to Clang are listed
|
Some of the major new features and improvements to Clang are listed
|
||||||
|
|
@ -52,11 +52,7 @@ Major New Features
|
||||||
Improvements to Clang's diagnostics
|
Improvements to Clang's diagnostics
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
- -Wcast-qual was implemented for C++. C-style casts are now properly
|
- ...
|
||||||
diagnosed.
|
|
||||||
|
|
||||||
- -Wunused-lambda-capture warns when a variable explicitly captured
|
|
||||||
by a lambda is not used in the body of the lambda.
|
|
||||||
|
|
||||||
New Compiler Flags
|
New Compiler Flags
|
||||||
------------------
|
------------------
|
||||||
|
|
@ -69,9 +65,7 @@ Deprecated Compiler Flags
|
||||||
The following options are deprecated and ignored. They will be removed in
|
The following options are deprecated and ignored. They will be removed in
|
||||||
future versions of Clang.
|
future versions of Clang.
|
||||||
|
|
||||||
- -fslp-vectorize-aggressive used to enable the BB vectorizing pass. They have been superseeded
|
- ...
|
||||||
by the normal SLP vectorizer.
|
|
||||||
- -fno-slp-vectorize-aggressive used to be the default behavior of clang.
|
|
||||||
|
|
||||||
New Pragmas in Clang
|
New Pragmas in Clang
|
||||||
-----------------------
|
-----------------------
|
||||||
|
|
@ -82,9 +76,7 @@ Clang now supports the ...
|
||||||
Attribute Changes in Clang
|
Attribute Changes in Clang
|
||||||
--------------------------
|
--------------------------
|
||||||
|
|
||||||
- The ``overloadable`` attribute now allows at most one function with a given
|
- ...
|
||||||
name to lack the ``overloadable`` attribute. This unmarked function will not
|
|
||||||
have its name mangled.
|
|
||||||
|
|
||||||
Windows Support
|
Windows Support
|
||||||
---------------
|
---------------
|
||||||
|
|
@ -147,49 +139,7 @@ AST Matchers
|
||||||
clang-format
|
clang-format
|
||||||
------------
|
------------
|
||||||
|
|
||||||
* Option **BreakBeforeInheritanceComma** added to break before ``:`` and ``,`` in case of
|
...
|
||||||
multiple inheritance in a class declaration. Enabled by default in the Mozilla coding style.
|
|
||||||
|
|
||||||
+---------------------+----------------------------------------+
|
|
||||||
| true | false |
|
|
||||||
+=====================+========================================+
|
|
||||||
| .. code-block:: c++ | .. code-block:: c++ |
|
|
||||||
| | |
|
|
||||||
| class MyClass | class MyClass : public X, public Y { |
|
|
||||||
| : public X | }; |
|
|
||||||
| , public Y { | |
|
|
||||||
| }; | |
|
|
||||||
+---------------------+----------------------------------------+
|
|
||||||
|
|
||||||
* Align block comment decorations.
|
|
||||||
|
|
||||||
+----------------------+---------------------+
|
|
||||||
| Before | After |
|
|
||||||
+======================+=====================+
|
|
||||||
| .. code-block:: c++ | .. code-block:: c++ |
|
|
||||||
| | |
|
|
||||||
| /* line 1 | /* line 1 |
|
|
||||||
| * line 2 | * line 2 |
|
|
||||||
| */ | */ |
|
|
||||||
+----------------------+---------------------+
|
|
||||||
|
|
||||||
* The :doc:`ClangFormatStyleOptions` documentation provides detailed examples for most options.
|
|
||||||
|
|
||||||
* Namespace end comments are now added or updated automatically.
|
|
||||||
|
|
||||||
+---------------------+---------------------+
|
|
||||||
| Before | After |
|
|
||||||
+=====================+=====================+
|
|
||||||
| .. code-block:: c++ | .. code-block:: c++ |
|
|
||||||
| | |
|
|
||||||
| namespace A { | namespace A { |
|
|
||||||
| int i; | int i; |
|
|
||||||
| int j; | int j; |
|
|
||||||
| } | } |
|
|
||||||
+---------------------+---------------------+
|
|
||||||
|
|
||||||
* Comment reflow support added. Overly long comment lines will now be reflown with the rest of
|
|
||||||
the paragraph instead of just broken. Option **ReflowComments** added and enabled by default.
|
|
||||||
|
|
||||||
libclang
|
libclang
|
||||||
--------
|
--------
|
||||||
|
|
@ -205,27 +155,7 @@ Static Analyzer
|
||||||
Undefined Behavior Sanitizer (UBSan)
|
Undefined Behavior Sanitizer (UBSan)
|
||||||
------------------------------------
|
------------------------------------
|
||||||
|
|
||||||
- The Undefined Behavior Sanitizer has a new check for pointer overflow. This
|
...
|
||||||
check is on by default. The flag to control this functionality is
|
|
||||||
-fsanitize=pointer-overflow.
|
|
||||||
|
|
||||||
Pointer overflow is an indicator of undefined behavior: when a pointer
|
|
||||||
indexing expression wraps around the address space, or produces other
|
|
||||||
unexpected results, its result may not point to a valid object.
|
|
||||||
|
|
||||||
- UBSan has several new checks which detect violations of nullability
|
|
||||||
annotations. These checks are off by default. The flag to control this group
|
|
||||||
of checks is -fsanitize=nullability. The checks can be individially enabled
|
|
||||||
by -fsanitize=nullability-arg (which checks calls),
|
|
||||||
-fsanitize=nullability-assign (which checks assignments), and
|
|
||||||
-fsanitize=nullability-return (which checks return statements).
|
|
||||||
|
|
||||||
- UBSan can now detect invalid loads from bitfields and from ObjC BOOLs.
|
|
||||||
|
|
||||||
- UBSan can now avoid emitting unnecessary type checks in C++ class methods and
|
|
||||||
in several other cases where the result is known at compile-time. UBSan can
|
|
||||||
also avoid emitting unnecessary overflow checks in arithmetic expressions
|
|
||||||
with promoted integer operands.
|
|
||||||
|
|
||||||
Core Analysis Improvements
|
Core Analysis Improvements
|
||||||
==========================
|
==========================
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue