mirror of
https://github.com/intel/llvm.git
synced 2026-01-21 04:14:03 +08:00
Clear release notes for upcoming LLVM 20 dev cycle
This commit is contained in:
@@ -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
@@ -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::
|
||||
|
||||
@@ -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
|
||||
------------------------
|
||||
|
||||
|
||||
@@ -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
|
||||
---------------------
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
===========================
|
||||
OpenMP 19.0.0 Release Notes
|
||||
OpenMP 20.0.0 Release Notes
|
||||
===========================
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
=======================================
|
||||
PSTL 19.0.0 (In-Progress) Release Notes
|
||||
PSTL 20.0.0 (In-Progress) Release Notes
|
||||
=======================================
|
||||
|
||||
.. contents::
|
||||
|
||||
Reference in New Issue
Block a user