mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-13 08:46:22 +00:00
parent
8c2574832e
commit
3bd3e06f3f
@ -43,21 +43,12 @@ infrastructure are described first, followed by tool-specific sections.
|
||||
Major New Features
|
||||
------------------
|
||||
|
||||
- The ``clang-pseudo`` tool is incomplete and does not have active maintainers,
|
||||
so it has been removed. See
|
||||
`the RFC <https://discourse.llvm.org/t/removing-pseudo-parser/71131/>`_ for
|
||||
more details.
|
||||
|
||||
...
|
||||
|
||||
Improvements to clangd
|
||||
----------------------
|
||||
|
||||
Inlay hints
|
||||
^^^^^^^^^^^
|
||||
|
||||
- Added `DefaultArguments` Inlay Hints option.
|
||||
|
||||
Diagnostics
|
||||
^^^^^^^^^^^
|
||||
|
||||
@ -73,16 +64,9 @@ Hover
|
||||
Code completion
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
- Added completion for C++20 keywords.
|
||||
|
||||
Code actions
|
||||
^^^^^^^^^^^^
|
||||
|
||||
- Added `Swap operands` tweak for certain binary operators.
|
||||
|
||||
- Improved the extract-to-function code action to allow extracting statements
|
||||
with overloaded operators like ``<<`` of ``std::ostream``.
|
||||
|
||||
Signature help
|
||||
^^^^^^^^^^^^^^
|
||||
|
||||
@ -95,326 +79,30 @@ Objective-C
|
||||
Miscellaneous
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
- The DefineOutline tweak now handles member functions of class templates.
|
||||
|
||||
Improvements to clang-doc
|
||||
-------------------------
|
||||
|
||||
Improvements to clang-query
|
||||
---------------------------
|
||||
|
||||
- Added `set enable-profile true/false` command for basic matcher profiling.
|
||||
|
||||
Improvements to clang-tidy
|
||||
--------------------------
|
||||
|
||||
- Improved :program:`clang-tidy-diff.py` script. Add the `-only-check-in-db`
|
||||
option to exclude files not present in the compilation database, avoiding
|
||||
false-negative results.
|
||||
|
||||
- Improved :program:`run-clang-tidy.py` script. Fixed minor shutdown noise
|
||||
happening on certain platforms when interrupting the script.
|
||||
|
||||
- Improved :program:`clang-tidy`:
|
||||
|
||||
- add support for `--verify-config` flag to check the configuration options of
|
||||
the `Clang Static Analyzer Checks <https://clang.llvm.org/docs/analyzer/checkers.html>`_.
|
||||
- accept parameters file in command line.
|
||||
- fix incorrect configuration file path resolving when file paths contain ``..``.
|
||||
- remove global options for most of checks. All options are changed to local
|
||||
options except `IncludeStyle`, `StrictMode` and `IgnoreMacros`. Global scoped
|
||||
`StrictMode` and `IgnoreMacros` are deprecated and will be removed in further
|
||||
releases.
|
||||
|
||||
.. csv-table::
|
||||
:header: "Check", "Options removed from global option"
|
||||
|
||||
:doc:`bugprone-reserved-identifier <clang-tidy/checks/bugprone/reserved-identifier>`, AggressiveDependentMemberLookup
|
||||
:doc:`bugprone-unchecked-optional-access <clang-tidy/checks/bugprone/unchecked-optional-access>`, IgnoreSmartPointerDereference
|
||||
:doc:`cppcoreguidelines-pro-type-member-init <clang-tidy/checks/cppcoreguidelines/pro-type-member-init>`, UseAssignment
|
||||
:doc:`cppcoreguidelines-rvalue-reference-param-not-moved <clang-tidy/checks/cppcoreguidelines/rvalue-reference-param-not-moved>`, AllowPartialMove; IgnoreUnnamedParams; IgnoreNonDeducedTemplateTypes
|
||||
:doc:`misc-include-cleaner <clang-tidy/checks/misc/include-cleaner>`, IgnoreHeaders; DeduplicateFindings
|
||||
:doc:`performance-inefficient-vector-operation <clang-tidy/checks/performance/inefficient-vector-operation>`, EnableProto
|
||||
:doc:`readability-identifier-naming <clang-tidy/checks/readability/identifier-naming>`, AggressiveDependentMemberLookup
|
||||
:doc:`readability-inconsistent-declaration-parameter-name <clang-tidy/checks/readability/inconsistent-declaration-parameter-name>`, Strict
|
||||
:doc:`readability-redundant-access-specifiers <clang-tidy/checks/readability/redundant-access-specifiers>`, CheckFirstDeclaration
|
||||
:doc:`readability-redundant-casting <clang-tidy/checks/readability/redundant-casting>`, IgnoreTypeAliases
|
||||
|
||||
New checks
|
||||
^^^^^^^^^^
|
||||
|
||||
- New :doc:`bugprone-bitwise-pointer-cast
|
||||
<clang-tidy/checks/bugprone/bitwise-pointer-cast>` check.
|
||||
|
||||
Warns about code that tries to cast between pointers by means of
|
||||
``std::bit_cast`` or ``memcpy``.
|
||||
|
||||
- New :doc:`bugprone-incorrect-enable-shared-from-this
|
||||
<clang-tidy/checks/bugprone/incorrect-enable-shared-from-this>` check.
|
||||
|
||||
Detect classes or structs that do not publicly inherit from
|
||||
``std::enable_shared_from_this``, because unintended behavior will
|
||||
otherwise occur when calling ``shared_from_this``.
|
||||
|
||||
- New :doc:`bugprone-nondeterministic-pointer-iteration-order
|
||||
<clang-tidy/checks/bugprone/nondeterministic-pointer-iteration-order>`
|
||||
check.
|
||||
|
||||
Finds nondeterministic usages of pointers in unordered containers.
|
||||
|
||||
- New :doc:`bugprone-tagged-union-member-count
|
||||
<clang-tidy/checks/bugprone/tagged-union-member-count>` check.
|
||||
|
||||
Gives warnings for tagged unions, where the number of tags is
|
||||
different from the number of data members inside the union.
|
||||
|
||||
- New :doc:`modernize-use-integer-sign-comparison
|
||||
<clang-tidy/checks/modernize/use-integer-sign-comparison>` check.
|
||||
|
||||
Replace comparisons between signed and unsigned integers with their safe
|
||||
C++20 ``std::cmp_*`` alternative, if available.
|
||||
|
||||
- New :doc:`portability-template-virtual-member-function
|
||||
<clang-tidy/checks/portability/template-virtual-member-function>` check.
|
||||
|
||||
Finds cases when an uninstantiated virtual member function in a template class
|
||||
causes cross-compiler incompatibility.
|
||||
|
||||
New check aliases
|
||||
^^^^^^^^^^^^^^^^^
|
||||
|
||||
- New alias :doc:`cert-arr39-c <clang-tidy/checks/cert/arr39-c>` to
|
||||
:doc:`bugprone-sizeof-expression
|
||||
<clang-tidy/checks/bugprone/sizeof-expression>` was added.
|
||||
|
||||
Changes in existing checks
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
- Improved :doc:`altera-id-dependent-backward-branch
|
||||
<clang-tidy/checks/altera/id-dependent-backward-branch>` check by fixing
|
||||
crashes from invalid code.
|
||||
|
||||
- Improved :doc:`bugprone-branch-clone
|
||||
<clang-tidy/checks/bugprone/branch-clone>` check to improve detection of
|
||||
branch clones by now detecting duplicate inner and outer if statements.
|
||||
|
||||
- Improved :doc:`bugprone-casting-through-void
|
||||
<clang-tidy/checks/bugprone/casting-through-void>` check to suggest replacing
|
||||
the offending code with ``reinterpret_cast``, to more clearly express intent.
|
||||
|
||||
- Improved :doc:`bugprone-dangling-handle
|
||||
<clang-tidy/checks/bugprone/dangling-handle>` check to treat ``std::span`` as a
|
||||
handle class.
|
||||
|
||||
- Improved :doc:`bugprone-exception-escape
|
||||
<clang-tidy/checks/bugprone/exception-escape>` by fixing false positives
|
||||
when a consteval function with throw statements.
|
||||
|
||||
- Improved :doc:`bugprone-forwarding-reference-overload
|
||||
<clang-tidy/checks/bugprone/forwarding-reference-overload>` check by fixing
|
||||
a crash when determining if an ``enable_if[_t]`` was found.
|
||||
|
||||
- Improve :doc:`bugprone-narrowing-conversions
|
||||
<clang-tidy/checks/bugprone/narrowing-conversions>` to avoid incorrect check
|
||||
results when floating point type is not ``float``, ``double`` and
|
||||
``long double``.
|
||||
|
||||
- Improved :doc:`bugprone-optional-value-conversion
|
||||
<clang-tidy/checks/bugprone/optional-value-conversion>` to support detecting
|
||||
conversion directly by ``std::make_unique`` and ``std::make_shared``.
|
||||
|
||||
- Improved :doc:`bugprone-posix-return
|
||||
<clang-tidy/checks/bugprone/posix-return>` check to support integer literals
|
||||
as LHS and posix call as RHS of comparison.
|
||||
|
||||
- Improved :doc:`bugprone-return-const-ref-from-parameter
|
||||
<clang-tidy/checks/bugprone/return-const-ref-from-parameter>` check to
|
||||
diagnose potential dangling references when returning a ``const &`` parameter
|
||||
by using the conditional operator ``cond ? var1 : var2`` and fixing false
|
||||
positives for functions which contain lambda and ignore parameters
|
||||
with ``[[clang::lifetimebound]]`` attribute.
|
||||
|
||||
- Improved :doc:`bugprone-sizeof-expression
|
||||
<clang-tidy/checks/bugprone/sizeof-expression>` check to find suspicious
|
||||
usages of ``sizeof()``, ``alignof()``, and ``offsetof()`` when adding or
|
||||
subtracting from a pointer directly or when used to scale a numeric value and
|
||||
fix false positive when sizeof expression with template types.
|
||||
|
||||
- Improved :doc:`bugprone-throw-keyword-missing
|
||||
<clang-tidy/checks/bugprone/throw-keyword-missing>` by fixing a false positive
|
||||
when using non-static member initializers and a constructor.
|
||||
|
||||
- Improved :doc:`bugprone-unchecked-optional-access
|
||||
<clang-tidy/checks/bugprone/unchecked-optional-access>` to support
|
||||
``bsl::optional`` and ``bdlb::NullableValue`` from
|
||||
<https://github.com/bloomberg/bde>_.
|
||||
|
||||
- Improved :doc:`bugprone-unhandled-self-assignment
|
||||
<clang-tidy/checks/bugprone/unhandled-self-assignment>` check by fixing smart
|
||||
pointer check against std::unique_ptr type.
|
||||
|
||||
- Improved :doc:`bugprone-unsafe-functions
|
||||
<clang-tidy/checks/bugprone/unsafe-functions>` check to allow specifying
|
||||
additional functions to match.
|
||||
|
||||
- Improved :doc:`bugprone-unused-local-non-trivial-variable
|
||||
<clang-tidy/checks/bugprone/unused-local-non-trivial-variable>` check to avoid
|
||||
false positives when using name-independent variables after C++26.
|
||||
|
||||
- Improved :doc:`bugprone-use-after-move
|
||||
<clang-tidy/checks/bugprone/use-after-move>` to avoid triggering on
|
||||
``reset()`` calls on moved-from ``std::optional`` and ``std::any`` objects,
|
||||
similarly to smart pointers.
|
||||
|
||||
- Improved :doc:`cert-flp30-c <clang-tidy/checks/cert/flp30-c>` check to
|
||||
fix false positive that floating point variable is only used in increment
|
||||
expression.
|
||||
|
||||
- Improved :doc:`cppcoreguidelines-avoid-const-or-ref-data-members
|
||||
<clang-tidy/checks/cppcoreguidelines/avoid-const-or-ref-data-members>` check to
|
||||
avoid false positives when detecting a templated class with inheritance.
|
||||
|
||||
- Improved :doc:`cppcoreguidelines-init-variables
|
||||
<clang-tidy/checks/cppcoreguidelines/init-variables>` check by fixing the
|
||||
insertion location for function pointers.
|
||||
|
||||
- Improved :doc:`cppcoreguidelines-prefer-member-initializer
|
||||
<clang-tidy/checks/cppcoreguidelines/prefer-member-initializer>` check to
|
||||
avoid false positive when member initialization depends on a structured
|
||||
binding variable.
|
||||
|
||||
- Fixed :doc:`cppcoreguidelines-pro-type-union-access
|
||||
<clang-tidy/checks/cppcoreguidelines/pro-type-union-access>` check to
|
||||
report a location even when the member location is not valid.
|
||||
|
||||
- Improved :doc:`misc-definitions-in-headers
|
||||
<clang-tidy/checks/misc/definitions-in-headers>` check by rewording the
|
||||
diagnostic note that suggests adding ``inline``.
|
||||
|
||||
- Improved :doc:`misc-redundant-expression
|
||||
<clang-tidy/checks/misc/redundant-expression>` check by extending the
|
||||
checker to detect floating point and integer literals in redundant
|
||||
expressions.
|
||||
|
||||
- Improved :doc:`misc-unconventional-assign-operator
|
||||
<clang-tidy/checks/misc/unconventional-assign-operator>` check to avoid
|
||||
false positive for C++23 deducing this.
|
||||
|
||||
- Improved :doc:`misc-use-internal-linkage
|
||||
<clang-tidy/checks/misc/use-internal-linkage>` check to insert ``static``
|
||||
keyword before type qualifiers such as ``const`` and ``volatile``. Also, fix
|
||||
false positives for function declaration without body, C++20 consteval
|
||||
functions, C++20 export declarations, and global scoped
|
||||
overloaded ``operator new`` and ``operator delete``.
|
||||
|
||||
- Improved :doc:`modernize-avoid-c-arrays
|
||||
<clang-tidy/checks/modernize/avoid-c-arrays>` check to suggest using
|
||||
``std::span`` as a replacement for parameters of incomplete C array type in
|
||||
C++20 and ``std::array`` or ``std::vector`` before C++20.
|
||||
|
||||
- Improved :doc:`modernize-loop-convert
|
||||
<clang-tidy/checks/modernize/loop-convert>` check to fix false positive when
|
||||
using loop variable in initializer of lambda capture.
|
||||
|
||||
- Improved :doc:`modernize-min-max-use-initializer-list
|
||||
<clang-tidy/checks/modernize/min-max-use-initializer-list>` check by fixing
|
||||
a false positive when only an implicit conversion happened inside an
|
||||
initializer list.
|
||||
|
||||
- Improved :doc:`modernize-raw-string-literal
|
||||
<clang-tidy/checks/modernize/raw-string-literal>` check to fix incorrect
|
||||
fix-it when the string contains a user-defined suffix.
|
||||
|
||||
- Improved :doc:`modernize-use-designated-initializers
|
||||
<clang-tidy/checks/modernize/use-designated-initializers>` check to fix a
|
||||
crash when a class is declared but not defined.
|
||||
|
||||
- Improved :doc:`modernize-use-integer-sign-comparison
|
||||
<clang-tidy/checks/modernize/use-integer-sign-comparison>` check to
|
||||
add an option ``EnableQtSupport``, that makes C++17 ``q20::cmp_*`` alternative
|
||||
available for Qt-based applications.
|
||||
|
||||
- Improved :doc:`modernize-use-nullptr
|
||||
<clang-tidy/checks/modernize/use-nullptr>` check to also recognize
|
||||
``NULL``/``__null`` (but not ``0``) when used with a templated type.
|
||||
|
||||
- Improved :doc:`modernize-use-starts-ends-with
|
||||
<clang-tidy/checks/modernize/use-starts-ends-with>` check to handle two new
|
||||
cases from ``rfind`` and ``compare`` to ``ends_with``, and one new case from
|
||||
``substr`` to ``starts_with``, and a small adjustment to the diagnostic message.
|
||||
|
||||
- Improved :doc:`modernize-use-std-format
|
||||
<clang-tidy/checks/modernize/use-std-format>` check to support replacing
|
||||
member function calls too and to only expand macros starting with ``PRI``
|
||||
and ``__PRI`` from ``<inttypes.h>`` in the format string.
|
||||
|
||||
- Improved :doc:`modernize-use-std-print
|
||||
<clang-tidy/checks/modernize/use-std-print>` check to support replacing
|
||||
member function calls too and to only expand macros starting with ``PRI``
|
||||
and ``__PRI`` from ``<inttypes.h>`` in the format string.
|
||||
|
||||
- Improved :doc:`modernize-use-using
|
||||
<clang-tidy/checks/modernize/use-using>` check by not expanding macros.
|
||||
|
||||
- Improved :doc:`performance-avoid-endl
|
||||
<clang-tidy/checks/performance/avoid-endl>` check to use ``std::endl`` as
|
||||
placeholder when lexer cannot get source text.
|
||||
|
||||
- Improved :doc:`performance-move-const-arg
|
||||
<clang-tidy/checks/performance/move-const-arg>` check to fix a crash when
|
||||
an argument type is declared but not defined.
|
||||
|
||||
- Improved :doc:`performance-unnecessary-copy-initialization
|
||||
<clang-tidy/checks/performance/unnecessary-copy-initialization>` check
|
||||
to consider static member functions the same way as free functions.
|
||||
|
||||
- Improved :doc:`readability-container-contains
|
||||
<clang-tidy/checks/readability/container-contains>` check to let it work on
|
||||
any class that has a ``contains`` method. Fix some false negatives in the
|
||||
``find()`` case.
|
||||
|
||||
- Improved :doc:`readability-enum-initial-value
|
||||
<clang-tidy/checks/readability/enum-initial-value>` check by only issuing
|
||||
diagnostics for the definition of an ``enum``, by not emitting a redundant
|
||||
file path for anonymous enums in the diagnostic, and by fixing a typo in the
|
||||
diagnostic.
|
||||
|
||||
- Improved :doc:`readability-identifier-naming
|
||||
<clang-tidy/checks/readability/identifier-naming>` check to
|
||||
validate ``namespace`` aliases.
|
||||
|
||||
- Improved :doc:`readability-implicit-bool-conversion
|
||||
<clang-tidy/checks/readability/implicit-bool-conversion>` check
|
||||
by adding the option `UseUpperCaseLiteralSuffix` to select the
|
||||
case of the literal suffix in fixes and fixing false positive for implicit
|
||||
conversion of comparison result in C23.
|
||||
|
||||
- Improved :doc:`readability-redundant-casting
|
||||
<clang-tidy/checks/readability/redundant-casting>` check
|
||||
by addressing a false positive in aggregate initialization through
|
||||
parenthesized list.
|
||||
|
||||
- Improved :doc:`readability-redundant-smartptr-get
|
||||
<clang-tidy/checks/readability/redundant-smartptr-get>` check to
|
||||
remove ``->``, when redundant ``get()`` is removed.
|
||||
|
||||
- Improved :doc:`readability-use-std-min-max
|
||||
<clang-tidy/checks/readability/use-std-min-max>` check to use correct template
|
||||
type in ``std::min`` and ``std::max`` when operand is integer literal.
|
||||
|
||||
Removed checks
|
||||
^^^^^^^^^^^^^^
|
||||
|
||||
Miscellaneous
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
- The :doc:`bugprone-narrowing-conversions <clang-tidy/checks/bugprone/narrowing-conversions>`
|
||||
check is no longer an alias of :doc:`cppcoreguidelines-narrowing-conversions
|
||||
<clang-tidy/checks/cppcoreguidelines/narrowing-conversions>`. Instead,
|
||||
:doc:`cppcoreguidelines-narrowing-conversions
|
||||
<clang-tidy/checks/cppcoreguidelines/narrowing-conversions>` is now an alias
|
||||
of :doc:`bugprone-narrowing-conversions <clang-tidy/checks/bugprone/narrowing-conversions>`.
|
||||
|
||||
Improvements to include-fixer
|
||||
-----------------------------
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,7 @@
|
||||
# The LLVM Version number information
|
||||
|
||||
if(NOT DEFINED LLVM_VERSION_MAJOR)
|
||||
set(LLVM_VERSION_MAJOR 20)
|
||||
set(LLVM_VERSION_MAJOR 21)
|
||||
endif()
|
||||
if(NOT DEFINED LLVM_VERSION_MINOR)
|
||||
set(LLVM_VERSION_MINOR 0)
|
||||
|
@ -1,9 +1,10 @@
|
||||
.. include:: ReleaseNotes/20.rst
|
||||
.. include:: ReleaseNotes/21.rst
|
||||
|
||||
.. Make sure to reference the non-live release notes in a toctree to avoid Sphinx errors.
|
||||
.. toctree::
|
||||
:hidden:
|
||||
|
||||
ReleaseNotes/20
|
||||
ReleaseNotes/19
|
||||
|
||||
.. The release notes are in versioned files, but we make sure to keep publishing
|
||||
|
71
libcxx/docs/ReleaseNotes/21.rst
Normal file
71
libcxx/docs/ReleaseNotes/21.rst
Normal file
@ -0,0 +1,71 @@
|
||||
===========================================
|
||||
Libc++ 21.0.0 (In-Progress) Release Notes
|
||||
===========================================
|
||||
|
||||
.. contents::
|
||||
:local:
|
||||
:depth: 2
|
||||
|
||||
Written by the `Libc++ Team <https://libcxx.llvm.org>`_
|
||||
|
||||
.. warning::
|
||||
|
||||
These are in-progress notes for the upcoming libc++ 20.0.0 release.
|
||||
Release notes for previous releases can be found on
|
||||
`the Download Page <https://releases.llvm.org/download.html>`_.
|
||||
|
||||
Introduction
|
||||
============
|
||||
|
||||
This document contains the release notes for the libc++ C++ Standard Library,
|
||||
part of the LLVM Compiler Infrastructure, release 20.0.0. Here we describe the
|
||||
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
|
||||
documentation <https://llvm.org/docs/ReleaseNotes.html>`_. All LLVM releases may
|
||||
be downloaded from the `LLVM releases web site <https://llvm.org/releases/>`_.
|
||||
|
||||
For more information about libc++, please see the `Libc++ Web Site
|
||||
<https://libcxx.llvm.org>`_ or the `LLVM Web Site <https://llvm.org>`_.
|
||||
|
||||
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
|
||||
the current one. To see the release notes for a specific release, please
|
||||
see the `releases page <https://llvm.org/releases/>`_.
|
||||
|
||||
What's New in Libc++ 21.0.0?
|
||||
==============================
|
||||
|
||||
Implemented Papers
|
||||
------------------
|
||||
|
||||
- TODO
|
||||
|
||||
|
||||
Improvements and New Features
|
||||
-----------------------------
|
||||
|
||||
- TODO
|
||||
|
||||
|
||||
Deprecations and Removals
|
||||
-------------------------
|
||||
|
||||
Upcoming Deprecations and Removals
|
||||
----------------------------------
|
||||
|
||||
LLVM 22
|
||||
~~~~~~~
|
||||
|
||||
- TODO
|
||||
|
||||
|
||||
ABI Affecting Changes
|
||||
---------------------
|
||||
|
||||
- TODO
|
||||
|
||||
|
||||
Build System Changes
|
||||
--------------------
|
||||
|
||||
- TODO
|
@ -28,7 +28,7 @@
|
||||
// _LIBCPP_VERSION represents the version of libc++, which matches the version of LLVM.
|
||||
// Given a LLVM release LLVM XX.YY.ZZ (e.g. LLVM 17.0.1 == 17.00.01), _LIBCPP_VERSION is
|
||||
// defined to XXYYZZ.
|
||||
# define _LIBCPP_VERSION 200000
|
||||
# define _LIBCPP_VERSION 210000
|
||||
|
||||
# define _LIBCPP_CONCAT_IMPL(_X, _Y) _X##_Y
|
||||
# define _LIBCPP_CONCAT(_X, _Y) _LIBCPP_CONCAT_IMPL(_X, _Y)
|
||||
|
@ -26,73 +26,14 @@ Non-comprehensive list of changes in this release
|
||||
ELF Improvements
|
||||
----------------
|
||||
|
||||
* ``-z nosectionheader`` has been implemented to omit the section header table.
|
||||
The operation is similar to ``llvm-objcopy --strip-sections``.
|
||||
(`#101286 <https://github.com/llvm/llvm-project/pull/101286>`_)
|
||||
* ``--randomize-section-padding=<seed>`` is introduced to insert random padding
|
||||
between input sections and at the start of each segment. This can be used to
|
||||
control measurement bias in A/B experiments.
|
||||
(`#117653 <https://github.com/llvm/llvm-project/pull/117653>`_)
|
||||
* The reproduce tarball created with ``--reproduce=`` now excludes directories
|
||||
specified in the ``--dependency-file`` argument (used by Ninja). This
|
||||
resolves an error where non-existent directories could cause issues when
|
||||
invoking ``ld.lld @response.txt``.
|
||||
* ``--symbol-ordering-file=`` and call graph profile can now be used together.
|
||||
* When ``--call-graph-ordering-file=`` is specified, ``.llvm.call-graph-profile``
|
||||
sections in relocatable files are no longer used.
|
||||
* ``--lto-basic-block-sections=labels`` is deprecated in favor of
|
||||
``--lto-basic-block-address-map``.
|
||||
(`#110697 <https://github.com/llvm/llvm-project/pull/110697>`_)
|
||||
* In non-relocatable links, a ``.note.GNU-stack`` section with the
|
||||
``SHF_EXECINSTR`` flag is now rejected unless ``-z execstack`` is specified.
|
||||
(`#124068 <https://github.com/llvm/llvm-project/pull/124068>`_)
|
||||
* In relocatable links, the ``sh_entsize`` member of a ``SHF_MERGE`` section
|
||||
with relocations is now respected in the output.
|
||||
* Quoted names can now be used in output section phdr, memory region names,
|
||||
``OVERLAY``, the LHS of ``--defsym``, and ``INSERT AFTER``.
|
||||
* Section ``CLASS`` linker script syntax binds input sections to named classes,
|
||||
which are referenced later one or more times. This provides access to the
|
||||
automatic spilling mechanism of `--enable-non-contiguous-regions` without
|
||||
globally changing the semantics of section matching. It also independently
|
||||
increases the expressive power of linker scripts.
|
||||
(`#95323 <https://github.com/llvm/llvm-project/pull/95323>`_)
|
||||
* ``INCLUDE`` cycle detection has been fixed. A linker script can now be
|
||||
included twice.
|
||||
* The ``archivename:`` syntax when matching input sections is now supported.
|
||||
(`#119293 <https://github.com/llvm/llvm-project/pull/119293>`_)
|
||||
* To support Arm v6-M, short thunks using B.w are no longer generated.
|
||||
(`#118111 <https://github.com/llvm/llvm-project/pull/118111>`_)
|
||||
* For AArch64, BTI-aware long branch thunks can now be created to a destination
|
||||
function without a BTI instruction.
|
||||
(`#108989 <https://github.com/llvm/llvm-project/pull/108989>`_)
|
||||
(`#116402 <https://github.com/llvm/llvm-project/pull/116402>`_)
|
||||
* Relocations related to GOT and TLSDESC for the AArch64 Pointer Authentication ABI
|
||||
are now supported.
|
||||
* Supported relocation types for x86-64 target:
|
||||
* ``R_X86_64_CODE_4_GOTPCRELX`` (`#109783 <https://github.com/llvm/llvm-project/pull/109783>`_) (`#116737 <https://github.com/llvm/llvm-project/pull/116737>`_)
|
||||
* ``R_X86_64_CODE_4_GOTTPOFF`` (`#116634 <https://github.com/llvm/llvm-project/pull/116634>`_)
|
||||
* ``R_X86_64_CODE_4_GOTPC32_TLSDESC`` (`#116909 <https://github.com/llvm/llvm-project/pull/116909>`_)
|
||||
* ``R_X86_64_CODE_6_GOTTPOFF`` (`#117675 <https://github.com/llvm/llvm-project/pull/117675>`_)
|
||||
* Supported relocation types for LoongArch target: ``R_LARCH_TLS_{LD,GD,DESC}_PCREL20_S2``.
|
||||
(`#100105 <https://github.com/llvm/llvm-project/pull/100105>`_)
|
||||
|
||||
Breaking changes
|
||||
----------------
|
||||
|
||||
* Removed support for the (deprecated) `R_RISCV_RVC_LUI` relocation. This
|
||||
was a binutils-internal relocation used during relaxation, and was not
|
||||
emitted by compilers/assemblers.
|
||||
|
||||
COFF Improvements
|
||||
-----------------
|
||||
* ``/includeglob`` has been implemented to match the behavior of ``--undefined-glob`` available for ELF.
|
||||
* ``/lldsavetemps`` allows saving select intermediate LTO compilation results (e.g. resolution, preopt, promote, internalize, import, opt, precodegen, prelink, combinedindex).
|
||||
* ``/machine:arm64ec`` support completed, enabling the linking of ARM64EC images.
|
||||
* COFF weak anti-dependency alias symbols are now supported.
|
||||
|
||||
MinGW Improvements
|
||||
------------------
|
||||
* ``--undefined-glob`` is now supported by translating into the ``/includeglob`` flag.
|
||||
|
||||
MachO Improvements
|
||||
------------------
|
||||
|
@ -42,17 +42,6 @@ point (e.g. maybe you would like to give an example of the
|
||||
functionality, or simply have a lot to talk about), see the comment below
|
||||
for adding a new subsection. -->
|
||||
|
||||
* Added a new IRNormalizer pass which aims to transform LLVM modules into
|
||||
a normal form by reordering and renaming instructions while preserving the
|
||||
same semantics. The normalizer makes it easier to spot semantic differences
|
||||
when diffing two modules which have undergone different passes.
|
||||
|
||||
* The SPIR-V backend is now an official LLVM target, providing OpenCL and SYCL
|
||||
conformance and establishing a foundation for broader applicability to other
|
||||
APIs, including Vulkan, GLSL, and HLSL. This backend aims to offer a unified
|
||||
approach for diverse compute and graphics workloads, providing a robust
|
||||
alternative to the Khronos SPIR-V LLVM Translator.
|
||||
|
||||
* ...
|
||||
|
||||
<!-- If you would like to document a larger change, then you can add a
|
||||
@ -67,112 +56,27 @@ Makes programs 10x faster by doing Special New Thing.
|
||||
Changes to the LLVM IR
|
||||
----------------------
|
||||
|
||||
* Types are no longer allowed to be recursive.
|
||||
|
||||
* The `x86_mmx` IR type has been removed. It will be translated to
|
||||
the standard vector type `<1 x i64>` in bitcode upgrade.
|
||||
* Renamed `llvm.experimental.stepvector` intrinsic to `llvm.stepvector`.
|
||||
|
||||
* Added `usub_cond` and `usub_sat` operations to `atomicrmw`.
|
||||
|
||||
* Introduced `noalias.addrspace` metadata.
|
||||
|
||||
* Remove the following intrinsics which can be replaced with a `bitcast`:
|
||||
|
||||
* `llvm.nvvm.bitcast.f2i`
|
||||
* `llvm.nvvm.bitcast.i2f`
|
||||
* `llvm.nvvm.bitcast.d2ll`
|
||||
* `llvm.nvvm.bitcast.ll2d`
|
||||
|
||||
* Remove the following intrinsics which can be replaced with a funnel-shift:
|
||||
|
||||
* `llvm.nvvm.rotate.b32`
|
||||
* `llvm.nvvm.rotate.right.b64`
|
||||
* `llvm.nvvm.rotate.b64`
|
||||
|
||||
* Remove the following intrinsics which can be replaced with an
|
||||
`addrspacecast`:
|
||||
|
||||
* `llvm.nvvm.ptr.gen.to.global`
|
||||
* `llvm.nvvm.ptr.gen.to.shared`
|
||||
* `llvm.nvvm.ptr.gen.to.constant`
|
||||
* `llvm.nvvm.ptr.gen.to.local`
|
||||
* `llvm.nvvm.ptr.global.to.gen`
|
||||
* `llvm.nvvm.ptr.shared.to.gen`
|
||||
* `llvm.nvvm.ptr.constant.to.gen`
|
||||
* `llvm.nvvm.ptr.local.to.gen`
|
||||
|
||||
* Remove the following intrinsics which can be relaced with a load from
|
||||
addrspace(1) with an !invariant.load metadata
|
||||
|
||||
* `llvm.nvvm.ldg.global.i`
|
||||
* `llvm.nvvm.ldg.global.f`
|
||||
* `llvm.nvvm.ldg.global.p`
|
||||
|
||||
* Operand bundle values can now be metadata strings.
|
||||
|
||||
* Fast math flags are now permitted on `fptrunc` and `fpext`.
|
||||
|
||||
Changes to LLVM infrastructure
|
||||
------------------------------
|
||||
|
||||
Changes to building LLVM
|
||||
------------------------
|
||||
|
||||
* Raised the minimum MSVC version to Visual Studio 2019 16.8.
|
||||
* Deprecated support for building compiler-rt with `LLVM_ENABLE_PROJECTS`.
|
||||
Users should instead use `LLVM_ENABLE_RUNTIMES`, either through the
|
||||
runtimes or the bootstrapping build.
|
||||
* Deprecated support for building libc with `LLVM_ENABLE_PROJECTS`.
|
||||
Users should instead use `LLVM_ENABLE_RUNTIMES`, either through the
|
||||
runtimes or the bootstrapping build.
|
||||
|
||||
Changes to TableGen
|
||||
-------------------
|
||||
|
||||
Changes to Interprocedural Optimizations
|
||||
----------------------------------------
|
||||
|
||||
* Added RelLookupTableConverterPass to LTO post-link pass pipeline.
|
||||
|
||||
Changes to the AArch64 Backend
|
||||
------------------------------
|
||||
|
||||
* `.balign N, 0`, `.p2align N, 0`, `.align N, 0` in code sections will now fill
|
||||
the required alignment space with a sequence of `0x0` bytes (the requested
|
||||
fill value) rather than NOPs.
|
||||
|
||||
* Assembler/disassembler support has been added for Armv9.6-A (2024)
|
||||
architecture extensions.
|
||||
|
||||
* Added support for the FUJITSU-MONAKA CPU.
|
||||
|
||||
Changes to the AMDGPU Backend
|
||||
-----------------------------
|
||||
|
||||
* Removed `llvm.amdgcn.flat.atomic.fadd` and
|
||||
`llvm.amdgcn.global.atomic.fadd` intrinsics. Users should use the
|
||||
{ref}`atomicrmw <i_atomicrmw>` instruction with `fadd` and
|
||||
addrspace(0) or addrspace(1) instead.
|
||||
|
||||
Changes to the ARM Backend
|
||||
--------------------------
|
||||
|
||||
* `.balign N, 0`, `.p2align N, 0`, `.align N, 0` in code sections will now fill
|
||||
the required alignment space with a sequence of `0x0` bytes (the requested
|
||||
fill value) rather than NOPs.
|
||||
|
||||
* The default behavior for frame pointers in leaf functions has been updated.
|
||||
When the `-fno-omit-frame-pointer` option is specified, `FPKeepKindStr` is
|
||||
set to `-mframe-pointer=all`, meaning the frame pointer (FP) is now retained
|
||||
in leaf functions by default. To eliminate the frame pointer in leaf functions,
|
||||
you must explicitly use the `-momit-leaf-frame-pointer` option.
|
||||
|
||||
* When using the `MOVT` or `MOVW` instructions, the Assembler will now check to
|
||||
ensure that any addend that is used is within a 16-bit signed value range. If the
|
||||
addend falls outside of this range, the LLVM backend will emit an error like so
|
||||
`Relocation Not In Range`.
|
||||
|
||||
Changes to the AVR Backend
|
||||
--------------------------
|
||||
|
||||
@ -185,192 +89,24 @@ Changes to the Hexagon Backend
|
||||
Changes to the LoongArch Backend
|
||||
--------------------------------
|
||||
|
||||
* [Incorrect GOT usage](https://github.com/llvm/llvm-project/pull/117099) for `non-dso_local` function calls in large code model is fixed.
|
||||
|
||||
* A [gprof support issue](https://github.com/llvm/llvm-project/issues/121103) is fixed.
|
||||
|
||||
* A [SDAG hang issue](https://github.com/llvm/llvm-project/issues/107355) caused by `ISD::CONCAT_VECTORS` is fixed.
|
||||
|
||||
* A [compiler crash issue](https://github.com/llvm/llvm-project/issues/118301) when converting `half` to `i32` is fixed.
|
||||
|
||||
* Almost all of `la64v1.1` instructions can now be generated. The full list is
|
||||
`frecipe.s`, `frecipe.d`, `frsqrte.s`, `frsqrte.d`, `vfrecipe.s`, `vfrecipe.d`,
|
||||
`vfrsqrte.s`, `vfrsqrte.d`, `xvfrecipe.s`, `xvfrecipe.d`, `xvfrsqrte.s`,
|
||||
`xvfrsqrte.d`, `sc.q`, `amcas.b`, `amcas.h`, `amcas.w`, `amcas.d`, `amcas_db.b`,
|
||||
`amcas_db.h`, `amcas_db.w`, `amcas_db.d`, `amswap.b`, `amswap.h`, `amswap_db.b`,
|
||||
`amswap_db.h`, `amadd.b`, `amadd.h`, `amadd_db.b`, `amadd_db.h`. Optionally
|
||||
generate instructions `dbar 0x700`, `div.w`, `div.wu`, `mod.w` and `mod.wu`
|
||||
when related target features are enabled. `llacq.w`, `screl.w`, `llacq.d` and
|
||||
`screl.d` cannot be generated yet.
|
||||
|
||||
* An llc option called `-loongarch-annotate-tablejump` is added to annotate
|
||||
table jump instruction in the `.discard.tablejump_annotate` section. A typical
|
||||
user of these annotations is the `objtool` in Linux kernel.
|
||||
|
||||
* The default cpu in `MCSubtargetInfo` is changed from `la464` to `generic-la64`.
|
||||
In addition, the `lsx` feature is added to `generic-la64`.
|
||||
|
||||
* CFI instructions now allow register names and aliases, previously only numbers
|
||||
were allowed.
|
||||
|
||||
* `RuntimeDyld` now supports LoongArch, which means that programs relying on
|
||||
`MCJIT` can now work.
|
||||
|
||||
* `.balign N, 0`, `.p2align N, 0`, `.align N, 0` in code sections will now fill
|
||||
the required alignment space with a sequence of `0x0` bytes (the requested
|
||||
fill value) rather than NOPs.
|
||||
|
||||
* `%ld_pcrel_20`, `%gd_pcrel_20` and `%desc_pcrel_20` operand modifiers are
|
||||
supported by assembler.
|
||||
|
||||
* A machine function pass called `LoongArch Merge Base Offset` is added to merge
|
||||
the offset of address calculation into the offset field of instructions in a
|
||||
global address lowering sequence.
|
||||
|
||||
* The `LoopDataPrefetch` pass can now work on LoongArch, but it is disabled by
|
||||
default due to the bad effect on Fortran benchmarks.
|
||||
|
||||
* Enable alias analysis by default.
|
||||
|
||||
* Avoid indirect branch jumps using the `$ra` register.
|
||||
|
||||
* Other optimizations.
|
||||
|
||||
Changes to the MIPS Backend
|
||||
---------------------------
|
||||
|
||||
Changes to the PowerPC Backend
|
||||
------------------------------
|
||||
|
||||
* The Linux `ppc64` LLC default cpu is updated from `ppc` to `ppc64`.
|
||||
* The AIX LLC default cpu is updated from `generic` to `pwr7`.
|
||||
|
||||
Changes to the RISC-V Backend
|
||||
-----------------------------
|
||||
|
||||
* `.balign N, 0`, `.p2align N, 0`, `.align N, 0` in code sections will now fill
|
||||
the required alignment space with a sequence of `0x0` bytes (the requested
|
||||
fill value) rather than NOPs.
|
||||
* Added Syntacore SCR4 and SCR5 CPUs: `-mcpu=syntacore-scr4/5-rv32/64`
|
||||
* `-mcpu=sifive-p470` was added.
|
||||
* Added Hazard3 CPU as taped out for RP2350: `-mcpu=rp2350-hazard3` (32-bit
|
||||
only).
|
||||
* Fixed length vector support using RVV instructions now requires VLEN>=64. This
|
||||
means Zve32x and Zve32f will also require Zvl64b. The prior support was
|
||||
largely untested.
|
||||
* The `Zvbc32e` and `Zvkgs` extensions are now supported experimentally.
|
||||
* Added `Smctr`, `Ssctr` and `Svvptc` extensions.
|
||||
* `-mcpu=syntacore-scr7` was added.
|
||||
* `-mcpu=tt-ascalon-d8` was added.
|
||||
* `-mcpu=mips-p8700` was added.
|
||||
* `-mcpu=sifive-p550` was added.
|
||||
* The `Zacas` extension is no longer marked as experimental.
|
||||
* Added Smdbltrp, Ssdbltrp extensions to -march.
|
||||
* The `Smmpm`, `Smnpm`, `Ssnpm`, `Supm`, and `Sspm` pointer masking extensions
|
||||
are no longer marked as experimental.
|
||||
* The `Sha` extension is now supported.
|
||||
* The RVA23U64, RVA23S64, RVB23U64, and RVB23S64 profiles are no longer marked
|
||||
as experimental.
|
||||
* `.insn <length>, <raw encoding>` can be used to assemble 48- and 64-bit
|
||||
instructions from raw integer values.
|
||||
* `.insn [<length>,] <raw encoding>` now accepts absolute expressions for both
|
||||
expressions, so that they can be computed from constants and absolute symbols.
|
||||
* The following new inline assembly constraints and modifiers are accepted:
|
||||
* `cr` constraint meaning an RVC-encoding compatible GPR (`x8`-`x15`)
|
||||
* `cf` constraint meaning an RVC-encoding compatible FPR (`f8`-`f15`)
|
||||
* `R` constraint meaning an even-odd GPR pair (prints as the even register,
|
||||
but both registers in the pair are considered live).
|
||||
* `cR` constraint meaning an RVC-encoding compatible even-odd GPR Pair (prints
|
||||
as an even register between `x8` and `x14`, but both registers in the pair
|
||||
are considered live).
|
||||
* `N` modifer meaning print the register encoding (0-31) rather than the name.
|
||||
* `f` and `cf` inline assembly constraints, when using F-/D-/H-in-X extensions,
|
||||
will use the relevant GPR rather than FPR. This makes inline assembly portable
|
||||
between e.g. F and Zfinx code.
|
||||
* Adds experimental assembler support for the Qualcomm uC 'Xqcicsr` (CSR)
|
||||
extension.
|
||||
* Adds experimental assembler support for the Qualcomm uC 'Xqcisls` (Scaled Load Store)
|
||||
extension.
|
||||
* Adds experimental assembler support for the Qualcomm uC 'Xqcia` (Arithmetic)
|
||||
extension.
|
||||
* Adds experimental assembler support for the Qualcomm uC 'Xqciac` (Load-Store Address Calculation)
|
||||
extension.
|
||||
* Adds experimental assembler support for the Qualcomm uC 'Xqcics` (Conditonal Select)
|
||||
extension.
|
||||
* Adds experimental assembler support for the Qualcomm uC 'Xqcilsm` (Load Store Multiple)
|
||||
extension.
|
||||
* Adds experimental assembler support for the Qualcomm uC 'Xqcicli` (Conditional Load Immediate)
|
||||
extension.
|
||||
* Adds experimental assembler support for the Qualcomm uC 'Xqcicm` (Conditonal Move)
|
||||
extension.
|
||||
* Adds experimental assembler support for the Qualcomm uC 'Xqciint` (Interrupts)
|
||||
extension.
|
||||
* Adds experimental assembler support for the Qualcomm uC 'Xqcilo` (Large Offset Load Store)
|
||||
extension.
|
||||
* Added ``Sdext`` and ``Sdtrig`` extensions.
|
||||
|
||||
Changes to the WebAssembly Backend
|
||||
----------------------------------
|
||||
|
||||
* The default target CPU, "generic", now enables the `-mnontrapping-fptoint`
|
||||
and `-mbulk-memory` flags, which correspond to the [Bulk Memory Operations]
|
||||
and [Non-trapping float-to-int Conversions] language features, which are
|
||||
[widely implemented in engines].
|
||||
|
||||
* A new Lime1 target CPU is added, `-mcpu=lime1`. This CPU follows the
|
||||
definition of the Lime1 CPU [here], and enables `-mmultivalue`,
|
||||
`-mmutable-globals`, `-mcall-indirect-overlong`, `-msign-ext`,
|
||||
`-mbulk-memory-opt`, `-mnontrapping-fptoint`, and `-mextended-const`.
|
||||
|
||||
* Support for the new standardized [Exception Handling] proposal is added.
|
||||
The [legacy Exception Handling] proposal is still supported, and turned on by
|
||||
the newly added `-wasm-use-legacy-eh` option. Given that major web browsers
|
||||
still default to the legacy EH proposal, this option is turned on by default
|
||||
for the moment.
|
||||
|
||||
[Bulk Memory Operations]: https://github.com/WebAssembly/bulk-memory-operations/blob/master/proposals/bulk-memory-operations/Overview.md
|
||||
[Non-trapping float-to-int Conversions]: https://github.com/WebAssembly/spec/blob/master/proposals/nontrapping-float-to-int-conversion/Overview.md
|
||||
[Exception Handling]: https://github.com/WebAssembly/exception-handling/blob/main/proposals/exception-handling/Exceptions.md
|
||||
[legacy Exception Handling]: https://github.com/WebAssembly/exception-handling/blob/main/proposals/exception-handling/legacy/Exceptions.md
|
||||
[widely implemented in engines]: https://webassembly.org/features/
|
||||
[here]: https://github.com/WebAssembly/tool-conventions/blob/main/Lime.md#lime1
|
||||
|
||||
Changes to the Windows Target
|
||||
-----------------------------
|
||||
|
||||
Changes to the X86 Backend
|
||||
--------------------------
|
||||
|
||||
* `.balign N, 0x90`, `.p2align N, 0x90`, and `.align N, 0x90` in code sections
|
||||
now fill the required alignment space with repeating `0x90` bytes, rather than
|
||||
using optimised NOP filling. Optimised NOP filling fills the space with NOP
|
||||
instructions of various widths, not just those that use the `0x90` byte
|
||||
encoding. To use optimised NOP filling in a code section, leave off the
|
||||
"fillval" argument, i.e. `.balign N`, `.p2align N` or `.align N` respectively.
|
||||
|
||||
* Due to the removal of the `x86_mmx` IR type, functions with
|
||||
`x86_mmx` arguments or return values will use a different,
|
||||
incompatible, calling convention ABI. Such functions are not
|
||||
generally seen in the wild (Clang never generates them!), so this is
|
||||
not expected to result in real-world compatibility problems.
|
||||
|
||||
* Support ISA of `AVX10.2-256` and `AVX10.2-512`.
|
||||
|
||||
* Supported instructions of `MOVRS AND AVX10.2`
|
||||
|
||||
* Supported ISA of `SM4(EVEX)`.
|
||||
|
||||
* Supported ISA of `MSR_IMM`.
|
||||
|
||||
* Supported ``-mcpu=diamondrapids``
|
||||
|
||||
* Supported emitting relocation types for x86-64 target:
|
||||
* `R_X86_64_CODE_4_GOTPCRELX`
|
||||
* `R_X86_64_CODE_4_GOTTPOFF`
|
||||
* `R_X86_64_CODE_4_GOTPC32_TLSDESC`
|
||||
* `R_X86_64_CODE_6_GOTTPOFF`
|
||||
|
||||
|
||||
Changes to the OCaml bindings
|
||||
-----------------------------
|
||||
|
||||
@ -380,54 +116,6 @@ Changes to the Python bindings
|
||||
Changes to the C API
|
||||
--------------------
|
||||
|
||||
* The following symbols are deleted due to the removal of the `x86_mmx` IR type:
|
||||
|
||||
* `LLVMX86_MMXTypeKind`
|
||||
* `LLVMX86MMXTypeInContext`
|
||||
* `LLVMX86MMXType`
|
||||
|
||||
* The following functions are added to further support non-null-terminated strings:
|
||||
|
||||
* `LLVMGetNamedFunctionWithLength`
|
||||
* `LLVMGetNamedGlobalWithLength`
|
||||
|
||||
* The following functions are added to access the `LLVMContextRef` associated
|
||||
with `LLVMValueRef` and `LLVMBuilderRef` objects:
|
||||
|
||||
* `LLVMGetValueContext`
|
||||
* `LLVMGetBuilderContext`
|
||||
|
||||
* The new pass manager can now be invoked with a custom alias analysis pipeline, using
|
||||
the `LLVMPassBuilderOptionsSetAAPipeline` function.
|
||||
|
||||
* It is now also possible to run the new pass manager on a single function, by calling
|
||||
`LLVMRunPassesOnFunction` instead of `LLVMRunPasses`.
|
||||
|
||||
* Support for creating instructions with custom synchronization scopes has been added:
|
||||
|
||||
* `LLVMGetSyncScopeID` to map a synchronization scope name to an ID.
|
||||
* `LLVMBuildFenceSyncScope`, `LLVMBuildAtomicRMWSyncScope` and
|
||||
`LLVMBuildAtomicCmpXchgSyncScope` versions of the existing builder functions
|
||||
with an additional synchronization scope ID parameter.
|
||||
* `LLVMGetAtomicSyncScopeID` and `LLVMSetAtomicSyncScopeID` to get and set the
|
||||
synchronization scope of any atomic instruction.
|
||||
* `LLVMIsAtomic` to check if an instruction is atomic, for use with the above functions.
|
||||
Because of backwards compatibility, `LLVMIsAtomicSingleThread` and
|
||||
`LLVMSetAtomicSingleThread` continue to work with any instruction type.
|
||||
|
||||
* The `LLVMSetPersonalityFn` and `LLVMSetInitializer` APIs now support clearing the
|
||||
personality function and initializer respectively by passing a null pointer.
|
||||
|
||||
* The following functions are added to allow iterating over debug records attached to
|
||||
instructions:
|
||||
|
||||
* `LLVMGetFirstDbgRecord`
|
||||
* `LLVMGetLastDbgRecord`
|
||||
* `LLVMGetNextDbgRecord`
|
||||
* `LLVMGetPreviousDbgRecord`
|
||||
|
||||
* Added `LLVMAtomicRMWBinOpUSubCond` and `LLVMAtomicRMWBinOpUSubSat` to `LLVMAtomicRMWBinOp` enum for AtomicRMW instructions.
|
||||
|
||||
Changes to the CodeGen infrastructure
|
||||
-------------------------------------
|
||||
|
||||
@ -440,156 +128,9 @@ Changes to the Debug Info
|
||||
Changes to the LLVM tools
|
||||
---------------------------------
|
||||
|
||||
* llvm-objcopy now supports the following options for Mach-O:
|
||||
`--globalize-symbol`, `--globalize-symbols`,
|
||||
`--keep-global-symbol`, `--keep-global-symbols`,
|
||||
`--localize-symbol`, `--localize-symbols`,
|
||||
`--skip-symbol`, `--skip-symbols`.
|
||||
|
||||
Changes to LLDB
|
||||
---------------------------------
|
||||
|
||||
* It is now recommended that LLDB be built with Python >= 3.8, but no changes
|
||||
have been made to the supported Python versions. The next release, LLDB 21,
|
||||
will require Python >= 3.8.
|
||||
|
||||
* LLDB now supports inline diagnostics for the expression evaluator and command line parser.
|
||||
|
||||
Old:
|
||||
```
|
||||
(lldb) p a+b
|
||||
error: <user expression 0>:1:1: use of undeclared identifier 'a'
|
||||
1 | a+b
|
||||
| ^
|
||||
error: <user expression 0>:1:3: use of undeclared identifier 'b'
|
||||
1 | a+b
|
||||
| ^
|
||||
```
|
||||
|
||||
New:
|
||||
|
||||
```
|
||||
(lldb) p a+b
|
||||
˄ ˄
|
||||
│ ╰─ error: use of undeclared identifier 'b'
|
||||
╰─ error: use of undeclared identifier 'a'
|
||||
```
|
||||
|
||||
|
||||
* Program stdout/stderr redirection will now open the file with O_TRUNC flag, make sure to truncate the file if path already exists.
|
||||
* eg. `settings set target.output-path/target.error-path <path/to/file>`
|
||||
|
||||
* A new setting `target.launch-working-dir` can be used to set a persistent cwd that is used by default by `process launch` and `run`.
|
||||
|
||||
* LLDB now parses shared libraries in parallel, resulting in an average 2x speedup when attaching (only available on Darwin platforms) and launching (available on all platforms).
|
||||
|
||||
* It is now possible to implement lldb commands in Python that use lldb's native command-line parser. In particular, that allows per-option/argument completion,
|
||||
with all the basic completers automatically supported and auto-generated help.
|
||||
The command template file in `lldb/examples/python/cmdtemplate.py` has been updated to show how to use this.
|
||||
|
||||
* Breakpoints on "inlined call sites" are now supported. Previous to this fix, breakpoints on source lines that only contained inlined call sites would be
|
||||
moved to the next source line, causing you to miss the inlined executions.
|
||||
|
||||
* On the command line, LLDB now limits tab completions to your terminal width to avoid wrapping.
|
||||
|
||||
Old:
|
||||
```
|
||||
Available completions:
|
||||
_regexp-attach -- Attach to process by ID or name.
|
||||
_regexp-break -- Set a breakpoint using one of several shorthand
|
||||
formats.
|
||||
_regexp-bt -- Show backtrace of the current thread's call sta
|
||||
ck. Any numeric argument displays at most that many frames. The argument 'al
|
||||
l' displays all threads. Use 'settings set frame-format' to customize the pr
|
||||
inting of individual frames and 'settings set thread-format' to customize th
|
||||
e thread header. Frame recognizers may filter thelist. Use 'thread backtrace
|
||||
-u (--unfiltered)' to see them all.
|
||||
_regexp-display -- Evaluate an expression at every stop (see 'help
|
||||
target stop-hook'.)
|
||||
|
||||
```
|
||||
|
||||
New:
|
||||
```
|
||||
Available completions:
|
||||
_regexp-attach -- Attach to process by ID or name.
|
||||
_regexp-break -- Set a breakpoint using one of several shorth...
|
||||
_regexp-bt -- Show backtrace of the current thread's call ...
|
||||
_regexp-display -- Evaluate an expression at every stop (see 'h...
|
||||
```
|
||||
|
||||
* DWARF indexing speed (for binaries not using the `debug_names` index) increased
|
||||
by [30-60%](https://github.com/llvm/llvm-project/pull/118657).
|
||||
|
||||
* The `frame diagnose` now works on ELF-based systems. After a crash, LLDB will
|
||||
try to determine the likely cause of the signal, matching Darwin behavior.
|
||||
This feature requires using a new `lldb-server` version and (like Darwin) only
|
||||
works on x86 binaries.
|
||||
|
||||
```
|
||||
* thread #1, name = 'a.out', stop reason = signal SIGSEGV: address not mapped to object (fault address=0x4)
|
||||
frame #0: 0x00005555555551aa a.out`GetSum(f=0x0000555555558018) at main.c:21:37
|
||||
18 }
|
||||
19
|
||||
20 int GetSum(struct Foo *f) {
|
||||
-> 21 return SumTwoIntegers(f->a, f->b->d ? 0 : 1);
|
||||
22 }
|
||||
23
|
||||
24 int main() {
|
||||
Likely cause: f->b->d accessed 0x4
|
||||
```
|
||||
|
||||
* Minidumps generated by LLDB now support:
|
||||
* 64 bit memory (due to 64b support, Minidumps are now paged to disk while being written).
|
||||
* Capturing of TLS variables.
|
||||
* Multiple signals or exceptions, including breakpoints.
|
||||
|
||||
* [New Core File API](https://lldb.llvm.org/python_api/lldb.SBSaveCoreOptions.html). This gives greater control on the data captured into the core file, relative to the existing `process save-core` styles.
|
||||
|
||||
* When opening ELF core files, LLDB will print additional information about the
|
||||
signal that killed the process and the disassembly view will display actual
|
||||
(relocated) targets of the jump instructions instead of raw offsets encoded in
|
||||
the instruction. This matches existing behavior for live processes.
|
||||
|
||||
Old:
|
||||
```
|
||||
* thread #1: tid = 329384, 0x0000000000401262, name = 'a.out', stop reason = signal SIGSEGV
|
||||
|
||||
0x7f1e3193e0a7 <+23>: ja 0xfe100 ; <+112>
|
||||
```
|
||||
|
||||
New:
|
||||
```
|
||||
* thread #1: tid = 329384, 0x0000000000401262, name = 'a.out', stop reason = SIGSEGV: address not mapped to object (fault address=0x0)
|
||||
|
||||
0x7f1e3193e0a7 <+23>: ja 0x7f1e3193e100 ; <+112>
|
||||
```
|
||||
|
||||
* `lldb-server` now listens to a single port for gdbserver connections and provides
|
||||
that port to the connection handler processes. This means that only 2 ports need
|
||||
to be opened in the firewall (one for the `lldb-server` platform, one for gdbserver connections).
|
||||
In addition, due to this work, `lldb-server` now works on Windows in the server mode.
|
||||
|
||||
* LLDB can now read the `fpmr` register from AArch64 Linux processes and core
|
||||
files.
|
||||
|
||||
* Support was added for debugging AArch64 Linux programs that use the
|
||||
Guarded Control Stack extension (GCS). This includes live processes and core
|
||||
files.
|
||||
|
||||
* LLDB now supports execution of user expressions for non-trivial cases for LoongArch and RISC-V targets, like function calls, when some code needs to be executed on the target.
|
||||
|
||||
* LLDB now supports optionally enabled/disabled register sets (particularly floating point registers) for RISC-V 64. This happens for targets like `RV64IMAC` or `RV64IMACV`,
|
||||
that have no floating point registers. The change is applied to native debugging and core-file usage.
|
||||
|
||||
* LLDB now supports [core-file for LoongArch](https://github.com/llvm/llvm-project/pull/112296).
|
||||
|
||||
* LLDB now supports [hardware breakpoint and watchpoint for LoongArch](https://github.com/llvm/llvm-project/pull/118770).
|
||||
|
||||
* LLDB now supports [vector registers for LoongArch](https://github.com/llvm/llvm-project/pull/120664) when debugging a live process.
|
||||
|
||||
* Incorrect floating-point register DWARF numbers for LoongArch were [fixed](https://github.com/llvm/llvm-project/pull/120391).
|
||||
|
||||
Changes to BOLT
|
||||
---------------------------------
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
llvm_version_major = 20
|
||||
llvm_version_major = 21
|
||||
llvm_version_minor = 0
|
||||
llvm_version_patch = 0
|
||||
llvm_version = "$llvm_version_major.$llvm_version_minor.$llvm_version_patch"
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
__author__ = "Daniel Dunbar"
|
||||
__email__ = "daniel@minormatter.com"
|
||||
__versioninfo__ = (20, 0, 0)
|
||||
__versioninfo__ = (21, 0, 0)
|
||||
__version__ = ".".join(str(v) for v in __versioninfo__) + "dev"
|
||||
|
||||
__all__ = []
|
||||
|
@ -1,5 +1,5 @@
|
||||
===========================
|
||||
OpenMP 20.0.0 Release Notes
|
||||
OpenMP 21.0.0 Release Notes
|
||||
===========================
|
||||
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
=======================================
|
||||
PSTL 20.0.0 (In-Progress) Release Notes
|
||||
PSTL 21.0.0 (In-Progress) Release Notes
|
||||
=======================================
|
||||
|
||||
.. contents::
|
||||
|
Loading…
x
Reference in New Issue
Block a user