mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-11-23 05:40:09 +00:00
Clear release notes for 18.x
This commit is contained in:
parent
ab720289ca
commit
4706251a31
@ -94,451 +94,15 @@ The improvements are...
|
||||
Improvements to clang-tidy
|
||||
--------------------------
|
||||
|
||||
- New global configuration file options `HeaderFileExtensions` and
|
||||
`ImplementationFileExtensions`, replacing the check-local options of the
|
||||
same name.
|
||||
|
||||
- Support specifying `Checks` as a YAML list in the `.clang-tidy` configuration
|
||||
file.
|
||||
|
||||
- Fix a potential crash when using the `--dump-config` option.
|
||||
|
||||
- Support specifying `SystemHeaders` in the `.clang-tidy` configuration file,
|
||||
with the same functionality as the command-line option `--system-headers`.
|
||||
|
||||
- `WarningsAsErrors` (`--warnings-as-errors=`) no longer promotes unlisted
|
||||
warnings to errors. Only the warnings listed in `Checks` (`--checks=`) will
|
||||
be promoted to errors. For custom error promotion, use `-Werror=<warning>`
|
||||
on the compiler command-line, irrespective of `Checks` (`--checks=`) settings.
|
||||
|
||||
- Fixed an issue where compiler warnings couldn't be suppressed using
|
||||
`-Wno-<warning>` under C++20 and above.
|
||||
|
||||
New checks
|
||||
^^^^^^^^^^
|
||||
|
||||
- New :doc:`bugprone-empty-catch
|
||||
<clang-tidy/checks/bugprone/empty-catch>` check.
|
||||
|
||||
Detects and suggests addressing issues with empty catch statements.
|
||||
|
||||
- New :doc:`bugprone-multiple-new-in-one-expression
|
||||
<clang-tidy/checks/bugprone/multiple-new-in-one-expression>` check.
|
||||
|
||||
Finds multiple ``new`` operator calls in a single expression, where the allocated
|
||||
memory by the first ``new`` may leak if the second allocation fails and throws exception.
|
||||
|
||||
- New :doc:`bugprone-non-zero-enum-to-bool-conversion
|
||||
<clang-tidy/checks/bugprone/non-zero-enum-to-bool-conversion>` check.
|
||||
|
||||
Detect implicit and explicit casts of ``enum`` type into ``bool`` where ``enum`` type
|
||||
doesn't have a zero-value enumerator.
|
||||
|
||||
- New :doc:`bugprone-switch-missing-default-case
|
||||
<clang-tidy/checks/bugprone/switch-missing-default-case>` check.
|
||||
|
||||
Ensures that switch statements without default cases are flagged, focuses only
|
||||
on covering cases with non-enums where the compiler may not issue warnings.
|
||||
|
||||
- New :doc:`bugprone-unique-ptr-array-mismatch
|
||||
<clang-tidy/checks/bugprone/unique-ptr-array-mismatch>` check.
|
||||
|
||||
Finds initializations of C++ unique pointers to non-array type that are
|
||||
initialized with an array.
|
||||
|
||||
- New :doc:`bugprone-unsafe-functions
|
||||
<clang-tidy/checks/bugprone/unsafe-functions>` check.
|
||||
|
||||
Checks for functions that have safer, more secure replacements available, or
|
||||
are considered deprecated due to design flaws.
|
||||
This check relies heavily on, but is not exclusive to, the functions from
|
||||
the *Annex K. "Bounds-checking interfaces"* of C11.
|
||||
|
||||
- New :doc:`cppcoreguidelines-avoid-capturing-lambda-coroutines
|
||||
<clang-tidy/checks/cppcoreguidelines/avoid-capturing-lambda-coroutines>` check.
|
||||
|
||||
Flags C++20 coroutine lambdas with non-empty capture lists that may cause
|
||||
use-after-free errors and suggests avoiding captures or ensuring the lambda
|
||||
closure object has a guaranteed lifetime.
|
||||
|
||||
- New :doc:`cppcoreguidelines-misleading-capture-default-by-value
|
||||
<clang-tidy/checks/cppcoreguidelines/misleading-capture-default-by-value>` check.
|
||||
|
||||
Warns when lambda specify a by-value capture default and capture ``this``.
|
||||
|
||||
- New :doc:`cppcoreguidelines-missing-std-forward
|
||||
<clang-tidy/checks/cppcoreguidelines/missing-std-forward>` check.
|
||||
|
||||
Warns when a forwarding reference parameter is not forwarded within the
|
||||
function body.
|
||||
|
||||
- New :doc:`cppcoreguidelines-rvalue-reference-param-not-moved
|
||||
<clang-tidy/checks/cppcoreguidelines/rvalue-reference-param-not-moved>` check.
|
||||
|
||||
Warns when an rvalue reference function parameter is never moved within
|
||||
the function body.
|
||||
|
||||
- New :doc:`llvmlibc-inline-function-decl
|
||||
<clang-tidy/checks/llvmlibc/inline-function-decl>` check.
|
||||
|
||||
Checks that all implicit and explicit inline functions in header files are
|
||||
tagged with the ``LIBC_INLINE`` macro.
|
||||
|
||||
- New :doc:`misc-header-include-cycle
|
||||
<clang-tidy/checks/misc/header-include-cycle>` check.
|
||||
|
||||
Check detects cyclic ``#include`` dependencies between user-defined headers.
|
||||
|
||||
- New :doc:`misc-include-cleaner
|
||||
<clang-tidy/checks/misc/include-cleaner>` check.
|
||||
|
||||
Checks for unused and missing includes.
|
||||
|
||||
- New :doc:`modernize-type-traits
|
||||
<clang-tidy/checks/modernize/type-traits>` check.
|
||||
|
||||
Converts standard library type traits of the form ``traits<...>::type`` and
|
||||
``traits<...>::value`` into ``traits_t<...>`` and ``traits_v<...>`` respectively.
|
||||
|
||||
- New :doc:`modernize-use-std-print
|
||||
<clang-tidy/checks/modernize/use-std-print>` check.
|
||||
|
||||
Converts calls to ``printf``, ``fprintf``, ``absl::PrintF``,
|
||||
``absl::FPrintf`` or other functions via configuration options, to
|
||||
equivalent calls to C++23's ``std::print`` and ``std::println``, or other
|
||||
functions 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:`performance-avoid-endl
|
||||
<clang-tidy/checks/performance/avoid-endl>` check.
|
||||
|
||||
Finds uses of ``std::endl`` on streams and replaces them with ``'\n'``.
|
||||
|
||||
- New :doc:`performance-noexcept-destructor
|
||||
<clang-tidy/checks/performance/noexcept-destructor>` check.
|
||||
|
||||
Finds user declared destructors which are not ``noexcept``.
|
||||
|
||||
- New :doc:`performance-noexcept-swap
|
||||
<clang-tidy/checks/performance/noexcept-swap>` check.
|
||||
|
||||
Finds user declared swap functions which are not ``noexcept``.
|
||||
|
||||
- New :doc:`readability-avoid-unconditional-preprocessor-if
|
||||
<clang-tidy/checks/readability/avoid-unconditional-preprocessor-if>` check.
|
||||
|
||||
Finds code blocks that are constantly enabled or disabled in preprocessor
|
||||
directives by analyzing ``#if`` conditions, such as ``#if 0`` and
|
||||
``#if 1``, etc.
|
||||
|
||||
- New :doc:`readability-operators-representation
|
||||
<clang-tidy/checks/readability/operators-representation>` check.
|
||||
|
||||
Enforces consistent token representation for invoked binary, unary and
|
||||
overloaded operators in C++ code.
|
||||
|
||||
New check aliases
|
||||
^^^^^^^^^^^^^^^^^
|
||||
|
||||
- New alias :doc:`cert-msc24-c
|
||||
<clang-tidy/checks/cert/msc24-c>` to :doc:`bugprone-unsafe-functions
|
||||
<clang-tidy/checks/bugprone/unsafe-functions>` was added.
|
||||
|
||||
- New alias :doc:`cert-msc33-c
|
||||
<clang-tidy/checks/cert/msc33-c>` to :doc:`bugprone-unsafe-functions
|
||||
<clang-tidy/checks/bugprone/unsafe-functions>` was added.
|
||||
|
||||
- New alias :doc:`cppcoreguidelines-noexcept-destructor
|
||||
<clang-tidy/checks/cppcoreguidelines/noexcept-destructor>` to
|
||||
:doc:`performance-noexcept-destructor
|
||||
<clang-tidy/checks/performance/noexcept-destructor>` was added.
|
||||
|
||||
- New alias :doc:`cppcoreguidelines-noexcept-move-operations
|
||||
<clang-tidy/checks/cppcoreguidelines/noexcept-move-operations>` to
|
||||
:doc:`performance-noexcept-move-constructor
|
||||
<clang-tidy/checks/performance/noexcept-move-constructor>` was added.
|
||||
|
||||
- New alias :doc:`cppcoreguidelines-noexcept-swap
|
||||
<clang-tidy/checks/cppcoreguidelines/noexcept-swap>` to
|
||||
:doc:`performance-noexcept-swap
|
||||
<clang-tidy/checks/performance/noexcept-swap>` was added.
|
||||
|
||||
- New alias :doc:`cppcoreguidelines-use-default-member-init
|
||||
<clang-tidy/checks/cppcoreguidelines/use-default-member-init>` to
|
||||
:doc:`modernize-use-default-member-init
|
||||
<clang-tidy/checks/modernize/use-default-member-init>` was added.
|
||||
|
||||
Changes in existing checks
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
- Fixed false-positives in :doc:`bugprone-branch-clone
|
||||
<clang-tidy/checks/bugprone/branch-clone>` check by ignoring auto-generated
|
||||
code, template instances, implicit code patterns and duplicated switch cases
|
||||
marked with the ``[[fallthrough]]`` attribute.
|
||||
|
||||
- Improved :doc:`bugprone-dangling-handle
|
||||
<clang-tidy/checks/bugprone/dangling-handle>` check enhancing detection of
|
||||
handles behind type aliases.
|
||||
|
||||
- Deprecated check-local options `HeaderFileExtensions`
|
||||
in :doc:`bugprone-dynamic-static-initializers
|
||||
<clang-tidy/checks/bugprone/dynamic-static-initializers>` check.
|
||||
Global options of the same name should be used instead.
|
||||
|
||||
- Improved :doc:`bugprone-exception-escape
|
||||
<clang-tidy/checks/bugprone/exception-escape>` check to not emit warnings for
|
||||
forward declarations of functions, explicitly declared throwing functions,
|
||||
coroutines throwing exceptions in their bodies and skip ``noexcept``
|
||||
functions during call stack analysis.
|
||||
|
||||
- Improved :doc:`bugprone-fold-init-type
|
||||
<clang-tidy/checks/bugprone/fold-init-type>` to handle iterators that do not
|
||||
define `value_type` type aliases.
|
||||
|
||||
- Improved :doc:`bugprone-forwarding-reference-overload
|
||||
<clang-tidy/checks/bugprone/forwarding-reference-overload>` check to ignore
|
||||
constructors with associated constraints (C++ concepts).
|
||||
|
||||
- Improved :doc:`bugprone-incorrect-roundings
|
||||
<clang-tidy/checks/bugprone/incorrect-roundings>` check by adding support for
|
||||
other floating point representations in float constant like ``0.5L``.
|
||||
|
||||
- Improved the performance of the :doc:`bugprone-reserved-identifier
|
||||
<clang-tidy/checks/bugprone/reserved-identifier>` check through optimizations.
|
||||
|
||||
- Improved the :doc:`bugprone-reserved-identifier
|
||||
<clang-tidy/checks/bugprone/reserved-identifier>` check by enhancing the
|
||||
`AllowedIdentifiers` option to support regular expressions.
|
||||
|
||||
- Deprecated check-local options `HeaderFileExtensions` and `ImplementationFileExtensions`
|
||||
in :doc:`bugprone-suspicious-include
|
||||
<clang-tidy/checks/bugprone/suspicious-include>` check.
|
||||
Global options of the same name should be used instead.
|
||||
|
||||
- Improved :doc:`bugprone-too-small-loop-variable
|
||||
<clang-tidy/checks/bugprone/too-small-loop-variable>` check. Basic support
|
||||
for bit-field and integer members as a loop variable or upper limit were added.
|
||||
|
||||
- Improved :doc:`bugprone-unchecked-optional-access
|
||||
<clang-tidy/checks/bugprone/unchecked-optional-access>` check to properly handle calls
|
||||
to ``std::forward`` and support for ``folly::Optional`` were added.
|
||||
|
||||
- Extend :doc:`bugprone-unused-return-value
|
||||
<clang-tidy/checks/bugprone/unused-return-value>` check to check for all functions
|
||||
with specified return types using the ``CheckedReturnTypes`` option.
|
||||
|
||||
- Improved :doc:`bugprone-use-after-move
|
||||
<clang-tidy/checks/bugprone/use-after-move>` check. Detect uses and moves in
|
||||
constructor initializers. Correctly handle constructor arguments as being
|
||||
sequenced when constructor call is written as list-initialization. Understand
|
||||
that there is a sequence point between designated initializers.
|
||||
|
||||
- Improved :doc:`bugprone-swapped-arguments
|
||||
<clang-tidy/checks/bugprone/swapped-arguments>` by enhancing handling of
|
||||
implicit conversions, resulting in better detection of argument swaps
|
||||
involving integral and floating-point types.
|
||||
|
||||
- Deprecated :doc:`cert-dcl21-cpp
|
||||
<clang-tidy/checks/cert/dcl21-cpp>` check.
|
||||
|
||||
- Fixed :doc:`cppcoreguidelines-avoid-const-or-ref-data-members
|
||||
<clang-tidy/checks/cppcoreguidelines/avoid-const-or-ref-data-members>` check
|
||||
to emit warnings only on classes that are copyable/movable, as required by the
|
||||
corresponding rule.
|
||||
|
||||
- Improved :doc:`cppcoreguidelines-owning-memory
|
||||
<clang-tidy/checks/cppcoreguidelines/owning-memory>` check now finds more
|
||||
issues, especially those related to implicit casts.
|
||||
|
||||
- Deprecated C.48 enforcement from :doc:`cppcoreguidelines-prefer-member-initializer
|
||||
<clang-tidy/checks/cppcoreguidelines/prefer-member-initializer>`. Please use
|
||||
:doc:`cppcoreguidelines-use-default-member-init
|
||||
<clang-tidy/checks/cppcoreguidelines/use-default-member-init>` instead.
|
||||
|
||||
- Improved :doc:`cppcoreguidelines-pro-bounds-constant-array-index
|
||||
<clang-tidy/checks/cppcoreguidelines/pro-bounds-constant-array-index>` check
|
||||
to cover type aliases of ``std::array``.
|
||||
|
||||
- Fixed a false positive in :doc:`cppcoreguidelines-slicing
|
||||
<clang-tidy/checks/cppcoreguidelines/slicing>` check when warning would be
|
||||
emitted in constructor for virtual base class initialization.
|
||||
|
||||
- Deprecated check-local options `HeaderFileExtensions`
|
||||
in :doc:`google-build-namespaces
|
||||
<clang-tidy/checks/google/build-namespaces>` check.
|
||||
Global options of the same name should be used instead.
|
||||
|
||||
- Deprecated check-local options `HeaderFileExtensions`
|
||||
in :doc:`google-global-names-in-headers
|
||||
<clang-tidy/checks/google/global-names-in-headers>` check.
|
||||
Global options of the same name should be used instead.
|
||||
|
||||
- Fixed an issue in :doc:`google-readability-avoid-underscore-in-googletest-name
|
||||
<clang-tidy/checks/google/readability-avoid-underscore-in-googletest-name>` when using
|
||||
``DISABLED_`` in the test suite name.
|
||||
|
||||
- Deprecated check-local options `HeaderFileExtensions`
|
||||
in :doc:`llvm-header-guard
|
||||
<clang-tidy/checks/llvm/header-guard>` check.
|
||||
Global options of the same name should be used instead.
|
||||
|
||||
- Fix false positive in :doc:`llvmlibc-inline-function-decl
|
||||
<clang-tidy/checks/llvmlibc/inline-function-decl>` when using templated
|
||||
function with separate declarations and definitions.
|
||||
|
||||
- Improved the performance of the :doc:`misc-confusable-identifiers
|
||||
<clang-tidy/checks/misc/confusable-identifiers>` check through optimizations.
|
||||
|
||||
- Deprecated check-local options `HeaderFileExtensions`
|
||||
in :doc:`misc-definitions-in-headers
|
||||
<clang-tidy/checks/misc/definitions-in-headers>` check.
|
||||
Global options of the same name should be used instead.
|
||||
|
||||
- Fixed false positive in :doc:`misc-definitions-in-headers
|
||||
<clang-tidy/checks/misc/definitions-in-headers>` to avoid warning on
|
||||
declarations inside anonymous namespaces.
|
||||
|
||||
- Fixed false-positive in :doc:`misc-redundant-expression
|
||||
<clang-tidy/checks/misc/redundant-expression>` check where expressions like
|
||||
``alignof`` or ``sizeof`` were incorrectly flagged as identical.
|
||||
|
||||
- Improved :doc:`misc-unused-parameters
|
||||
<clang-tidy/checks/misc/unused-parameters>` check with new `IgnoreVirtual`
|
||||
option to optionally ignore virtual methods.
|
||||
|
||||
- Deprecated check-local options `HeaderFileExtensions`
|
||||
in :doc:`misc-unused-using-decls
|
||||
<clang-tidy/checks/misc/unused-using-decls>` check.
|
||||
Global options of the same name should be used instead.
|
||||
|
||||
- Improved :doc:`modernize-concat-nested-namespaces
|
||||
<clang-tidy/checks/modernize/concat-nested-namespaces>` to fix incorrect fixes when
|
||||
using macro between namespace declarations, to fix false positive when using namespace
|
||||
with attributes and to support nested inline namespace introduced in c++20.
|
||||
|
||||
- Fixed an issue in :doc:`modernize-loop-convert
|
||||
<clang-tidy/checks/modernize/loop-convert>` generating wrong code
|
||||
when using structured bindings.
|
||||
|
||||
- In :doc:`modernize-use-default-member-init
|
||||
<clang-tidy/checks/modernize/use-default-member-init>` check, template
|
||||
constructors are now counted towards hand-written constructors and skipped
|
||||
if more than one exists. Additionally, a crash that occurred with array
|
||||
members being value-initialized has been fixed.
|
||||
|
||||
- Fixed false positive in :doc:`modernize-use-equals-default
|
||||
<clang-tidy/checks/modernize/use-equals-default>` check for special member
|
||||
functions containing macros or preprocessor directives, and out-of-line special
|
||||
member functions in unions.
|
||||
|
||||
- Improved :doc:`modernize-use-override
|
||||
<clang-tidy/checks/modernize/use-override>` check with new
|
||||
`IgnoreTemplateInstantiations` option to optionally ignore virtual function
|
||||
overrides that are part of template instantiations.
|
||||
|
||||
- Improved :doc:`performance-for-range-copy
|
||||
<clang-tidy/checks/performance/for-range-copy>`
|
||||
check by extending const usage analysis to include the type's members.
|
||||
|
||||
- Improved :doc:`performance-inefficient-vector-operation
|
||||
<clang-tidy/checks/performance/inefficient-vector-operation>`
|
||||
check by extending const usage analysis to include the type's members.
|
||||
|
||||
- Improved :doc:`performance-move-const-arg
|
||||
<clang-tidy/checks/performance/move-const-arg>` check to warn when move
|
||||
special member functions are not available.
|
||||
|
||||
- Improved :doc:`performance-no-automatic-move
|
||||
<clang-tidy/checks/performance/no-automatic-move>` check to warn on
|
||||
``const &&`` constructors and ignore ``const`` local variable to which NRVO
|
||||
is applied.
|
||||
|
||||
- Fixed an issue in the :doc:`performance-noexcept-move-constructor
|
||||
<clang-tidy/checks/performance/noexcept-move-constructor>` checker that was causing
|
||||
false-positives when the move constructor or move assign operator were defaulted.
|
||||
|
||||
- Improved :doc:`performance-unnecessary-copy-initialization
|
||||
<clang-tidy/checks/performance/unnecessary-copy-initialization>`
|
||||
check by extending const usage analysis to include the type's members.
|
||||
|
||||
- Improved :doc:`performance-unnecessary-value-param
|
||||
<clang-tidy/checks/performance/unnecessary-value-param>`
|
||||
check by extending const usage analysis to include the type's members.
|
||||
|
||||
- Improved :doc:`readability-container-data-pointer
|
||||
<clang-tidy/checks/readability/container-data-pointer>` check with new
|
||||
`IgnoredContainers` option to ignore some containers.
|
||||
|
||||
- Fixed a false positive in :doc:`readability-container-size-empty
|
||||
<clang-tidy/checks/readability/container-size-empty>` check when comparing
|
||||
``std::array`` objects to default constructed ones. The behavior for this and
|
||||
other relevant classes can now be configured with a new option.
|
||||
|
||||
- Fixed a false negative in :doc:`readability-convert-member-functions-to-static
|
||||
<clang-tidy/checks/readability/convert-member-functions-to-static>` when a
|
||||
nested class in a member function uses a ``this`` pointer.
|
||||
|
||||
- Fixed reading `HungarianNotation.CString.*` options in
|
||||
:doc:`readability-identifier-naming
|
||||
<clang-tidy/checks/readability/identifier-naming>` check.
|
||||
|
||||
- Renamed `HungarianNotation.CString` options `CharPrinter` and
|
||||
`WideCharPrinter` to `CharPointer` and `WideCharPointer` respectively in
|
||||
:doc:`readability-identifier-naming
|
||||
<clang-tidy/checks/readability/identifier-naming>` check.
|
||||
|
||||
- Updated the Hungarian prefixes for enums in C files to match those used in C++
|
||||
files for improved readability, as checked by :doc:`readability-identifier-naming
|
||||
<clang-tidy/checks/readability/identifier-naming>`. To preserve the previous
|
||||
behavior of using `i` as the prefix for enum tags, set the `EnumConstantPrefix`
|
||||
option to `i` instead of using `EnumConstantHungarianPrefix`.
|
||||
|
||||
- Fixed a hungarian notation issue in :doc:`readability-identifier-naming
|
||||
<clang-tidy/checks/readability/identifier-naming>` which failed to indicate
|
||||
the number of asterisks.
|
||||
|
||||
- Fixed an issue in :doc:`readability-identifier-naming
|
||||
<clang-tidy/checks/readability/identifier-naming>` when specifying an empty
|
||||
string for `Prefix` or `Suffix` options could result in the style not
|
||||
being used.
|
||||
|
||||
- Improved the performance of the :doc:`readability-identifier-naming
|
||||
<clang-tidy/checks/readability/identifier-naming>` check through optimizations.
|
||||
|
||||
- Fixed a false positive in :doc:`readability-implicit-bool-conversion
|
||||
<clang-tidy/checks/readability/implicit-bool-conversion>` check warning would
|
||||
be unnecessarily emitted for explicit cast using direct list initialization.
|
||||
|
||||
- Added support to optionally ignore user-defined literals in
|
||||
:doc:`readability-magic-numbers <clang-tidy/checks/readability/magic-numbers>`
|
||||
check and improved it to allow magic numbers in type aliases such as ``using``
|
||||
and ``typedef`` declarations if the new `IgnoreTypeAliases` option is set to
|
||||
`true`.
|
||||
|
||||
- Fixed a false positive in :doc:`readability-misleading-indentation
|
||||
<clang-tidy/checks/readability/misleading-indentation>` check when warning would
|
||||
be unnecessarily emitted for template dependent ``if constexpr``.
|
||||
|
||||
- Fixed a false positive in :doc:`readability-named-parameter
|
||||
<clang-tidy/checks/readability/named-parameter>` for defaulted out-of-line
|
||||
special member functions.
|
||||
|
||||
- Fixed incorrect fixes in :doc:`readability-redundant-declaration
|
||||
<clang-tidy/checks/readability/redundant-declaration>` check when linkage
|
||||
(like ``extern "C"``) is explicitly specified.
|
||||
|
||||
- Improved :doc:`readability-redundant-string-cstr
|
||||
<clang-tidy/checks/readability/redundant-string-cstr>` check to recognise
|
||||
unnecessary ``std::string::c_str()`` and ``std::string::data()`` calls in
|
||||
arguments to ``std::print``, ``std::format`` or other functions listed in
|
||||
the `StringParameterFunction` check option.
|
||||
|
||||
- Improved :doc:`readability-static-accessed-through-instance
|
||||
<clang-tidy/checks/readability/static-accessed-through-instance>` check to
|
||||
support unscoped enumerations through instances and fixed usage of anonymous
|
||||
structs or classes.
|
||||
|
||||
Removed checks
|
||||
^^^^^^^^^^^^^^
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -24,31 +24,11 @@ page](https://llvm.org/releases/).
|
||||
|
||||
## Major New Features
|
||||
|
||||
* Flang now supports loading LLVM pass plugins with the `-fpass-plugin` option
|
||||
which is also available in clang. The option mimics the behavior of the
|
||||
corresponding option in clang and has the same capabilities and limitations.
|
||||
* Flang also supports statically linked LLVM pass extensions. Projects can be
|
||||
linked statically into `flang-new` if the cmake command includes
|
||||
`-DLLVM_${NAME}_LINK_INTO_TOOLS=ON`. This behavior is also similar to clang.
|
||||
|
||||
## Bug Fixes
|
||||
|
||||
## Non-comprehensive list of changes in this release
|
||||
* The bash wrapper script, `flang`, is renamed as `flang-to-external-fc`.
|
||||
* In contrast to Clang, Flang will not default to using `-fpie` when linking
|
||||
executables. This is only a temporary solution and the goal is to align with
|
||||
Clang in the near future. First, however, the frontend driver needs to be
|
||||
extended so that it can generate position independent code (that requires
|
||||
adding support for e.g. `-fpic` and `-mrelocation-model` in `flang-new
|
||||
-fc1`). Once that is available, support for the `-fpie` can officially be
|
||||
added and the default behaviour updated.
|
||||
|
||||
## New Compiler Flags
|
||||
* Refined how `-f{no-}color-diagnostics` is treated to better align with Clang.
|
||||
In particular, both `-fcolor-diagnostics` and `-fno-color-diagnostics` are
|
||||
now available in `flang-new` (the diagnostics are formatted by default). In
|
||||
the frontend driver, `flang-new -fc1`, only `-fcolor-diagnostics` is
|
||||
available (by default, the diagnostics are not formatted).
|
||||
|
||||
## Windows Support
|
||||
|
||||
|
@ -26,84 +26,12 @@ Non-comprehensive list of changes in this release
|
||||
ELF Improvements
|
||||
----------------
|
||||
|
||||
* When ``--threads=`` is not specified, the number of concurrency is now capped to 16.
|
||||
A large ``--thread=`` can harm performance, especially with some system
|
||||
malloc implementations like glibc's.
|
||||
(`D147493 <https://reviews.llvm.org/D147493>`_)
|
||||
* ``--remap-inputs=`` and ``--remap-inputs-file=`` are added to remap input files.
|
||||
(`D148859 <https://reviews.llvm.org/D148859>`_)
|
||||
* ``--lto=`` is now available to support ``clang -funified-lto``
|
||||
(`D123805 <https://reviews.llvm.org/D123805>`_)
|
||||
* ``--lto-CGO[0-3]`` is now available to control ``CodeGenOpt::Level`` independent of the LTO optimization level.
|
||||
(`D141970 <https://reviews.llvm.org/D141970>`_)
|
||||
* ``--check-dynamic-relocations=`` is now correct 32-bit targets when the addend is larger than 0x80000000.
|
||||
(`D149347 <https://reviews.llvm.org/D149347>`_)
|
||||
* ``--print-memory-usage`` has been implemented for memory regions.
|
||||
(`D150644 <https://reviews.llvm.org/D150644>`_)
|
||||
* ``SHF_MERGE``, ``--icf=``, and ``--build-id=fast`` have switched to 64-bit xxh3.
|
||||
(`D154813 <https://reviews.llvm.org/D154813>`_)
|
||||
* Quoted output section names can now be used in linker scripts.
|
||||
(`#60496 <https://github.com/llvm/llvm-project/issues/60496>`_)
|
||||
* ``MEMORY`` can now be used without a ``SECTIONS`` command.
|
||||
(`D145132 <https://reviews.llvm.org/D145132>`_)
|
||||
* ``REVERSE`` can now be used in input section descriptions to reverse the order of input sections.
|
||||
(`D145381 <https://reviews.llvm.org/D145381>`_)
|
||||
* Program header assignment can now be used within ``OVERLAY``. This functionality was accidentally lost in 2020.
|
||||
(`D150445 <https://reviews.llvm.org/D150445>`_)
|
||||
* Operators ``^`` and ``^=`` can now be used in linker scripts.
|
||||
* LoongArch is now supported.
|
||||
* ``DT_AARCH64_MEMTAG_*`` dynamic tags are now supported.
|
||||
(`D143769 <https://reviews.llvm.org/D143769>`_)
|
||||
* AArch32 port now supports BE-8 and BE-32 modes for big-endian.
|
||||
(`D140201 <https://reviews.llvm.org/D140201>`_)
|
||||
(`D140202 <https://reviews.llvm.org/D140202>`_)
|
||||
(`D150870 <https://reviews.llvm.org/D150870>`_)
|
||||
* ``R_ARM_THM_ALU_ABS_G*`` relocations are now supported.
|
||||
(`D153407 <https://reviews.llvm.org/D153407>`_)
|
||||
* ``.ARM.exidx`` sections may start at non-zero output section offset.
|
||||
(`D148033 <https://reviews.llvm.org/D148033>`_)
|
||||
* Arm Cortex-M Security Extensions is now implemented.
|
||||
(`D139092 <https://reviews.llvm.org/D139092>`_)
|
||||
* BTI landing pads are now added to PLT entries accessed by range extension thunks or relative vtables.
|
||||
(`D148704 <https://reviews.llvm.org/D148704>`_)
|
||||
(`D153264 <https://reviews.llvm.org/D153264>`_)
|
||||
* AArch64 short range thunk has been implemented to mitigate the performance loss of a long range thunk.
|
||||
(`D148701 <https://reviews.llvm.org/D148701>`_)
|
||||
* ``R_AVR_8_LO8/R_AVR_8_HI8/R_AVR_8_HLO8/R_AVR_LO8_LDI_GS/R_AVR_HI8_LDI_GS`` have been implemented.
|
||||
(`D147100 <https://reviews.llvm.org/D147100>`_)
|
||||
(`D147364 <https://reviews.llvm.org/D147364>`_)
|
||||
* ``--no-power10-stubs`` now works for PowerPC64.
|
||||
* ``DT_PPC64_OPT`` is now supported;
|
||||
(`D150631 <https://reviews.llvm.org/D150631>`_)
|
||||
* ``PT_RISCV_ATTRIBUTES`` is added to include the SHT_RISCV_ATTRIBUTES section.
|
||||
(`D152065 <https://reviews.llvm.org/D152065>`_)
|
||||
* ``R_RISCV_PLT32`` is added to support C++ relative vtables.
|
||||
(`D143115 <https://reviews.llvm.org/D143115>`_)
|
||||
* RISC-V global pointer relaxation has been implemented. Specify ``--relax-gp`` to enable the linker relaxation.
|
||||
(`D143673 <https://reviews.llvm.org/D143673>`_)
|
||||
* The symbol value of ``foo`` is correctly handled when ``--wrap=foo`` and RISC-V linker relaxation are used.
|
||||
(`D151768 <https://reviews.llvm.org/D151768>`_)
|
||||
* x86-64 large data sections are now placed away from code sections to alleviate relocation overflow pressure.
|
||||
(`D150510 <https://reviews.llvm.org/D150510>`_)
|
||||
|
||||
Breaking changes
|
||||
----------------
|
||||
|
||||
COFF Improvements
|
||||
-----------------
|
||||
|
||||
* lld-link can now find libraries with relative paths that are relative to
|
||||
`/libpath`. Before it would only be able to find libraries relative to the
|
||||
current directory.
|
||||
I.e. ``lld-link /libpath:c:\relative\root relative\path\my.lib`` where before
|
||||
we would have to do ``lld-link /libpath:c:\relative\root\relative\path my.lib``
|
||||
* lld-link learned -print-search-paths that will print all the paths where it will
|
||||
search for libraries.
|
||||
* By default lld-link will now search for libraries in the toolchain directories.
|
||||
Specifically it will search:
|
||||
``<toolchain>/lib``, ``<toolchain>/lib/clang/<version>/lib`` and
|
||||
``<toolchain>/lib/clang/<version>/lib/windows``.
|
||||
|
||||
MinGW Improvements
|
||||
------------------
|
||||
|
||||
@ -115,7 +43,3 @@ WebAssembly Improvements
|
||||
|
||||
Fixes
|
||||
#####
|
||||
|
||||
* Arm exception index tables (.ARM.exidx sections) are now output
|
||||
correctly when they are at a non zero offset within their output
|
||||
section. (`D148033 <https://reviews.llvm.org/D148033>`_)
|
||||
|
@ -47,131 +47,26 @@ Non-comprehensive list of changes in this release
|
||||
Update on required toolchains to build LLVM
|
||||
-------------------------------------------
|
||||
|
||||
With LLVM 17.x we raised the version requirement of CMake used to build LLVM.
|
||||
The new requirements are as follows:
|
||||
|
||||
* CMake >= 3.20.0
|
||||
|
||||
Changes to the LLVM IR
|
||||
----------------------
|
||||
|
||||
* Typed pointers are no longer supported and the ``-opaque-pointers`` option
|
||||
has been removed. See the `opaque pointers <OpaquePointers.html>`__
|
||||
documentation for migration instructions.
|
||||
|
||||
* The ``nofpclass`` attribute was introduced. This allows more
|
||||
optimizations around special floating point value comparisons.
|
||||
|
||||
* Introduced new ``llvm.ldexp`` and ``llvm.experimental.constrained.ldexp`` intrinsics.
|
||||
|
||||
* Introduced new ``llvm.frexp`` intrinsic.
|
||||
|
||||
* The constant expression variants of the following instructions have been
|
||||
removed:
|
||||
|
||||
* ``select``
|
||||
|
||||
* Introduced a set of experimental `convergence control intrinsics
|
||||
<ConvergentOperations.html>`__ to explicitly define the semantics of convergent
|
||||
operations.
|
||||
|
||||
Changes to LLVM infrastructure
|
||||
------------------------------
|
||||
|
||||
* The legacy optimization pipeline has been removed.
|
||||
|
||||
* Alloca merging in the inliner has been removed, since it only worked with the
|
||||
legacy inliner pass. Backend stack coloring should handle cases alloca
|
||||
merging initially set out to handle.
|
||||
|
||||
* InstructionSimplify APIs now require instructions be inserted into a
|
||||
parent function.
|
||||
|
||||
* A new FatLTO pipeline was added to support generating object files that have
|
||||
both machine code and LTO compatible bitcode. See the :doc:`FatLTO`
|
||||
documentation and the original
|
||||
`RFC <https://discourse.llvm.org/t/rfc-ffat-lto-objects-support/63977>`_
|
||||
for more details.
|
||||
|
||||
Changes to building LLVM
|
||||
------------------------
|
||||
|
||||
Changes to TableGen
|
||||
-------------------
|
||||
|
||||
* Named arguments are supported. Arguments can be specified in the form of
|
||||
``name=value``.
|
||||
|
||||
Changes to Interprocedural Optimizations
|
||||
----------------------------------------
|
||||
|
||||
Changes to the AArch64 Backend
|
||||
------------------------------
|
||||
|
||||
* Added Assembly Support for the 2022 A-profile extensions FEAT_GCS (Guarded
|
||||
Control Stacks), FEAT_CHK (Check Feature Status), and FEAT_ATS1A.
|
||||
* Support for preserve_all calling convention is added.
|
||||
* Added support for missing arch extensions in the assembly directives
|
||||
``.arch <level>+<ext>`` and ``.arch_extension``.
|
||||
* Fixed handling of ``.arch <level>`` in assembly, without using any ``+<ext>``
|
||||
suffix. Previously this had no effect at all if no extensions were supplied.
|
||||
Now ``.arch <level>`` can be used to enable all the extensions that are
|
||||
included in a higher level than what is specified on the command line,
|
||||
or for disabling unwanted extensions if setting it to a lower level.
|
||||
This fixes `PR32873 <https://github.com/llvm/llvm-project/issues/32220>`.
|
||||
|
||||
Changes to the AMDGPU Backend
|
||||
-----------------------------
|
||||
* More fine-grained synchronization around barriers for newer architectures
|
||||
(gfx90a+, gfx10+). The AMDGPU backend now omits previously automatically
|
||||
generated waitcnt instructions before barriers, allowing for more precise
|
||||
control. Users must now use memory fences to implement fine-grained
|
||||
synchronization strategies around barriers. Refer to `AMDGPU memory model
|
||||
<AMDGPUUsage.html#memory-model>`__.
|
||||
|
||||
* Address space 7, used for *buffer fat pointers* has been added.
|
||||
It is non-integral and has 160-bit pointers (a 128-bit raw buffer resource and a
|
||||
32-bit offset) and 32-bit indices. This is part of ongoing work to improve
|
||||
the usability of buffer operations. Refer to `AMDGPU address spaces
|
||||
<AMDGPUUsage.html#address-spaces>`__.
|
||||
|
||||
* Address space 8, used for *buffer resources* has been added.
|
||||
It is non-integral and has 128-bit pointers, which correspond to buffer
|
||||
resources in the underlying hardware. These pointers should not be used with
|
||||
`getelementptr` or other LLVM memory instructions, and can be created with
|
||||
the `llvm.amdgcn.make.buffer.rsrc` intrinsic. Refer to `AMDGPU address spaces
|
||||
<AMDGPUUsage.html#address_spaces>`__.
|
||||
|
||||
* New versions of the intrinsics for working with buffer resources have been added.
|
||||
These `llvm.amdgcn.*.ptr.[t]buffer.*` intrinsics have the same semantics as
|
||||
the old `llvm.amdgcn.*.[t]buffer.*` intrinsics, except that their `rsrc`
|
||||
arguments are represented by a `ptr addrspace(8)` instead of a `<4 x i32>`. This
|
||||
improves the interaction between AMDGPU buffer operations and the LLVM memory
|
||||
model, and so the non `.ptr` intrinsics are deprecated.
|
||||
|
||||
* Removed ``llvm.amdgcn.atomic.inc`` and ``llvm.amdgcn.atomic.dec``
|
||||
intrinsics. :ref:`atomicrmw <i_atomicrmw>` should be used instead
|
||||
with ``uinc_wrap`` and ``udec_wrap``.
|
||||
|
||||
* Added llvm.amdgcn.log.f32 intrinsic. This provides direct access to
|
||||
v_log_f32.
|
||||
|
||||
* Added llvm.amdgcn.exp2.f32 intrinsic. This provides direct access to
|
||||
v_exp_f32.
|
||||
|
||||
* llvm.log2.f32, llvm.log10.f32, and llvm.log.f32 are now lowered
|
||||
accurately. Use llvm.amdgcn.log.f32 to access the old behavior for
|
||||
llvm.log2.f32.
|
||||
|
||||
* llvm.exp2.f32 and llvm.exp.f32 are now lowered accurately. Use
|
||||
llvm.amdgcn.exp2.f32 to access the old behavior for llvm.exp2.f32.
|
||||
|
||||
* Implemented new 1ulp IEEE lowering strategy for float reciprocal
|
||||
which saves 2 instructions. This is used by default for OpenCL on
|
||||
gfx9+. With ``contract`` flags, this will fold into a 1 ulp rsqrt.
|
||||
|
||||
* Implemented new 2ulp IEEE lowering strategy for float
|
||||
reciprocal. This is used by default for OpenCL on gfx9+.
|
||||
|
||||
* `llvm.sqrt.f64` is now lowered correctly. Use `llvm.amdgcn.sqrt.f64`
|
||||
for raw instruction access.
|
||||
@ -179,134 +74,36 @@ Changes to the AMDGPU Backend
|
||||
Changes to the ARM Backend
|
||||
--------------------------
|
||||
|
||||
- The hard-float ABI is now available in Armv8.1-M configurations that
|
||||
have integer MVE instructions (and therefore have FP registers) but
|
||||
no scalar or vector floating point computation.
|
||||
|
||||
- The ``.arm`` directive now aligns code to the next 4-byte boundary, and
|
||||
the ``.thumb`` directive aligns code to the next 2-byte boundary.
|
||||
|
||||
Changes to the AVR Backend
|
||||
--------------------------
|
||||
|
||||
* ...
|
||||
|
||||
Changes to the DirectX Backend
|
||||
------------------------------
|
||||
|
||||
Changes to the Hexagon Backend
|
||||
------------------------------
|
||||
|
||||
* ...
|
||||
|
||||
Changes to the LoongArch Backend
|
||||
--------------------------------
|
||||
|
||||
* Adds assembler/disassembler support for the LSX, LASX, LVZ and LBT ISA extensions.
|
||||
* The ``lp64s`` ABI is supported now and has been tested on Rust bare-matal target.
|
||||
* A target feature ``ual`` is introduced to allow unaligned memory accesses and
|
||||
this feature is enabled by default for generic 64-bit processors.
|
||||
* Adds support for the ``large`` code model, which is equivalent to GCC's ``extreme`` one.
|
||||
* Assorted codegen improvements.
|
||||
* llvm-objcopy now supports processing LoongArch objects.
|
||||
|
||||
Changes to the MIPS Backend
|
||||
---------------------------
|
||||
|
||||
* ...
|
||||
|
||||
Changes to the PowerPC Backend
|
||||
------------------------------
|
||||
|
||||
* A new option ``-mxcoff-roptr`` is added to ``clang`` and ``llc``. When this
|
||||
option is present, constant objects with relocatable address values are put
|
||||
into the RO data section. This option should be used with the ``-fdata-sections``
|
||||
option, and is not supported with ``-fno-data-sections``. The option is
|
||||
only supported on AIX.
|
||||
* On AIX, teach the profile runtime to check for a build-id string; such string
|
||||
can be created by the -mxcoff-build-id option.
|
||||
* Removed ``-ppc-quadword-atomics`` which only affected lock-free quadword
|
||||
atomics on AIX. Now backend generates lock-free quadword atomics code on AIX
|
||||
by default. To support lock-free quadword atomics in libatomic, the OS level
|
||||
must be at least AIX 7.2 TL5 SP3 with libc++.rte of version 17.1.1 or above
|
||||
installed.
|
||||
|
||||
Changes to the RISC-V Backend
|
||||
-----------------------------
|
||||
|
||||
* Assembler support for version 1.0.1 of the Zcb extension was added.
|
||||
* Zca, Zcf, and Zcd extensions were upgraded to version 1.0.1.
|
||||
* vsetvli intrinsics no longer have side effects. They may now be combined,
|
||||
moved, deleted, etc. by optimizations.
|
||||
* Adds support for the vendor-defined XTHeadBa (address-generation) extension.
|
||||
* Adds support for the vendor-defined XTHeadBb (basic bit-manipulation) extension.
|
||||
* Adds support for the vendor-defined XTHeadBs (single-bit) extension.
|
||||
* Adds support for the vendor-defined XTHeadCondMov (conditional move) extension.
|
||||
* Adds support for the vendor-defined XTHeadMac (multiply-accumulate instructions) extension.
|
||||
* Added support for the vendor-defined XTHeadMemPair (two-GPR memory operations)
|
||||
extension disassembler/assembler.
|
||||
* Added support for the vendor-defined XTHeadMemIdx (indexed memory operations)
|
||||
extension disassembler/assembler.
|
||||
* Added support for the vendor-defined Xsfvcp (SiFive VCIX) extension
|
||||
disassembler/assembler.
|
||||
* Added support for the vendor-defined Xsfcie (SiFive CIE) extension
|
||||
disassembler/assembler.
|
||||
* Support for the now-ratified Zawrs extension is no longer experimental.
|
||||
* Adds support for the vendor-defined XTHeadCmo (cache management operations) extension.
|
||||
* Adds support for the vendor-defined XTHeadSync (multi-core synchronization instructions) extension.
|
||||
* Added support for the vendor-defined XTHeadFMemIdx (indexed memory operations for floating point) extension.
|
||||
* Assembler support for RV64E was added.
|
||||
* Assembler support was added for the experimental Zicond (integer conditional
|
||||
operations) extension.
|
||||
* I, F, D, and A extension versions have been update to the 20191214 spec versions.
|
||||
New version I2.1, F2.2, D2.2, A2.1. This should not impact code generation.
|
||||
Immpacts versions accepted in ``-march`` and reported in ELF attributes.
|
||||
* Changed the ShadowCallStack register from ``x18`` (``s2``) to ``x3``
|
||||
(``gp``). Note this breaks the existing non-standard ABI for ShadowCallStack
|
||||
on RISC-V, but conforms with the new "platform register" defined in the
|
||||
RISC-V psABI (for more details see the
|
||||
`psABI discussion <https://github.com/riscv-non-isa/riscv-elf-psabi-doc/issues/370>`_).
|
||||
* Added support for Zfa extension version 0.2.
|
||||
* Updated support experimental vector crypto extensions to version 0.5.1 of
|
||||
the specification.
|
||||
* Removed N extension (User-Level Interrupts) CSR names in the assembler.
|
||||
* ``RISCV::parseCPUKind`` and ``RISCV::checkCPUKind`` were merged into a single
|
||||
``RISCV::parseCPU``. The ``CPUKind`` enum is no longer part of the
|
||||
RISCVTargetParser.h interface. Similar for ``parseTuneCPUkind`` and
|
||||
``checkTuneCPUKind``.
|
||||
* Add sifive-x280 processor.
|
||||
* Zve32f is no longer allowed with Zfinx. Zve64d is no longer allowed with
|
||||
Zdinx.
|
||||
* Assembly support was added for the experimental Zfbfmin (scalar BF16
|
||||
conversions), Zvfbfmin (vector BF16 conversions), and Zvfbfwma (vector BF16
|
||||
widening mul-add) extensions.
|
||||
* Added assembler/disassembler support for the experimental Zacas (atomic
|
||||
compare-and-swap) extension.
|
||||
* Zvfh extension version was upgraded to 1.0 and is no longer experimental.
|
||||
|
||||
Changes to the WebAssembly Backend
|
||||
----------------------------------
|
||||
|
||||
* Function annotations (``__attribute__((annotate(<name>)))``)
|
||||
now generate custom sections in the Wasm output file. A custom section
|
||||
for each unique name will be created that contains each function
|
||||
index the annotation applies to.
|
||||
|
||||
Changes to the Windows Target
|
||||
-----------------------------
|
||||
|
||||
Changes to the X86 Backend
|
||||
--------------------------
|
||||
|
||||
* ``__builtin_unpredictable`` (unpredictable metadata in LLVM IR), is handled by X86 Backend.
|
||||
``X86CmovConversion`` pass now respects this builtin and does not convert CMOVs to branches.
|
||||
* Add support for the ``PBNDKB`` instruction.
|
||||
* Support ISA of ``SHA512``.
|
||||
* Support ISA of ``SM3``.
|
||||
* Support ISA of ``SM4``.
|
||||
* Support ISA of ``AVX-VNNI-INT16``.
|
||||
* ``-mcpu=graniterapids-d`` is now supported.
|
||||
|
||||
Changes to the OCaml bindings
|
||||
-----------------------------
|
||||
|
||||
@ -319,112 +116,27 @@ Changes to the Python bindings
|
||||
Changes to the C API
|
||||
--------------------
|
||||
|
||||
* ``LLVMContextSetOpaquePointers``, a temporary API to pin to legacy typed
|
||||
pointer, has been removed.
|
||||
* Functions for adding legacy passes like ``LLVMAddInstructionCombiningPass``
|
||||
have been removed.
|
||||
* Removed ``LLVMPassManagerBuilderRef`` and functions interacting with it.
|
||||
These belonged to the no longer supported legacy pass manager.
|
||||
* Functions for initializing legacy passes like ``LLVMInitializeInstCombine``
|
||||
have been removed. Calls to such functions can simply be dropped, as they are
|
||||
no longer necessary.
|
||||
* ``LLVMPassRegistryRef`` and ``LLVMGetGlobalPassRegistry``, which were only
|
||||
useful in conjunction with initialization functions, have been removed.
|
||||
* As part of the opaque pointer transition, ``LLVMGetElementType`` no longer
|
||||
gives the pointee type of a pointer type.
|
||||
* 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:
|
||||
|
||||
* ``LLVMConstSelect``
|
||||
|
||||
Changes to the CodeGen infrastructure
|
||||
-------------------------------------
|
||||
|
||||
* ``llvm.memcpy``, ``llvm.memmove`` and ``llvm.memset`` are now
|
||||
expanded into loops by default for targets which do not report the
|
||||
corresponding library function is available.
|
||||
|
||||
Changes to the Metadata Info
|
||||
---------------------------------
|
||||
|
||||
Changes to the Debug Info
|
||||
---------------------------------
|
||||
|
||||
* The DWARFv5 feature of attaching ``DW_AT_default_value`` to defaulted template
|
||||
parameters will now be available in any non-strict DWARF mode and in a wider
|
||||
range of cases than previously.
|
||||
(`D139953 <https://reviews.llvm.org/D139953>`_,
|
||||
`D139988 <https://reviews.llvm.org/D139988>`_)
|
||||
|
||||
* The ``DW_AT_name`` on ``DW_AT_typedef``\ s for alias templates will now omit
|
||||
defaulted template parameters. (`D142268 <https://reviews.llvm.org/D142268>`_)
|
||||
|
||||
* The experimental ``@llvm.dbg.addr`` intrinsic has been removed (`D144801
|
||||
<https://reviews.llvm.org/D144801>`_). IR inputs with this intrinsic are
|
||||
auto-upgraded to ``@llvm.dbg.value`` with ``DW_OP_deref`` appended to the
|
||||
``DIExpression`` (`D144793 <https://reviews.llvm.org/D144793>`_).
|
||||
|
||||
* When a template class annotated with the ``[[clang::preferred_name]]`` attribute
|
||||
were to appear in a ``DW_AT_type``, the type will now be that of the preferred_name
|
||||
instead. This change is only enabled when compiling with `-glldb`.
|
||||
(`D145803 <https://reviews.llvm.org/D145803>`_)
|
||||
|
||||
Changes to the LLVM tools
|
||||
---------------------------------
|
||||
* llvm-lib now supports the /def option for generating a Windows import library from a definition file.
|
||||
|
||||
* Made significant changes to JSON output format of `llvm-readobj`/`llvm-readelf`
|
||||
to improve correctness and clarity.
|
||||
|
||||
Changes to LLDB
|
||||
---------------------------------
|
||||
|
||||
* In the results of commands such as ``expr`` and ``frame var``, type summaries will now
|
||||
omit defaulted template parameters. The full template parameter list can still be
|
||||
viewed with ``expr --raw-output``/``frame var --raw-output``. (`D141828 <https://reviews.llvm.org/D141828>`_)
|
||||
|
||||
* LLDB is now able to show the subtype of signals found in a core file. For example
|
||||
memory tagging specific segfaults such as ``SIGSEGV: sync tag check fault``.
|
||||
|
||||
* LLDB can now display register fields if they are described in target XML sent
|
||||
by a debug server such as ``gdbserver`` (``lldb-server`` does not currently produce
|
||||
this information). Fields are only printed when reading named registers, for
|
||||
example ``register read cpsr``. They are not shown when reading a register set,
|
||||
``register read -s 0``.
|
||||
|
||||
* A new command ``register info`` was added. This command will tell you everything that
|
||||
LLDB knows about a register. Based on what LLDB already knows and what the debug
|
||||
server tells it. Including but not limited to, the size, where it is read from and
|
||||
the fields that the register contains.
|
||||
|
||||
Changes to Sanitizers
|
||||
---------------------
|
||||
* For Darwin users that override weak symbols, note that the dynamic linker will
|
||||
only consider symbols in other mach-o modules which themselves contain at
|
||||
least one weak symbol. A consequence is that if your program or dylib contains
|
||||
an intended override of a weak symbol, then it must contain at least one weak
|
||||
symbol as well for the override to take effect.
|
||||
|
||||
Example:
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
// Add this to make sure your override takes effect
|
||||
__attribute__((weak,unused)) unsigned __enableOverrides;
|
||||
|
||||
// Example override
|
||||
extern "C" const char *__asan_default_options() { ... }
|
||||
|
||||
Other Changes
|
||||
-------------
|
||||
|
||||
* ``llvm::demangle`` now takes a ``std::string_view`` rather than a
|
||||
``const std::string&``. Be careful passing temporaries into
|
||||
``llvm::demangle`` that don't outlive the expression using
|
||||
``llvm::demangle``.
|
||||
|
||||
External Open Source Projects Using LLVM 15
|
||||
===========================================
|
||||
|
||||
|
@ -19,13 +19,3 @@ from the `LLVM releases web site <https://llvm.org/releases/>`_.
|
||||
|
||||
Non-comprehensive list of changes in this release
|
||||
=================================================
|
||||
|
||||
- Removed the "old" device plugins along with support for the ``remote`` and
|
||||
``ve`` plugins
|
||||
- Added basic experimental support for ``libc`` functions on the GPU via the
|
||||
`LLVM C Library for GPUs <https://libc.llvm.org/gpu/>`_.
|
||||
- Added minimal support for calling host functions from the device using the
|
||||
``libc`` interface, see this `example
|
||||
<https://github.com/llvm/llvm-project/blob/main/openmp/libomptarget/test/libc/host_call.c>`_.
|
||||
- Fixed the implementation of ``omp_get_wtime`` for AMDGPU targets.
|
||||
- Added vendor agnostic OMPT callback support for OpenMP-based device offload.
|
||||
|
@ -11,15 +11,3 @@ In Polly |version| the following important changes have been incorporated.
|
||||
the new features that have recently been committed to our development
|
||||
branch.
|
||||
|
||||
|
||||
- Support for -polly-vectorizer=polly has been removed. Polly's internal
|
||||
vectorizer is not well maintained and is known to not work in some cases
|
||||
such as region ScopStmts. Unlike LLVM's LoopVectorize pass it also does
|
||||
not have a target-dependent cost heuristics, and we recommend using
|
||||
LoopVectorize instead of -polly-vectorizer=polly.
|
||||
|
||||
In the future we hope that Polly can collaborate better with LoopVectorize,
|
||||
like Polly marking a loop is safe to vectorize with a specific simd width,
|
||||
instead of replicating its functionality.
|
||||
|
||||
- Polly-ACC has been removed.
|
||||
|
@ -1,5 +1,5 @@
|
||||
=======================================
|
||||
PSTL 17.0.0 (In-Progress) Release Notes
|
||||
PSTL 18.0.0 (In-Progress) Release Notes
|
||||
=======================================
|
||||
|
||||
.. contents::
|
||||
@ -30,7 +30,7 @@ web page, this document applies to the *next* release, not the current one.
|
||||
To see the release notes for a specific release, please see the `releases
|
||||
page <https://llvm.org/releases/>`_.
|
||||
|
||||
What's New in PSTL 17.0.0?
|
||||
What's New in PSTL 18.0.0?
|
||||
==========================
|
||||
|
||||
New Features
|
||||
|
Loading…
Reference in New Issue
Block a user