mirror of
https://github.com/Gericom/teak-llvm.git
synced 2025-06-18 19:15:51 -04:00
Bump the trunk major version to 11
and clear the release notes.
This commit is contained in:
parent
e26a78e708
commit
5852475e2c
@ -1,5 +1,5 @@
|
|||||||
====================================================
|
====================================================
|
||||||
Extra Clang Tools 10.0.0 (In-Progress) Release Notes
|
Extra Clang Tools 11.0.0 (In-Progress) Release Notes
|
||||||
====================================================
|
====================================================
|
||||||
|
|
||||||
.. contents::
|
.. contents::
|
||||||
@ -10,7 +10,7 @@ Written by the `LLVM Team <https://llvm.org/>`_
|
|||||||
|
|
||||||
.. warning::
|
.. warning::
|
||||||
|
|
||||||
These are in-progress notes for the upcoming Extra Clang Tools 10 release.
|
These are in-progress notes for the upcoming Extra Clang Tools 11 release.
|
||||||
Release notes for previous releases can be found on
|
Release notes for previous releases can be found on
|
||||||
`the Download Page <https://releases.llvm.org/download.html>`_.
|
`the Download Page <https://releases.llvm.org/download.html>`_.
|
||||||
|
|
||||||
@ -18,7 +18,7 @@ Introduction
|
|||||||
============
|
============
|
||||||
|
|
||||||
This document contains the release notes for the Extra Clang Tools, part of the
|
This document contains the release notes for the Extra Clang Tools, part of the
|
||||||
Clang release 10.0.0. Here we describe the status of the Extra Clang Tools in
|
Clang release 11.0.0. Here we describe the status of the Extra Clang Tools in
|
||||||
some detail, including major improvements from the previous release and new
|
some detail, including major improvements from the previous release and new
|
||||||
feature work. All LLVM releases may be downloaded from the `LLVM releases web
|
feature work. All LLVM releases may be downloaded from the `LLVM releases web
|
||||||
site <https://llvm.org/releases/>`_.
|
site <https://llvm.org/releases/>`_.
|
||||||
@ -27,12 +27,12 @@ For more information about Clang or LLVM, including information about
|
|||||||
the latest release, please see the `Clang Web Site <https://clang.llvm.org>`_ or
|
the latest release, please see the `Clang Web Site <https://clang.llvm.org>`_ or
|
||||||
the `LLVM Web Site <https://llvm.org>`_.
|
the `LLVM Web Site <https://llvm.org>`_.
|
||||||
|
|
||||||
Note that if you are reading this file from a Subversion checkout or the
|
Note that if you are reading this file from a Git checkout or the
|
||||||
main Clang web page, this document applies to the *next* release, not
|
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 <https://llvm.org/releases/>`_.
|
see the `releases page <https://llvm.org/releases/>`_.
|
||||||
|
|
||||||
What's New in Extra Clang Tools 10.0.0?
|
What's New in Extra Clang Tools 11.0.0?
|
||||||
=======================================
|
=======================================
|
||||||
|
|
||||||
Some of the major new features and improvements to Extra Clang Tools are listed
|
Some of the major new features and improvements to Extra Clang Tools are listed
|
||||||
@ -52,7 +52,7 @@ The improvements are...
|
|||||||
Improvements to clang-doc
|
Improvements to clang-doc
|
||||||
-------------------------
|
-------------------------
|
||||||
|
|
||||||
- :doc:`clang-doc <clang-doc>` now generates documentation in HTML format.
|
The improvements are...
|
||||||
|
|
||||||
Improvements to clang-query
|
Improvements to clang-query
|
||||||
---------------------------
|
---------------------------
|
||||||
@ -70,188 +70,18 @@ Improvements to clang-tidy
|
|||||||
New checks
|
New checks
|
||||||
^^^^^^^^^^
|
^^^^^^^^^^
|
||||||
|
|
||||||
- New :doc:`bugprone-bad-signal-to-kill-thread
|
|
||||||
<clang-tidy/checks/bugprone-bad-signal-to-kill-thread>` check.
|
|
||||||
|
|
||||||
Finds ``pthread_kill`` function calls when a thread is terminated by
|
|
||||||
raising ``SIGTERM`` signal.
|
|
||||||
|
|
||||||
- New :doc:`bugprone-dynamic-static-initializers
|
|
||||||
<clang-tidy/checks/bugprone-dynamic-static-initializers>` check.
|
|
||||||
|
|
||||||
Finds instances where variables with static storage are initialized
|
|
||||||
dynamically in header files.
|
|
||||||
|
|
||||||
- New :doc:`bugprone-infinite-loop
|
|
||||||
<clang-tidy/checks/bugprone-infinite-loop>` check.
|
|
||||||
|
|
||||||
Finds obvious infinite loops (loops where the condition variable is not
|
|
||||||
changed at all).
|
|
||||||
|
|
||||||
- New :doc:`bugprone-not-null-terminated-result
|
|
||||||
<clang-tidy/checks/bugprone-not-null-terminated-result>` check
|
|
||||||
|
|
||||||
Finds function calls where it is possible to cause a not null-terminated
|
|
||||||
result.
|
|
||||||
|
|
||||||
- New :doc:`bugprone-signed-char-misuse
|
|
||||||
<clang-tidy/checks/bugprone-signed-char-misuse>` check.
|
|
||||||
|
|
||||||
Finds ``signed char`` to integer conversions which might indicate a
|
|
||||||
programming error.
|
|
||||||
|
|
||||||
- New :doc:`cert-mem57-cpp
|
|
||||||
<clang-tidy/checks/cert-mem57-cpp>` check.
|
|
||||||
|
|
||||||
Checks if an object of type with extended alignment is allocated by using
|
|
||||||
the default ``operator new``.
|
|
||||||
|
|
||||||
- New :doc:`cert-oop58-cpp
|
|
||||||
<clang-tidy/checks/cert-oop58-cpp>` check.
|
|
||||||
|
|
||||||
Finds assignments to the copied object and its direct or indirect members
|
|
||||||
in copy constructors and copy assignment operators.
|
|
||||||
|
|
||||||
- New :doc:`cppcoreguidelines-init-variables
|
|
||||||
<clang-tidy/checks/cppcoreguidelines-init-variables>` check.
|
|
||||||
|
|
||||||
Checks whether there are local variables that are declared without an initial
|
|
||||||
value.
|
|
||||||
|
|
||||||
- New :doc:`darwin-dispatch-once-nonstatic
|
|
||||||
<clang-tidy/checks/darwin-dispatch-once-nonstatic>` check.
|
|
||||||
|
|
||||||
Finds declarations of ``dispatch_once_t`` variables without static or global
|
|
||||||
storage.
|
|
||||||
|
|
||||||
- New :doc:`google-upgrade-googletest-case
|
|
||||||
<clang-tidy/checks/google-upgrade-googletest-case>` check.
|
|
||||||
|
|
||||||
Finds uses of deprecated Googletest APIs with names containing ``case`` and
|
|
||||||
replaces them with equivalent APIs with ``suite``.
|
|
||||||
|
|
||||||
- New :doc:`linuxkernel-must-use-errs
|
|
||||||
<clang-tidy/checks/linuxkernel-must-use-errs>` check.
|
|
||||||
|
|
||||||
Checks Linux kernel code to see if it uses the results from the functions in
|
|
||||||
``linux/err.h``.
|
|
||||||
|
|
||||||
- New :doc:`llvm-prefer-register-over-unsigned
|
|
||||||
<clang-tidy/checks/llvm-prefer-register-over-unsigned>` check.
|
|
||||||
|
|
||||||
Finds historical use of ``unsigned`` to hold vregs and physregs and rewrites
|
|
||||||
them to use ``Register``
|
|
||||||
|
|
||||||
- New :doc:`objc-missing-hash
|
|
||||||
<clang-tidy/checks/objc-missing-hash>` check.
|
|
||||||
|
|
||||||
Finds Objective-C implementations that implement ``-isEqual:`` without also
|
|
||||||
appropriately implementing ``-hash``.
|
|
||||||
|
|
||||||
- New :doc:`performance-no-automatic-move
|
|
||||||
<clang-tidy/checks/performance-no-automatic-move>` check.
|
|
||||||
|
|
||||||
Finds local variables that cannot be automatically moved due to constness.
|
|
||||||
|
|
||||||
- New :doc:`performance-trivially-destructible
|
|
||||||
<clang-tidy/checks/performance-trivially-destructible>` check.
|
|
||||||
|
|
||||||
Finds types that could be made trivially-destructible by removing out-of-line
|
|
||||||
defaulted destructor declarations.
|
|
||||||
|
|
||||||
- New :doc:`readability-make-member-function-const
|
|
||||||
<clang-tidy/checks/readability-make-member-function-const>` check.
|
|
||||||
|
|
||||||
Finds non-static member functions that can be made ``const``
|
|
||||||
because the functions don't use ``this`` in a non-const way.
|
|
||||||
|
|
||||||
- New :doc:`readability-qualified-auto
|
|
||||||
<clang-tidy/checks/readability-qualified-auto>` check.
|
|
||||||
|
|
||||||
Adds pointer and ``const`` qualifications to ``auto``-typed variables
|
|
||||||
that are deduced to pointers and ``const`` pointers.
|
|
||||||
|
|
||||||
- New :doc:`readability-redundant-access-specifiers
|
|
||||||
<clang-tidy/checks/readability-redundant-access-specifiers>` check.
|
|
||||||
|
|
||||||
Finds classes, structs, and unions that contain redundant member
|
|
||||||
access specifiers.
|
|
||||||
|
|
||||||
New aliases
|
New aliases
|
||||||
^^^^^^^^^^^
|
^^^^^^^^^^^
|
||||||
|
|
||||||
- New alias :doc:`cert-pos44-c
|
|
||||||
<clang-tidy/checks/cert-pos44-c>` to
|
|
||||||
:doc:`bugprone-bad-signal-to-kill-thread
|
|
||||||
<clang-tidy/checks/bugprone-bad-signal-to-kill-thread>` was added.
|
|
||||||
|
|
||||||
- New alias :doc:`llvm-qualified-auto
|
|
||||||
<clang-tidy/checks/llvm-qualified-auto>` to
|
|
||||||
:doc:`readability-qualified-auto
|
|
||||||
<clang-tidy/checks/readability-qualified-auto>` was added.
|
|
||||||
|
|
||||||
Changes in existing checks
|
Changes in existing checks
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
- Improved :doc:`bugprone-posix-return
|
|
||||||
<clang-tidy/checks/bugprone-posix-return>` check.
|
|
||||||
|
|
||||||
Now also checks if any calls to ``pthread_*`` functions expect negative
|
|
||||||
return values.
|
|
||||||
|
|
||||||
- Improved :doc:`hicpp-signed-bitwise
|
|
||||||
<clang-tidy/checks/hicpp-signed-bitwise>` check.
|
|
||||||
|
|
||||||
The check now supports the `IgnorePositiveIntegerLiterals` option.
|
|
||||||
|
|
||||||
- Improved :doc:`modernize-avoid-bind
|
|
||||||
<clang-tidy/checks/modernize-avoid-bind>` check.
|
|
||||||
|
|
||||||
The check now supports supports diagnosing and fixing arbitrary callables
|
|
||||||
instead of only simple free functions. The `PermissiveParameterList` option
|
|
||||||
has also been added to address situations where the existing fix-it logic
|
|
||||||
would sometimes generate code that no longer compiles.
|
|
||||||
|
|
||||||
- The :doc:`modernize-use-equals-default
|
|
||||||
<clang-tidy/checks/modernize-use-equals-default>` fix no longer adds
|
|
||||||
semicolons where they would be redundant.
|
|
||||||
|
|
||||||
- Improved :doc:`modernize-use-override
|
|
||||||
<clang-tidy/checks/modernize-use-override>` check.
|
|
||||||
|
|
||||||
The check now supports the `AllowOverrideAndFinal` option to eliminate
|
|
||||||
conflicts with `gcc -Wsuggest-override` or `gcc -Werror=suggest-override`.
|
|
||||||
|
|
||||||
- The :doc:`modernize-use-using
|
|
||||||
<clang-tidy/checks/modernize-use-using>` check now converts typedefs
|
|
||||||
containing struct definitions and multiple comma-separated types.
|
|
||||||
|
|
||||||
- Improved :doc:`readability-magic-numbers
|
|
||||||
<clang-tidy/checks/readability-magic-numbers>` check.
|
|
||||||
|
|
||||||
The check now supports the `IgnoreBitFieldsWidths` option to suppress
|
|
||||||
the warning for numbers used to specify bit field widths.
|
|
||||||
|
|
||||||
The check was updated to eliminate some false positives (such as using
|
|
||||||
class enumeration as non-type template parameters, or the synthetically
|
|
||||||
computed length of a static user string literal.)
|
|
||||||
|
|
||||||
- Improved :doc:`readability-redundant-member-init
|
|
||||||
<clang-tidy/checks/readability-redundant-member-init>` check.
|
|
||||||
|
|
||||||
The check now supports the `IgnoreBaseInCopyConstructors` option to avoid
|
|
||||||
`"base class 'Foo' should be explicitly initialized in the copy constructor"`
|
|
||||||
warnings or errors with `gcc -Wextra` or `gcc -Werror=extra`.
|
|
||||||
|
|
||||||
- The :doc:`readability-redundant-string-init
|
|
||||||
<clang-tidy/checks/readability-redundant-string-init>` check now supports a
|
|
||||||
`StringNames` option enabling its application to custom string classes.
|
|
||||||
|
|
||||||
Renamed checks
|
Renamed checks
|
||||||
^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^
|
||||||
|
|
||||||
- The 'objc-avoid-spinlock' check was renamed to :doc:`darwin-avoid-spinlock
|
|
||||||
<clang-tidy/checks/darwin-avoid-spinlock>`
|
|
||||||
|
|
||||||
Improvements to include-fixer
|
Improvements to include-fixer
|
||||||
-----------------------------
|
-----------------------------
|
||||||
@ -276,7 +106,3 @@ The improvements are...
|
|||||||
Clang-tidy visual studio plugin
|
Clang-tidy visual studio plugin
|
||||||
-------------------------------
|
-------------------------------
|
||||||
|
|
||||||
The clang-tidy-vs plugin has been removed from clang, as
|
|
||||||
it's no longer maintained. Users should migrate to
|
|
||||||
`Clang Power Tools <https://marketplace.visualstudio.com/items?itemName=caphyon.ClangPowerTools>`_
|
|
||||||
instead.
|
|
||||||
|
@ -49,9 +49,9 @@ copyright = u'2007-%d, The Clang Team' % date.today().year
|
|||||||
# built documents.
|
# built documents.
|
||||||
#
|
#
|
||||||
# The short version.
|
# The short version.
|
||||||
version = '10'
|
version = '11'
|
||||||
# The full version, including alpha/beta/rc tags.
|
# The full version, including alpha/beta/rc tags.
|
||||||
release = '10'
|
release = '11'
|
||||||
|
|
||||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||||
# for a list of supported languages.
|
# for a list of supported languages.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
========================================
|
========================================
|
||||||
Clang 10.0.0 (In-Progress) Release Notes
|
Clang 11.0.0 (In-Progress) Release Notes
|
||||||
========================================
|
========================================
|
||||||
|
|
||||||
.. contents::
|
.. contents::
|
||||||
@ -10,7 +10,7 @@ Written by the `LLVM Team <https://llvm.org/>`_
|
|||||||
|
|
||||||
.. warning::
|
.. warning::
|
||||||
|
|
||||||
These are in-progress notes for the upcoming Clang 10 release.
|
These are in-progress notes for the upcoming Clang 11 release.
|
||||||
Release notes for previous releases can be found on
|
Release notes for previous releases can be found on
|
||||||
`the Download Page <https://releases.llvm.org/download.html>`_.
|
`the Download Page <https://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 10.0.0. Here we
|
frontend, part of the LLVM Compiler Infrastructure, release 11.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
|
||||||
@ -30,12 +30,12 @@ For more information about Clang or LLVM, including information about the
|
|||||||
latest release, please see the `Clang Web Site <https://clang.llvm.org>`_ or the
|
latest release, please see the `Clang Web Site <https://clang.llvm.org>`_ or the
|
||||||
`LLVM Web Site <https://llvm.org>`_.
|
`LLVM Web Site <https://llvm.org>`_.
|
||||||
|
|
||||||
Note that if you are reading this file from a Subversion checkout or the
|
Note that if you are reading this file from a Git checkout or the
|
||||||
main Clang web page, this document applies to the *next* release, not
|
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 <https://llvm.org/releases/>`_.
|
see the `releases page <https://llvm.org/releases/>`_.
|
||||||
|
|
||||||
What's New in Clang 10.0.0?
|
What's New in Clang 11.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
|
||||||
@ -51,63 +51,15 @@ Major New Features
|
|||||||
Improvements to Clang's diagnostics
|
Improvements to Clang's diagnostics
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
- -Wtautological-overlap-compare will warn on negative numbers and non-int
|
- ...
|
||||||
types.
|
|
||||||
- -Wtautological-compare for self comparisons and
|
|
||||||
-Wtautological-overlap-compare will now look through member and array
|
|
||||||
access to determine if two operand expressions are the same.
|
|
||||||
- -Wtautological-bitwise-compare is a new warning group. This group has the
|
|
||||||
current warning which diagnoses the tautological comparison of a bitwise
|
|
||||||
operation and a constant. The group also has the new warning which diagnoses
|
|
||||||
when a bitwise-or with a non-negative value is converted to a bool, since
|
|
||||||
that bool will always be true.
|
|
||||||
- -Wbitwise-conditional-parentheses will warn on operator precedence issues
|
|
||||||
when mixing bitwise-and (&) and bitwise-or (|) operator with the
|
|
||||||
conditional operator (?:).
|
|
||||||
- -Wrange-loop-analysis got several improvements. It no longer warns about a
|
|
||||||
copy being made when the result is bound to an rvalue reference. It no longer
|
|
||||||
warns when an object of a small, trivially copyable type is copied. The
|
|
||||||
warning now offers fixits. It is now part of -Wall.
|
|
||||||
|
|
||||||
Non-comprehensive list of changes in this release
|
Non-comprehensive list of changes in this release
|
||||||
-------------------------------------------------
|
-------------------------------------------------
|
||||||
|
|
||||||
* In both C and C++ (C17 ``6.5.6p8``, C++ ``[expr.add]``), pointer arithmetic is
|
|
||||||
only permitted within arrays. In particular, the behavior of a program is not
|
|
||||||
defined if it adds a non-zero offset (or in C, any offset) to a null pointer,
|
|
||||||
or if it forms a null pointer by subtracting an integer from a non-null
|
|
||||||
pointer, and the LLVM optimizer now uses those guarantees for transformations.
|
|
||||||
This may lead to unintended behavior in code that performs these operations.
|
|
||||||
The Undefined Behavior Sanitizer ``-fsanitize=pointer-overflow`` check has
|
|
||||||
been extended to detect these cases, so that code relying on them can be
|
|
||||||
detected and fixed.
|
|
||||||
|
|
||||||
* The Implicit Conversion Sanitizer (``-fsanitize=implicit-conversion``) has
|
|
||||||
learned to sanitize pre/post increment/decrement of types with bit width
|
|
||||||
smaller than ``int``.
|
|
||||||
|
|
||||||
- For X86 target, -march=skylake-avx512, -march=icelake-client,
|
|
||||||
-march=icelake-server, -march=cascadelake, -march=cooperlake will default to
|
|
||||||
not using 512-bit zmm registers in vectorized code unless 512-bit intrinsics
|
|
||||||
are used in the source code. 512-bit operations are known to cause the CPUs
|
|
||||||
to run at a lower frequency which can impact performance. This behavior can be
|
|
||||||
changed by passing -mprefer-vector-width=512 on the command line.
|
|
||||||
|
|
||||||
* clang now defaults to ``.init_array`` on Linux. It used to use ``.ctors`` if
|
|
||||||
the found gcc installation is older than 4.7.0. Add ``-fno-use-init-array`` to
|
|
||||||
get the old behavior (``.ctors``).
|
|
||||||
|
|
||||||
New Compiler Flags
|
New Compiler Flags
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
- The -fgnuc-version= flag now controls the value of ``__GNUC__`` and related
|
|
||||||
macros. This flag does not enable or disable any GCC extensions implemented in
|
|
||||||
Clang. Setting the version to zero causes Clang to leave ``__GNUC__`` and
|
|
||||||
other GNU-namespaced macros, such as ``__GXX_WEAK__``, undefined.
|
|
||||||
|
|
||||||
- vzeroupper insertion on X86 targets can now be disabled with -mno-vzeroupper.
|
|
||||||
You can also force vzeroupper insertion to be used on CPUs that normally
|
|
||||||
wouldn't with -mvzeroupper.
|
|
||||||
|
|
||||||
Deprecated Compiler Flags
|
Deprecated Compiler Flags
|
||||||
-------------------------
|
-------------------------
|
||||||
@ -115,17 +67,11 @@ 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.
|
||||||
|
|
||||||
- -mmpx used to enable the __MPX__ preprocessor define for the Intel MPX
|
|
||||||
instructions. There were no MPX intrinsics.
|
|
||||||
- -mno-mpx used to disable -mmpx and is the default behavior.
|
|
||||||
|
|
||||||
- ...
|
- ...
|
||||||
|
|
||||||
Modified Compiler Flags
|
Modified Compiler Flags
|
||||||
-----------------------
|
-----------------------
|
||||||
|
|
||||||
- RISC-V now sets the architecture (riscv32/riscv64) based on the value provided
|
|
||||||
to the ``-march`` flag, overriding the target provided by ``-triple``.
|
|
||||||
|
|
||||||
New Pragmas in Clang
|
New Pragmas in Clang
|
||||||
--------------------
|
--------------------
|
||||||
@ -140,16 +86,6 @@ Attribute Changes in Clang
|
|||||||
Windows Support
|
Windows Support
|
||||||
---------------
|
---------------
|
||||||
|
|
||||||
- Previous Clang versions contained a work-around to avoid an issue with the
|
|
||||||
standard library headers in Visual Studio 2019 versions prior to 16.3. This
|
|
||||||
work-around has now been removed, and users of Visual Studio 2019 are
|
|
||||||
encouraged to upgrade to 16.3 or later, otherwise they may see link errors as
|
|
||||||
below:
|
|
||||||
|
|
||||||
.. code-block:: console
|
|
||||||
|
|
||||||
error LNK2005: "bool const std::_Is_integral<int>" (??$_Is_integral@H@std@@3_NB) already defined
|
|
||||||
|
|
||||||
C Language Changes in Clang
|
C Language Changes in Clang
|
||||||
---------------------------
|
---------------------------
|
||||||
|
|
||||||
@ -163,10 +99,6 @@ C11 Feature Support
|
|||||||
C++ Language Changes in Clang
|
C++ Language Changes in Clang
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
- The behaviour of the `gnu_inline` attribute now matches GCC, for cases
|
|
||||||
where used without the `extern` keyword. As this is a change compared to
|
|
||||||
how it behaved in previous Clang versions, a warning is emitted for this
|
|
||||||
combination.
|
|
||||||
|
|
||||||
C++1z Feature Support
|
C++1z Feature Support
|
||||||
^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^
|
||||||
@ -176,49 +108,6 @@ C++1z Feature Support
|
|||||||
Objective-C Language Changes in Clang
|
Objective-C Language Changes in Clang
|
||||||
-------------------------------------
|
-------------------------------------
|
||||||
|
|
||||||
- In both Objective-C and
|
|
||||||
Objective-C++, ``-Wcompare-distinct-pointer-types`` will now warn when
|
|
||||||
comparing ObjC ``Class`` with an ObjC instance type pointer.
|
|
||||||
|
|
||||||
.. code-block:: objc
|
|
||||||
|
|
||||||
Class clz = ...;
|
|
||||||
MyType *instance = ...;
|
|
||||||
bool eq = (clz == instance); // Previously undiagnosed, now warns.
|
|
||||||
|
|
||||||
- Objective-C++ now diagnoses conversions between ``Class`` and ObjC
|
|
||||||
instance type pointers. Such conversions already emitted an
|
|
||||||
on-by-default ``-Wincompatible-pointer-types`` warning in Objective-C
|
|
||||||
mode, but had inadvertently been missed entirely in
|
|
||||||
Objective-C++. This has been fixed, and they are now diagnosed as
|
|
||||||
errors, consistent with the usual C++ treatment for conversions
|
|
||||||
between unrelated pointer types.
|
|
||||||
|
|
||||||
.. code-block:: objc
|
|
||||||
|
|
||||||
Class clz = ...;
|
|
||||||
MyType *instance = ...;
|
|
||||||
clz = instance; // Previously undiagnosed, now an error.
|
|
||||||
instance = clz; // Previously undiagnosed, now an error.
|
|
||||||
|
|
||||||
One particular issue you may run into is attempting to use a class
|
|
||||||
as a key in a dictionary literal. This will now result in an error,
|
|
||||||
because ``Class`` is not convertable to ``id<NSCopying>``. (Note that
|
|
||||||
this was already a warning in Objective-C mode.) While an arbitrary
|
|
||||||
``Class`` object is not guaranteed to implement ``NSCopying``, the
|
|
||||||
default metaclass implementation does. Therefore, the recommended
|
|
||||||
solution is to insert an explicit cast to ``id``, which disables the
|
|
||||||
type-checking here.
|
|
||||||
|
|
||||||
.. code-block:: objc
|
|
||||||
|
|
||||||
Class cls = ...;
|
|
||||||
|
|
||||||
// Error: cannot convert from Class to id<NSCoding>.
|
|
||||||
NSDictionary* d = @{cls : @"Hello"};
|
|
||||||
|
|
||||||
// Fix: add an explicit cast to 'id'.
|
|
||||||
NSDictionary* d = @{(id)cls : @"Hello"};
|
|
||||||
|
|
||||||
OpenCL C Language Changes in Clang
|
OpenCL C Language Changes in Clang
|
||||||
----------------------------------
|
----------------------------------
|
||||||
@ -228,19 +117,6 @@ OpenCL C Language Changes in Clang
|
|||||||
ABI Changes in Clang
|
ABI Changes in Clang
|
||||||
--------------------
|
--------------------
|
||||||
|
|
||||||
- gcc passes vectors of __int128 in memory on X86-64. Clang historically
|
|
||||||
broke the vectors into multiple scalars using two 64-bit values for each
|
|
||||||
element. Clang now matches the gcc behavior on Linux and NetBSD. You can
|
|
||||||
switch back to old API behavior with flag: -fclang-abi-compat=9.0.
|
|
||||||
|
|
||||||
- RISC-V now chooses a default ``-march=`` and ``-mabi=`` to match (in almost
|
|
||||||
all cases) the GCC defaults. On baremetal targets, where neither ``-march=``
|
|
||||||
nor ``-mabi=`` are specified, Clang now differs from GCC by defaulting to
|
|
||||||
``-march=rv32imac -mabi=ilp32`` or ``-march=rv64imac -mabi=lp64`` depending on
|
|
||||||
the architecture in the target triple. These do not always match the defaults
|
|
||||||
in Clang 9. We strongly suggest that you explicitly pass `-march=` and
|
|
||||||
`-mabi=` when compiling for RISC-V, due to how extensible this architecture
|
|
||||||
is.
|
|
||||||
|
|
||||||
OpenMP Support in Clang
|
OpenMP Support in Clang
|
||||||
-----------------------
|
-----------------------
|
||||||
@ -255,37 +131,17 @@ CUDA Support in Clang
|
|||||||
Internal API Changes
|
Internal API Changes
|
||||||
--------------------
|
--------------------
|
||||||
|
|
||||||
These are major API changes that have happened since the 9.0.0 release of
|
These are major API changes that have happened since the 10.0.0 release of
|
||||||
Clang. If upgrading an external codebase that uses Clang as a library,
|
Clang. If upgrading an external codebase that uses Clang as a library,
|
||||||
this section should help get you past the largest hurdles of upgrading.
|
this section should help get you past the largest hurdles of upgrading.
|
||||||
|
|
||||||
- libTooling APIs that transfer ownership of `FrontendAction` objects now pass
|
|
||||||
them by `unique_ptr`, making the ownership transfer obvious in the type
|
|
||||||
system. `FrontendActionFactory::create()` now returns a
|
|
||||||
`unique_ptr<FrontendAction>`. `runToolOnCode`, `runToolOnCodeWithArgs`,
|
|
||||||
`ToolInvocation::ToolInvocation()` now take a `unique_ptr<FrontendAction>`.
|
|
||||||
|
|
||||||
Build System Changes
|
Build System Changes
|
||||||
--------------------
|
--------------------
|
||||||
|
|
||||||
These are major changes to the build system that have happened since the 9.0.0
|
These are major changes to the build system that have happened since the 10.0.0
|
||||||
release of Clang. Users of the build system should adjust accordingly.
|
release of Clang. Users of the build system should adjust accordingly.
|
||||||
|
|
||||||
- In 8.0.0 and below, the install-clang-headers target would install clang's
|
|
||||||
resource directory headers. This installation is now performed by the
|
|
||||||
install-clang-resource-headers target. Users of the old install-clang-headers
|
|
||||||
target should switch to the new install-clang-resource-headers target. The
|
|
||||||
install-clang-headers target now installs clang's API headers (corresponding
|
|
||||||
to its libraries), which is consistent with the install-llvm-headers target.
|
|
||||||
|
|
||||||
- In 9.0.0 and later Clang added a new target, clang-cpp, which generates a
|
|
||||||
shared library comprised of all the clang component libraries and exporting
|
|
||||||
the clang C++ APIs. Additionally the build system gained the new
|
|
||||||
"CLANG_LINK_CLANG_DYLIB" option, which defaults Off, and when set to On, will
|
|
||||||
force clang (and clang-based tools) to link the clang-cpp library instead of
|
|
||||||
statically linking clang's components. This option will reduce the size of
|
|
||||||
binary distributions at the expense of compiler performance.
|
|
||||||
|
|
||||||
- ...
|
- ...
|
||||||
|
|
||||||
AST Matchers
|
AST Matchers
|
||||||
@ -296,61 +152,6 @@ AST Matchers
|
|||||||
clang-format
|
clang-format
|
||||||
------------
|
------------
|
||||||
|
|
||||||
- The ``Standard`` style option specifies which version of C++ should be used
|
|
||||||
when parsing and formatting C++ code. The set of allowed values has changed:
|
|
||||||
|
|
||||||
- ``Latest`` will always enable new C++ language features.
|
|
||||||
- ``c++03``, ``c++11``, ``c++14``, ``c++17``, ``c++20`` will pin to exactly
|
|
||||||
that language version.
|
|
||||||
- ``Auto`` is the default and detects style from the code (this is unchanged).
|
|
||||||
|
|
||||||
The previous values of ``Cpp03`` and ``Cpp11`` are deprecated. Note that
|
|
||||||
``Cpp11`` is treated as ``Latest``, as this was always clang-format's
|
|
||||||
behavior. (One motivation for this change is the new name describes the
|
|
||||||
behavior better).
|
|
||||||
|
|
||||||
- Clang-format has a new option called ``--dry-run`` or ``-n`` to emit a
|
|
||||||
warning for clang-format violations. This can be used together
|
|
||||||
with --ferror-limit=N to limit the number of warnings per file and --Werror
|
|
||||||
to make warnings into errors.
|
|
||||||
|
|
||||||
- Option *IncludeIsMainSourceRegex* has been added to allow for additional
|
|
||||||
suffixes and file extensions to be considered as a source file
|
|
||||||
for execution of logic that looks for "main *include* file" to put
|
|
||||||
it on top.
|
|
||||||
|
|
||||||
By default, clang-format considers *source* files as "main" only when
|
|
||||||
they end with: ``.c``, ``.cc``, ``.cpp``, ``.c++``, ``.cxx``,
|
|
||||||
``.m`` or ``.mm`` extensions. This config option allows to
|
|
||||||
extend this set of source files considered as "main".
|
|
||||||
|
|
||||||
For example, if this option is configured to ``(Impl\.hpp)$``,
|
|
||||||
then a file ``ClassImpl.hpp`` is considered "main" (in addition to
|
|
||||||
``Class.c``, ``Class.cc``, ``Class.cpp`` and so on) and "main
|
|
||||||
include file" logic will be executed (with *IncludeIsMainRegex* setting
|
|
||||||
also being respected in later phase). Without this option set,
|
|
||||||
``ClassImpl.hpp`` would not have the main include file put on top
|
|
||||||
before any other include.
|
|
||||||
|
|
||||||
- Options ``DeriveLineEnding`` and ``UseCRLF`` have been added to allow
|
|
||||||
clang-format to control the newlines. ``DeriveLineEnding`` is by default
|
|
||||||
``true`` and reflects is the existing mechanism, which based is on majority
|
|
||||||
rule. The new options allows this to be turned off and ``UseCRLF`` to control
|
|
||||||
the decision as to which sort of line ending to use.
|
|
||||||
|
|
||||||
- Option ``SpaceBeforeSquareBrackets`` has been added to insert a space before
|
|
||||||
array declarations.
|
|
||||||
|
|
||||||
.. code-block:: c++
|
|
||||||
|
|
||||||
int a [5]; vs int a[5];
|
|
||||||
|
|
||||||
- Clang-format now supports JavaScript null operators.
|
|
||||||
|
|
||||||
.. code-block:: c++
|
|
||||||
|
|
||||||
const x = foo ?? default;
|
|
||||||
const z = foo?.bar?.baz;
|
|
||||||
|
|
||||||
libclang
|
libclang
|
||||||
--------
|
--------
|
||||||
@ -360,9 +161,6 @@ libclang
|
|||||||
Static Analyzer
|
Static Analyzer
|
||||||
---------------
|
---------------
|
||||||
|
|
||||||
- The Clang analyzer checker ``DeadStores`` gets a new option called
|
|
||||||
``WarnForDeadNestedAssignments`` to detect nested dead assignments
|
|
||||||
(enabled by default).
|
|
||||||
- ...
|
- ...
|
||||||
|
|
||||||
.. _release-notes-ubsan:
|
.. _release-notes-ubsan:
|
||||||
@ -370,39 +168,6 @@ Static Analyzer
|
|||||||
Undefined Behavior Sanitizer (UBSan)
|
Undefined Behavior Sanitizer (UBSan)
|
||||||
------------------------------------
|
------------------------------------
|
||||||
|
|
||||||
- * The ``pointer-overflow`` check was extended added to catch the cases where
|
|
||||||
a non-zero offset is applied to a null pointer, or the result of
|
|
||||||
applying the offset is a null pointer.
|
|
||||||
|
|
||||||
.. code-block:: c++
|
|
||||||
|
|
||||||
#include <cstdint> // for intptr_t
|
|
||||||
|
|
||||||
static char *getelementpointer_inbounds(char *base, unsigned long offset) {
|
|
||||||
// Potentially UB.
|
|
||||||
return base + offset;
|
|
||||||
}
|
|
||||||
|
|
||||||
char *getelementpointer_unsafe(char *base, unsigned long offset) {
|
|
||||||
// Always apply offset. UB if base is ``nullptr`` and ``offset`` is not
|
|
||||||
// zero, or if ``base`` is non-``nullptr`` and ``offset`` is
|
|
||||||
// ``-reinterpret_cast<intptr_t>(base)``.
|
|
||||||
return getelementpointer_inbounds(base, offset);
|
|
||||||
}
|
|
||||||
|
|
||||||
char *getelementpointer_safe(char *base, unsigned long offset) {
|
|
||||||
// Cast pointer to integer, perform usual arithmetic addition,
|
|
||||||
// and cast to pointer. This is legal.
|
|
||||||
char *computed =
|
|
||||||
reinterpret_cast<char *>(reinterpret_cast<intptr_t>(base) + offset);
|
|
||||||
// If either the pointer becomes non-``nullptr``, or becomes
|
|
||||||
// ``nullptr``, we must use ``computed`` result.
|
|
||||||
if (((base == nullptr) && (computed != nullptr)) ||
|
|
||||||
((base != nullptr) && (computed == nullptr)))
|
|
||||||
return computed;
|
|
||||||
// Else we can use ``getelementpointer_inbounds()``.
|
|
||||||
return getelementpointer_inbounds(base, offset);
|
|
||||||
}
|
|
||||||
|
|
||||||
Core Analysis Improvements
|
Core Analysis Improvements
|
||||||
==========================
|
==========================
|
||||||
|
@ -49,9 +49,9 @@ copyright = u'2013-%d, Analyzer Team' % date.today().year
|
|||||||
# built documents.
|
# built documents.
|
||||||
#
|
#
|
||||||
# The short version.
|
# The short version.
|
||||||
version = '6'
|
version = '11'
|
||||||
# The full version, including alpha/beta/rc tags.
|
# The full version, including alpha/beta/rc tags.
|
||||||
release = '6'
|
release = '11'
|
||||||
|
|
||||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||||
# for a list of supported languages.
|
# for a list of supported languages.
|
||||||
|
@ -50,9 +50,9 @@ copyright = u'2007-%d, The Clang Team' % date.today().year
|
|||||||
# built documents.
|
# built documents.
|
||||||
#
|
#
|
||||||
# The short version.
|
# The short version.
|
||||||
version = '10'
|
version = '11'
|
||||||
# The full version, including alpha/beta/rc tags.
|
# The full version, including alpha/beta/rc tags.
|
||||||
release = '10'
|
release = '11'
|
||||||
|
|
||||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||||
# for a list of supported languages.
|
# for a list of supported languages.
|
||||||
|
@ -27,7 +27,7 @@ if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR OR LIBCXX_STANDALONE_BUIL
|
|||||||
project(libcxx CXX C)
|
project(libcxx CXX C)
|
||||||
|
|
||||||
set(PACKAGE_NAME libcxx)
|
set(PACKAGE_NAME libcxx)
|
||||||
set(PACKAGE_VERSION 10.0.0git)
|
set(PACKAGE_VERSION 11.0.0git)
|
||||||
set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
|
set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
|
||||||
set(PACKAGE_BUGREPORT "llvm-bugs@lists.llvm.org")
|
set(PACKAGE_BUGREPORT "llvm-bugs@lists.llvm.org")
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
=========================================
|
=========================================
|
||||||
Libc++ 10.0.0 (In-Progress) Release Notes
|
Libc++ 11.0.0 (In-Progress) Release Notes
|
||||||
=========================================
|
=========================================
|
||||||
|
|
||||||
.. contents::
|
.. contents::
|
||||||
@ -10,7 +10,7 @@ Written by the `Libc++ Team <https://libcxx.llvm.org>`_
|
|||||||
|
|
||||||
.. warning::
|
.. warning::
|
||||||
|
|
||||||
These are in-progress notes for the upcoming libc++ 10 release.
|
These are in-progress notes for the upcoming libc++ 11 release.
|
||||||
Release notes for previous releases can be found on
|
Release notes for previous releases can be found on
|
||||||
`the Download Page <https://releases.llvm.org/download.html>`_.
|
`the Download Page <https://releases.llvm.org/download.html>`_.
|
||||||
|
|
||||||
@ -18,7 +18,7 @@ Introduction
|
|||||||
============
|
============
|
||||||
|
|
||||||
This document contains the release notes for the libc++ C++ Standard Library,
|
This document contains the release notes for the libc++ C++ Standard Library,
|
||||||
part of the LLVM Compiler Infrastructure, release 10.0.0. Here we describe the
|
part of the LLVM Compiler Infrastructure, release 11.0.0. Here we describe the
|
||||||
status of libc++ in some detail, including major improvements from the previous
|
status of libc++ in some detail, including major improvements from the previous
|
||||||
release and new feature work. For the general LLVM release notes, see `the LLVM
|
release and new feature work. For the general LLVM release notes, see `the LLVM
|
||||||
documentation <https://llvm.org/docs/ReleaseNotes.html>`_. All LLVM releases may
|
documentation <https://llvm.org/docs/ReleaseNotes.html>`_. All LLVM releases may
|
||||||
@ -27,12 +27,12 @@ be downloaded from the `LLVM releases web site <https://llvm.org/releases/>`_.
|
|||||||
For more information about libc++, please see the `Libc++ Web Site
|
For more information about libc++, please see the `Libc++ Web Site
|
||||||
<https://libcxx.llvm.org>`_ or the `LLVM Web Site <https://llvm.org>`_.
|
<https://libcxx.llvm.org>`_ or the `LLVM Web Site <https://llvm.org>`_.
|
||||||
|
|
||||||
Note that if you are reading this file from a Subversion checkout or the
|
Note that if you are reading this file from a Git checkout or the
|
||||||
main Libc++ web page, this document applies to the *next* release, not
|
main Libc++ 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 <https://llvm.org/releases/>`_.
|
see the `releases page <https://llvm.org/releases/>`_.
|
||||||
|
|
||||||
What's New in Libc++ 10.0.0?
|
What's New in Libc++ 11.0.0?
|
||||||
============================
|
============================
|
||||||
|
|
||||||
New Features
|
New Features
|
||||||
|
@ -47,9 +47,9 @@ copyright = u'2011-2018, LLVM Project'
|
|||||||
# built documents.
|
# built documents.
|
||||||
#
|
#
|
||||||
# The short X.Y version.
|
# The short X.Y version.
|
||||||
version = '10.0'
|
version = '11.0'
|
||||||
# The full version, including alpha/beta/rc tags.
|
# The full version, including alpha/beta/rc tags.
|
||||||
release = '10.0'
|
release = '11.0'
|
||||||
|
|
||||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||||
# for a list of supported languages.
|
# for a list of supported languages.
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
# define _GNUC_VER_NEW 0
|
# define _GNUC_VER_NEW 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define _LIBCPP_VERSION 10000
|
#define _LIBCPP_VERSION 11000
|
||||||
|
|
||||||
#ifndef _LIBCPP_ABI_VERSION
|
#ifndef _LIBCPP_ABI_VERSION
|
||||||
# define _LIBCPP_ABI_VERSION 1
|
# define _LIBCPP_ABI_VERSION 1
|
||||||
|
@ -1 +1 @@
|
|||||||
10000
|
11000
|
||||||
|
@ -83,7 +83,7 @@ if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR OR LIBUNWIND_STANDALONE_B
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(PACKAGE_NAME libunwind)
|
set(PACKAGE_NAME libunwind)
|
||||||
set(PACKAGE_VERSION 10.0.0git)
|
set(PACKAGE_VERSION 11.0.0git)
|
||||||
set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
|
set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
|
||||||
set(PACKAGE_BUGREPORT "llvm-bugs@lists.llvm.org")
|
set(PACKAGE_BUGREPORT "llvm-bugs@lists.llvm.org")
|
||||||
|
|
||||||
|
@ -48,9 +48,9 @@ copyright = u'2011-%d, LLVM Project' % date.today().year
|
|||||||
# built documents.
|
# built documents.
|
||||||
#
|
#
|
||||||
# The short X.Y version.
|
# The short X.Y version.
|
||||||
version = '10.0'
|
version = '11.0'
|
||||||
# The full version, including alpha/beta/rc tags.
|
# The full version, including alpha/beta/rc tags.
|
||||||
release = '10.0'
|
release = '11.0'
|
||||||
|
|
||||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||||
# for a list of supported languages.
|
# for a list of supported languages.
|
||||||
|
@ -1,19 +1,19 @@
|
|||||||
========================
|
========================
|
||||||
lld 10.0.0 Release Notes
|
lld 11.0.0 Release Notes
|
||||||
========================
|
========================
|
||||||
|
|
||||||
.. contents::
|
.. contents::
|
||||||
:local:
|
:local:
|
||||||
|
|
||||||
.. warning::
|
.. warning::
|
||||||
These are in-progress notes for the upcoming LLVM 10.0.0 release.
|
These are in-progress notes for the upcoming LLVM 11.0.0 release.
|
||||||
Release notes for previous releases can be found on
|
Release notes for previous releases can be found on
|
||||||
`the Download Page <https://releases.llvm.org/download.html>`_.
|
`the Download Page <https://releases.llvm.org/download.html>`_.
|
||||||
|
|
||||||
Introduction
|
Introduction
|
||||||
============
|
============
|
||||||
|
|
||||||
This document contains the release notes for the lld linker, release 10.0.0.
|
This document contains the release notes for the lld linker, release 11.0.0.
|
||||||
Here we describe the status of lld, including major improvements
|
Here we describe the status of lld, including major improvements
|
||||||
from the previous release. All lld releases may be downloaded
|
from the previous release. All lld releases may be downloaded
|
||||||
from the `LLVM releases web site <https://llvm.org/releases/>`_.
|
from the `LLVM releases web site <https://llvm.org/releases/>`_.
|
||||||
@ -24,11 +24,7 @@ Non-comprehensive list of changes in this release
|
|||||||
ELF Improvements
|
ELF Improvements
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
* Glob pattern, which you can use in linker scripts or version scripts,
|
* ...
|
||||||
now supports `\` and `[!...]`. Except character classes
|
|
||||||
(e.g. `[[:digit:]]`), lld's glob pattern should be fully compatible
|
|
||||||
with GNU now. (`r375051
|
|
||||||
<https://github.com/llvm/llvm-project/commit/48993d5ab9413f0e5b94dfa292a233ce55b09e3e>`_)
|
|
||||||
|
|
||||||
COFF Improvements
|
COFF Improvements
|
||||||
-----------------
|
-----------------
|
||||||
@ -48,7 +44,3 @@ MachO Improvements
|
|||||||
WebAssembly Improvements
|
WebAssembly Improvements
|
||||||
------------------------
|
------------------------
|
||||||
|
|
||||||
* `__data_end` and `__heap_base` are no longer exported by default,
|
|
||||||
as it's best to keep them internal when possible. They can be
|
|
||||||
explicitly exported with `--export=__data_end` and
|
|
||||||
`--export=__heap_base`, respectively.
|
|
||||||
|
@ -48,9 +48,9 @@ copyright = u'2011-%d, LLVM Project' % date.today().year
|
|||||||
# built documents.
|
# built documents.
|
||||||
#
|
#
|
||||||
# The short version.
|
# The short version.
|
||||||
version = '10'
|
version = '11'
|
||||||
# The full version, including alpha/beta/rc tags.
|
# The full version, including alpha/beta/rc tags.
|
||||||
release = '10'
|
release = '11'
|
||||||
|
|
||||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||||
# for a list of supported languages.
|
# for a list of supported languages.
|
||||||
|
@ -16,7 +16,7 @@ if(POLICY CMP0077)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT DEFINED LLVM_VERSION_MAJOR)
|
if(NOT DEFINED LLVM_VERSION_MAJOR)
|
||||||
set(LLVM_VERSION_MAJOR 10)
|
set(LLVM_VERSION_MAJOR 11)
|
||||||
endif()
|
endif()
|
||||||
if(NOT DEFINED LLVM_VERSION_MINOR)
|
if(NOT DEFINED LLVM_VERSION_MINOR)
|
||||||
set(LLVM_VERSION_MINOR 0)
|
set(LLVM_VERSION_MINOR 0)
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
=========================
|
=========================
|
||||||
LLVM 10.0.0 Release Notes
|
LLVM 11.0.0 Release Notes
|
||||||
=========================
|
=========================
|
||||||
|
|
||||||
.. contents::
|
.. contents::
|
||||||
:local:
|
:local:
|
||||||
|
|
||||||
.. warning::
|
.. warning::
|
||||||
These are in-progress notes for the upcoming LLVM 10 release.
|
These are in-progress notes for the upcoming LLVM 11 release.
|
||||||
Release notes for previous releases can be found on
|
Release notes for previous releases can be found on
|
||||||
`the Download Page <https://releases.llvm.org/download.html>`_.
|
`the Download Page <https://releases.llvm.org/download.html>`_.
|
||||||
|
|
||||||
@ -15,7 +15,7 @@ Introduction
|
|||||||
============
|
============
|
||||||
|
|
||||||
This document contains the release notes for the LLVM Compiler Infrastructure,
|
This document contains the release notes for the LLVM Compiler Infrastructure,
|
||||||
release 10.0.0. Here we describe the status of LLVM, including major improvements
|
release 11.0.0. Here we describe the status of LLVM, including major improvements
|
||||||
from the previous release, improvements in various subprojects of LLVM, and
|
from the previous release, improvements in various subprojects of LLVM, and
|
||||||
some of the current users of the code. All LLVM releases may be downloaded
|
some of the current users of the code. All LLVM releases may be downloaded
|
||||||
from the `LLVM releases web site <https://llvm.org/releases/>`_.
|
from the `LLVM releases web site <https://llvm.org/releases/>`_.
|
||||||
@ -26,7 +26,7 @@ have questions or comments, the `LLVM Developer's Mailing List
|
|||||||
<https://lists.llvm.org/mailman/listinfo/llvm-dev>`_ is a good place to send
|
<https://lists.llvm.org/mailman/listinfo/llvm-dev>`_ is a good place to send
|
||||||
them.
|
them.
|
||||||
|
|
||||||
Note that if you are reading this file from a Subversion checkout or the main
|
Note that if you are reading this file from a Git checkout or the main
|
||||||
LLVM web page, this document applies to the *next* release, not the current
|
LLVM 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
|
one. To see the release notes for a specific release, please see the `releases
|
||||||
page <https://llvm.org/releases/>`_.
|
page <https://llvm.org/releases/>`_.
|
||||||
@ -40,26 +40,8 @@ Non-comprehensive list of changes in this release
|
|||||||
functionality, or simply have a lot to talk about), see the `NOTE` below
|
functionality, or simply have a lot to talk about), see the `NOTE` below
|
||||||
for adding a new subsection.
|
for adding a new subsection.
|
||||||
|
|
||||||
* The ISD::FP_ROUND_INREG opcode and related code was removed from SelectionDAG.
|
* ...
|
||||||
* Enabled MemorySSA as a loop dependency. Since
|
|
||||||
`r370957 <https://reviews.llvm.org/rL370957>`_
|
|
||||||
(`D58311 <https://reviews.llvm.org/D58311>`_ ``[MemorySSA & LoopPassManager]
|
|
||||||
Enable MemorySSA as loop dependency. Update tests.``), the MemorySSA analysis
|
|
||||||
is being preserved and used by a series of loop passes. The most significant
|
|
||||||
use is in LICM, where the instruction hoisting and sinking relies on aliasing
|
|
||||||
information provided by MemorySSA vs previously creating an AliasSetTracker.
|
|
||||||
The LICM step of promoting variables to scalars still relies on the creation
|
|
||||||
of an AliasSetTracker, but its use is reduced to only be enabled for loops
|
|
||||||
with a small number of overall memory instructions. This choice was motivated
|
|
||||||
by experimental results showing compile and run time benefits or replacing the
|
|
||||||
AliasSetTracker usage with MemorySSA without any performance penalties.
|
|
||||||
The fact that MemorySSA is now preserved by and available in a series of loop
|
|
||||||
passes, also opens up opportunities for its use in those respective passes.
|
|
||||||
* The BasicBlockPass, BBPassManager and all their uses were deleted in
|
|
||||||
`this revision <https://reviews.llvm.org/rG9f0ff0b2634bab6a5be8dace005c9eb24d386dd1>`_.
|
|
||||||
|
|
||||||
* The LLVM_BUILD_LLVM_DYLIB and LLVM_LINK_LLVM_DYLIB CMake options are no longer
|
|
||||||
available on Windows.
|
|
||||||
|
|
||||||
.. NOTE
|
.. NOTE
|
||||||
If you would like to document a larger change, then you can add a
|
If you would like to document a larger change, then you can add a
|
||||||
@ -71,42 +53,10 @@ Non-comprehensive list of changes in this release
|
|||||||
|
|
||||||
Makes programs 10x faster by doing Special New Thing.
|
Makes programs 10x faster by doing Special New Thing.
|
||||||
|
|
||||||
* As per :ref:`LLVM Language Reference Manual <i_getelementptr>`,
|
|
||||||
``getelementptr inbounds`` can not change the null status of a pointer,
|
|
||||||
meaning it can not produce non-null pointer given null base pointer, and
|
|
||||||
likewise given non-null base pointer it can not produce null pointer; if it
|
|
||||||
does, the result is a :ref:`poison value <poisonvalues>`.
|
|
||||||
Since `r369789 <https://reviews.llvm.org/rL369789>`_
|
|
||||||
(`D66608 <https://reviews.llvm.org/D66608>`_ ``[InstCombine] icmp eq/ne (gep
|
|
||||||
inbounds P, Idx..), null -> icmp eq/ne P, null``) LLVM uses that for
|
|
||||||
transformations. If the original source violates these requirements this
|
|
||||||
may result in code being miscompiled. If you are using Clang front-end,
|
|
||||||
Undefined Behaviour Sanitizer ``-fsanitize=pointer-overflow`` check
|
|
||||||
will now catch such cases.
|
|
||||||
|
|
||||||
|
|
||||||
* Windows Control Flow Guard: the ``-cfguard`` option now emits CFG checks on
|
|
||||||
indirect function calls. The previous behavior is still available with the
|
|
||||||
``-cfguard-nochecks`` option. Note that this feature should always be used
|
|
||||||
with optimizations enabled.
|
|
||||||
|
|
||||||
* ``Callbacks`` have been added to ``CommandLine Options``. These can
|
|
||||||
be used to validate of selectively enable other options.
|
|
||||||
|
|
||||||
* The function attributes ``no-frame-pointer-elim`` and
|
|
||||||
``no-frame-pointer-elim-non-leaf`` have been replaced by ``frame-pointer``,
|
|
||||||
which has 3 values: ``none``, ``non-leaf``, and ``all``. The values mean what
|
|
||||||
functions should retain frame pointers.
|
|
||||||
|
|
||||||
Changes to the LLVM IR
|
Changes to the LLVM IR
|
||||||
----------------------
|
----------------------
|
||||||
|
|
||||||
* Unnamed function arguments now get printed with their automatically
|
|
||||||
generated name (e.g. "i32 %0") in definitions. This may require front-ends
|
|
||||||
to update their tests; if so there is a script utils/add_argument_names.py
|
|
||||||
that correctly converted 80-90% of Clang tests. Some manual work will almost
|
|
||||||
certainly still be needed.
|
|
||||||
|
|
||||||
|
|
||||||
Changes to building LLVM
|
Changes to building LLVM
|
||||||
------------------------
|
------------------------
|
||||||
@ -114,44 +64,25 @@ Changes to building LLVM
|
|||||||
Changes to the ARM Backend
|
Changes to the ARM Backend
|
||||||
--------------------------
|
--------------------------
|
||||||
|
|
||||||
During this release ...
|
During this release ...
|
||||||
|
|
||||||
|
|
||||||
Changes to the MIPS Target
|
Changes to the MIPS Target
|
||||||
--------------------------
|
--------------------------
|
||||||
|
|
||||||
During this release ...
|
During this release ...
|
||||||
|
|
||||||
|
|
||||||
Changes to the PowerPC Target
|
Changes to the PowerPC Target
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
During this release ...
|
During this release ...
|
||||||
|
|
||||||
Changes to the X86 Target
|
Changes to the X86 Target
|
||||||
-------------------------
|
-------------------------
|
||||||
|
|
||||||
During this release ...
|
During this release ...
|
||||||
|
|
||||||
* Less than 128 bit vector types, v2i32, v4i16, v2i16, v8i8, v4i8, and v2i8, are
|
|
||||||
now stored in the lower bits of an xmm register and the upper bits are
|
|
||||||
undefined. Previously the elements were spread apart with undefined bits in
|
|
||||||
between them.
|
|
||||||
* v32i8 and v64i8 vectors with AVX512F enabled, but AVX512BW disabled will now
|
|
||||||
be passed in ZMM registers for calls and returns. Previously they were passed
|
|
||||||
in two YMM registers. Old behavior can be enabled by passing
|
|
||||||
-x86-enable-old-knl-abi
|
|
||||||
* -mprefer-vector-width=256 is now the default behavior skylake-avx512 and later
|
|
||||||
Intel CPUs. This tries to limit the use of 512-bit registers which can cause a
|
|
||||||
decrease in CPU frequency on these CPUs. This can be re-enabled by passing
|
|
||||||
-mprefer-vector-width=512 to clang or passing -mattr=-prefer-256-bit to llc.
|
|
||||||
* Deprecated the mpx feature flag for the Intel MPX instructions. There were no
|
|
||||||
intrinsics for this feature. This change only this effects the results
|
|
||||||
returned by getHostCPUFeatures on CPUs that implement the MPX instructions.
|
|
||||||
* The feature flag fast-partial-ymm-or-zmm-write which previously disabled
|
|
||||||
vzeroupper insertion has been removed. It has been replaced with a vzeroupper
|
|
||||||
feature flag which has the opposite polarity. So -vzeroupper has the same
|
|
||||||
effect as +fast-partial-ymm-or-zmm-write.
|
|
||||||
|
|
||||||
Changes to the AMDGPU Target
|
Changes to the AMDGPU Target
|
||||||
-----------------------------
|
-----------------------------
|
||||||
@ -159,12 +90,12 @@ Changes to the AMDGPU Target
|
|||||||
Changes to the AVR Target
|
Changes to the AVR Target
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
During this release ...
|
During this release ...
|
||||||
|
|
||||||
Changes to the WebAssembly Target
|
Changes to the WebAssembly Target
|
||||||
---------------------------------
|
---------------------------------
|
||||||
|
|
||||||
During this release ...
|
During this release ...
|
||||||
|
|
||||||
|
|
||||||
Changes to the OCaml bindings
|
Changes to the OCaml bindings
|
||||||
@ -174,16 +105,10 @@ Changes to the OCaml bindings
|
|||||||
|
|
||||||
Changes to the C API
|
Changes to the C API
|
||||||
--------------------
|
--------------------
|
||||||
* C DebugInfo API ``LLVMDIBuilderCreateTypedef`` is updated to include an extra
|
|
||||||
argument ``AlignInBits``, to facilitate / propagate specified Alignment information
|
|
||||||
present in a ``typedef`` to Debug information in LLVM IR.
|
|
||||||
|
|
||||||
|
|
||||||
Changes to the Go bindings
|
Changes to the Go bindings
|
||||||
--------------------------
|
--------------------------
|
||||||
* Go DebugInfo API ``CreateTypedef`` is updated to include an extra argument ``AlignInBits``,
|
|
||||||
to facilitate / propagate specified Alignment information present in a ``typedef``
|
|
||||||
to Debug information in LLVM IR.
|
|
||||||
|
|
||||||
|
|
||||||
Changes to the DAG infrastructure
|
Changes to the DAG infrastructure
|
||||||
@ -192,7 +117,7 @@ Changes to the DAG infrastructure
|
|||||||
Changes to LLDB
|
Changes to LLDB
|
||||||
===============
|
===============
|
||||||
|
|
||||||
External Open Source Projects Using LLVM 10
|
External Open Source Projects Using LLVM 11
|
||||||
===========================================
|
===========================================
|
||||||
|
|
||||||
* A project...
|
* A project...
|
||||||
@ -204,7 +129,7 @@ Additional Information
|
|||||||
A wide variety of additional information is available on the `LLVM web page
|
A wide variety of additional information is available on the `LLVM web page
|
||||||
<https://llvm.org/>`_, in particular in the `documentation
|
<https://llvm.org/>`_, in particular in the `documentation
|
||||||
<https://llvm.org/docs/>`_ section. The web page also contains versions of the
|
<https://llvm.org/docs/>`_ section. The web page also contains versions of the
|
||||||
API documentation which is up-to-date with the Subversion version of the source
|
API documentation which is up-to-date with the Git version of the source
|
||||||
code. You can access versions of these documents specific to this release by
|
code. You can access versions of these documents specific to this release by
|
||||||
going into the ``llvm/docs/`` directory in the LLVM tree.
|
going into the ``llvm/docs/`` directory in the LLVM tree.
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
llvm_version_major = 10
|
llvm_version_major = 11
|
||||||
llvm_version_minor = 0
|
llvm_version_minor = 0
|
||||||
llvm_version_patch = 0
|
llvm_version_patch = 0
|
||||||
llvm_version = "$llvm_version_major.$llvm_version_minor.$llvm_version_patch"
|
llvm_version = "$llvm_version_major.$llvm_version_minor.$llvm_version_patch"
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
__author__ = 'Daniel Dunbar'
|
__author__ = 'Daniel Dunbar'
|
||||||
__email__ = 'daniel@minormatter.com'
|
__email__ = 'daniel@minormatter.com'
|
||||||
__versioninfo__ = (0, 10, 0)
|
__versioninfo__ = (0, 11, 0)
|
||||||
__version__ = '.'.join(str(v) for v in __versioninfo__) + 'dev'
|
__version__ = '.'.join(str(v) for v in __versioninfo__) + 'dev'
|
||||||
|
|
||||||
__all__ = []
|
__all__ = []
|
||||||
|
@ -27,8 +27,8 @@ set python64_dir=C:\Users\%USERNAME%\AppData\Local\Programs\Python\Python36
|
|||||||
for /f "usebackq" %%i in (`PowerShell ^(Get-Date^).ToString^('yyyyMMdd'^)`) do set datestamp=%%i
|
for /f "usebackq" %%i in (`PowerShell ^(Get-Date^).ToString^('yyyyMMdd'^)`) do set datestamp=%%i
|
||||||
|
|
||||||
set revision=%1
|
set revision=%1
|
||||||
set package_version=10.0.0-%revision%
|
set package_version=11.0.0-%revision%
|
||||||
set clang_format_vs_version=10.0.0.%datestamp%
|
set clang_format_vs_version=11.0.0.%datestamp%
|
||||||
set build_dir=llvm_package_%revision%
|
set build_dir=llvm_package_%revision%
|
||||||
|
|
||||||
echo Revision: %revision%
|
echo Revision: %revision%
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
=============================
|
=============================
|
||||||
Release Notes 10.0 (upcoming)
|
Release Notes 11.0 (upcoming)
|
||||||
=============================
|
=============================
|
||||||
|
|
||||||
In Polly 10 the following important changes have been incorporated.
|
In Polly 11 the following important changes have been incorporated.
|
||||||
|
|
||||||
.. warning::
|
.. warning::
|
||||||
|
|
||||||
|
@ -49,9 +49,9 @@ copyright = u'2010-%d, The Polly Team' % date.today().year
|
|||||||
# built documents.
|
# built documents.
|
||||||
#
|
#
|
||||||
# The short X.Y version.
|
# The short X.Y version.
|
||||||
version = '10.0-devel'
|
version = '11.0-devel'
|
||||||
# The full version, including alpha/beta/rc tags.
|
# The full version, including alpha/beta/rc tags.
|
||||||
release = '10.0-devel'
|
release = '11.0-devel'
|
||||||
|
|
||||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||||
# for a list of supported languages.
|
# for a list of supported languages.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
=======================================
|
=======================================
|
||||||
PSTL 10.0.0 (In-Progress) Release Notes
|
PSTL 11.0.0 (In-Progress) Release Notes
|
||||||
=======================================
|
=======================================
|
||||||
|
|
||||||
.. contents::
|
.. contents::
|
||||||
@ -10,7 +10,7 @@ Written by the `PSTL Team <https://pstl.llvm.org>`_
|
|||||||
|
|
||||||
.. warning::
|
.. warning::
|
||||||
|
|
||||||
These are in-progress notes for the upcoming pstl 10 release.
|
These are in-progress notes for the upcoming pstl 11 release.
|
||||||
Release notes for previous releases can be found on
|
Release notes for previous releases can be found on
|
||||||
`the Download Page <https://releases.llvm.org/download.html>`_.
|
`the Download Page <https://releases.llvm.org/download.html>`_.
|
||||||
|
|
||||||
@ -18,7 +18,7 @@ Introduction
|
|||||||
============
|
============
|
||||||
|
|
||||||
This document contains the release notes for the PSTL parallel algorithms
|
This document contains the release notes for the PSTL parallel algorithms
|
||||||
library, part of the LLVM Compiler Infrastructure, release 10.0.0. Here we
|
library, part of the LLVM Compiler Infrastructure, release 11.0.0. Here we
|
||||||
describe the status of the library in some detail, including major improvements
|
describe the status of the library in some detail, including major improvements
|
||||||
from the previous release and new feature work. For the general LLVM release
|
from the previous release and new feature work. For the general LLVM release
|
||||||
notes, see `the LLVM documentation <https://llvm.org/docs/ReleaseNotes.html>`_.
|
notes, see `the LLVM documentation <https://llvm.org/docs/ReleaseNotes.html>`_.
|
||||||
@ -30,7 +30,7 @@ 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
|
To see the release notes for a specific release, please see the `releases
|
||||||
page <https://llvm.org/releases/>`_.
|
page <https://llvm.org/releases/>`_.
|
||||||
|
|
||||||
What's New in PSTL 10.0.0?
|
What's New in PSTL 11.0.0?
|
||||||
==========================
|
==========================
|
||||||
|
|
||||||
New Features
|
New Features
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
#include <__pstl_config_site>
|
#include <__pstl_config_site>
|
||||||
|
|
||||||
// The version is XYYZ, where X is major, YY is minor, and Z is patch (i.e. X.YY.Z)
|
// The version is XYYZ, where X is major, YY is minor, and Z is patch (i.e. X.YY.Z)
|
||||||
#define _PSTL_VERSION 10000
|
#define _PSTL_VERSION 11000
|
||||||
#define _PSTL_VERSION_MAJOR (_PSTL_VERSION / 1000)
|
#define _PSTL_VERSION_MAJOR (_PSTL_VERSION / 1000)
|
||||||
#define _PSTL_VERSION_MINOR ((_PSTL_VERSION % 1000) / 10)
|
#define _PSTL_VERSION_MINOR ((_PSTL_VERSION % 1000) / 10)
|
||||||
#define _PSTL_VERSION_PATCH (_PSTL_VERSION % 10)
|
#define _PSTL_VERSION_PATCH (_PSTL_VERSION % 10)
|
||||||
|
@ -8,8 +8,8 @@
|
|||||||
|
|
||||||
#include <pstl/internal/pstl_config.h>
|
#include <pstl/internal/pstl_config.h>
|
||||||
|
|
||||||
static_assert(_PSTL_VERSION == 10000);
|
static_assert(_PSTL_VERSION == 11000);
|
||||||
static_assert(_PSTL_VERSION_MAJOR == 10);
|
static_assert(_PSTL_VERSION_MAJOR == 11);
|
||||||
static_assert(_PSTL_VERSION_MINOR == 00);
|
static_assert(_PSTL_VERSION_MINOR == 00);
|
||||||
static_assert(_PSTL_VERSION_PATCH == 0);
|
static_assert(_PSTL_VERSION_PATCH == 0);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user