Clear release notes for upcoming LLVM 20 dev cycle

This commit is contained in:
Tobias Hieta
2024-07-23 11:02:41 +02:00
parent 8f701b5df0
commit 10c6d6349e
7 changed files with 3 additions and 2012 deletions

View File

@@ -48,10 +48,6 @@ Major New Features
Improvements to clangd
----------------------
- Introduced exmperimental support for C++20 Modules. The experimental support can
be enabled by `-experimental-modules-support` option. It is in an early development
stage and may not perform efficiently in real-world scenarios.
Inlay hints
^^^^^^^^^^^
@@ -73,9 +69,6 @@ Code completion
Code actions
^^^^^^^^^^^^
- The tweak for turning unscoped into scoped enums now removes redundant prefixes
from the enum values.
Signature help
^^^^^^^^^^^^^^
@@ -88,23 +81,12 @@ Objective-C
Miscellaneous
^^^^^^^^^^^^^
- Added a boolean option `AnalyzeAngledIncludes` to `Includes` config section,
which allows to enable unused includes detection for all angled ("system") headers.
At this moment umbrella headers are not supported, so enabling this option
may result in false-positives.
Improvements to clang-doc
-------------------------
Improvements to clang-query
---------------------------
- Added the `file` command to dynamically load a list of commands and matchers
from an external file, allowing the cost of reading the compilation database
and building the AST to be imposed just once for faster prototyping.
- Removed support for ``enable output srcloc``. Fixes #GH82591
Improvements to clang-rename
----------------------------
@@ -113,431 +95,21 @@ The improvements are...
Improvements to clang-tidy
--------------------------
- Improved :program:`run-clang-tidy.py` script. Added argument `-source-filter`
to filter source files from the compilation database, via a RegEx. In a
similar fashion to what `-header-filter` does for header files.
Added progress indicator with a number of processed files and the runtime of
each invocation after completion.
- Improved :program:`check_clang_tidy.py` script. Added argument `-export-fixes`
to aid in clang-tidy and test development.
- Fixed bug where big values for unsigned check options overflowed into negative values
when being printed with `--dump-config`.
- Fixed `--verify-config` option not properly parsing checks when using the
literal operator in the `.clang-tidy` config.
- Added argument `--exclude-header-filter` and config option `ExcludeHeaderFilterRegex`
to exclude headers from analysis via a RegEx.
- Added argument `--allow-no-checks` to suppress "no checks enabled" error
when disabling all of the checks by `--checks='-*'`.
New checks
^^^^^^^^^^
- New :doc:`boost-use-ranges
<clang-tidy/checks/boost/use-ranges>` check.
Detects calls to standard library iterator algorithms that could be replaced
with a Boost ranges version instead.
- New :doc:`bugprone-crtp-constructor-accessibility
<clang-tidy/checks/bugprone/crtp-constructor-accessibility>` check.
Detects error-prone Curiously Recurring Template Pattern usage, when the CRTP
can be constructed outside itself and the derived class.
- New :doc:`bugprone-pointer-arithmetic-on-polymorphic-object
<clang-tidy/checks/bugprone/pointer-arithmetic-on-polymorphic-object>` check.
Finds pointer arithmetic performed on classes that contain a virtual function.
- New :doc:`bugprone-return-const-ref-from-parameter
<clang-tidy/checks/bugprone/return-const-ref-from-parameter>` check.
Detects return statements that return a constant reference parameter as constant
reference. This may cause use-after-free errors if the caller uses xvalues as
arguments.
- New :doc:`bugprone-suspicious-stringview-data-usage
<clang-tidy/checks/bugprone/suspicious-stringview-data-usage>` check.
Identifies suspicious usages of ``std::string_view::data()`` that could lead
to reading out-of-bounds data due to inadequate or incorrect string null
termination.
- New :doc:`misc-use-internal-linkage
<clang-tidy/checks/misc/use-internal-linkage>` check.
Detects variables and functions that can be marked as static or moved into
an anonymous namespace to enforce internal linkage.
- New :doc:`modernize-min-max-use-initializer-list
<clang-tidy/checks/modernize/min-max-use-initializer-list>` check.
Replaces nested ``std::min`` and ``std::max`` calls with an initializer list
where applicable.
- New :doc:`modernize-use-designated-initializers
<clang-tidy/checks/modernize/use-designated-initializers>` check.
Finds initializer lists for aggregate types that could be
written as designated initializers instead.
- New :doc:`modernize-use-ranges
<clang-tidy/checks/modernize/use-ranges>` check.
Detects calls to standard library iterator algorithms that could be replaced
with a ranges version instead.
- New :doc:`modernize-use-std-format
<clang-tidy/checks/modernize/use-std-format>` check.
Converts calls to ``absl::StrFormat``, or other functions via
configuration options, to C++20's ``std::format``, or another function
via a configuration option, modifying the format string appropriately and
removing now-unnecessary calls to ``std::string::c_str()`` and
``std::string::data()``.
- New :doc:`readability-enum-initial-value
<clang-tidy/checks/readability/enum-initial-value>` check.
Enforces consistent style for enumerators' initialization, covering three
styles: none, first only, or all initialized explicitly.
- New :doc:`readability-math-missing-parentheses
<clang-tidy/checks/readability/math-missing-parentheses>` check.
Check for missing parentheses in mathematical expressions that involve
operators of different priorities.
- New :doc:`readability-use-std-min-max
<clang-tidy/checks/readability/use-std-min-max>` check.
Replaces certain conditional statements with equivalent calls to
``std::min`` or ``std::max``.
New check aliases
^^^^^^^^^^^^^^^^^
- New alias :doc:`cert-ctr56-cpp <clang-tidy/checks/cert/ctr56-cpp>` to
:doc:`bugprone-pointer-arithmetic-on-polymorphic-object
<clang-tidy/checks/bugprone/pointer-arithmetic-on-polymorphic-object>`
was added.
- New alias :doc:`cert-int09-c <clang-tidy/checks/cert/int09-c>` to
:doc:`readability-enum-initial-value <clang-tidy/checks/readability/enum-initial-value>`
was added.
Changes in existing checks
^^^^^^^^^^^^^^^^^^^^^^^^^^
- Improved :doc:`bugprone-assert-side-effect
<clang-tidy/checks/bugprone/assert-side-effect>` check by detecting side
effect from calling a method with non-const reference parameters.
- Improved :doc:`bugprone-assignment-in-if-condition
<clang-tidy/checks/bugprone/assignment-in-if-condition>` check by ignoring
assignments in the C++20 ``requires`` clause.
- Improved :doc:`bugprone-casting-through-void
<clang-tidy/checks/bugprone/casting-through-void>` check by ignoring casts
where source is already a ``void``` pointer, making middle ``void`` pointer
casts bug-free.
- Improved :doc:`bugprone-exception-escape
<clang-tidy/checks/bugprone/exception-escape>` check to correctly detect exception
handler of type ``CV void *`` as catching all ``CV`` compatible pointer types.
- Improved :doc:`bugprone-forwarding-reference-overload
<clang-tidy/checks/bugprone/forwarding-reference-overload>`
check to ignore deleted constructors which won't hide other overloads.
- Improved :doc:`bugprone-implicit-widening-of-multiplication-result
<clang-tidy/checks/bugprone/implicit-widening-of-multiplication-result>` check
by adding an option to ignore constant expressions of signed integer types
that fit in the source expression type.
- Improved :doc:`bugprone-inc-dec-in-conditions
<clang-tidy/checks/bugprone/inc-dec-in-conditions>` check to ignore code
within unevaluated contexts, such as ``decltype``.
- Improved :doc:`bugprone-lambda-function-name<clang-tidy/checks/bugprone/lambda-function-name>`
check by ignoring ``__func__`` macro in lambda captures, initializers of
default parameters and nested function declarations.
- Improved :doc:`bugprone-multi-level-implicit-pointer-conversion
<clang-tidy/checks/bugprone/multi-level-implicit-pointer-conversion>` check
by ignoring implicit pointer conversions that are part of a cast expression.
- Improved :doc:`bugprone-non-zero-enum-to-bool-conversion
<clang-tidy/checks/bugprone/non-zero-enum-to-bool-conversion>` check by
eliminating false positives resulting from direct usage of bitwise operators
within parentheses.
- Improved :doc:`bugprone-optional-value-conversion
<clang-tidy/checks/bugprone/optional-value-conversion>` check by eliminating
false positives resulting from use of optionals in unevaluated context.
- Improved :doc:`bugprone-sizeof-expression
<clang-tidy/checks/bugprone/sizeof-expression>` check by clarifying the
diagnostics, eliminating some false positives and adding a new
(off-by-default) option `WarnOnSizeOfPointer` that reports all
``sizeof(pointer)`` expressions (except for a few that are idiomatic).
- Improved :doc:`bugprone-suspicious-include
<clang-tidy/checks/bugprone/suspicious-include>` check by replacing the local
options `HeaderFileExtensions` and `ImplementationFileExtensions` by the
global options of the same name.
- Improved :doc:`bugprone-too-small-loop-variable
<clang-tidy/checks/bugprone/too-small-loop-variable>` check by incorporating
better support for ``const`` loop boundaries.
- Improved :doc:`bugprone-unused-local-non-trivial-variable
<clang-tidy/checks/bugprone/unused-local-non-trivial-variable>` check by
ignoring local variable with ``[maybe_unused]`` attribute.
- Improved :doc:`bugprone-unused-return-value
<clang-tidy/checks/bugprone/unused-return-value>` check by updating the
parameter `CheckedFunctions` to support regexp, avoiding false positive for
function with the same prefix as the default argument, e.g. ``std::unique_ptr``
and ``std::unique``, avoiding false positive for assignment operator overloading.
- Improved :doc:`bugprone-use-after-move
<clang-tidy/checks/bugprone/use-after-move>` check to also handle
calls to ``std::forward``. Fixed sequencing of designated initializers. Fixed
sequencing of callees: In C++17 and later, the callee of a function is guaranteed
to be sequenced before the arguments, so don't warn if the use happens in the
callee and the move happens in one of the arguments.
- Improved :doc:`cppcoreguidelines-avoid-non-const-global-variables
<clang-tidy/checks/cppcoreguidelines/avoid-non-const-global-variables>` check
with a new option `AllowInternalLinkage` to disable the warning for variables
with internal linkage.
- Improved :doc:`cppcoreguidelines-macro-usage
<clang-tidy/checks/cppcoreguidelines/macro-usage>` check by ignoring macro with
hash preprocessing token.
- Improved :doc:`cppcoreguidelines-missing-std-forward
<clang-tidy/checks/cppcoreguidelines/missing-std-forward>` check by no longer
giving false positives for deleted functions, by fixing false negatives when only
a few parameters are forwarded and by ignoring parameters without a name (unused
arguments).
- Improved :doc:`cppcoreguidelines-owning-memory
<clang-tidy/checks/cppcoreguidelines/owning-memory>` check to properly handle
return type in lambdas and in nested functions.
- Improved :doc:`cppcoreguidelines-prefer-member-initializer
<clang-tidy/checks/cppcoreguidelines/prefer-member-initializer>` check
by removing enforcement of rule `C.48
<https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#c48-prefer-in-class-initializers-to-member-initializers-in-constructors-for-constant-initializers>`_,
which was deprecated since :program:`clang-tidy` 17. This rule is now covered
by :doc:`cppcoreguidelines-use-default-member-init
<clang-tidy/checks/cppcoreguidelines/use-default-member-init>`. Fixed
incorrect hints when using list-initialization.
- Improved :doc:`cppcoreguidelines-special-member-functions
<clang-tidy/checks/cppcoreguidelines/special-member-functions>` check with a
new option `AllowImplicitlyDeletedCopyOrMove`, which removes the requirement
for explicit copy or move special member functions when they are already
implicitly deleted.
- Improved :doc:`google-build-namespaces
<clang-tidy/checks/google/build-namespaces>` check by replacing the local
option `HeaderFileExtensions` by the global option of the same name.
- Improved :doc:`google-explicit-constructor
<clang-tidy/checks/google/explicit-constructor>` check to better handle
C++20 `explicit(bool)`.
- Improved :doc:`google-global-names-in-headers
<clang-tidy/checks/google/global-names-in-headers>` check by replacing the local
option `HeaderFileExtensions` by the global option of the same name.
- Improved :doc:`google-runtime-int <clang-tidy/checks/google/runtime-int>`
check performance through optimizations.
- Improved :doc:`hicpp-signed-bitwise <clang-tidy/checks/hicpp/signed-bitwise>`
check by ignoring false positives involving positive integer literals behind
implicit casts when `IgnorePositiveIntegerLiterals` is enabled.
- Improved :doc:`hicpp-ignored-remove-result <clang-tidy/checks/hicpp/ignored-remove-result>`
check by ignoring other functions with same prefixes as the target specific
functions.
- Improved :doc:`linuxkernel-must-check-errs
<clang-tidy/checks/linuxkernel/must-check-errs>` check documentation to
consistently use the check's proper name.
- Improved :doc:`llvm-header-guard
<clang-tidy/checks/llvm/header-guard>` check by replacing the local
option `HeaderFileExtensions` by the global option of the same name.
- Improved :doc:`misc-const-correctness
<clang-tidy/checks/misc/const-correctness>` check by avoiding infinite recursion
for recursive functions with forwarding reference parameters and reference
variables which refer to themselves. Also adapted the check to work with
function-try-blocks.
- Improved :doc:`misc-definitions-in-headers
<clang-tidy/checks/misc/definitions-in-headers>` check by replacing the local
option `HeaderFileExtensions` by the global option of the same name.
Additionally, the option `UseHeaderFileExtensions` is removed, so that the
check uses the `HeaderFileExtensions` option unconditionally.
- Improved :doc:`misc-header-include-cycle
<clang-tidy/checks/misc/header-include-cycle>` check by avoiding crash for self
include cycles.
- Improved :doc:`misc-unused-using-decls
<clang-tidy/checks/misc/unused-using-decls>` check by replacing the local
option `HeaderFileExtensions` by the global option of the same name.
- Improved :doc:`misc-use-anonymous-namespace
<clang-tidy/checks/misc/use-anonymous-namespace>` check by replacing the local
option `HeaderFileExtensions` by the global option of the same name.
- Improved :doc:`modernize-avoid-c-arrays
<clang-tidy/checks/modernize/avoid-c-arrays>` check by introducing the new
`AllowStringArrays` option, enabling the exclusion of array types with deduced
length initialized from string literals.
- Improved :doc:`modernize-loop-convert
<clang-tidy/checks/modernize/loop-convert>` check by ensuring that fix-its
don't remove parentheses used in ``sizeof`` calls when they have array index
accesses as arguments.
- Improved :doc:`modernize-use-constraints
<clang-tidy/checks/modernize/use-constraints>` check by fixing a crash that
occurred in some scenarios and excluding system headers from analysis.
- Improved :doc:`modernize-use-nullptr
<clang-tidy/checks/modernize/use-nullptr>` check to include support for C23,
which also has introduced the ``nullptr`` keyword.
- Improved :doc:`modernize-use-override
<clang-tidy/checks/modernize/use-override>` check to also remove any trailing
whitespace when deleting the ``virtual`` keyword.
- Improved :doc:`modernize-use-starts-ends-with
<clang-tidy/checks/modernize/use-starts-ends-with>` check to also handle
calls to ``compare`` method.
- Improved :doc:`modernize-use-std-print
<clang-tidy/checks/modernize/use-std-print>` check to not crash if the
format string parameter of the function to be replaced is not of the
expected type.
- Improved :doc:`modernize-use-using <clang-tidy/checks/modernize/use-using>`
check by adding support for detection of typedefs declared on function level.
- Improved :doc:`performance-inefficient-vector-operation
<clang-tidy/checks/performance/inefficient-vector-operation>` fixing false
negatives caused by different variable definition type and variable initial
value type in loop initialization expression.
- Improved :doc:`performance-move-const-arg
<clang-tidy/checks/performance/move-const-arg>` check by ignoring
``std::move()`` calls when their target is used as an rvalue.
- Improved :doc:`performance-unnecessary-copy-initialization
<clang-tidy/checks/performance/unnecessary-copy-initialization>` check by
detecting more cases of constant access. In particular, pointers can be
analyzed, so the check now handles the common patterns
`const auto e = (*vector_ptr)[i]` and `const auto e = vector_ptr->at(i);`.
Calls to mutable function where there exists a `const` overload are also
handled. Fix crash in the case of a non-member operator call.
- Improved :doc:`performance-unnecessary-value-param
<clang-tidy/checks/performance/unnecessary-value-param>` check
detecting more cases for template functions including lambdas with ``auto``.
E.g., ``std::sort(a.begin(), a.end(), [](auto x, auto y) { return a > b; });``
will be detected for expensive to copy types. Fixed false positives for
dependent call expressions.
- Improved :doc:`readability-avoid-return-with-void-value
<clang-tidy/checks/readability/avoid-return-with-void-value>` check by adding
fix-its.
- Improved :doc:`readability-const-return-type
<clang-tidy/checks/readability/const-return-type>` check to eliminate false
positives when returning types with const not at the top level.
- Improved :doc:`readability-container-size-empty
<clang-tidy/checks/readability/container-size-empty>` check to prevent false
positives when utilizing ``size`` or ``length`` methods that accept parameter.
Fixed crash when facing template user defined literals.
- Improved :doc:`readability-duplicate-include
<clang-tidy/checks/readability/duplicate-include>` check by excluding include
directives that form the filename using macro.
- Improved :doc:`readability-else-after-return
<clang-tidy/checks/readability/else-after-return>` check to ignore
`if consteval` statements, for which the `else` branch must not be removed.
- Improved :doc:`readability-identifier-naming
<clang-tidy/checks/readability/identifier-naming>` check in `GetConfigPerFile`
mode by resolving symbolic links to header files. Fixed handling of Hungarian
Prefix when configured to `LowerCase`. Added support for renaming designated
initializers. Added support for renaming macro arguments. Fixed renaming
conflicts arising from out-of-line member function template definitions.
- Improved :doc:`readability-implicit-bool-conversion
<clang-tidy/checks/readability/implicit-bool-conversion>` check to provide
valid fix suggestions for ``static_cast`` without a preceding space and
fixed problem with duplicate parentheses in double implicit casts. Corrected
the fix suggestions for C23 and later by using C-style casts instead of
``static_cast``. Fixed false positives in C++20 spaceship operator by ignoring
casts in implicit and defaulted functions.
- Improved :doc:`readability-redundant-inline-specifier
<clang-tidy/checks/readability/redundant-inline-specifier>` check to properly
emit warnings for static data member with an in-class initializer.
- Improved :doc:`readability-redundant-member-init
<clang-tidy/checks/readability/redundant-member-init>` check to avoid
false-positives when type of the member does not match the type of the
initializer.
- Improved :doc:`readability-static-accessed-through-instance
<clang-tidy/checks/readability/static-accessed-through-instance>` check to
support calls to overloaded operators as base expression and provide fixes to
expressions with side-effects.
- Improved :doc:`readability-simplify-boolean-expr
<clang-tidy/checks/readability/simplify-boolean-expr>` check to avoid to emit
warning for macro when IgnoreMacro option is enabled and improve messages
when auto-fix does not work.
- Improved :doc:`readability-static-definition-in-anonymous-namespace
<clang-tidy/checks/readability/static-definition-in-anonymous-namespace>`
check by resolving fix-it overlaps in template code by disregarding implicit
instances.
- Improved :doc:`readability-string-compare
<clang-tidy/checks/readability/string-compare>` check to also detect
usages of ``std::string_view::compare``. Added a `StringLikeClasses` option
to detect usages of ``compare`` method in custom string-like classes.
Removed checks
^^^^^^^^^^^^^^
- Removed `cert-dcl21-cpp`, which was deprecated since :program:`clang-tidy` 17,
since the rule DCL21-CPP has been removed from the CERT guidelines.
Miscellaneous
^^^^^^^^^^^^^
- Fixed incorrect formatting in :program:`clang-apply-replacements` when no
`--format` option is specified. Now :program:`clang-apply-replacements`
applies formatting only with the option.
Improvements to include-fixer
-----------------------------

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,4 @@
.. include:: ReleaseNotes/19.rst
.. include:: ReleaseNotes/20.rst
.. Make sure to reference the non-live release notes in a toctree to avoid Sphinx errors.
.. toctree::

View File

@@ -26,70 +26,6 @@ Non-comprehensive list of changes in this release
ELF Improvements
----------------
* ``EI_OSABI`` in the output is now inferred from input object files.
(`#97144 <https://github.com/llvm/llvm-project/pull/97144>`_)
* ``--compress-sections <section-glib>={none,zlib,zstd}[:level]`` is added to compress
matched output sections without the ``SHF_ALLOC`` flag.
(`#84855 <https://github.com/llvm/llvm-project/pull/84855>`_)
(`#90567 <https://github.com/llvm/llvm-project/pull/90567>`_)
* The default compression level for zlib is now independent of linker
optimization level (``Z_BEST_SPEED``).
* zstd compression parallelism no longer requires ``ZSTD_MULITHREAD`` build.
* ``GNU_PROPERTY_AARCH64_FEATURE_PAUTH`` notes, ``R_AARCH64_AUTH_ABS64`` and
``R_AARCH64_AUTH_RELATIVE`` relocations are now supported.
(`#72714 <https://github.com/llvm/llvm-project/pull/72714>`_)
* ``--no-allow-shlib-undefined`` now rejects non-exported definitions in the
``def-hidden.so ref.so`` case.
(`#86777 <https://github.com/llvm/llvm-project/issues/86777>`_)
* ``--debug-names`` is added to create a merged ``.debug_names`` index
from input ``.debug_names`` sections. Type units are not handled yet.
(`#86508 <https://github.com/llvm/llvm-project/pull/86508>`_)
* ``--enable-non-contiguous-regions`` option allows automatically packing input
sections into memory regions by automatically spilling to later matches if a
region would overflow. This reduces the toil of manually packing regions
(typical for embedded). It also makes full LTO feasible in such cases, since
IR merging currently prevents the linker script from referring to input
files. (`#90007 <https://github.com/llvm/llvm-project/pull/90007>`_)
* ``--default-script`/``-dT`` is implemented to specify a default script that is processed
if ``--script``/``-T`` is not specified.
(`#89327 <https://github.com/llvm/llvm-project/pull/89327>`_)
* ``--force-group-allocation`` is implemented to discard ``SHT_GROUP`` sections
and combine relocation sections if their relocated section group members are
placed to the same output section.
(`#94704 <https://github.com/llvm/llvm-project/pull/94704>`_)
* ``--build-id`` now defaults to generating a 20-byte digest ("sha1") instead
of 8-byte ("fast"). This improves compatibility with RPM packaging tools.
(`#93943 <https://github.com/llvm/llvm-project/pull/93943>`_)
* ``-z lrodata-after-bss`` is implemented to place ``.lrodata`` after ``.bss``.
(`#81224 <https://github.com/llvm/llvm-project/pull/81224>`_)
* ``--export-dynamic`` no longer creates dynamic sections for ``-no-pie`` static linking.
* ``--lto-emit-asm`` is now added as the canonical spelling of ``--plugin-opt=emit-llvm``.
* ``--lto-emit-llvm`` now uses the pre-codegen module.
(`#97480 <https://github.com/llvm/llvm-project/pull/97480>`_)
* When AArch64 PAuth is enabled, ``-z pack-relative-relocs`` now encodes ``R_AARCH64_AUTH_RELATIVE`` relocations in ``.rela.auth.dyn``.
(`#96496 <https://github.com/llvm/llvm-project/pull/96496>`_)
* ``-z gcs`` and ``-z gcs-report`` are now supported for AArch64 Guarded Control Stack extension.
* ``-r`` now forces ``-Bstatic``.
* Thumb2 PLT is now supported for Cortex-M processors.
(`#93644 <https://github.com/llvm/llvm-project/pull/93644>`_)
* ``DW_EH_sdata4`` of addresses larger than 0x80000000 is now supported for MIPS32.
(`#92438 <https://github.com/llvm/llvm-project/pull/92438>`_)
* Certain unknown section types are rejected.
(`#85173 <https://github.com/llvm/llvm-project/pull/85173>`_)
* ``PROVIDE(lhs = rhs) PROVIDE(rhs = ...)``, ``lhs`` is now defined only if ``rhs`` is needed.
(`#74771 <https://github.com/llvm/llvm-project/issues/74771>`_)
(`#87530 <https://github.com/llvm/llvm-project/pull/87530>`_)
* ``OUTPUT_FORMAT(binary)`` is now supported.
(`#98837 <https://github.com/llvm/llvm-project/pull/98837>`_)
* ``NOCROSSREFS`` and ``NOCRFOSSREFS_TO`` commands now supported to prohibit
cross references between certain output sections.
(`#98773 <https://github.com/llvm/llvm-project/pull/98773>`_)
* Orphan placement is refined to prefer the last similar section when its rank <= orphan's rank.
(`#94099 <https://github.com/llvm/llvm-project/pull/94099>`_)
Non-alloc orphan sections are now placed at the end.
(`#94519 <https://github.com/llvm/llvm-project/pull/94519>`_)
* R_X86_64_REX_GOTPCRELX of the addq form is no longer incorrectly optimized when the address is larger than 0x80000000.
Breaking changes
----------------
@@ -102,11 +38,6 @@ MinGW Improvements
MachO Improvements
------------------
* Chained fixups are now enabled by default when targeting macOS 13.0,
iOS 13.4, tvOS 14.0, watchOS 7.0, and visionOS 1.0 or later.
They can be disabled with the `-no_fixup_chains` flag.
(`#99255 <https://github.com/llvm/llvm-project/pull/99255>`_)
WebAssembly Improvements
------------------------

View File

@@ -47,110 +47,30 @@ Non-comprehensive list of changes in this release
Update on required toolchains to build LLVM
-------------------------------------------
* The minimum Python version has been raised from 3.6 to 3.8 across all of LLVM.
This enables the use of many new Python features, aligning more closely with
modern Python best practices, and improves CI maintainability
See `#78828 <https://github.com/llvm/llvm-project/pull/78828>`_ for more info.
Changes to the LLVM IR
----------------------
* Added Memory Model Relaxation Annotations (MMRAs).
* Added ``nusw`` and ``nuw`` flags to ``getelementptr`` instruction.
* Renamed ``llvm.experimental.vector.reverse`` intrinsic to ``llvm.vector.reverse``.
* Renamed ``llvm.experimental.vector.splice`` intrinsic to ``llvm.vector.splice``.
* Renamed ``llvm.experimental.vector.interleave2`` intrinsic to ``llvm.vector.interleave2``.
* Renamed ``llvm.experimental.vector.deinterleave2`` intrinsic to ``llvm.vector.deinterleave2``.
* The constant expression variants of the following instructions have been
removed:
* ``icmp``
* ``fcmp``
* ``shl``
* LLVM has switched from using debug intrinsics in textual IR to using debug
records by default. Details of the change and instructions on how to update
any downstream tools and tests can be found in the `migration docs
<https://llvm.org/docs/RemoveDIsDebugInfo.html>`_.
* Semantics of MC/DC intrinsics have been changed.
* ``llvm.instprof.mcdc.parameters``: 3rd argument has been changed
from bytes to bits.
* ``llvm.instprof.mcdc.condbitmap.update``: Removed.
* ``llvm.instprof.mcdc.tvbitmap.update``: 3rd argument has been
removed. The next argument has been changed from byte index to bit
index.
* Added ``llvm.experimental.vector.compress`` intrinsic.
Changes to LLVM infrastructure
------------------------------
Changes to building LLVM
------------------------
* LLVM now has rpmalloc version 1.4.5 in-tree, as a replacement C allocator for
hosted toolchains. This supports several host platforms such as Mac or Unix,
however currently only the Windows 64-bit LLVM release uses it.
This has a great benefit in terms of build times on Windows when using ThinLTO
linking, especially on machines with lots of cores, to an order of magnitude
or more. Clang compilation is also improved. Please see some build timings in
(`#91862 <https://github.com/llvm/llvm-project/pull/91862#issue-2291033962>`_)
For more information, refer to the **LLVM_ENABLE_RPMALLOC** option in `CMake variables <https://llvm.org/docs/CMake.html#llvm-related-variables>`_.
* The ``LLVM_ENABLE_TERMINFO`` flag has been removed. LLVM no longer depends on
terminfo and now always uses the ``TERM`` environment variable for color
support autodetection.
Changes to TableGen
-------------------
- We can define type aliases via new keyword ``deftype``.
Changes to Interprocedural Optimizations
----------------------------------------
Changes to the AArch64 Backend
------------------------------
* Added support for Cortex-R82AE, Cortex-A78AE, Cortex-A520AE, Cortex-A720AE,
Cortex-A725, Cortex-X925, Neoverse-N3, Neoverse-V3 and Neoverse-V3AE CPUs.
* ``-mbranch-protection=standard`` now enables FEAT_PAuth_LR by
default when the feature is enabled. The new behaviour results
in ``standard`` being equal to ``bti+pac-ret+pc`` when ``+pauth-lr``
is passed as part of ``-mcpu=`` options.
* SVE and SVE2 have been moved to the default extensions list for ARMv9.0,
making them optional per the Arm ARM. Existing v9.0+ CPUs in the backend that
support these extensions continue to have these features enabled by default
when specified via ``-march=`` or an ``-mcpu=`` that supports them. The
attribute ``"target-features"="+v9a"`` no longer implies ``"+sve"`` and
``"+sve2"`` respectively.
Changes to the AMDGPU Backend
-----------------------------
* Implemented the ``llvm.get.fpenv`` and ``llvm.set.fpenv`` intrinsics.
* Added ``!amdgpu.no.fine.grained.memory`` and
``!amdgpu.no.remote.memory`` metadata to control atomic behavior.
* Implemented :ref:`llvm.get.rounding <int_get_rounding>` and :ref:`llvm.set.rounding <int_set_rounding>`
* Removed ``llvm.amdgcn.ds.fadd``, ``llvm.amdgcn.ds.fmin`` and
``llvm.amdgcn.ds.fmax`` intrinsics. Users should use the
:ref:`atomicrmw <i_atomicrmw>` instruction with `fadd`, `fmin` and
`fmax` with addrspace(3) instead.
* AMDGPUAttributor is no longer run as part of the codegen pass
pipeline. It is expected to run as part of the middle end
optimizations.
Changes to the ARM Backend
--------------------------
* Added support for Cortex-R52+ CPU.
* FEAT_F32MM is no longer activated by default when using `+sve` on v8.6-A or greater. The feature is still available and can be used by adding `+f32mm` to the command line options.
* armv8-r now implies only fp-armv8d16sp, rather than neon and full fp-armv8. These features are still included by default for cortex-r52. The default cpu for armv8-r is now "generic", for compatibility with variants that do not include neon, fp64, and d32.
Changes to the AVR Backend
--------------------------
@@ -163,17 +83,6 @@ Changes to the Hexagon Backend
Changes to the LoongArch Backend
--------------------------------
* i32 is now a native type in the datalayout string. This enables
LoopStrengthReduce for loops with i32 induction variables, among other
optimizations.
* Codegen support is added for TLS Desciptor.
* Interleaved vectorization and vector shuffle are supported on LoongArch and
the experimental feature ``auto-vec`` is removed.
* Allow ``f16`` codegen with expansion to libcalls.
* Clarify that emulated TLS is not supported.
* A codegen issue for ``bstrins.w`` is fixed on loongarch32.
* Assorted codegen improvements.
Changes to the MIPS Backend
---------------------------
@@ -183,36 +92,6 @@ Changes to the PowerPC Backend
Changes to the RISC-V Backend
-----------------------------
* Added full support for the experimental Zabha (Byte and
Halfword Atomic Memory Operations) extension.
* Added assembler/disassembler support for the experimenatl Zalasr
(Load-Acquire and Store-Release) extension.
* The names of the majority of the S-prefixed (supervisor-level) extension
names in the RISC-V profiles specification are now recognised.
* Codegen support was added for the Zimop (May-Be-Operations) extension.
* The experimental Ssnpm, Smnpm, Smmpm, Sspm, and Supm 1.0.0 Pointer Masking extensions are supported.
* The experimental Ssqosid extension is supported.
* Added the CSR names from the Resumable Non-Maskable Interrupts (Smrnmi) extension.
* llvm-objdump now prints disassembled opcode bytes in groups of 2 or 4 bytes to
match GNU objdump. The bytes within the groups are in big endian order.
* Added smstateen extension to -march. CSR names for smstateen were already supported.
* Zaamo and Zalrsc are no longer experimental.
* Processors that enable post reg-alloc scheduling (PostMachineScheduler) by default should use the `UsePostRAScheduler` subtarget feature. Setting `PostRAScheduler = 1` in the scheduler model will have no effect on the enabling of the PostMachineScheduler.
* Zabha is no longer experimental.
* B (the collection of the Zba, Zbb, Zbs extensions) is supported.
* Added smcdeleg, ssccfg, smcsrind, and sscsrind extensions to -march.
* ``-mcpu=syntacore-scr3-rv32`` and ``-mcpu=syntacore-scr3-rv64`` were added.
* The default atomics mapping was changed to emit an additional trailing fence
for sequentially consistent stores, offering compatibility with a future
mapping using load-acquire and store-release instructions while remaining
fully compatible with objects produced prior to this change. The mapping
(ABI) used is recorded as an ELF attribute.
* Ztso is no longer experimental.
* The WCH / Nanjing Qinheng Microelectronics QingKe "XW" compressed opcodes are
supported under the name "Xwchc".
* ``-mcpu=native`` now detects available features with hwprobe (RISC-V Hardware Probing Interface) on Linux 6.4 or later.
* The version of Zicfilp/Zicfiss is updated to 1.0.
Changes to the WebAssembly Backend
----------------------------------
@@ -222,12 +101,6 @@ Changes to the Windows Target
Changes to the X86 Backend
--------------------------
- Removed knl/knm specific ISA intrinsics: AVX512PF, AVX512ER, PREFETCHWT1,
while assembly encoding/decoding supports are kept.
- Removed ``3DNow!``-specific ISA intrinsics and codegen support. The ``3dnow`` and ``3dnowa`` target features are no longer supported. The intrinsics ``llvm.x86.3dnow.*``, ``llvm.x86.3dnowa.*``, and ``llvm.x86.mmx.femms`` have been removed. Assembly encoding/decoding for the corresponding instructions remains supported.
Changes to the OCaml bindings
-----------------------------
@@ -237,104 +110,6 @@ Changes to the Python bindings
Changes to the C API
--------------------
* Added ``LLVMGetBlockAddressFunction`` and ``LLVMGetBlockAddressBasicBlock``
functions for accessing the values in a blockaddress constant.
* Added ``LLVMConstStringInContext2`` function, which better matches the C++
API by using ``size_t`` for string length. Deprecated ``LLVMConstStringInContext``.
* Added the following functions for accessing a function's prefix data:
* ``LLVMHasPrefixData``
* ``LLVMGetPrefixData``
* ``LLVMSetPrefixData``
* Added the following functions for accessing a function's prologue data:
* ``LLVMHasPrologueData``
* ``LLVMGetPrologueData``
* ``LLVMSetPrologueData``
* Deprecated ``LLVMConstNUWNeg`` and ``LLVMBuildNUWNeg``.
* Added ``LLVMAtomicRMWBinOpUIncWrap`` and ``LLVMAtomicRMWBinOpUDecWrap`` to
``LLVMAtomicRMWBinOp`` enum for AtomicRMW instructions.
* Added ``LLVMCreateConstantRangeAttribute`` function for creating ConstantRange Attributes.
* Added the following functions for creating and accessing data for CallBr instructions:
* ``LLVMBuildCallBr``
* ``LLVMGetCallBrDefaultDest``
* ``LLVMGetCallBrNumIndirectDests``
* ``LLVMGetCallBrIndirectDest``
* The following functions for creating constant expressions have been removed,
because the underlying constant expressions are no longer supported. Instead,
an instruction should be created using the ``LLVMBuildXYZ`` APIs, which will
constant fold the operands if possible and create an instruction otherwise:
* ``LLVMConstICmp``
* ``LLVMConstFCmp``
* ``LLVMConstShl``
**Note:** The following changes are due to the removal of the debug info
intrinsics from LLVM and to the introduction of debug records into LLVM.
They are described in detail in the `debug info migration guide <https://llvm.org/docs/RemoveDIsDebugInfo.html>`_.
* Added the following functions to insert before the indicated instruction but
after any attached debug records.
* ``LLVMPositionBuilderBeforeDbgRecords``
* ``LLVMPositionBuilderBeforeInstrAndDbgRecords``
Same as ``LLVMPositionBuilder`` and ``LLVMPositionBuilderBefore`` except the
insertion position is set to before the debug records that precede the target
instruction. ``LLVMPositionBuilder`` and ``LLVMPositionBuilderBefore`` are
unchanged.
* Added the following functions to get/set the new non-instruction debug info format.
They will be deprecated in the future and they are just a transition aid.
* ``LLVMIsNewDbgInfoFormat``
* ``LLVMSetIsNewDbgInfoFormat``
* Added the following functions to insert a debug record (new debug info format).
* ``LLVMDIBuilderInsertDeclareRecordBefore``
* ``LLVMDIBuilderInsertDeclareRecordAtEnd``
* ``LLVMDIBuilderInsertDbgValueRecordBefore``
* ``LLVMDIBuilderInsertDbgValueRecordAtEnd``
* Deleted the following functions that inserted a debug intrinsic (old debug info format).
* ``LLVMDIBuilderInsertDeclareBefore``
* ``LLVMDIBuilderInsertDeclareAtEnd``
* ``LLVMDIBuilderInsertDbgValueBefore``
* ``LLVMDIBuilderInsertDbgValueAtEnd``
* Added the following functions for accessing a Target Extension Type's data:
* ``LLVMGetTargetExtTypeName``
* ``LLVMGetTargetExtTypeNumTypeParams``/``LLVMGetTargetExtTypeTypeParam``
* ``LLVMGetTargetExtTypeNumIntParams``/``LLVMGetTargetExtTypeIntParam``
* Added the following functions for accessing/setting the no-wrap flags for a
GetElementPtr instruction:
* ``LLVMBuildGEPWithNoWrapFlags``
* ``LLVMConstGEPWithNoWrapFlags``
* ``LLVMGEPGetNoWrapFlags``
* ``LLVMGEPSetNoWrapFlags``
* Added the following functions for creating and accessing data for ConstantPtrAuth constants:
* ``LLVMConstantPtrAuth``
* ``LLVMGetConstantPtrAuthPointer``
* ``LLVMGetConstantPtrAuthKey``
* ``LLVMGetConstantPtrAuthDiscriminator``
* ``LLVMGetConstantPtrAuthAddrDiscriminator``
Changes to the CodeGen infrastructure
-------------------------------------
@@ -344,106 +119,14 @@ Changes to the Metadata Info
Changes to the Debug Info
---------------------------------
* LLVM has switched from using debug intrinsics internally to using debug
records by default. This should happen transparently when using the DIBuilder
to construct debug variable information, but will require changes for any code
that interacts with debug intrinsics directly. Debug intrinsics will only be
supported on a best-effort basis from here onwards; for more information, see
the `migration docs <https://llvm.org/docs/RemoveDIsDebugInfo.html>`_.
* When emitting DWARF v2 and not in strict DWARF mode, LLVM will now add
a ``DW_AT_type`` to instances of ``DW_TAG_enumeration_type``. This is actually
a DWARF v3 feature which tells tools what the enum's underlying type is.
Emitting this for v2 as well will help users who have to build binaries with
DWARF v2 but are using tools that understand newer DWARF standards. Older
tools will ignore it. (`#98335 <https://github.com/llvm/llvm-project/pull/98335>`_)
Changes to the LLVM tools
---------------------------------
* llvm-nm and llvm-objdump can now print symbol information from linked
WebAssembly binaries, using information from exports or the "name"
section for functions, globals and data segments. Symbol addresses and sizes
are printed as offsets in the file, allowing for binary size analysis. Wasm
files using reference types and GC are also supported (but also only for
functions, globals, and data, and only for listing symbols and names).
* llvm-ar now utilizes LLVM_DEFAULT_TARGET_TRIPLE to determine the archive format
if it's not specified with the ``--format`` argument and cannot be inferred from
input files.
* llvm-ar now allows specifying COFF archive format with ``--format`` argument
and uses it by default for COFF targets.
* llvm-ranlib now supports ``-V`` as an alias for ``--version``.
``-v`` (``--verbose`` in llvm-ar) has been removed.
(`#87661 <https://github.com/llvm/llvm-project/pull/87661>`_)
* llvm-objcopy now supports ``--set-symbol-visibility`` and
``--set-symbols-visibility`` options for ELF input to change the
visibility of symbols.
* llvm-objcopy now supports ``--skip-symbol`` and ``--skip-symbols`` options
for ELF input to skip the specified symbols when executing other options
that can change a symbol's name, binding or visibility.
* llvm-objcopy now supports ``--compress-sections`` to compress or decompress
arbitrary sections not within a segment.
(`#85036 <https://github.com/llvm/llvm-project/pull/85036>`_.)
* llvm-profgen now supports COFF+DWARF binaries. This enables Sample-based PGO
on Windows using Intel VTune's SEP. For details on usage, see the `end-user
documentation for SPGO
<https://clang.llvm.org/docs/UsersManual.html#using-sampling-profilers>`_.
* llvm-readelf's ``-r`` output for RELR has been improved.
(`#89162 <https://github.com/llvm/llvm-project/pull/89162>`_)
``--raw-relr`` has been removed.
* llvm-mca now aborts by default if it is given bad input where previously it
would continue. Additionally, it can now continue when it encounters
instructions which lack scheduling information. The behaviour can be
controlled by the newly introduced
``--skip-unsupported-instructions=<none|lack-sched|parse-failure|any>``, as
documented in ``--help`` output and the command guide. (`#90474
<https://github.com/llvm/llvm-project/pull/90474>`_)
* llvm-readobj's LLVM output format for ELF core files has been changed.
Similarly, the JSON format has been fixed for this case. The NT_FILE note
now has a map for the mapped files. (`#92835
<https://github.com/llvm/llvm-project/pull/92835>`_).
* llvm-cov now generates HTML report with JavaScript code to allow simple
jumping between uncovered parts (lines/regions/branches) of code
using buttons on top-right corner of the page or using keys (L/R/B or
jumping in reverse direction with shift+L/R/B). (`#95662
<https://github.com/llvm/llvm-project/pull/95662>`_).
* llvm-objcopy now verifies format of ``.note`` sections for ELF input. This can
be disabled by ``--no-verify-note-sections``. (`#90458
<https://github.com/llvm/llvm-project/pull/90458>`).
Changes to LLDB
---------------------------------
* Register field information is now provided on AArch64 FreeBSD for live
processes and core files (previously only provided on AArch64 Linux).
* Register field information can now include enums to represent field
values. Enums have been added for ``fpcr.RMode`` and ``mte_ctrl.TCF``
for AArch64 targets::
(lldb) register read fpcr
fpcr = 0x00000000
= (AHP = 0, DN = 0, FZ = 0, RMode = RN, <...>)
If you need to know the values of the enum, these can be found in
the output of ``register info`` for the same register.
Changes to BOLT
---------------------------------
* Now supports ``--match-profile-with-function-hash`` to match profiled and
binary functions with exact hash, allowing for the matching of renamed but
identical functions.
Changes to Sanitizers
---------------------

View File

@@ -1,5 +1,5 @@
===========================
OpenMP 19.0.0 Release Notes
OpenMP 20.0.0 Release Notes
===========================

View File

@@ -1,5 +1,5 @@
=======================================
PSTL 19.0.0 (In-Progress) Release Notes
PSTL 20.0.0 (In-Progress) Release Notes
=======================================
.. contents::