[flang-commits] [clang] [clang-tools-extra] [flang] [libcxx] [lld] [llvm] Bump version to 24.0.0git (PR #209473)
Douglas Yung via flang-commits
flang-commits at lists.llvm.org
Tue Jul 14 06:21:08 PDT 2026
https://github.com/dyung created https://github.com/llvm/llvm-project/pull/209473
None
>From 45181be2ab83080105a8328df12887c14950fe49 Mon Sep 17 00:00:00 2001
From: Douglas Yung <douglas.yung at sony.com>
Date: Tue, 14 Jul 2026 13:11:38 +0000
Subject: [PATCH] Bump version to 24.0.0git
---
clang-tools-extra/docs/ReleaseNotes.rst | 846 ----------------
clang/docs/ReleaseNotes.md | 1171 +---------------------
cmake/Modules/LLVMVersion.cmake | 2 +-
flang/docs/ReleaseNotes.md | 7 -
libcxx/include/__config | 2 +-
lld/docs/ReleaseNotes.rst | 131 ---
llvm/docs/ReleaseNotes.md | 383 -------
llvm/utils/gn/secondary/llvm/version.gni | 2 +-
llvm/utils/lit/lit/__init__.py | 2 +-
llvm/utils/mlgo-utils/mlgo/__init__.py | 2 +-
10 files changed, 9 insertions(+), 2539 deletions(-)
diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst
index 9fee5ff0c97ce..69c3bcf67b8db 100644
--- a/clang-tools-extra/docs/ReleaseNotes.rst
+++ b/clang-tools-extra/docs/ReleaseNotes.rst
@@ -49,95 +49,6 @@ Major New Features
Potentially Breaking Changes
----------------------------
-- The :doc:`modernize-use-using <clang-tidy/checks/modernize/use-using>` check
- now sets the `IgnoreExternC` option to `true` by default. The check will
- no longer transform ``typedef``\ s within ``extern "C"`` blocks.
-
-- Deprecated the :program:`clang-tidy` check :doc:`performance-faster-string-find
- <clang-tidy/checks/performance/faster-string-find>`. It has been renamed to
- :doc:`performance-prefer-single-char-overloads
- <clang-tidy/checks/performance/prefer-single-char-overloads>`.
- The original check will be removed in the 25th release.
-
-- Removed the :program:`clang-tidy` ``hicpp`` module. All checks have been moved
- to the other modules. Use the replacement checks instead:
-
- ================================== ========================================================================
- Removed check Replacement check
- ================================== ========================================================================
- ``hicpp-avoid-c-arrays`` :doc:`modernize-avoid-c-arrays
- <clang-tidy/checks/modernize/avoid-c-arrays>`
- ``hicpp-avoid-goto`` :doc:`cppcoreguidelines-avoid-goto
- <clang-tidy/checks/cppcoreguidelines/avoid-goto>`
- ``hicpp-braces-around-statements`` :doc:`readability-braces-around-statements
- <clang-tidy/checks/readability/braces-around-statements>`
- ``hicpp-deprecated-headers`` :doc:`modernize-deprecated-headers
- <clang-tidy/checks/modernize/deprecated-headers>`
- ``hicpp-exception-baseclass`` :doc:`bugprone-std-exception-baseclass
- <clang-tidy/checks/bugprone/std-exception-baseclass>`
- ``hicpp-explicit-conversions`` :doc:`misc-explicit-constructor
- <clang-tidy/checks/misc/explicit-constructor>`
- ``hicpp-function-size`` :doc:`readability-function-size
- <clang-tidy/checks/readability/function-size>`
- ``hicpp-ignored-remove-result`` :doc:`bugprone-unused-return-value
- <clang-tidy/checks/bugprone/unused-return-value>`
- ``hicpp-invalid-access-moved`` :doc:`bugprone-use-after-move
- <clang-tidy/checks/bugprone/use-after-move>`
- ``hicpp-member-init`` :doc:`cppcoreguidelines-pro-type-member-init
- <clang-tidy/checks/cppcoreguidelines/pro-type-member-init>`
- ``hicpp-move-const-arg`` :doc:`performance-move-const-arg
- <clang-tidy/checks/performance/move-const-arg>`
- ``hicpp-multiway-paths-covered`` | :doc:`bugprone-unhandled-code-paths
- <clang-tidy/checks/bugprone/unhandled-code-paths>`
- | :doc:`readability-trivial-switch
- <clang-tidy/checks/readability/trivial-switch>`
- ``hicpp-named-parameter`` :doc:`readability-named-parameter
- <clang-tidy/checks/readability/named-parameter>`
- ``hicpp-new-delete-operators`` :doc:`misc-new-delete-overloads
- <clang-tidy/checks/misc/new-delete-overloads>`
- ``hicpp-no-array-decay`` :doc:`cppcoreguidelines-pro-bounds-array-to-pointer-decay
- <clang-tidy/checks/cppcoreguidelines/pro-bounds-array-to-pointer-decay>`
- ``hicpp-no-assembler`` :doc:`portability-no-assembler
- <clang-tidy/checks/portability/no-assembler>`
- ``hicpp-no-malloc`` :doc:`cppcoreguidelines-no-malloc
- <clang-tidy/checks/cppcoreguidelines/no-malloc>`
- ``hicpp-noexcept-move`` :doc:`performance-noexcept-move-constructor
- <clang-tidy/checks/performance/noexcept-move-constructor>`
- ``hicpp-signed-bitwise`` :doc:`bugprone-signed-bitwise
- <clang-tidy/checks/bugprone/signed-bitwise>`
- ``hicpp-special-member-functions`` :doc:`cppcoreguidelines-special-member-functions
- <clang-tidy/checks/cppcoreguidelines/special-member-functions>`
- ``hicpp-static-assert`` :doc:`misc-static-assert
- <clang-tidy/checks/misc/static-assert>`
- ``hicpp-uppercase-literal-suffix`` :doc:`readability-uppercase-literal-suffix
- <clang-tidy/checks/readability/uppercase-literal-suffix>`
- ``hicpp-undelegated-constructor`` :doc:`bugprone-undelegated-constructor
- <clang-tidy/checks/bugprone/undelegated-constructor>`
- ``hicpp-use-auto`` :doc:`modernize-use-auto
- <clang-tidy/checks/modernize/use-auto>`
- ``hicpp-use-emplace`` :doc:`modernize-use-emplace
- <clang-tidy/checks/modernize/use-emplace>`
- ``hicpp-use-equals-default`` :doc:`modernize-use-equals-default
- <clang-tidy/checks/modernize/use-equals-default>`
- ``hicpp-use-equals-delete`` :doc:`modernize-use-equals-delete
- <clang-tidy/checks/modernize/use-equals-delete>`
- ``hicpp-use-noexcept`` :doc:`modernize-use-noexcept
- <clang-tidy/checks/modernize/use-noexcept>`
- ``hicpp-use-nullptr`` :doc:`modernize-use-nullptr
- <clang-tidy/checks/modernize/use-nullptr>`
- ``hicpp-use-override`` :doc:`modernize-use-override
- <clang-tidy/checks/modernize/use-override>`
- ``hicpp-vararg`` :doc:`cppcoreguidelines-pro-type-vararg
- <clang-tidy/checks/cppcoreguidelines/pro-type-vararg>`
- ================================== ========================================================================
-
-- Removed the :program:`clang-doc` deprecated Markdown generator. ``--format=md``
- now uses the new Mustache-backed MD generator. It is possible that there are some
- regressions in MD output.
-
-- Removed the :program:`clang-doc` YAML generator. Prefer the JSON generator to
- get documentation information in a reusable format.
-
Improvements to clangd
----------------------
@@ -159,27 +70,9 @@ Hover
Code completion
^^^^^^^^^^^^^^^
-- Now also provides include files without extension, if they are in a directory
- only called ``include``.
-
-- Added support for ``InsertReplaceEdit`` in code completion (LSP 3.16),
- allowing clients that advertise ``insertReplaceSupport`` to receive both
- insert and replace ranges for completion items.
-
-- Changed completion-style default to ``detailed``. This means function
- overloads will no longer be bundled together, but instead each have
- their own completion item. This gives the user a better overview of the
- possible overloads and also when accepting the item it will generate
- placeholder parameters, which was not possible due to ambiguity with
- ``bundled``. To change back to the old behaviour, pass the argument
- ``--completion-style=bundled`` to clangd.
-
Code actions
^^^^^^^^^^^^
-- A new tweak "Create function body out-of-line" was added that creates
- an implementation for a function declaration.
-
Signature help
^^^^^^^^^^^^^^
@@ -201,752 +94,15 @@ Improvements to clang-query
Improvements to clang-tidy
--------------------------
-- Improved :program:`check_clang_tidy.py` script by adding the `-check-header`
- argument to simplify testing of header files. This argument automatically
- manages the creation of temporary header files and ensures that diagnostics
- and fixes are verified for the specified headers.
-
-- Improved :program:`clang-tidy` ``-store-check-profile`` by generating valid
- JSON when the source file path contains characters that require JSON escaping.
-
-- Improved :program:`clang-tidy` by preserving literal backslash characters in
- POSIX source paths.
-
-- Ensured that :program:`clang-tidy` and the clang compiler uses the same logic
- for the suppression of compiler diagnostics in system headers and expansions
- of macros defined in system headers. Previously the default setting of tidy
- overzealously suppressed some diagnostics that would have been emitted by the
- compiler. (E.g. tidy suppressed many ``clang-diagnostic-invalid-offsetof``
- reports because they usually occur in expansion of the macro ``offsetof``.)
-
-- :program:`clang-tidy` will no longer exit immediately if the only enabled
- checks are `clang-diagnostic-*` ones. This allows using
- :program:`clang-tidy` purely as a frontend to Clang's builtin warnings.
-
New checks
^^^^^^^^^^
-- New :doc:`bugprone-assignment-in-selection-statement
- <clang-tidy/checks/bugprone/assignment-in-selection-statement>` check.
-
- Finds assignments within selection statements.
-
-- New :doc:`bugprone-missing-end-comparison
- <clang-tidy/checks/bugprone/missing-end-comparison>` check.
-
- Finds instances where the result of a standard algorithm is used in a Boolean
- context without being compared to the end iterator.
-
-- New :doc:`bugprone-unsafe-to-allow-exceptions
- <clang-tidy/checks/bugprone/unsafe-to-allow-exceptions>` check.
-
- Finds functions where throwing exceptions is unsafe but the function is still
- marked as potentially throwing.
-
-- New :doc:`llvm-formatv-string
- <clang-tidy/checks/llvm/formatv-string>` check.
-
- Validates ``llvm::formatv`` format strings against the provided arguments,
- diagnosing mismatched argument counts, unused arguments, and mixed index styles.
-
-- New :doc:`llvm-redundant-casting
- <clang-tidy/checks/llvm/redundant-casting>` check.
-
- Points out uses of ``cast<>``, ``dyn_cast<>`` and their ``or_null`` variants
- that are unnecessary because the argument already is of the target type, or a
- derived type thereof. Also does similar analysis for calls to ``isa<>`` that
- always return ``true``.
-
-- New :doc:`llvm-type-switch-case-types
- <clang-tidy/checks/llvm/type-switch-case-types>` check.
-
- Finds ``llvm::TypeSwitch::Case`` calls with redundant explicit template
- arguments that can be inferred from the lambda parameter type.
-
-- New :doc:`llvm-use-vector-utils
- <clang-tidy/checks/llvm/use-vector-utils>` check.
-
- Finds calls to ``llvm::to_vector(llvm::map_range(...))`` and
- ``llvm::to_vector(llvm::make_filter_range(...))`` that can be replaced with
- ``llvm::map_to_vector`` and ``llvm::filter_to_vector``.
-
-- New :doc:`misc-static-initialization-cycle
- <clang-tidy/checks/misc/static-initialization-cycle>` check.
-
- Finds cyclical initialization of static variables.
-
-- New :doc:`modernize-use-std-bit
- <clang-tidy/checks/modernize/use-std-bit>` check.
-
- Finds common idioms which can be replaced by standard functions from the
- ``<bit>`` C++20 header.
-
-- New :doc:`modernize-use-string-view
- <clang-tidy/checks/modernize/use-string-view>` check.
-
- Looks for functions returning ``std::[w|u8|u16|u32]string`` and suggests to
- change it to ``std::[...]string_view`` for performance reasons if possible.
-
-- New :doc:`modernize-use-structured-binding
- <clang-tidy/checks/modernize/use-structured-binding>` check.
-
- Finds places where structured bindings could be used to decompose pairs and
- suggests replacing them.
-
-- New :doc:`performance-string-view-conversions
- <clang-tidy/checks/performance/string-view-conversions>` check.
-
- Finds and removes redundant conversions from ``std::[w|u8|u16|u32]string_view`` to
- ``std::[...]string`` in call expressions expecting ``std::[...]string_view``.
-
-- New :doc:`performance-use-std-move
- <clang-tidy/checks/performance/use-std-move>` check.
-
- Suggests insertion of ``std::move(...)`` to turn copy assignment operator
- calls into move assignment ones, when deemed valid and profitable.
-
-- New :doc:`readability-redundant-lambda-parameter-list
- <clang-tidy/checks/readability/redundant-lambda-parameter-list>` check.
-
- Finds lambda expressions with a redundant empty parameter list and removes it.
-
-- New :doc:`readability-redundant-nested-if
- <clang-tidy/checks/readability/redundant-nested-if>` check.
-
- Finds nested ``if`` statements that can be merged into a single ``if`` by
- combining conditions with ``&&``.
-
-- New :doc:`readability-redundant-qualified-alias
- <clang-tidy/checks/readability/redundant-qualified-alias>` check.
-
- Finds redundant identity type aliases that re-expose a qualified name and can
- be replaced with a ``using`` declaration.
-
-- New :doc:`readability-trailing-comma
- <clang-tidy/checks/readability/trailing-comma>` check.
-
- Checks for presence or absence of trailing commas in enum definitions and
- initializer lists.
-
New check aliases
^^^^^^^^^^^^^^^^^
-- Renamed :doc:`cert-exp45-c <clang-tidy/checks/cert/exp45-c>`
- to :doc:`bugprone-assignment-in-selection-statement
- <clang-tidy/checks/bugprone/assignment-in-selection-statement>`.
-
-- Renamed :doc:`cppcoreguidelines-explicit-constructor
- <clang-tidy/checks/cppcoreguidelines/explicit-constructor>`
- to :doc:`misc-explicit-constructor
- <clang-tidy/checks/misc/explicit-constructor>`. The
- `cppcoreguidelines-explicit-constructor` name is kept as an alias.
-
-- Renamed :doc:`google-explicit-constructor
- <clang-tidy/checks/google/explicit-constructor>`
- to :doc:`misc-explicit-constructor
- <clang-tidy/checks/misc/explicit-constructor>`. The
- `google-explicit-constructor` name is kept as an alias.
-
-- Renamed :doc:`performance-faster-string-find
- <clang-tidy/checks/performance/faster-string-find>` to
- :doc:`performance-prefer-single-char-overloads
- <clang-tidy/checks/performance/prefer-single-char-overloads>`.
- The `performance-faster-string-find` name is kept as an alias.
-
Changes in existing checks
^^^^^^^^^^^^^^^^^^^^^^^^^^
-- Improved :doc:`altera-id-dependent-backward-branch
- <clang-tidy/checks/altera/id-dependent-backward-branch>` check by fixing false
- positives when ordinary variable or field assignments are used in loop
- conditions and note locations for inferred ID-dependent fields.
-
-- Improved :doc:`altera-unroll-loops
- <clang-tidy/checks/altera/unroll-loops>` check by fixing a crash when
- analyzing a ``for`` loop whose initialization statement declares multiple
- variables.
-
-- Improved :doc:`bugprone-argument-comment
- <clang-tidy/checks/bugprone/argument-comment>`:
-
- - Checks for C++11 inherited constructors.
-
- - Adds `CommentAnonymousInitLists`, `CommentTypedInitLists`, and
- `CommentParenthesizedTemporaries` options to comment braced-init list
- arguments and explicit temporary constructions (for example, ``{}``,
- ``Type{}``, and ``Type()``).
-
-- Improved :doc:`bugprone-bad-signal-to-kill-thread
- <clang-tidy/checks/bugprone/bad-signal-to-kill-thread>` check by fixing false
- negatives when the ``SIGTERM`` macro is obtained from a precompiled header.
-
-- Improved :doc:`bugprone-branch-clone
- <clang-tidy/checks/bugprone/branch-clone>` check by fixing a false positive
- where ``if``/``else`` branches containing inline assembly that differed only
- in the asm string or clobber list were reported as identical.
-
-- Improved :doc:`bugprone-casting-through-void
- <clang-tidy/checks/bugprone/casting-through-void>` check by running only on
- C++ files because suggested ``reinterpret_cast`` is not available in pure C.
-
-- Improved :doc:`bugprone-derived-method-shadowing-base-method
- <clang-tidy/checks/bugprone/derived-method-shadowing-base-method>` check by
- correctly ignoring function templates.
-
-- Improved :doc:`bugprone-exception-escape
- <clang-tidy/checks/bugprone/exception-escape>` check by adding
- `TreatFunctionsWithoutSpecificationAsThrowing` option to support reporting
- for unannotated functions, enabling reporting when no explicit ``throw``
- is seen and allowing separate tuning for known and unknown implementations.
-
-- Improved :doc:`bugprone-fold-init-type
- <clang-tidy/checks/bugprone/fold-init-type>` check by detecting precision
- loss in overloads with transparent standard functors (e.g. ``std::plus<>``)
- for ``std::accumulate``, ``std::reduce``, and ``std::inner_product``.
-
-- Improved :doc:`bugprone-inc-dec-in-conditions
- <clang-tidy/checks/bugprone/inc-dec-in-conditions>` check by fixing a false
- positive when increment/decrement operators appear inside lambda bodies that
- are part of a condition expression.
-
-- Improved :doc:`bugprone-incorrect-enable-if
- <clang-tidy/checks/bugprone/incorrect-enable-if>` check to not
- insert an extraneous ``typename`` on code like
- ``typename std::enable_if<...>``, where there's already a ``typename`` and
- only the ``::type`` at the end is missing.
-
-- Improved :doc:`bugprone-macro-parentheses
- <clang-tidy/checks/bugprone/macro-parentheses>` check by printing the macro
- definition in the warning message if the macro is defined on command line.
-
-- Improved :doc:`bugprone-misplaced-widening-cast
- <clang-tidy/checks/bugprone/misplaced-widening-cast>` check by fixing a false
- positive on bit field assignments when the `CheckImplicitCasts` option is
- enabled. The check now uses the actual bit field width instead of the
- declared type to determine if widening occurs.
-
-- Improved :doc:`bugprone-move-forwarding-reference
- <clang-tidy/checks/bugprone/move-forwarding-reference>` check by fixing some
- false positives in the context of moved lambda captures.
-
-- Improved :doc:`bugprone-narrowing-conversions
- <clang-tidy/checks/bugprone/narrowing-conversions>` check by fixing a false
- positive when converting a ``bool`` to a signed integer type.
-
-- Improved :doc:`bugprone-pointer-arithmetic-on-polymorphic-object
- <clang-tidy/checks/bugprone/pointer-arithmetic-on-polymorphic-object>` check
- by fixing a false positive when ``operator[]`` is used in a dependent context.
-
-- Improved :doc:`bugprone-random-generator-seed
- <clang-tidy/checks/bugprone/random-generator-seed>` check by adding
- a new note at the location of the field if the generator is implicitly
- initialized with a default seed value.
-
-- Improved :doc:`bugprone-std-namespace-modification
- <clang-tidy/checks/bugprone/std-namespace-modification>` check by fixing
- false positives when extending the standard library with a specialization of
- user-defined type and by removing detection of the compiler generated ``std``
- namespace extensions.
-
-- Improved :doc:`bugprone-string-constructor
- <clang-tidy/checks/bugprone/string-constructor>` check to detect suspicious
- string constructor calls when the string class constructor has a default
- allocator argument.
-
-- Improved :doc:`bugprone-throwing-static-initialization
- <clang-tidy/checks/bugprone/throwing-static-initialization>` check by adding
- the `AllowedTypes` option. With this option it is possible to exclude
- static declarations with specific types from the check.
-
-- Improved :doc:`bugprone-unchecked-optional-access
- <clang-tidy/checks/bugprone/unchecked-optional-access>` to recognize common
- GoogleTest macros such as ``ASSERT_TRUE`` and ``ASSERT_FALSE``, reducing the
- number of false positives in test code.
-
-- Improved :doc:`bugprone-unsafe-functions
- <clang-tidy/checks/bugprone/unsafe-functions>` check by adding the function
- ``std::get_temporary_buffer`` to the default list of unsafe functions. (This
- function is unsafe, useless, deprecated in C++17 and removed in C++20).
-
-- Improved :doc:`bugprone-use-after-move
- <clang-tidy/checks/bugprone/use-after-move>` check:
-
- - Include the name of the invalidating function in the warning message when a
- custom invalidation function is used (via the `InvalidationFunctions`
- option).
-
- - Add support for annotation of user-defined types as having the same
- moved-from semantics as standard smart pointers.
-
- - Do not report explicit call to destructor after move as an invalid use.
-
- - Avoid false positives when moving object to a base type then accessing
- non-base members.
-
- - Avoid false positives when moving object is reinitialized via the base
- class's ``operator=``.
-
- - Fix a false positive when a moved-from variable is reinitialized
- via a ``std::tie()`` assignment (e.g. ``std::tie(a, b) = f(std::move(a),
- std::move(b))``). The tuple assignment writes back through the stored
- references, which fully reinitializes the captured variables.
-
- - Avoid false positives when forwarding a derived object to initialize a base
- class subobject.
-
-- Improved :doc:`cert-err33-c
- <clang-tidy/checks/cert/err33-c>` check by not inheriting
- `CheckedReturnTypes` option from :doc:`bugprone-unused-return-value
- <clang-tidy/checks/bugprone/unused-return-value>`, which caused false
- positives on functions returning ``std::error_code`` or similar types.
-
-- Improved :doc:`cppcoreguidelines-avoid-capturing-lambda-coroutines
- <clang-tidy/checks/cppcoreguidelines/avoid-capturing-lambda-coroutines>`
- check by adding the `AllowExplicitObjectParameters` option. When enabled,
- lambda coroutines using C++23 deducing ``this`` (explicit object parameter)
- are not flagged.
-
-- Improved :doc:`cppcoreguidelines-avoid-non-const-global-variables
- <clang-tidy/checks/cppcoreguidelines/avoid-non-const-global-variables>`
- check by adding the `IgnoreMacros` option. When enabled, non-const global
- variables defined in macros are ignored.
-
-- Improved :doc:`cppcoreguidelines-init-variables
- <clang-tidy/checks/cppcoreguidelines/init-variables>` check by ensuring that
- member pointers are correctly flagged as uninitialized.
-
-- Fixed :doc:`cppcoreguidelines-init-variables
- <clang-tidy/checks/cppcoreguidelines/init-variables>` check by excluding
- Objective-C for-in loop variable declaration.
-
-- Improved :doc:`cppcoreguidelines-missing-std-forward
- <clang-tidy/checks/cppcoreguidelines/missing-std-forward>` check by:
-
- - Correctly handling forwarding in deeply nested lambdas.
-
- - Fixed false negative when multiple parameters are used in a lambda and
- only some of them are forwarded.
-
- - Fixed false positive for constrained template parameters
-
- - Fixed false positive with ``std::forward`` in brace-init and paren-init
- lambda captures such as ``[t{std::forward<T>(t)}]``.
-
-- Improved :doc:`cppcoreguidelines-pro-type-member-init
- <clang-tidy/checks/cppcoreguidelines/pro-type-member-init>` check by fixing
- a false positive when a base class has a forward declaration before its
- definition.
-
-- Improved :doc:`cppcoreguidelines-pro-type-vararg
- <clang-tidy/checks/cppcoreguidelines/pro-type-vararg>` check by no longer
- warning on builtins with custom type checking (e.g., type-generic builtins
- like ``__builtin_clzg``) that use variadic declarations as an implementation
- detail.
-
-- Improved :doc:`cppcoreguidelines-rvalue-reference-param-not-moved
- <clang-tidy/checks/cppcoreguidelines/rvalue-reference-param-not-moved>` check:
-
- - Fixed a false positive on implicitly generated functions such as
- inherited constructors.
-
- - Added `AllowImplicitMove` option to not warn when an rvalue reference
- parameter is returned without an explicit ``std::move``.
-
-- Improved :doc:`cppcoreguidelines-special-member-functions
- <clang-tidy/checks/cppcoreguidelines/special-member-functions>` check by
- fixing a false positive with the `AllowImplicitlyDeletedCopyOrMove` option
- for classes whose copy operations are implicitly deleted by a non-copyable
- base class.
-
-- Improved :doc:`cppcoreguidelines-use-enum-class
- <clang-tidy/checks/cppcoreguidelines/use-enum-class>` check by adding the
- `IgnoreMacros` option. When enabled, unscoped ``enum`` declarations within
- macros are ignored.
-
-- Improved :doc:`fuchsia-statically-constructed-objects
- <clang-tidy/checks/fuchsia/statically-constructed-objects>` check by fixing a
- crash when checking value-dependent static member initializers in class templates.
-
-- Improved :doc:`llvm-use-ranges
- <clang-tidy/checks/llvm/use-ranges>` check by adding support for the following
- algorithms: ``std::accumulate``, ``std::replace_copy``, and
- ``std::replace_copy_if``.
-
-- Improved :doc:`misc-const-correctness
- <clang-tidy/checks/misc/const-correctness>` check:
-
- - Added support for analyzing function parameters with the `AnalyzeParameters`
- option.
-
- - Fixed false positive where an array of pointers to ``const`` was
- incorrectly diagnosed as allowing the pointee to be made ``const``.
-
- - Fixed false positive where a pointer used with placement new was
- incorrectly diagnosed as allowing the pointee to be made ``const``.
-
- - Enabled the check for variables declared with ``auto`` (configurable
- via the `AnalyzeAutoVariables` option) and lambdas (configurable
- via `AnalyzeLambdas` option).
-
- - Fixed false positive where calling a non-const member function on a
- pointer was incorrectly treated as mutating the pointer, when it only
- mutates the pointee.
-
- - Fixed false positives when pointers were later passed or bound through
- ``const``-qualified pointer references.
-
- - Fixed false positive where a pointer returned as a non-const ``void *``
- was incorrectly diagnosed as allowing its pointee to be made ``const``.
-
-- Improved :doc:`misc-multiple-inheritance
- <clang-tidy/checks/misc/multiple-inheritance>` by avoiding false positives when
- virtual inheritance causes concrete bases to be counted more than once.
-
-- Improved :doc:`misc-redundant-expression
- <clang-tidy/checks/misc/redundant-expression>` check:
-
- - Fixed a crash when evaluating bitwise comparisons against integer constants
- wider than 64 bits.
-
- - Avoided false positives when comparing expressions that are structurally
- identical but use different type aliases.
-
-- Improved :doc:`misc-throw-by-value-catch-by-reference
- <clang-tidy/checks/misc/throw-by-value-catch-by-reference>` check:
-
- - Fixed the `WarnOnLargeObject` option to use the correct name when
- storing the configuration.
-
- - Fixed the `CheckThrowTemporaries` option to correctly reflect its
- configured value in exported settings.
-
-- Improved :doc:`misc-unused-parameters
- <clang-tidy/checks/misc/unused-parameters>` check by adding
- `IgnoreMacroParameters` option to suppress warnings for unused parameters
- whose declarations originate from macro expansions.
-
-- Improved :doc:`misc-unused-using-decls
- <clang-tidy/checks/misc/unused-using-decls>` to not diagnose ``using``
- declarations as unused if they're exported from a module.
-
-- Improved :doc:`misc-use-internal-linkage
- <clang-tidy/checks/misc/use-internal-linkage>` to not suggest giving
- internal linkage to entities defined in C++ module interface units.
- Because it only sees one file at a time, the check can't be sure
- such entities aren't referenced in any other files of that module.
-
-- Improved :doc:`modernize-avoid-c-style-cast
- <clang-tidy/checks/modernize/avoid-c-style-cast>` check by fixing an invalid
- fix-it generated when replacing casts that directly follow a keyword or
- identifier.
-
-- Improved :doc:`modernize-deprecated-headers
- <clang-tidy/checks/modernize/deprecated-headers>` check by avoiding false
- positives on project headers that use the same name as a standard library
- header.
-
-- Improve :doc:`modernize-loop-convert
- <clang-tidy/checks/modernize/loop-convert>` checks to insert a space when
- replacing ``*it`` with the loop variable in expressions like ``delete*it``,
- where the missing space would cause the keyword and the new variable to
- merge into a single identifier.
-
-- Improved :doc:`modernize-macro-to-enum
- <clang-tidy/checks/modernize/macro-to-enum>` check by preserving source file
- line endings in fix-it replacements.
-
-- Improved :doc:`modernize-pass-by-value
- <clang-tidy/checks/modernize/pass-by-value>` check by adding `IgnoreMacros`
- option to suppress warnings in macros.
-
-- Improved :doc:`modernize-redundant-void-arg
- <clang-tidy/checks/modernize/redundant-void-arg>` check to work in C23.
-
-- Improved :doc:`modernize-return-braced-init-list
- <clang-tidy/checks/modernize/return-braced-init-list>` check to apply fix-it
- when type qualifiers and/or reference modifiers are used with parameters.
-
-- Improved :doc:`modernize-type-traits
- <clang-tidy/checks/modernize/type-traits>` check to suggest usage of
- ``std::remove_cvref_t`` when applicable.
-
-- Improved :doc:`modernize-use-default-member-init
- <clang-tidy/checks/modernize/use-default-member-init>` check by fixing a
- false positive when a constructor initializer refers to a declaration that
- would not be visible from the inserted default member initializer. The
- `IgnoreNonVisibleReferences` option can be set to `false` to warn without
- emitting fix-its for these cases.
-
-- Improved :doc:`modernize-use-equals-delete
- <clang-tidy/checks/modernize/use-equals-delete>` check by only warning on
- private deleted functions, if they do not have a public overload or are a
- special member function.
-
-- Improved :doc:`modernize-use-nodiscard
- <clang-tidy/checks/modernize/use-nodiscard>` check by avoiding false
- positives on functions returning specializations of class templates marked
- ``[[nodiscard]]``.
-
-- Improved :doc:`modernize-use-override
- <clang-tidy/checks/modernize/use-override>` check by adding the
- `AllowVirtualAndOverride` option to allow keeping ``virtual`` on methods
- that are also marked ``override``.
-
-- Improved :doc:`modernize-use-ranges
- <clang-tidy/checks/modernize/use-ranges>` check:
-
- - Preserved used iterator results when replacing ``std::unique`` calls with
- ``std::ranges::unique``.
-
- - Preserved used iterator results when replacing ``std::remove``,
- ``std::remove_if``, ``std::partition``, ``std::stable_partition``, and
- ``std::rotate`` calls with their ``std::ranges`` counterparts.
-
-- Improved :doc:`modernize-use-scoped-lock
- <clang-tidy/checks/modernize/use-scoped-lock>` check by fixing a false
- negative where multiple ``std::scoped_lock`` declarations, or a mix of
- ``std::scoped_lock`` and ``std::lock_guard`` declarations, in the same scope
- were not flagged.
-
-- Improved :doc:`modernize-use-std-format
- <clang-tidy/checks/modernize/use-std-format>` check:
-
- - Fixed a crash when an argument is part of a macro expansion.
-
- - Added missing ``#include`` insertion when the format function call
- appears as an argument to a macro.
-
-- Improved :doc:`modernize-use-std-print
- <clang-tidy/checks/modernize/use-std-print>` check by adding missing
- ``#include`` insertion when the format function call appears as an
- argument to a macro.
-
-- Improved :doc:`modernize-use-trailing-return-type
- <clang-tidy/checks/modernize/use-trailing-return-type>` check by fixing
- spurious ``missing '(' after '__has_feature'`` errors caused by builtin
- macros appearing in the return type of a function.
-
-- Improved :doc:`modernize-use-using
- <clang-tidy/checks/modernize/use-using>` check:
-
- - Avoid generating invalid code for function types with redundant
- parentheses.
-
- - Preserve inline comment blocks that appear between the ``typedef``'s parts.
-
- - The `IgnoreExternC` option is now set to `true` by default.
-
-- Improved :doc:`performance-enum-size
- <clang-tidy/checks/performance/enum-size>` check:
-
- - Exclude ``enum`` in ``extern "C"`` blocks.
-
- - Improved the ignore list to correctly handle ``typedef`` and ``enum``.
-
-- Improved :doc:`performance-inefficient-string-concatenation
- <clang-tidy/checks/performance/inefficient-string-concatenation>` check by
- adding support for detecting inefficient string concatenation in ``do-while``
- loops.
-
-- Improved :doc:`performance-inefficient-vector-operation
- <clang-tidy/checks/performance/inefficient-vector-operation>` check by
- correctly handling vector-like classes when ``push_back``/``emplace_back`` are
- inherited.
-
-- Improved :doc:`performance-move-const-arg
- <clang-tidy/checks/performance/move-const-arg>` check by avoiding false
- positives on trivially copyable types with a non-public copy constructor.
-
-- Improved :doc:`performance-prefer-single-char-overloads
- <clang-tidy/checks/performance/prefer-single-char-overloads>` check:
-
- - Now analyzes calls to the ``starts_with``, ``ends_with``, ``contains``,
- and ``operator+=`` string member functions.
-
- - Fixes false negatives when using ``std::set`` from ``libstdc++``.
-
-- Improved :doc:`performance-trivially-destructible
- <clang-tidy/checks/performance/trivially-destructible>` check by fixing
- false positives when a class is seen through both a header include and
- a C++20 module import.
-
-- Improved :doc:`readability-braces-around-statements
- <clang-tidy/checks/readability/braces-around-statements>` check by fixing a
- crash when diagnosing a statement that ends in the middle of a macro body
- expansion.
-
-- Improved :doc:`readability-container-size-empty
- <clang-tidy/checks/readability/container-size-empty>` check:
-
- - Fix a crash when a member expression has a non-identifier name.
-
- - Reduce verbosity by removing the note indicating source location of the
- ``empty`` function.
-
- - Fixed a false positive with suggesting ``empty`` when comparing a container
- to a default-constructed object of an unrelated type.
-
- - Extended to warn when the non-member ``std::size()`` function is used
- in a Boolean context or compared to ``0`` or ``1``, consistent with the
- existing ``size()``/``length()`` member call detection.
-
-- Improved :doc:`readability-convert-member-functions-to-static
- <clang-tidy/checks/readability/convert-member-functions-to-static>` check:
-
- - Fixing a false positive where ``const`` member functions were incorrectly
- flagged when they are part of a const/non-const overload pair.
-
- - Correctly detecting ``this`` usage when a generic lambda calls an overloaded
- member function.
-
-- Improved :doc:`readability-delete-null-pointer
- <clang-tidy/checks/readability/delete-null-pointer>` check by avoiding invalid
- fix-its for ``if`` statements with condition variables or initializers.
-
-- Improved :doc:`readability-else-after-return
- <clang-tidy/checks/readability/else-after-return>` check:
-
- - Fixed missed diagnostics when ``if`` statements appear in unbraced
- ``switch`` case labels.
-
- - Fixed a false positive involving ``if`` statements which contain
- a ``return``, ``break``, etc., jumped over by a ``goto``.
-
- - Fixed the check potentially breaking code by deleting one too many
- characters following an ``else`` or a curly brace.
-
- - Added support for handling attributed ``if`` then-branches such as
- ``[[likely]]`` and ``[[unlikely]]``.
-
- - Diagnose and remove redundant ``else`` branches after calls to
- ``[[noreturn]]`` functions.
-
-- Improved :doc:`readability-enum-initial-value
- <clang-tidy/checks/readability/enum-initial-value>` check: the warning message
- now uses separate note diagnostics for each uninitialized enumerator, making
- it easier to see which specific enumerators need explicit initialization.
-
-- Improved :doc:`readability-function-size
- <clang-tidy/checks/readability/function-size>` check by adding an
- `IgnoreMacros` option to exclude statements, branches, nesting levels, and
- variable declarations inside macros from the reported metrics.
-
-- Improved :doc:`readability-identifier-length
- <clang-tidy/checks/readability/identifier-length>` check:
-
- - A new option, named `LineCountThreshold`, is added to silence warnings for
- short-lived variables, based on distance between declaration and last use.
-
- - Support for structured bindings is added. Two new options, named
- `MinimumBindingNameLength` and `IgnoredBindingNames` respectively, are
- added to configure the behavior of the check regarding this new identifier
- kind. By default, names with at least 2 characters are required and the
- only exception allowed is `_`.
-
-- Improved :doc:`readability-identifier-naming
- <clang-tidy/checks/readability/identifier-naming>` check:
-
- - Fixed incorrect naming style application to C++17 structured bindings.
-
- - Fixed a false positive where function templates could be diagnosed as generic
- identifiers when `DefaultCase` was enabled.
-
- - Fixed a crash in dependent base lookup when
- `AggressiveDependentMemberLookup` option is enabled.
-
- - Fixed a false positive from naming style lookup for declarations inside macro
- arguments.
-
-- Improved :doc:`readability-implicit-bool-conversion
- <clang-tidy/checks/readability/implicit-bool-conversion>` check:
-
- - Fixed a false positive where `AllowPointerConditions` and
- `AllowIntegerConditions` options did not suppress warnings when the
- condition expression involved temporaries (e.g. passing a string literal to
- a ``const std::string&`` parameter).
-
- - Warn and provide fix-its when a macro defined in a system header (e.g.
- ``NULL``) is implicitly converted to ``bool``.
-
- - Added `AllowLogicalOperatorConversion` option to suppress warnings on
- implicit conversions of logical operator results (``&&``, ``||``, ``!``)
- to ``bool`` in C.
-
- - Fixed a false positive where ``bool`` conditions in C conditional
- operators were diagnosed as implicit conversions to ``int``.
-
-- Improved :doc:`readability-inconsistent-ifelse-braces
- <clang-tidy/checks/readability/inconsistent-ifelse-braces>` check to
- correctly handle labeled statements of ``if``/``else`` bodies.
-
-- Improved :doc:`readability-non-const-parameter
- <clang-tidy/checks/readability/non-const-parameter>` check:
-
- - Avoid false positives on parameters used in dependent expressions
- (e.g. inside generic lambdas), including constructor-style dependent initializers.
-
- - Fixed a false positive in array subscript expressions where the types are
- not yet resolved.
-
- - Fixed a false positive when adding ``const`` to a pointer parameter would
- conflict with an existing overload.
-
- - Fixed a crash when analyzing a redeclaration whose initializer is attached
- to another declaration.
-
-- Improved :doc:`readability-redundant-casting
- <clang-tidy/checks/readability/redundant-casting>` check by adding the
- `IgnoreImplicitCasts` option (default `false`) to flag casts as redundant
- when at least one operand of a binary operation matches the cast type due to
- implicit conversion. For example, ``static_cast<float>(1.0f + 1)`` is now
- identified as redundant since ``1`` is implicitly converted to ``float``.
- Setting this option to `true` restores the previous behavior.
-
-- Improved :doc:`readability-redundant-member-init
- <clang-tidy/checks/readability/redundant-member-init>` check by adding an
- `IgnoreMacros` option to suppress warnings when the initializer involves
- macros that may expand differently in other configurations.
-
-- Improved :doc:`readability-redundant-parentheses
- <clang-tidy/checks/readability/redundant-parentheses>` check:
-
- - Fixed a false positive for parentheses present around an overloaded operator
- in the context of a binary operation.
-
- - Fixed a bug where clients that apply fix-its without :program:`clang-tidy`'s
- cleanup could produce invalid code by joining adjacent tokens.
-
- - Added support for parentheses around subscript operators (``(E1[E2])`` -> ``E1[E2]``).
-
-- Improved :doc:`readability-redundant-preprocessor
- <clang-tidy/checks/readability/redundant-preprocessor>` check by fixing a
- false positive for nested ``#if`` directives using different builtin
- expressions such as ``__has_builtin`` and ``__has_cpp_attribute``.
-
-- Improved :doc:`readability-simplify-boolean-expr
- <clang-tidy/checks/readability/simplify-boolean-expr>` check to provide valid
- fix suggestions for C23 and later by not using ``static_cast``.
-
-- Improved :doc:`readability-simplify-subscript-expr
- <clang-tidy/checks/readability/simplify-subscript-expr>` check by fixing
- missing warnings when subscripting an object held inside a generic
- container (e.g. subscripting a ``std::string`` held inside a
- ``std::vector<std::string>``).
-
-- Improved :doc:`readability-suspicious-call-argument
- <clang-tidy/checks/readability/suspicious-call-argument>` check by avoiding a
- crash from invalid ``Abbreviations`` option.
-
-- Improved :doc:`readability-trivial-switch
- <clang-tidy/checks/readability/trivial-switch>` check by adding an
- `IgnoreMacros` option. When enabled, the check will ignore switch
- statements originating from macros.
-
-- Improved :doc:`readability-use-anyofallof
- <clang-tidy/checks/readability/use-anyofallof>` check by emitting a diagnostic
- note to suggest materializing the temporary range when iterating over temporary
- range expressions or initializer lists, as reusing them directly could be unsafe.
-
Removed checks
^^^^^^^^^^^^^^
@@ -959,8 +115,6 @@ Improvements to include-fixer
Improvements to clang-include-fixer
-----------------------------------
-- Fixed crashes when command-line argument parsing failed at unknown tool options.
-
Improvements to modularize
--------------------------
diff --git a/clang/docs/ReleaseNotes.md b/clang/docs/ReleaseNotes.md
index 9063e54b3e692..465f1eec8c05f 100644
--- a/clang/docs/ReleaseNotes.md
+++ b/clang/docs/ReleaseNotes.md
@@ -46,1103 +46,110 @@ latest release, please see the [Clang Web Site](https://clang.llvm.org) or the
### C/C++ Language Potentially Breaking Changes
-- Clang now makes it ill-formed to try to `break` out of or `continue` a loop inside its own condition,
- increment, or init-statement in all C and C++ language modes. This means that code such as
-
- ```c++
- while (({ break; })) {}
- ```
-
- is now ill-formed. An outer loop can still be broken out of or continued so long as the inner loop is
- in the body of the outer loop:
-
- ```c++
- // Ok, this breaks out of the 'for' loop.
- for (;;) {
- while (({ break; true; })) {}
- }
-
- // Error: can't break out of the 'for' loop from within its own increment.
- for (;;({ while (({ break; true; })) {} })) {}
- ```
-
- This also resolves a divergence from GCC: in a construct such as
-
- ```c++
- for (;;) {
- while (({ break; true; })) {}
- }
- ```
-
- Clang would previously `break` out of the `while` loop, whereas GCC (since version 9) would
- `break` out of the `for` loop here. Now, Clang and GCC both break out of the `for` loop.
-
-- Clang now parses line and digit directives, module names, and original filenames as unevaluated
- strings. This means that code containing strings with escape sequences such as
-
- ```c++
- # 1 "original\x12source.c"
- #pragma clang module import "\x41"
- # 50 "a\012.c"
- ```
-
- are now ill-formed.
-
-- `__has_feature(modules)` is no longer true when just `-std=c++20` (or higher)
- is passed. It's only true if `-fmodules` is passed, which enables Clang's
- module map semantics. Objective-C++ of the form
-
- ```objc
- #if __has_feature(modules)
- @import Foundation;
- #else
- #import <Foundation/Foundation.h>
- #endif
- ```
-
- previously took the `@import` branch under `-std=c++20` even though no module
- maps were in use, which would always fail.
-
- `__cpp_modules` continues to be the standard macro to use to check if C++20
- modules are available.
-
### C++ Specific Potentially Breaking Changes
-- Clang now more aggressively optimizes away stores to objects after they are
- dead. This behavior can be disabled with `-fno-lifetime-dse`.
-- Clang now correctly rejects `export` declarations in module implementation
- partitions. (#GH107602)
-- Template argument deduction now treats the `N` in `_BitInt(N)`
- as being of type `std::size_t` instead of `int`,
- matching the deduction of array sizes from `int(&)[N]`.
- This is a breaking change for code that depended on the previously deduced type. (#GH195033)
-- Clang now rejects C++ declarations that combine the `auto` type specifier
- with another type specifier, such as `auto int`.
-- Clang now rejects nested local classes defined in a different
- block scope than their parent class. (#GH193472)
-
### ABI Changes in This Version
-- Fixed incorrect struct layout for `_BitInt` bitfields wider than 255 bits
- on MSVC targets. Internal bitfield tracking fields were changed from
- `unsigned char` to `uint64_t` to prevent overflow. This might be an ABI
- break for such structs compared to earlier Clang versions.
-- Fixed a number of issues with the `__regcall` calling convention for passing
- structs on non-Windows x86-64 targets, including a crash when handling empty
- struct arguments. This changes how structs that contain arrays, floating point
- types, or `_Complex float` types are passed, and may introduce
- incompatibilities with code compiled by earlier versions of Clang that uses
- the `__regcall` calling convention on these targets. (#GH62999) (#GH98635)
-- Fixed Itanium mangling for lambdas in instantiated non-static data member
- initializers by preserving the field-name closure-prefix. This changes the
- mangled names for affected lambdas. (#GH190555)
-- Clang now uses MSVC-compatible manglings for supported AArch64 SVE builtin
- types when targeting the Microsoft ABI. This changes symbol names for
- affected declarations compared to previous Clang releases. (#GH196170)
-- The resume and destroy functions of C++20 coroutines now use the platform C
- calling convention instead of LLVM's internal `fastcc`. This makes the
- coroutine ABI stable across LLVM versions and interoperable with other
- compilers. On most targets this is not a breaking change because `fastcc`
- and the platform C calling convention agree for `void(ptr)`. It is an ABI
- break on i686, MIPS O32, PowerPC64 ELFv1, and Lanai.
-- `va_arg` on clang aarch64 msvc now reads types with 16-byte size and alignment
- (e.g. `__int128`) with their actual alignment (instead of an alignment of 8
- which was used before). Such c-variadic arguments are already passed as
- aligned, so previously reading the argument could read padding. Clang now
- matches how MSVC reads such c-variadic arguments.
-- Fixed incorrect struct return when single large vector (256/512-bit) used on
- x86-64 targets. (#GH203760) The bug was introduced since Clang 21. (#GH120670)
-- Clang now applies MSVC's MD5 shortening to over-long Microsoft C++ RTTI type
- descriptor name strings, matching the behavior already used for the RTTI
- symbol names. Previously the full name string was always emitted, so deeply
- nested template types (for example, ones containing local lambdas) could
- produce very large writable `.data` sections. Emitted RTTI name strings
- change only for types whose name exceeds the length limit. (#GH206313)
-- Fixed Itanium mangling for lambdas in default member initializers of local
- classes to use `<local-name>` encoding, preventing mangling collisions between
- distinct local classes.
-
### AST Dumping Potentially Breaking Changes
-- The JSON AST dump now includes all fields from `AvailabilityAttr`: `platform`,
- `introduced`, `deprecated`, `obsoleted`, `unavailable`, `message`,
- `strict`, `replacement`, `priority`, and `environment`. Previously, these
- fields were missing from the JSON output.
-- Colons that appear at the end of a ParamCommentCommand name are not serialized
- as part of the name.
-- AST pretty-printing now respects `PrintingPolicy::FullyQualifiedName` when
- printing `DeclRefExpr` names, including expression-form non-type template
- arguments in printed types. Previously, these references could be printed
- unqualified. (#GH206041)
-
### Clang Frontend Potentially Breaking Changes
-- HIPSPV toolchain: `--offload-targets=spirv{32,64}` option is
- deprecated and will be removed when the new offload driver becomes
- default. The replacement for the option is
- `--offload-targets=spirv{32,64}-unknown-chipstar` when using the new
- offload driver (`--offload-new-driver`).
-- The new driver (`--offload-new-driver`) is now default for all offloading
- compilations. This changes the ABI for relocatable device code. Currently,
- libraries will need to be recompiled, or used with
- (`--no-offload-new-driver`). This option will be removed in the next release.
-- Clang no longer defines the `__cpp_impl_coroutine` feature test macro under the 32-bit x86 Microsoft ABI,
- as support for coroutines on this target is incomplete.
- When using coroutines on this target a warning is emmitted to indicate the lack of full support.
- That warning can be disabled with `-Wno-coroutines-unsupported-target`. (see #GH59382)
-
### Clang Python Bindings Potentially Breaking Changes
-- Remove `CompletionString.Availability`. No libclang interfaces returned instances of it.
-
-- `CompletionString.availability` now returns instances of `CompletionString.AvailabilityKindCompat`.
-
- Instances of `AvailabilityKindCompat` have the same `__str__` representation
- as the previous `CompletionChunk.Kind` and are equality-comparable with
- the existing `AvailabilityKind` enum. It will be replaced by `AvailabilityKind`
- in a future release. When this happens, the return type of `CompletionString.availability`
- will change to `AvailabilityKind`, so it is recommended to use `AvailabilityKind`
- to compare with the return values of `CompletionString.availability`.
-
-- Remove `availabilityKinds`. In this release, uses of `availabilityKinds`
- need to be replaced by `CompletionString.AvailabilityKind`.
-
-- `CompletionChunk.kind` now returns instances of `CompletionChunkKind`.
-
- Instances of `CompletionChunkKind` have the same `__str__` representation
- as the previous `CompletionChunk.Kind` for compatibility.
- These representations will be changed in a future release to match other enums.
-
-- Remove `completionChunkKindMap`. In this release, uses of `completionChunkKindMap`
- need to be replaced by `CompletionChunkKind`.
-
-- Move `SPELLING_CACHE` into `CompletionChunk` and change it to use
- `CompletionChunkKind` instances as keys, instead of the enum values.
- An alias is kept in the form of a `SPELLING_CACHE` variable, but it only supports
- `__getitem__` and `__contains__`. It will be removed in a future release.
- Please migrate to using `CompletionChunk.SPELLING_CACHE` instead.
-
-- `SourceLocation` and `SourceRange` now use `NotImplemented` to delegate
- equality checks (`__eq__`) to the other object they are compared with when
- they are of different classes. They previously returned `False` when compared
- with objects of other classes.
-
-- `TranslationUnit.get_tokens` now throws an error if both the `extent` and
- `locations` argument are passed. Previousy, `locations` took precedence.
-
-- `_CXUnsavedFile` will be renamed to `UnsavedFile` for consistency.
- `UnsavedFile` is already available to use and existing uses should
- be adapted to refer to it instead. `_CXUnsavedFile` will be removed in a
- future release.
-
### OpenCL Potentially Breaking Changes
-- Clang now diagnoses zero-length arrays as errors in OpenCL. OpenCL C 3.0
- section 6.11.d states that "Variable length arrays and structures with
- flexible (or unsized) arrays are not supported."
-
-{#what-s-new-in-clang-release}
## What's New in Clang {{env.config.release}}?
### C++ Language Changes
-- `__is_trivially_equality_comparable` no longer returns false for all enum types. (#GH132672)
-- `auto` parameters are now available in all C++ language modes as an extension.
-
#### C++2d Feature Support
-- Added compiler flags `-std=c++2d` and `-std=gnu++2d` for experimental C++2d implementation work.
-
-- Clang now supports [P3733R1](https://wg21.link/p3733r1>) More named universal character escapes.
- The change is applied as a DR to all C++ language modes. (#GH203944)
-
#### C++2c Feature Support
-- Clang now propagates `constinit` and `constexpr` in structured bindings with tuple-like initializers.
-
-- Clang now has partial support for [P1306R5](https://wg21.link/P1306R5) Expansion Statements. Iterating expansion
- statements currently cannot be expanded and will result in a diagnostic, but other types of expansion statements work.
-
#### C++23 Feature Support
-- Partially implement Itanium mangling for pack indexing. Partially substituted packs are not yet supported. (#GH112003)
-
#### C++20 Feature Support
-- Clang now supports [P1857R3](https://wg21.link/p1857r3) Modules Dependency Discovery. (#GH54047)
-
#### C++17 Feature Support
#### Resolutions to C++ Defect Reports
-- Clang now implements [CWG1504](https://cplusplus.github.io/CWG/issues/1504.html)
- which makes pointer arithmetic after derived-base conversion undefined behavior,
- allowing devirtualization of calls through non-zero array subscripts.
-- Implemented [CWG1780 Explicit instantiation/specialization of generic lambda
- operator()](https://cplusplus.github.io/CWG/issues/1780.html)
-- Clang now allows omitting `typename` before a template name in a
- conversion operator, implementing [CWG2413](https://wg21.link/cwg2413).
-- Member specializations can now be declared in class scope, according to the
- resolution of [CWG727](https://wg21.link/cwg727). This is still not sufficient
- to resolve that core issue.
-- Clang now uses non-reference types for structured bindings whose initializer
- returns a prvalue. This resolves [CWG3135](https://wg21.link/cwg3135).
-
### C Language Changes
#### C2y Feature Support
-- Implemented the type-specific C2y `<stdbit.h>` rotate functions with constexpr
- evaluation support:
- `stdc_rotate_left_{uc,us,ui,ul,ull}` and
- `stdc_rotate_right_{uc,us,ui,ul,ull}`.
-- Implemented C2y `<stdbit.h>` memory reversal functions:
- `__builtin_stdc_memreverse8` / `stdc_memreverse8` (in-place byte
- reversal of a byte array) and `stdc_memreverse8u{8,16,32,64}` (byte-swap
- of an exact-width unsigned integer value, usable in constant expressions).
-
#### C23 Feature Support
-- Clang now allows C23 `constexpr` struct member access through the dot operator in constant expressions. (#GH178349)
-- Fixed a failing assertion when validating an invalid structure redefinition
- with a member which uses an incomplete enumeration type. (#GH190227)
-- Clang now supports the C23 `wN` and `wfN` length modifiers. (#GH116962)
-- Clang now recognizes the C23 `H`, `D`, and `DD` length modifiers in
- format strings and diagnoses their use because Clang does not yet support
- the corresponding decimal floating-point types, `_Decimal32`, `_Decimal64`, and `_Decimal128`. (#GH116962)
-- Fixed a bug with deducing qualified inferred types with `auto`. `auto` can now
- be combined with `restrict` or `_Atomic` to form a properly-qualified type. (#GH207466)
-- Fixed a bug where an enumerator following a `_BitInt`-typed enumerator kept
- the bit-precise type and wrapped around on overflow instead of taking a
- suitably sized standard integer type. (#GH208163)
-
-
### Objective-C Language Changes
-- Clang now emits Objective-C number, array, and dictionary literals as
- compile-time constant data structures rather than runtime `objc_msgSend`
- calls on targets whose runtime supports constant literal classes. The
- feature can be disabled altogether with `-fno-objc-constant-literals`,
- or selectively per literal kind with `-fno-constant-nsnumber-literals`,
- `-fno-constant-nsarray-literals`, and
- `-fno-constant-nsdictionary-literals`.
-
### Non-comprehensive list of changes in this release
-- Clang can now devirtualize virtual function calls on objects accessed through
- array subscript expressions with non-zero constant indices, based on the
- resolution of [CWG1504](https://cplusplus.github.io/CWG/issues/1504.html).
-- Added support for floating point and pointer values in most `__atomic_`
- builtins.
-- Added `__builtin_stdc_rotate_left` and `__builtin_stdc_rotate_right`
- for bit rotation of unsigned integers including `_BitInt` types. Rotation
- counts are normalized modulo the bit-width and support negative values.
- Usable in constant expressions. Implicit conversion is supported for
- class/struct types with conversion operators.
-- Implemented the following C23 `<stdbit.h>` builtins with `_BitInt`
- support and constexpr evaluation:
- `__builtin_stdc_leading_zeros`, `__builtin_stdc_leading_ones`,
- `__builtin_stdc_trailing_zeros`, `__builtin_stdc_trailing_ones`,
- `__builtin_stdc_first_leading_zero`, `__builtin_stdc_first_leading_one`,
- `__builtin_stdc_first_trailing_zero`, `__builtin_stdc_first_trailing_one`,
- `__builtin_stdc_count_zeros`, `__builtin_stdc_count_ones`,
- `__builtin_stdc_has_single_bit`, `__builtin_stdc_bit_width`,
- `__builtin_stdc_bit_floor`, and `__builtin_stdc_bit_ceil`.
-- Implemented the type-specific C23 `<stdbit.h>` functions with constexpr
- evaluation support:
- `stdc_leading_zeros_{uc,us,ui,ul,ull}`,
- `stdc_leading_ones_{uc,us,ui,ul,ull}`,
- `stdc_trailing_zeros_{uc,us,ui,ul,ull}`,
- `stdc_trailing_ones_{uc,us,ui,ul,ull}`,
- `stdc_first_leading_zero_{uc,us,ui,ul,ull}`,
- `stdc_first_leading_one_{uc,us,ui,ul,ull}`,
- `stdc_first_trailing_zero_{uc,us,ui,ul,ull}`,
- `stdc_first_trailing_one_{uc,us,ui,ul,ull}`,
- `stdc_count_zeros_{uc,us,ui,ul,ull}`,
- `stdc_count_ones_{uc,us,ui,ul,ull}`,
- `stdc_has_single_bit_{uc,us,ui,ul,ull}`,
- `stdc_bit_width_{uc,us,ui,ul,ull}`,
- `stdc_bit_floor_{uc,us,ui,ul,ull}`, and
- `stdc_bit_ceil_{uc,us,ui,ul,ull}`.
-- A new generic bit-reverse builtin function `__builtin_bitreverseg` that
- extends bit-reversal support to all standard integers type, including
- `_BitInt`
-- Added `__builtin_elementwise_clmul` for carry-less multiplication of
- integers including `_BitInt` types. This includes constexpr evaluation
- support.
-- Added `__builtin_elementwise_pext` and `__builtin_elementwise_pdep` for
- parallel bit extract and parallel bit deposit operations on integers including
- `_BitInt` types. This includes constexpr evaluation support.
-- Deprecated float types support from `__builtin_elementwise_max` and
- `__builtin_elementwise_min`.
-- Added header `endian.h` which contains byte order helpers specified in POSIX
-- Added #pragma loop licm(disable) for llvm.loop.licm.disable metadata
-- Added a new `ExplicitInstantiationDecl` AST node to represent explicit
- template instantiations (e.g., `template void foo<int>();` or
- `extern template class S<int>;`). Previously, source location information
- for explicit instantiation statements was discarded after parsing. The new
- node preserves the full source range including the `extern` and `template`
- keywords, qualifiers, template arguments as written, and the declared type,
- enabling tools such as language servers and refactoring engines to accurately
- map source locations back to explicit instantiation sites.
-- `typeid` on references and pointers of `final` types no longer emits a
- vtable lookup at runtime.
-- Updated support for Unicode from 15.1 to 18.0.
-- Linux and Windows toolchains now support Clang multilibs using
- `-fmultilib-flag=`.
-- The SafeStack builtins `__builtin___get_unsafe_stack_ptr`,
- `__builtin___get_unsafe_stack_bottom`, `__builtin___get_unsafe_stack_top`,
- and `__builtin___get_unsafe_stack_start` are now deprecated. Use the
- corresponding functions from `<sanitizer/safestack_interface.h>` instead.
-
### New Compiler Flags
-- New option `-fms-anonymous-structs` / `-fno-ms-anonymous-structs` added
- to enable or disable Microsoft's anonymous struct/union extension without
- enabling other `-fms-extensions` features (#GH177607).
-- New option `--precompile-reduced-bmi` allows build system to generate a
- reduced BMI only for a C++20 importable module unit. Previously the users
- can only generate the reduced BMI as a by-product, e.g, an object files or
- a full BMI.
-- New `-cc1` option `-fexperimental-overflow-behavior-types` added to
- enable parsing of the experimental `overflow_behavior` type attribute and
- type specifiers.
-- New `-cl` option `/d2guardnochecks` added to match MSVC. When Windows
- Control Flow Guard (CFG) is enabled by other options, it will instruct Clang
- to emit the CFG metadata, but disable adding checks.
-- New option `-fdiagnostics-show-inlining-chain` added to show inlining chain
- notes for `[[gnu::warning]]` and `[[gnu::error]]` diagnostics. When a
- function with these attributes is called from an inlined context, Clang can
- now show which functions were inlined to reach the call. When debug info is
- available (`-gline-directives-only` (implicitly enabled at `-g1`) or
- higher), accurate source locations are used; otherwise, a heuristic fallback
- is used with a note suggesting how to enable debug info for better accuracy.
-- New option `-fwin-cfg-mechanism=` added to control the mechanism used by
- Control Flow Guard on Windows. Accepted values are `automatic` (default),
- `dispatch`, and `check`. The `dispatch` mechanism uses the dispatch
- function to perform indirect call checks and can improve performance, while
- `check` uses the traditional check mechanism.
-- New `-cl` option `/d2guardcfgdispatch` added to match MSVC. This acts as a
- shorthand for `-fwin-cfg-mechanism=dispatch`.
-- New `-cl` option `/d2guardcfgdispatch-` added to match MSVC. This acts as a
- shorthand for `-fwin-cfg-mechanism=check`.
-- New option `-f[no-]strict-bool` added to control whether Clang can assume
- that `bool` values loaded from memory cannot have a bit pattern other
- than 0 or 1.
-- New option `-fcrash-diagnostics-tar` added to create an archive of crash
- reproducer files for easier bug filing.
-- There are a new pair of flags for riscv32 called `-mzilsd-word-align` and
- `-mzilsd-strict-align` which control whether Zilsd accesses are allowed to
- be aligned to 4-byte alignment rather than fully unaligned or fully (8-byte)
- aligned.
-- New `-cl` option `/pathmap:` added to match MSVC. This option acts as a
- clang's `-ffile-prefix-map=value` and has known differences in behaviour
- with the CL's option that do not affect the functionality: nomalizes the
- macro prefix map pathes -- removes `./` and uses the target's platform-
- specific path separator character when expanding the preprocessor macros --
- `-ffile-reproducible` (but not the debug and coverage prefix maps);
- does not require `/experimental:deterministic` as by MSVC. It needed for
- removing a hostname from a mangling hash gen, but clang-cl does not use
- a hostname when generates the hashes. Known issues -- does not remap the
- source file pathes within PCH/PCM files.
-- New `-cl` option `/experimental:deterministic` added to match CL's option.
- This enables warning emission on usage of non-deterministic macros `__DATE__`,
- `__TIME__` and `__TIMESTAMP__` and provides reproducable COFF's timestamp for
- the output object files.
-- New `-cl` option `/d1nodatetime` added to match CL's option. This option
- undefines the standard macros `__DATE__`, `__TIME__` and `__TIMESTAMP__` to allow
- reproducable builds. These macros can be redefined from the command line if
- necessary. `/d1nodatetime-` can be used to turn this feature off if
- necessary to override the common build settings.
-
### Deprecated Compiler Flags
### Modified Compiler Flags
-- The `-mno-outline` and `-moutline` compiler flags are now allowed on RISC-V and X86, which both support the machine outliner.
-- The `-mno-outline` flag will now add the `nooutline` IR attribute, so that
- `-mno-outline` and `-moutline` objects can be mixed correctly during LTO.
-- The `-fzero-call-used-regs` compiler flag is now allowed on RISC-V, only the
- "skip", "used-gpr", "used-gpr-arg", "all-gpr" and "all-gpr-arg" options are
- supported for the moment.
-- Slightly changed hash id generation to get the unique linkage symbols names
- by `-unique-internal-linkage-names` option. Now it uses a path that
- normalized in favor of the target system (same as the preprocessor does
- for the file macros) and allows the reproducable IDs on any build system.
-- `-fprofile-update=atomic` will now promote counter updates out of loops,
- similar to the non-atomic case ([#202487](https://github.com/llvm/llvm-project/pull/202487)).
-- The `-cl` `/Brepro` option was modified to match the original CL's option
- and now defines the standard macros `__DATE__`, `__TIME__` and `__TIMESTAMP__` to
- "1". The previous functionality remains unchanged.
-- The `-fms-kernel` flag will now implicitly add `-fno-delete-null-pointer-checks`.
- Still `-fdelete-null-pointer-checks` can be used to override this behavior.
-- Extended the `-marm64x` flag to support compiling to object files. When used
- in this mode, separate compilation jobs are run for ARM64 and ARM64EC object
- files, which are then merged into a single file using a new `.obj.arm64ec`
- section. Consumers must support this extension. Currently, this requires
- LLD for linking or `llvm-ar`/`llvm-lib` for archiving.
-
### Removed Compiler Flags
### Attribute Changes in Clang
-- Added new attribute `stack_protector_ignore` to opt specific local variables out of
- the analysis which determines if a function should get a stack protector. A function
- will still generate a stack protector if other local variables or command line flags
- require it.
-
-- Added a new attribute, `[[clang::no_outline]]` to suppress outlining from
- annotated functions. This uses the LLVM `nooutline` attribute.
-
-- Introduced a new type attribute `__attribute__((overflow_behavior))` which
- currently accepts either `wrap` or `trap` as an argument, enabling
- type-level control over overflow behavior. There is also an accompanying type
- specifier for each behavior kind via `__ob_wrap` and `__ob_trap`.
-
-- Introduced a new function attribute `__attribute__((__personality__(...)))`
- to explicitly specify the personality routine for exception handling. THis is
- meant to be a low level tool for language runtime authors to associate a
- foreign language personality with a given function. Note that this does not
- perform any ABI validation for the personality routine.
-
-- {doc}`ThreadSafetyAnalysis` attributes now correctly handle implicit member
- accesses in C, and parameter attributes in C++. This improves diagnostic
- precision and fixes false positives.
-
-- The {doc}`ThreadSafetyAnalysis` attributes `guarded_by` and
- `pt_guarded_by` now accept multiple capability arguments with refined
- access semantics: *writing* requires all listed capabilities to be held
- exclusively, while *reading* requires at least one to be held. This is
- sound because any writer must hold all capabilities, so holding any one
- prevents concurrent writes.
-
-- {doc}`ThreadSafetyAnalysis` attributes like `acquire_capability`,
- `release_capability`, `requires_capability`, `locks_excluded`,
- `try_acquire_capability`, and `assert_capability` can now be applied to
- function pointer variables and fields. The analysis checks calls through
- annotated function pointers the same way it checks direct function calls.
- Only plain function pointers are supported; pointers-to-member functions,
- blocks, or wrappers (e.g. `std::function`) are not yet supported.
-
-- The `[[clang::unsafe_buffer_usage]]` attribute is now supported in API
- notes. For example:
-
- ```yaml
- Functions:
- - Name: myUnsafeFunction
- UnsafeBufferUsage: true
- ```
-
-- When using `-Wunsafe-buffer-usage` without
- `-fsafe-buffer-usage-suggestions`, warnings are now emitted only
- once per source file. Pre-compiled code (such as PCH or module
- headers) is no longer repeatedly analyzed, as it is analyzed during
- its initial compilation. (Traditionally included headers are still
- analyzed within each translation unit that includes them). This
- behavior matches most of other `-W` diagnostics.
-
- When `-fsafe-buffer-usage-suggestions` is enabled, the behavior
- remains the same as before: pre-compiled code is deserialized and
- analyzed alongside the translation unit that uses it, because fix-it
- suggestion analysis requires full visibility of the translation
- unit.
-
-- Added support for `[[msvc::forceinline]]` for functions and
- `[[msvc::forceinline_calls]]` for statements. Both are aliases to
- `[[clang::always_inline]]` with additional checks to ensure that they
- are only accepted in places where MSVC also does.
-
-- The AMDGPU `amdgpu_num_sgpr` and `amdgpu_num_vgpr` attributes are now
- deprecated. Clang emits a `-Wdeprecated-declarations` warning when they
- are used. Use `amdgpu_waves_per_eu` instead to control SGPR and VGPR
- usage.
-
-- Clang now allows GNU attributes between a member declarator and bit-field width. (#GH184954)
-
-- The `[[clang::noescape]]` attribute now disallows deallocating memory
- through the annotated parameter. This information is currently not exposed to
- LLVM for optimization purposes, to prevent breaking existing adopters. It may
- instead be used by warnings and static analyses to provide more information
- about pointer lifetimes. It may be used to power optimizations in the future,
- however there are no concrete plans to do so at the moment.
-
-- The attributes `[[clang::opencl_global_device]]` and `[[clang::opencl_global_host]]`
- are now deprecated. Clang emits a `-Wdeprecated-attributes` warning when
- they are used.
-
-- The `modular_format` attribute now supports the `fixed` aspect for C
- ISO 18037 fixed-point `printf` specifiers.
-
-- The `lifetime_capture_by` attribute now accepts three new spelling forms:
- `lifetime_capture_by_this`, `lifetime_capture_by_global`, and
- `lifetime_capture_by_unknown`. These replace passing `this`, `global`, and
- `unknown` as arguments to `lifetime_capture_by`; that argument form is now
- deprecated because those names can conflict with user-defined parameters.
- They will be removed in the next release. Distinct `lifetime_capture_by`
- spellings may also be combined on the same declaration, but each spelling may
- appear at most once.
-
-- The `const` and `pure` attributes only apply to functions; they are now
- diagnosed and ignored when applied to anything else.
-
### Improvements to Clang's diagnostics
-- Fixed bug in `-Wdocumentation` so that it correctly handles explicit
- function template instantiations (#64087).
-
-- Fixed concept template parameters not being recognized in `-Wdocumentation`
- when mentioned in tparam comments. (#GH64087)
-
-- `-Wunused-but-set-variable` now diagnoses file-scope variables with
- internal linkage (`static` storage class) that are assigned but never used.
- This new coverage is added under the subgroup `-Wunused-but-set-global`,
- allowing it to be disabled independently with `-Wno-unused-but-set-global`.
- (#GH148361)
-
-- `-Wunused-template` is now part of `-Wunused` (which is enabled by `-Wall`).
- It diagnoses unused function and variable templates with internal linkage,
- which in a header is a latent ODR hazard. It can be disabled with
- `-Wno-unused-template`. (#GH202945)
-
-- Added `-Wlifetime-safety` to enable lifetime safety analysis,
- a CFG-based intra-procedural analysis that detects use-after-free and related
- temporal safety bugs. See the
- [RFC](https://discourse.llvm.org/t/rfc-intra-procedural-lifetime-analysis-in-clang/86291)
- for more details. By design, this warning is enabled in `-Weverything`. To disable
- the analysis, use `-Wno-lifetime-safety` or `-fno-lifetime-safety`.
-
-- Added `-Wlifetime-safety-suggestions` to enable lifetime annotation suggestions.
- This provides suggestions for function parameters that
- should be marked `[[clang::lifetimebound]]` based on lifetime analysis. For
- example, for the following function:
-
- ```c++
- int* p(int *in) { return in; }
- ```
-
- Clang will suggest:
-
- ```c++
- warning: parameter in intra-TU function should be marked [[clang::lifetimebound]]
- int* p(int *in) { return in; }
- ^~~~~~~
- [[clang::lifetimebound]]
- note: param returned here
- int* p(int *in) { return in; }
- ^~
- ```
-
-- Added `-Wlifetime-safety-noescape` to detect misuse of `[[clang::noescape]]`
- annotation where the parameter escapes through return. For example:
-
- ```c++
- int* p(int *in [[clang::noescape]]) { return in; }
- ```
-
- Clang will warn:
-
- ```c++
- warning: parameter is marked [[clang::noescape]] but escapes
- int* p(int *in [[clang::noescape]]) { return in; }
- ^~~~~~~
- note: returned here
- int* p(int *in [[clang::noescape]]) { return in; }
- ^~
- ```
-
-- Added `-Wlifetime-safety-dangling-field` to detect dangling field references
- when stack memory escapes to class fields. This is part of `-Wlifetime-safety`
- and detects cases where local variables or parameters are stored in fields but
- outlive their scope. For example:
-
- ```c++
- struct DanglingView {
- std::string_view view;
- DanglingView(std::string s) : view(s) {} // warning: address of stack memory escapes to a field
- };
- ```
-
-- Improved `-Wassign-enum` performance by caching enum enumerator values. (#GH176454)
-
-- Clang now emits `-Wpsabi` diagnostics for externally visible x86-64
- function definitions that return or take AVX or AVX-512 vector types without
- enabling the corresponding target feature.
-
-- Fixed a false negative in `-Warray-bounds` where the warning was suppressed
- when accessing a member function on a past-the-end array element.
- (#GH179128)
-
-- Added a missing space to the FixIt for the `implicit-int` group of diagnostics and
- made sure that only one such diagnostic and FixIt is emitted per declaration group. (#GH179354)
-
-- Fixed the Fix-It insertion point for `expected ';' after alias declaration`
- when parsing alias declarations involving a token-split `>>` sequence
- (for example, `using A = X<int>>;`). (#GH184425)
-
-- Fixed incorrect `implicitly deleted` diagnostic for explicitly deleted
- candidate function. (#GH185693)
-
-- The `-Wloop-analysis` warning has been extended to catch more cases of
- variable modification inside lambda expressions (#GH132038).
-
-- Clang now emits `-Wsizeof-pointer-memaccess` when snprintf/vsnprintf use the sizeof
- the destination buffer(dynamically allocated) in the len parameter(#GH162366)
-
-- Added `-Wmodule-map-path-outside-directory` (off by default) to warn on
- header and umbrella directory paths that use `..` to refer outside the module
- directory in module maps found via implicit search
- (`-fimplicit-module-maps`). This does not affect module maps specified
- explicitly via `-fmodule-map-file=`.
-
-- Honour `[[maybe_unused]]` attribute on private fields.
- `-Wunused-private-field` no longer emits a warning for annotated private
- fields.
-
-- Improved `-Wgnu-zero-variadic-macro-arguments` to suggest using
- `__VA_OPT__` if the current language version supports it(#GH188624)
-
-- Clang now emits an error when implicitly casting a complex type to a built-in vector type. (#GH186805)
-
-- Added `-Wnonportable-include-path-separator` (off by default) to catch
- #include directives that use backslashes as a path separator. The warning
- includes a FixIt to change all the backslashes to forward slashes, so that the
- code can automatically be made portable to other host platforms that don't
- support backslashes.
-
-- Clang now explains why template deduction fails for explicit template arguments.
-
-- No longer emitting a `-Wpre-c2y-compat` or extension diagnostic about use
- of octal literals with a `0o` prefix, and no longer emitting a
- `-Wdeprecated-octal-literals` diagnostic for use of octal literals without
- a `0o` prefix, when the literal is expanded from a macro defined in a
- system header. (#GH192389)
-
-- Improved error recovery for missing semicolons after class members. Clang now avoids
- skipping subsequent valid declarations when their previous decl is missing semicolon.
-
-- Removed the body of lambdas from some diagnostic messages.
-
-- Fixed false positive host-device mismatch errors in discarded `if constexpr` branches for CUDA/HIP;
- such calls are now correctly skipped.
-
-- Clang now errors when a function declaration aliases a variable or vice versa. (#GH195550)
-
-- Added `-Wattribute-alias` to diagnose type mismatches between an alias and its aliased function. (#GH195550)
-
-- The diagnostics around `__block` now explain why a variable cannot be marked `__block`. (#GH197213)
-
-- Extended `-Wnonportable-include-path` to warn about trailing whitespace and dots in `#include` paths. (#GH190610)
-
-- Clang now emits error when attribute is missing closing `]]` followed by `;;`. (#GH187223)
-
-- Clang now rejects inline asm constraints and clobbers that contain an
- embedded null character, instead of silently truncating them. (#GH173900)
-
-- Diagnostics for the C++11 range-based for statement now report the correct
- iterator type in notes for invalid iterator types.
-
-- `-Wfortify-source` now warns when the constant-evaluated argument to
- `umask` has bits set outside `0777`. Those bits are silently discarded
- by the kernel, so setting them is almost always a typo (matching the
- bionic libc `diagnose_if` check).
-
-- Improved how Unicode characters are displayed in diagnostic messages.
-
-- `-Wtautological-pointer-compare` and `-Wpointer-bool-conversion` now
- diagnose a reference to a function (e.g. of type `void (&)()`) compared
- against or converted to a null pointer, the same as a bare function name.
- (#GH46362)
-
-- Added a clearer diagnostic for uninitialized decomposition declarations. (#GH90107)
-
-- Fixed missing sentinel attribute diagnostic discrepancy with explicit object
- parameters in variadic functions. (#GH200007)
-
### Improvements to Clang's time-trace
### Improvements to Coverage Mapping
-- [MC/DC] Nested expressions are handled as individual MC/DC expressions.
-- "Single byte coverage" now supports branch coverage and can be used
- together with `-fcoverage-mcdc`.
-- Consteval member functions are no longer emitted in coverage mappings,
- matching the existing behavior for free consteval functions. (#GH164448)
-
### Bug Fixes in This Version
-- Fixed an assertion when comparing a fixed point type with a `_BitInt` type. (#GH196948)
-- Fixed atomic boolean compound assignment; the conversion back to atomic bool would be miscompiled. (#GH33210)
-- Correctly handle default template argument when establishing subsumption. (#GH188640)
-- Fixed a failed assertion in the preprocessor when `__has_embed` parameters are missing parentheses. (#GH175088)
-- Fix lifetime extension of temporaries in for-range-initializers in templates. (#GH165182)
-- Fixed a preprocessor crash in `__has_cpp_attribute` on incomplete scoped attributes. (#GH178098)
-- Fixes an assertion failure when evaluating `__underlying_type` on enum redeclarations. (#GH177943)
-- Fixed an assertion failure caused by nested macro expansion during header-name lexing (`__has_embed(__has_include)`). (#GH178635)
-- Clang now outputs relative paths of embeds for dependency output. (#GH161950)
-- Fix the result type of a binary operation where both operands are 'void' l-values. (#GH111300)
-- Fixed an assertion failure when evaluating `_Countof` on invalid `void`-typed operands. (#GH180893)
-- Fixed an assertion failure in the serialized diagnostic printer when it is destroyed without calling `finish()`. (#GH140433)
-- Fixed an assertion failure caused by error recovery while extending a nested name specifier with results from ordinary lookup. (#GH181470)
-- Fixed a crash when parsing `#pragma clang attribute` arguments for attributes that forbid arguments. (#GH182122)
-- Fixed a bug in how Clang re-transforms expressions produced from substititions
- from type aliases and concept specializations. (#GH191738) (#GH196375)
-- Fixed a bug with multiple-include optimization (MIOpt) state not being preserved in some cases during lexing, which could suppress header-guard mismatch diagnostics and interfere with include-guard optimization. (#GH180155)
-- Fixed a crash when normalizing constraints involving concept template parameters whose index coincided with non-concept template parameters in the same parameter mapping.
-- Fixed a crash caused by accessing dependent diagnostics of a non-dependent context.
-- Fixed a crash when substituting into a non-type template parameter that has a type containing an undeduced placeholder type.
-- Fixed several crashes and improved diagnostics when a multidimensional subscript operator is applied to a built-in type. (#GH187800)
-- Correctly diagnosing and no longer crashing when `export module foo`
- (without a semicolon) are the final tokens in a module file. (#GH187771)
-- Fixed a crash in duplicate attribute checking caused by comparing constant arguments with different integer signedness. (#GH188259)
-- Clang now emits an error when returning an initializer list from a lambda
- with an explicit return type of void. The diagnostic now correctly refers
- to "lambda" instead of "block". (#GH188661)
-- Fixed a crash on `_BitInt(N)` arrays where 129 ≤ N ≤ 192 due to incorrect array filler lowering. (#GH189643)
-- Fixed the behavior in C23 of `auto`, by emitting an error when an array type is specified for a `char *`. (#GH162694)
-- Fixed an issue where an assert was thrown instead of an error if no vulkan env was specified with `--triple spirv`. (#GH189964)
-- Fixed incorrect rejection of `auto` with reordered declaration specifiers in C23. (#GH164121)
-- Fixed a bug where Clang fails to find instantiation of Decls in constraint checking. (#GH173086)
-- Fixed a crash when assigning to an element of an `ext_vector_type` with `bool` element type. (#GH189260)
-- Fixed a crash caused by declaring multiple `ownership_returns` attributes with mismatched or missing arguments. (#GH188733)
-- Clang now emits an error for friend declarations of lambda members. (#GH26540)
-- Fixed a crash caused by lambda capture handling in delayed default arguments. (#GH176534)
-- Fixed a crash when parsing invalid `static_assert` declarations with string-literal messages (#GH187690).
-- Fixed a potential stack-use-after-return issue in Clang when copy-initializing
- an array via an element-at-a-time copy loop (#GH192026)
-- Fixed an issue where certain designated initializers would be rejected for constexpr variables. (#GH193373)
-- Fixed `clang::Preprocessor::recomputeCurLexerKind` to avoid default fallback to `CurLexerCallback = CLK_CachingLexer;`. This prevents code-completion
- EOF handling from accidentally restoring CLK_CachingLexer while a tentative parse is still active, which could trigger a caching lexer re-entry assertion
- in clangd signature help. (#GH200677)
-- Fixed incorrect expansion source ranges for synthesized tokens produced by
- feature-like builtin macros such as `__has_builtin`, which could trigger
- assertions in syntax token collection. (#GH196067)
-- Fixed a crash when `#embed` is used with C++ modules (#GH195350)
-- Fixed an assertion in constant evaluation when using a defaulted comparison operator in a `union`. (#GH147127)
-- Fixed a bug where `-x cuda` caused clang to immediately resolve templates that should not be. (#GH200545)
-- Fixed an issue where `__typeof_unqual` and `__typeof_unqual__` were rejected as a declaration specifier in block scope in C++.
-- Fixed crash when checking for overflow for unary operator that can't overflow (#GH170072)
-- Clang no longer handles a `" q-char-sequence "` header name as a string literal (#GH132643).
-- Under `-fdollars-in-identifiers`, the `$` can now appear in user-defined-literals. (#GH173985)
-- Clang now detects invalid unicode characters in identifiers formed by token concatenation. (#GH101342)
-- Fixed an assertion where we improperly handled implicit conversions to integral types from an atomic-type with a conversion function. (#GH201770)
-- Fixed assertion failures involving code completion with delayed default arguments and exception specifications. (#GH200879)
-- Fixed a regression where calling a function that takes a class-type parameter by value inside `decltype` of a concept could be incorrectly rejected when used as a non-type template argument. (#GH175831)
-- Clang no longer crashes if `__attribute__((cleanup))` is applied to an invalid declaration. Furthermore, in declarations that
- contain multiple `cleanup` attributes, Clang now only uses the last one, matching GCC's behaviour (previously, Clang
- would only use the first one). A new warning that diagnoses such declarations has been added to `-Wignored-attributes`.
- (#GH191829)
-- Fixed a crash in the constant evaluator when an ill-formed array new-expression whose bound could not be determined (e.g. `new int[]()`) was used in a constant expression. (#GH200139)
-- Fixed a case where function effect analysis (`nonblocking` etc.) did not visit a destructor invoked from a `delete` expression. (#GH184460)
-- Clang now defines the GCC-compatible predefined macros `__WCHAR_MIN__`, `__WINT_MIN__`, and `__SIG_ATOMIC_MIN__`. (#GH199678)
-- Fix a crash in addUnsizedArray due assert not verifying we have a Base before doing checks on it. (#GH44212)
-
#### Bug Fixes to Compiler Builtins
-- Fix a crash when passing an unresolved overload set to `__builtin_classify_type`. (#GH175589)
-- Fixed a crash when calling `__builtin_allow_sanitize_check` with no arguments. (#GH183927)
-- `__annotation` is now diagnosed as unsupported on non-Windows/UEFI targets, fixing a
- crash when using it with `-fms-extensions` on other platforms. (#GH184318)
-- Fixed a compiler crash due to an unresolved overloaded function type when
- calling `__builtin_bit_cast`. (#GH200112)
-- Clang now SFINAE friendly when the ``__reference_meows_from_temporary`` builtins
- should SFINAE friendly when the 1st type is not a reference type. (#GH206524)
-- Fixed `__builtin_offsetof` incorrectly sign-extending unsigned array indices
- with the high bit set (e.g. `uint8_t` values >= 128), which produced wrong
- offset values in constant expressions. (#GH199319)
-
-
#### Bug Fixes to Attribute Support
-- Fixed a behavioral discrepancy between deleted functions and private members when checking the `enable_if` attribute. (#GH175895)
-- Fixed `init_priority` attribute by delaying type checks until after the type is deduced.
-- Fixed a crash when a `section` attribute or `#pragma clang section` caused a
- section type conflict with a declaration whose name is not a simple identifier,
- such as a lambda's call operator. (#GH192264)
-- Fixed a regression where attributed types (such as those carrying `_Nonnull`/`_Nullable` attributes)
- were not deduplicated, because the attributes' arguments were not taken into
- account when uniquing them. The duplications could substantially increase the
- size of precompiled headers and modules (PCH/PCM), and the time spent loading
- them. (#GH200961)
-
#### Bug Fixes to C++ Support
-- Fixed a preprocessor assertion failure triggered when parsing an invalid template-id starting with `::template operator`. (#GH186582)
-- Fixed a crash when a function template is defined as a non-template friend with a global scope qualifier. (#GH185341)
-- Fixed a bug of incorrect template depth for abbreviated templates. (#GH200682)
-- Fixed valid C++ code that uses an address-of-function-template expression,
- such as `decltype(&T::func<Args...>)`, in SFINAE checks when substituting the
- function template's trailing return type fails, such as when the return type
- contains a `decltype` probe that calls a deleted function.
-- Clang now rejects constant template parameters with block pointer types, since these are not implemented anyway and would lead to crashes. (#GH189247)
-- Fixed some concept bugs introduced in Clang 22 (#GH197597)
-- Clang no longer reject call expressions whose type is a not-yet-deduced auto type. (#GH207565)
-- Fixed a crash on error recovery when dealing with invalid templates. (#GH183075)
-- Fixed a crash when instantiating `requires` expressions involving substitution failures in C++ concepts. (#GH176402)
-- Concepts appearing in the require-clause of a member function no longer have access to non-public members of that class,
- or to a current class object. (#GH115838) (#GH194803) (#GH197067)
-- We no longer caches invalid variable specializations. (#GH132592)
-- Fixed an incorrect template argument deduction when matching packs of template
- template parameters when one of its parameters is also a pack. (#GH181166)
-- Clang no longer errors on overloads with different ref-qualifiers and constraints. (#GH120812)
-- Fixed a crash when a default argument is passed to an explicit object parameter. (#GH176639)
-- Fixed an alias template CTAD crash.
-- Improvements to typo correction involving template names. (#GH207498)
-- Correctly diagnose uses of `co_await` / `co_yield` in the default argument of nested function declarations. (#GH98923)
-- Fixed a crash when diagnosing an invalid static member function with an explicit object parameter (#GH177741)
-- Clang incorrectly instantiated variable specializations outside of the immediate context. (#GH54439)
-- Fixed a crash when pack expansions are used as arguments for non-pack parameters of built-in templates. (#GH180307)
-- Fixed crash instantiating class member specializations.
-- Fixed a crash during class template instantiation when a member variable
- template's type substitution fails (e.g. `typename T::type` with `T=int`),
- which left the `VarTemplateDecl` unregistered and caused a subsequent
- assertion failure when instantiating a partial specialization of that member.
- (#GH198890)
-- Fix a problem where a substitution failure when evaluating a type requirement
- could directly make the program ill-formed.
-- Typo correction now corrects the name qualifier for invalid template names.
-- Fix a problem where pack index expressions where incorrectly being regarded as equivalent.
-- Correctly diagnose narrowing in pack index expressions. (#GH205650)
-- Fixed a bug where captured variables in non-mutable lambdas were incorrectly treated as mutable
- when used inside decltype in the return type. (#GH180460)
-- Fixed a crash when evaluating uninitialized GCC vector/ext_vector_type vectors in `constexpr`. (#GH180044)
-- Fixed a crash when `explicit(bool)` is used with an incomplete enumeration. (#GH183887)
-- Fix crash-on-invalid caused by qualified forward declarations. (#GH202320)
-- Fixed a crash on `typeid` of incomplete local types during template instantiation. (#GH63242), (#GH176397)
-- Fixed spurious diagnostics produced when checking if constraints are equivalent for redeclarations,
- which could make the program mistakenly ill-formed.
-- Fixed a crash when an immediate-invoked `consteval` lambda is used as an invalid initializer. (#GH185270)
-- Fixed an assertion failure when using a global destructor with a target with a non-default program address space. (#GH186484)
-- Fixed a crash when instantiating an invalid out-of-line static data member definition in a local class. (#GH176152)
-- Inherited constructors in `dllexport` classes are now exported for ABI-compatible cases, matching
- MSVC behavior. Constructors with variadic arguments or callee-cleanup parameters are not yet supported
- and produce a warning. (#GH162640)
-- Correctly diagnose invalid non-dependent calls in dependent contexts. (#GH135694)
-- Fix initialization of GRO when GRO-return type mismatches, as part of CWG2563. (#GH98744)
-- Fix an error using an initializer list with array new for a type that is not default-constructible. (#GH81157)
-- Fixed a crash in invalid ``#module`` preprocessing directive. (#GH179220)
-- We no longer consider conversion operators when copy-initializing from the same type. This was non
- conforming and could lead to recursive constraint satisfaction checking. (#GH149443)
-- Fixed a crash in Itanium C++ name mangling for a lambda in a local class field initializer inside a constructor/destructor. (#GH176395)
-- Fixed a crash when Expr::ClassifyImpl computes a classification like CL_LValue or CL_PRValue, then asserts that this
- agrees with the AST node's own value category. (#GH202693)
-- Fixed crashes in Itanium C++ name mangling for lambdas with trailing requires-clauses involving requires-expressions. (#GH100774) (#GH123854)
-- Fixed an invalid rejection and assertion failure while generating `operator=` for fields with the `__restrict` qualifier. (#GH37979)
-- Fixed a use-after-free bug when parsing default arguments containing lambdas in declarations with template-id declarators. (#GH196725)
-- Fixed missing destructor cleanups for lambda init-captures in default member
- initializers used during aggregate initialization. (#GH196469)
-- Fixed a crash in constant evaluation using placement new on an array which was later initialized. (#GH196450)
-- Fixed an issue where Clang incorrectly accepted invalid unqualified uses of local nested class names outside their declaring scope. (#GH184622)
-- Fixed a crash when instantiating a class template whose member variable partial specialization has an invalid primary template. (#GH195988)
-- Fixed a crash when parsing invalid friend declaration with storage-class specifier. (#GH186569)
-- Fixed a missing vtable for `dynamic_cast<FinalClass *>(this)` in a function template. (#GH198511)
-- Fixed an assertion failure during init-list checking of an array whose element type is an incomplete class. (#GH140685)
-- Fixed a crash when using a pack indexing type (e.g. ``Ts...[0]``) imported from another module. (#GH204479)
-- Fixed an ODR-merging error in modules, where class-scope `using enum` declarations were not recognized as matching across module
- boundaries. (#GH207066)
-- Fixed a crash when constant evaluation accessed a base class or member of an object wrapped in `_Atomic`. (#GH203328)
-
#### Bug Fixes to AST Handling
-- Fixed a bug where explicit nullability property attributes were not stored in AST nodes in Objective-C. (#GH179703)
-- Fixed a bug where alias CTAD, or an invalid template template parameter, could create a template with an empty template
- parameter list. This also adds asserts to prevent this from happening again.
-- Fixed a crash when parsing Doxygen `@param` commands attached to invalid declarations or non-function entities. (#GH182737)
-- Fixed the SourceLocation and SourceRange of reversed rewritten CXXOperatorCallExpr. (#GH192467)
-- Fixed a assertion when `__block` is used on global variables in C mode. (#GH183974)
-- Added missing AST nodes representing the `decltype` specifiers in destructor call to AST.
-- Fixed a missing ODR violation diagnostic introduced by the inline assembly string or clobber list. (#GH198616)
-
#### Miscellaneous Bug Fixes
-- Fixed a crash whith the AST text dumper, when dumping a reference to a
- decomposition with no bindinds. (#GH198842)
-- Fixed the arguments of the format attribute on `__builtin_os_log_format`. Previously, they were off by 1.
-
#### Miscellaneous Clang Crashes Fixed
-- Fixed a crash when attempting to jump over initialization of a variable with variably modified type. (#GH175540)
-- Fixed a crash when using loop hint with a value dependent argument inside a
- generic lambda. (#GH172289)
-- Fixed a crash in C++ overload resolution with `_Atomic`-qualified argument types. (#GH170433)
-- Fixed a crash related to missing source locations (#GH186655)
-- Fixed a crash when casting a parenthesized unresolved template-id or array section. (#GH183505)
-- Fixed a crash when initializing a `constexpr` pointer with a floating-point literal in C23. (#GH180313)
-- Fixed a lack of diagnostic for substitution failures in base classes when using `std::void_t`-like types.
-- Fixed a crash when emitting debug info for base classes with instantiation-dependent-only types (#GH193932)
-- Fixed an assertion when diagnosing address-space qualified `new`/`delete` in language-defined address spaces such as OpenCL `__local`. (#GH178319)
-- Fixed an assertion failure in ObjC++ ARC when binding a rvalue reference to reference with different lifetimes (#GH178524)
-- Fixed a crash when subscripting a vector type with large unsigned integer values. (#GH180563)
-- Fixed a crash when attempting to diagnose incompatible conversions involving function types (#GH182534)
-- Fixed a crash when evaluating `__is_bitwise_cloneable` on invalid record types. (#GH183707)
-- Fixed an assertion failure when casting a function pointer with a target with a non-default program address space. (#GH186210)
-- Fixed a crash when `decltype(__builtin_FUNCTION())` is used as a template type argument. (#GH167433)
-- Fixed an assertion failure when parsing an invalid `decltype` specifier with missing parentheses or extra semicolons. (#GH188014)
-- Fixed a crash when explicitly casting a complex type to or from an atomic complex type. (#GH172208)
-- Fixed a crash when explicitly casting a scalar to an atomic complex. (#GH114885)
-- Fixed an assertion failure when parsing an invalid out-of-line enum definition with template parameters. (#GH187909)
-- Fixed an assertion failure on invalid template template parameter during typo correction. (#GH183983)
-- Fixed an assertion failure in `isAtEndOfMacroExpansion` on macro expansions crossing the boundary of two fileIDs. (#GH115007), (#GH21755)
-- Fixed an assertion failure when `__builtin_dump_struct` is used with an
- immediate-escalated callable. (#GH192846)
-- Fixed a crash when passing one sized implicitly casted vector to a `abs` function. (#GH204777)
-- Fixed a crash when diagnosing an invalid out-of-line definition of a member class template. (#GH201490)
-- Fixed a crash in the parser when a missing semicolon after a tag definition is followed by a template-id not preceded by `::`. (#GH207992)
-
### OpenACC Specific Changes
### OpenCL Specific Changes
-- Added support for OpenCL C 3.1 language version (`-cl-std=CL3.1`).
-
### Target Specific Changes
#### AMDGPU Support
-- Introduced a new target specific builtin `__builtin_amdgcn_processor_is`,
- a late / deferred query for the current target processor.
-- Introduced a new target specific builtin `__builtin_amdgcn_is_invocable`,
- a late / deferred query for the availability of target specific builtins.
-- Initial support for gfx1310
-- The `amdgpu_num_sgpr` and `amdgpu_num_vgpr` function attributes are now
- deprecated. Using them produces a `-Wdeprecated-declarations` warning. Use
- `amdgpu_waves_per_eu` instead.
-
#### NVPTX Support
#### X86 Support
-- `march=znver6` is now supported.
-- Support ISA of `AVX512BMM`.
- - Support intrinsic of `_mm512_bmacor16x16x16`.
- - Support intrinsic of `_mm512_bmacxor16x16x16`.
- - Support intrinsic of `_mm512_mask_bitrev_epi8`.
- - Support intrinsic of `_mm512_maskz_bitrev_epi8`.
- - Support intrinsic of `_mm512_bitrev_epi8`.
- - Support intrinsic of `_mm256_bmacor16x16x16`.
- - Support intrinsic of `_mm256_bmacxor16x16x16`.
- - Support intrinsic of `_mm_mask_bitrev_epi8`.
- - Support intrinsic of `_mm256_mask_bitrev_epi8`.
- - Support intrinsic of `_mm_maskz_bitrev_epi8`.
- - Support intrinsic of `_mm256_maskz_bitrev_epi8`.
- - Support intrinsic of `_mm_bitrev_epi8`.
- - Support intrinsic of `_mm256_bitrev_epi8`.
-- Removed support for `AMX-TF32` (`-mamx-tf32`) and `TMMULTF32PS` instruction.
-
#### Arm and AArch64 Support
-- On Apple AArch64 targets, `__GCC_DESTRUCTIVE_SIZE` is now `128` (down from `256`)
- to match the 128-byte cache line used by Apple cores, avoiding needless
- over-alignment. This value is implementation-defined and should not be relied upon
- in an ABI-sensitive way.
-
-- Support has been added for the following processors (-mcpu identifiers in parenthesis):
-
- - Arm AGI CPU (armagicpu).
- - Hisilicon hip12 core (hip12).
- - NVIDIA Rigel core (rigel).
-
#### Android Support
#### Windows Support
-- Clang now defines the `_MSVC_TRADITIONAL` macro as `1` when emulating MSVC
- 19.15 (Visual Studio 2017 version 15.8) and later. (#GH47114)
-
-- `-fmacro-prefix-map=` (`-ffile-prefix-map=`) now affects an anonymous namespace hash generation
- for the MSVC targets and allows deterministic symbol mangling for reproducible builds.
-
-- Added the `-fwinx64-eh-unwind=` flag to select the x64 Windows unwind info
- version (`v1`, `v2-best-effort`, `v2-required`, or `v3`). The legacy
- `-fwinx64-eh-unwindv2=` flag is deprecated; it is still accepted and mapped
- onto the new flag as follows:
-
- | Legacy `-fwinx64-eh-unwindv2=` | New `-fwinx64-eh-unwind=` |
- | --- | --- |
- | `disabled` | `v1` (default; no flag forwarded) |
- | `best-effort` | `v2-best-effort` |
- | `required` | `v2-required` |
-
- The MSVC-compatible `/d2epilogunwind` and `/d2epilogunwindrequirev2`
- options map to `v2-best-effort` and `v2-required` respectively.
-
-- When targeting Windows x64 with EGPR (`-mapx-features=egpr`), Clang now
- automatically enables V3 unwind info (`-fwinx64-eh-unwind=v3`) if no
- explicit unwind version was specified.
-
-- In MSVC compatibility mode, scalar and vector deleting destructors now call
- ``__global_delete`` (or ``__global_array_delete`` for the array ``delete[]``
- path) instead of directly referencing ``::operator delete``.
- This matches MSVC's behavior and fixes ``LNK2001`` linker errors in
- environments where no global ``::operator delete`` exists. When the
- translation unit contains a ``::delete`` expression, a ``__global_delete``
- forwarding body that calls ``::operator delete`` is emitted automatically.
- Otherwise, if no body is emitted, an `/ALTERNATENAME` linker directive will
- cause the linker to use the generated `__empty_global_delete` trap function
- instead.
-
-- Clang now supports `-std:c++26preview` for compatibility with MSVC. This enables C++26 features.
-
#### LoongArch Support
-- DWARF fission is now compatible with linker relaxations, allowing `-gsplit-dwarf` and `-mrelax`
- to be used together when building for the LoongArch platform.
-
#### RISC-V Support
-- Tenstorrent Ascalon D8 was renamed to Ascalon X. Use `tt-ascalon-x` with `-mcpu` or `-mtune`.
-- Intrinsics were added for the `Zvabd` (RISC-V Integer Vector Absolute Difference) extension.
-- Intrinsics were added for the `Zvzip` (Reordering Structured Data in Vector Registers) extension.
-- A new `-mtune` syntax was added to support processor-specific tuning feature string
- Currently this new syntax is gated by the `-mexperimental-mtune-syntax` flag.
-
#### CUDA/HIP Language Changes
-- The new offloading driver is now the default for HIP. Use
- `--no-oflfoad-new-driver` to return to the old behavior.
-
#### CUDA Support
-- Fixed a bug where host-device ambiguities in CUDA/HIP when retrieving the
- address of specializations of templated functions that have overloads for both
- host and device. (#GH199299)
-
#### AIX Support
-- The driver default for the linker flag `-bcdtors` now defaults to `mbr`
- (instead of `all`) which only extracts static init from archive members which
- would otherwise be referenced.
- (See <https://www.ibm.com/docs/en/aix/7.2.0?topic=l-ld-command> for details).
-- The driver now uses `-lcompiler_rt` instead of `-latomic`, and the compiler-rt
- archive has been renamed from `libatomic.a` to `libcompiler_rt.a` to avoid conflicts
- between the LLVM libatomic and the GNU libatomic from the AIX toolbox as they share
- the same library name.
-- Added support for `#pragma comment(copyright, "token_sequence")` on AIX.
- This directive embeds a copyright or identifying string into the compiled object file.
- The string is included in the final executable and loaded into memory at program runtime.
-- The driver relaxes the restrictions on the `OBJECT_MODE` environment
- variable and now silently accepts `32_64` and `any`.
-
#### NetBSD Support
#### WebAssembly Support
-- Fixed a crash when `__funcref` is applied to a non-function pointer type.
- (#GH118233)
-- WebAssembly reference types (`__externref_t` and `__funcref` function
- pointers) now lower to the opaque IR types `target("wasm.externref")` and
- `target("wasm.funcref")` instead of `ptr addrspace(10)` /
- `ptr addrspace(20)`.
-- Fixed a compiler crash at `-O2` when reference-type values were passed
- through control flow that the SLP vectorizer tried to vectorize.
-
#### AVR Support
#### SystemZ Support
-- Add support for `#pragma export` for z/OS. This is a pragma used to export functions and variables
- with external linkage from shared libraries. It provides compatibility with the IBM XL C/C++
- compiler.
-
### DWARF Support in Clang
### Floating Point Support in Clang
@@ -1151,210 +158,40 @@ latest release, please see the [Clang Web Site](https://clang.llvm.org) or the
### AST Matchers
-- Fixed `nullPointerConstant` matcher falsely matching integer literal `0`
- in non-null-pointer contexts such as array subscripts and pointer arithmetic.
-- Add `functionTypeLoc` matcher for matching `FunctionTypeLoc`.
-- Add missing support for `TraversalKind` in some `addMatcher()` overloads.
-
### clang-format
-- Add `ObjCSpaceAfterMethodDeclarationPrefix` option to control space between the
- '-'/'+' and the return type in Objective-C method declarations
-- Deprecate the `BinPackParameters` and `BinPackArguments` options and replace
- them with the `PackParameters` and `PackArguments` structs (respectively) to
- unify packing behavior. Add the `BreakAfter` option to the structs, allowing
- parameter and argument lists to be formatted with one parameter/argument on each
- line if they exceed the specified count.
-- Add `AfterComma` value to `BreakConstructorInitializers` to allow breaking
- constructor initializers after commas, keeping the colon on the same line.
-- Extend `BreakBinaryOperations` to accept a structured configuration with
- per-operator break rules and minimum chain length gating via `PerOperator`.
-- Add `AllowShortRecordOnASingleLine` option and set it to `EmptyAndAttached` for LLVM style.
-- Add `BreakFunctionDeclarationParameters` option to always break before function
- declaration parameters.
-- Add `EnumAssignments` option to `AlignConsecutiveAssignments` for aligning
- enum assignments without affecting other assignments.
-- Add `BreakBeforeReturnType` option to break before the function return
- type.
-
### libclang
-- Visit constraints of `auto` type to properly visit concept usages (#GH166580)
-- Visit switch initializer statements (<https://bugs.kde.org/show_bug.cgi?id=415537#c2>)
-- Fix crash in clang_getBinaryOperatorKindSpelling and clang_getUnaryOperatorKindSpelling
-- The clang_Module_getASTFile API is deprecated and now always returns nullptr
-- The clang_Cursor_getCommentRange API will now return a comment range for macro definitions that have documentation comments.
-- Added CXType_PredefinedSugar for `__ptrdiff_t`, `__size_t`, and
- `__signed_size_t` types, which are no longer exposed as
- CXType_Unexposed.
-
### Code Completion
-- Fixed a crash in code completion when using a C-Style cast with a parenthesized
- operand in Objective-C++ mode. (#GH180125)
-- Fixed a crash when code completion is triggered inside an ill-formed lambda's trailing requires-clause. (#GH201632)
-
### Static Analyzer
+#### Crash and bug fixes
+
% comment:
% This is for the Static Analyzer.
-% Subsections (using `####`), in this order, only when they have content:
-% - New checkers and features
+% Use `####` headings for subsections:
% - Crash and bug fixes
+% - New checkers and features
% - Improvements
% - Moved checkers
-% - Removed checkers
-% - Diagnostic changes
-
-#### New checkers and features
-
-- Introduced the experimental `alpha.cplusplus.UseAfterLifetimeEnd` checker to detect dangling pointers and references bound to local variables that go out of scope, using the `[[clang::lifetimebound]]` annotation. (#GH205521)
-- Introduced the `optin.core.UnconditionalVAArg` checker to report variadic functions that unconditionally use `va_arg()`, which is undefined behavior when the function is called without any variadic arguments (SEI-CERT EXP47-C). (#GH175602)
-- The `unix.DynamicMemoryModeling` modeling gained a new option to create branches where a memory allocation fails and returns a null pointer. It is disabled by default. (#GH205371)
-- The `security.insecureAPI.DeprecatedOrUnsafeBufferHandling` checker gained a new `ReportInC99AndEarlier` option. When enabled, deprecated buffer-handling functions (`memcpy`, `memset`, `memmove`, etc.) are also reported when not compiling for C11 or later. It is disabled by default. (#GH168704, #GH177379)
-- The `optin.taint.TaintPropagation` checker gained a new `EnableDefaultConfig` option, which makes it possible to disable the built-in taint configuration and use a fully custom configuration instead. (#GH176185)
-
-#### Crash and bug fixes
-
-- Fixed the `security.VAList` checker producing false positives when analyzing C23 code where `va_start` expands to `__builtin_c23_va_start`. (#GH192024)
-- Fixed a crash when copying uninitialized data in a function named `swap`. (#GH178797)
-- Fixed a compiler crash when combining `_Atomic` and `__auto_type` in C, for example `_Atomic __auto_type x = expr`. (#GH118058)
-- Fixed a crash in the `unix.Malloc` checker when a function is annotated with both `ownership_returns` and `ownership_takes` (or `ownership_holds`). (#GH183344)
-- Fixed a crash in the `alpha.unix.cstring` checkers on zero-size element types (for example an empty struct in C). (#GH190457)
-- Fixed a use-after-free in `CheckerContext::getMacroNameOrSpelling`. (#GH194174)
-- Fixed a false positive in the `alpha.unix.cstring` checkers when the buffer argument points into the middle of an array, such as `memcpy(dst, &arr[i], size)`. (#GH198346)
-- Fixed the default binding of union aggregates being overwritten when initializing array elements with union members. (#GH178694)
-- The analyzer no longer rules out the equality of a pointer to the stack and a symbolic pointer in unknown space, because a function may return a pointer to some other stack frame (for example one received as an argument). (#GH187080)
-- Fixed the `getcwd` summary in the `unix.StdCLibraryFunctions` checker. (#GH175136)
-- Fixed invalid HTML nesting for popups at end of line. (#GH46089)
-- Fixed a false-positive in the `unix.BlockInCriticalSection` checker that reported double locking when using `std::lock_guard`/`std::unique_lock`/`std::scoped_lock`. (#GH208729)
-- Fixed a false-negative in the `unix.Malloc` checker due to a typo in the expected arguments of `if_nameindex`. It will now properly match its single expected argument. (#GH207726)
-- Fixed a crash in the Z3-solver-based (unsupported) constraint manager involving unary/binary operators. (#GH205037)
-- Fixed a crash where GNU statement expression syntax (`({ ... })`) caused arguments to disappear from parameter list. (#GH205718)
#### Improvements
-- Significantly sped up core data structures like ImmutableSet/Map, leading to up to 5.2x faster analysis in edge cases. (#GH205552, #GH207596, #GH208907)
-- The unmaintained and crash-prone Z3 constraint-manager backend selected via `-analyzer-constraints=z3` was renamed to `-analyzer-constraints=unsupported-z3` to make its unsupported status explicit. (#GH205370)
-- The conservative call-invalidation logic now invalidates the object of an opaque constructor call regardless of whether an argument refers to it. (#GH170887)
-- Improved the resolution of constant values from initializers in RegionStore, including preserving default bindings for aggregate-like cases, generalized field-initializer resolution for arbitrary nesting, and normalized sub-array indices. (#GH199271)
-- The analyzer now conservatively evaluates `std::sort`, `std::stable_sort`, and `std::inplace_merge` to prevent false positives caused by complex STL internals that cannot be modeled adequately by the engine. (#GH178910)
-- The `optin.cplusplus.VirtualCall` checker no longer reports virtual method calls during construction/destruction when the call site is in a system header. (#GH184178)
-- Reduced false positives of the `unix.MallocSizeof` checker for layout-compatible types, such as `malloc(sizeof(std::atomic<int32_t>))` assigned to an `int32_t *`. (#GH200253)
-- The `optin.core.FixedAddressDereference` checker no longer reports dereferences of a fixed address when the pointee is `volatile`. (#GH181644)
-- Improved `[[clang::suppress]]` handling for tricky template specializations, nested templates, and friend function templates that are forward-declared at namespace scope. (#GH182659, #GH178441, #GH183727, #GH187043)
-- The `unix.BlockInCriticalSection` checker now understands `std::scoped_lock` in addition to `std::lock_guard` and `std::unique_lock`. (#GH176134)
-- The `alpha.unix.cstring` sub-checkers were untangled so that each one models and reports independently instead of relying on another sub-checker being enabled. (#GH186802)
-- The analyzer now detects reads of uninitialized dynamically-allocated objects. (#GH193001)
-- The `cplusplus.Move` checker can now detect a use-after-move for the three-argument `std::move` on containers (when `alpha.cplusplus.IteratorModeling` is also enabled). (#GH137157)
-- The condition of a `switch` statement now triggers the `check::BranchCondition` callback, so checkers like `core.uninitialized.Branch` can report an undefined `switch` condition. (#GH182058)
-- Improved handling of multiple `[[assume]]` attributes on a single statement. (#GH198618)
-- When the execution environment is untrusted, the `argv`, `argc`, and `envp` parameters of `main` are now treated as taint sources. (#GH178054)
-- The `alpha.unix.PthreadLock` checker now emits path notes on lock, unlock, destroy, and init operations. (#GH202473)
-- Added a new `check::LifetimeEnd` callback that fires for each `CFGLifetimeEnds` element, which is useful for detecting dangling pointers. (#GH201123)
-- The `unix.StdCLibraryFunctions` standard-library summaries were optimized for binary size. (#GH202662)
-- Fixed the alignment of entries printed by `clang -cc1 -analyzer-print-analyzer-options` / `-analyzer-help`. (#GH190570)
-- Improved the models of `strchr`/`strrchr`/`memchr`/`strstr`/`strpbrk`/`strchrnul`, enabling `core.StackAddressEscape` to catch dangling pointers returned by these functions. (#GH203260)
-- Improved the modeling of symbolic ranges in the engine when calculating the largest and smallest possible values for range sets involving the `+`, `-`, and `*` binary operators. (#GH173113)
-
#### Moved checkers
-- The checker `unix.cstring.UninitializedRead` is now out of alpha. (#GH196292)
-
-#### Removed checkers
-
-- The `alpha.core.FixedAddr` checker was removed. It was overly simplistic and is largely superseded by the `optin.core.FixedAddressDereference` checker. (#GH182033)
-
-#### Diagnostic changes
-
-- Cross Translation Unit (CTU) import failures are now reported at the location where the imported symbol would be used, making it easier to understand why a cross-TU bug was missed. (#GH188795)
-- Uninitialized-value diagnostics no longer emit a misleading "initialized here" note for a variable that was declared without an initializer; the note now reads "declared without an initial value". (#GH198345)
-
(release-notes-sanitizers)=
### Sanitizers
-- UndefinedBehaviorSanitizer now supports `__ubsan_default_suppressions`.
-- Sanitizer Special Case Lists (`-fsanitize-ignorelist`) now support
- Version 4 of the Special Case List format, which introduces a transition
- period for leading dot-slash (`./`) canonicalization in path matching.
- Version 4 matches both canonicalized and non-canonicalized paths but emits a
- warning for deprecated matches. Version 5 drops backward compatibility and
- requires rules to match canonicalized paths (without leading `./`).
-- Sanitizer Special Case Lists (`-fsanitize-ignorelist`) and warning
- suppression mappings (`--warning-suppression-mappings`) now recognize version
- 4 of the Special Case List format (indicated by `#!special-case-list-v4`).
- On Windows hosts, path matching is slash-agnostic (both forward slashes (`/`)
- and backslashes (`\`) match either path separator in both patterns and paths).
-
### Python Binding Changes
-- Add deprecation warnings to `CompletionChunk.isKind...` methods.
- These will be removed in a future release. Existing uses should be adapted
- to directly compare equality of the `CompletionChunk` kind with
- the corresponding `CompletionChunkKind` variant.
-
- Affected methods: `isKindOptional`, `isKindTypedText`, `isKindPlaceHolder`,
- `isKindInformative` and `isKindResultType`.
-
-- Add a deprecation warning to `CodeCompletionResults.results`.
- This property will become an implementation detail with changed behavior in a
- future release and should not be used directly.. Existing uses of
- `CodeCompletionResults.results` should be changed to directly use
- `CodeCompletionResults`: it nows supports `__len__` and `__getitem__`,
- so it can be used the same as `CodeCompletionResults.results`.
-
-- Added a new helper method `get_clang_version` to the class `Config` to
- read the version string of the libclang in use.
-
### OpenMP Support
-- Added support for `transparent` clause in task and taskloop directives.
-- Added support for `use_device_ptr` clause to accept an optional
- `fallback` modifier (`fb_nullify` or `fb_preserve`) with OpenMP >= 61.
-- Added support for `local` clause with declare_target directive when
- OpenMP >= 60.
-- Fixed the identity element used for `reduction(* : x)` over C++ class types
- (e.g. `std::complex`). The private copy is now initialized to the
- multiplicative identity instead of being value-initialized, which previously
- produced a wrong result (the product collapsed to the additive identity).
-
### SYCL Support
-- SYCL compilations now default to `-std=c++17` when no explicit language
- standard is specified. Standards below C++17 are rejected with a diagnostic.
-- Clang now assumes default target for SYCL device compilation is 64-bit SPIR-V
- and it now diagnoses if a non-supporting target is specified via command line.
- (#GH167358)
-- The SYCL runtime shared library has been renamed from `libsycl.so` to
- `libLLVMSYCL.so` to align with LLVM naming conventions.
-- SYCL header include paths are now added automatically for both host and
- device compilations.
-- SYCL runtime library linking is now supported on Windows. When `-fsycl` is
- specified, Clang automatically adds `/MD` if no explicit CRT flag is
- present, links the appropriate debug (`LLVMSYCLd.lib`) or release
- (`LLVMSYCL.lib`) library, and rejects static CRT flags (`/MT`,
- `/MTd`) with a diagnostic. Use `-nolibsycl` to suppress automatic
- library linking.
-- Fixed `-nolibsycl` being silently ignored on Linux: the SYCL runtime
- library was unconditionally added to the link line even when the flag was
- passed.
-- Added the `-fsycl-device-image-split=` option to select the granularity at
- which SYCL device code is grouped into device images. Supported values are
- `kernel` (one device image per kernel), `translation_unit` (one device image
- per translation unit), and `link_unit` (one device image per linking unit).
- The bare `-fsycl-device-image-split` flag is an alias for
- `-fsycl-device-image-split=translation_unit`, which is also the default.
-- Clang now is capable of diagnosing reference kernel parameters which are not
- allowed by SYCL 2020 spec.
-
#### Improvements
-- Improved substitution performance in concept checking. (#GH172266)
-- Clang now preserves the left-hand side of a binary expression (such as an
- assignment or comparison) in a `RecoveryExpr` when the right-hand side fails
- to parse. This improves IDE features like go-to-definition in `clangd`.
-
## Additional Information
A wide variety of additional information is available on the [Clang web
diff --git a/cmake/Modules/LLVMVersion.cmake b/cmake/Modules/LLVMVersion.cmake
index fa1b0997cd3e8..ca16353d25c9b 100644
--- a/cmake/Modules/LLVMVersion.cmake
+++ b/cmake/Modules/LLVMVersion.cmake
@@ -1,7 +1,7 @@
# The LLVM Version number information
if(NOT DEFINED LLVM_VERSION_MAJOR)
- set(LLVM_VERSION_MAJOR 23)
+ set(LLVM_VERSION_MAJOR 24)
endif()
if(NOT DEFINED LLVM_VERSION_MINOR)
set(LLVM_VERSION_MINOR 0)
diff --git a/flang/docs/ReleaseNotes.md b/flang/docs/ReleaseNotes.md
index 0e0ba99abc881..888da4d58b868 100644
--- a/flang/docs/ReleaseNotes.md
+++ b/flang/docs/ReleaseNotes.md
@@ -33,15 +33,8 @@ page](https://llvm.org/releases/).
## Non-comprehensive list of changes in this release
-- Global, allocatable, and pointer arrays are now aligned to 64 bytes. The
- flang runtime allocator was updated to honor this alignment for allocatable
- and pointer arrays.
-
## New Compiler Flags
-- The warning flags with prefixes -Wopen-mp and -Wopen-acc have been deprecated in favor of corrected spellings with the respective prefixes -Wopenmp and -Wopenacc. Removal of the deprecated options is planned for LLVM 25 (July 2027).
-- The `-Werror` flag will cause all warnings to become errors. This includes warnings about support for OpenMP versions, which will now prevent the compilation from happening with the `-Werror` flag. These OpenMP warnings can be disabled with `-Wno-experimental-option`.
-
## Windows Support
## Fortran Language Changes in Flang
diff --git a/libcxx/include/__config b/libcxx/include/__config
index 3f271ff504767..2faca50f969ba 100644
--- a/libcxx/include/__config
+++ b/libcxx/include/__config
@@ -36,7 +36,7 @@
// _LIBCPP_VERSION represents the version of libc++, which matches the version of LLVM.
// Given a LLVM release LLVM XX.YY.ZZ (e.g. LLVM 17.0.1 == 17.00.01), _LIBCPP_VERSION is
// defined to XXYYZZ.
-# define _LIBCPP_VERSION 230000
+# define _LIBCPP_VERSION 240000
# if defined(_LIBCPP_ABI_MICROSOFT) && !defined(_LIBCPP_NO_VCRUNTIME)
# define _LIBCPP_ABI_VCRUNTIME
diff --git a/lld/docs/ReleaseNotes.rst b/lld/docs/ReleaseNotes.rst
index 36f50db965f04..cc1628f48bb0e 100644
--- a/lld/docs/ReleaseNotes.rst
+++ b/lld/docs/ReleaseNotes.rst
@@ -29,149 +29,18 @@ Non-comprehensive list of changes in this release
ELF Improvements
----------------
-* Input file loading is now parallelized, meaningfully reducing link time
- for large links.
- (`#191690 <https://github.com/llvm/llvm-project/pull/191690>`_)
-* ``--gc-sections`` mark phase is now parallelized.
- (`#189321 <https://github.com/llvm/llvm-project/pull/189321>`_)
-* Relocation scanning was rewritten as target-specific scanners for all
- targets with shared library support, devirtualizing the hot
- relocation-classification path.
-
-* Added ``--bp-compression-sort-section=<glob>[=<layout_priority>[=<match_priority>]]``,
- replacing the old coarse ``--bp-compression-sort`` modes with a way to split
- input sections into multiple compression groups, run balanced partitioning
- independently per group, and leave out sections that are poor candidates for
- BP.
- ``layout_priority`` controls group placement order (lower value = placed
- first, default 0). ``match_priority`` resolves conflicts when multiple globs
- match the same section (lower value = higher priority; explicit priority
- beats positional last-match-wins; default: positional). In ELF, the glob
- matches input section names (e.g. ``.text.unlikely.code1``).
-* Added ``-z memtag-{mode,heap,stack}`` as generic replacements for the
- Android-specific ``--android-memtag-*`` flags; ``--android-memtag-note``
- keeps the Android-specific memtag note opt-in.
- (`#188205 <https://github.com/llvm/llvm-project/pull/188205>`_)
-* Unused space in executable output sections is now filled with trap, primarily
- for ``-z separate-code`` mode.
- (`#176845 <https://github.com/llvm/llvm-project/pull/176845>`_)
-* ``.eh_frame_hdr`` now supports the ``DW_EH_PE_sdata8`` encoding,
- auto-upgrading from ``sdata4`` when a table entry or the frame pointer
- exceeds the 32-bit range, instead of erroring out for large executables.
- (`#179089 <https://github.com/llvm/llvm-project/pull/179089>`_)
-* ``vna_flags`` is now set to ``VER_FLG_WEAK`` when all undefined references
- to a version are weak, allowing glibc's dynamic loader to warn instead of
- error when the version is missing at runtime.
- (`#176673 <https://github.com/llvm/llvm-project/pull/176673>`_)
-* ``.ltext.*`` input sections are now merged into a single ``.ltext`` output
- section, matching the existing ``.ldata.*``/``.lrodata.*``/``.lbss.*``
- handling for the large code model with ``-ffunction-sections``.
- (`#190305 <https://github.com/llvm/llvm-project/pull/190305>`_)
-* ``.tbss`` output sections may now use an explicit address expression;
- previously it was silently overridden to follow the preceding ``.tbss``.
- (`#196447 <https://github.com/llvm/llvm-project/pull/196447>`_)
-* ``--discard-locals``/``--discard-all`` combined with ``-r``/``--emit-relocs``
- no longer discard local symbols that are referenced only from retained
- non-``SHF_ALLOC`` sections (e.g. ``.L`` symbols referenced by
- ``.debug_info``), fixing DWARF corruption in the output.
- (`#209035 <https://github.com/llvm/llvm-project/pull/209035>`_)
- (`#209042 <https://github.com/llvm/llvm-project/pull/209042>`_)
-* ``--retain-symbols-file`` now filters ``.symtab`` instead of ``.dynsym``,
- matching GNU ld.
- (`#209063 <https://github.com/llvm/llvm-project/pull/209063>`_)
-* ``INCLUDE`` in linker scripts now fully parses its own content instead of
- sharing a lexer buffer stack with the includer, fixing spurious acceptance
- of malformed scripts.
- (`#193427 <https://github.com/llvm/llvm-project/pull/193427>`_)
-* The ``OVERLAY`` linker script command now accepts any
- output-section-command (e.g. symbol assignments), not just input section
- descriptions.
- (`#203524 <https://github.com/llvm/llvm-project/pull/203524>`_)
-* Thunks are no longer reused across an ``OVERLAY`` boundary unless the
- target output section is guaranteed to be resident at the same time.
- (`#200415 <https://github.com/llvm/llvm-project/pull/200415>`_)
-* When a ``SECTIONS`` command interleaves relro and non-relro sections, lld now
- emits one ``PT_GNU_RELRO`` segment per contiguous run of relro sections
- instead of reporting a ``not contiguous with other relro sections`` error.
-* ``SHT_NOBITS`` sections are now excluded from LMA overlap checks, matching
- GNU ld and allowing e.g. a startup section to share an LMA with ``.bss``
- in embedded linker scripts.
- (`#196423 <https://github.com/llvm/llvm-project/pull/196423>`_)
-* LTO: the middle-end no longer emits new references to, or internalizes,
- symbols defined in bitcode after the extracted-bitcode set has been fixed,
- preventing undefined symbol references from transforms that run after
- linking has determined which bitcode files to extract.
- (`#164916 <https://github.com/llvm/llvm-project/pull/164916>`_)
-* DTLTO: significantly improved the performance of adding backend output
- files to the link, especially on Windows.
- (`#186366 <https://github.com/llvm/llvm-project/pull/186366>`_)
-* For AArch64, fixed ``.relr.auth.dyn`` -> ``.rela.dyn`` movement to
- properly adjust ``__rela_iplt_start``/``__rela_iplt_end`` and size the
- ``.dynamic`` section for both tags.
- (`#195649 <https://github.com/llvm/llvm-project/pull/195649>`_)
-* For AArch64, handle Memtag globals for ``R_AARCH64_AUTH_ABS64``.
- (`#173291 <https://github.com/llvm/llvm-project/pull/173291>`_)
-* For AArch64, fixed TLS GD against non-preemptible dynamic symbols (e.g.
- ``protected`` or ``-Bsymbolic``) in DSOs, which previously produced an
- inconsistent GOT entry and spurious preemption.
- (`#207881 <https://github.com/llvm/llvm-project/pull/207881>`_)
-* For AArch64, ``adrp``+``ldr`` GOT relaxation is now decided per-symbol,
- all-or-nothing, avoiding invalid relaxation when a branch target sits
- between the ``adrp`` and ``ldr`` of a pair.
- (`#208396 <https://github.com/llvm/llvm-project/pull/208396>`_)
-* For AArch64, a redundant local-exec TLS ``add`` with a zero high-12-bits
- immediate is now relaxed to a ``nop``.
- (`#204286 <https://github.com/llvm/llvm-project/pull/204286>`_)
-* x86-64 CFI jump table relaxation reduces the runtime overhead of indirect
- calls under Control Flow Integrity by opportunistically moving eligible
- function bodies into the jump table itself.
- (`#147424 <https://github.com/llvm/llvm-project/pull/147424>`_)
-
Breaking changes
----------------
-* The symbol partition feature has been removed. lld no longer recognizes
- ``SHT_LLVM_SYMPART`` sections, which are now treated as ordinary sections. The
- feature saw no adoption beyond a Chromium experiment that has since been
- retired.
-
-* An OutputSection that has an address expression, and is also assigned
- to a MEMORY region, will now use the address expression in preference
- to the next available location in the MEMORY region. This brings LLD
- in line with GNU ld, but is a change in behavior from previous LLD
- releases.
-
-* The default extension for time trace files is now ``.time-trace.json``.
-
COFF Improvements
-----------------
-* Added support for ``.obj.arm64ec`` sections to allow embedding ARM64EC object
- files inside ARM64 object files.
-
MinGW Improvements
------------------
-* Added ``--push-state`` and ``--pop-state``, offering the same semantics as
- when used with the ELF linker: The state of ``--Bstatic``/``--Bdynamic`` and
- ``--whole-archive`` are pushed onto a stack and popped from it.
-
-* Added the ``--native-def`` option to specify the native module-definition
- file for ARM64X targets. If a module-definition file is passed without this
- option, it is used for both native and EC views. ``--native-def=`` can be
- used to prevent the native view from using the default file.
-
MachO Improvements
------------------
-* ``--bp-compression-sort-section`` now accepts optional layout and match
- priorities (same syntax as ELF). In Mach-O, the glob matches the
- concatenated segment+section name (e.g. ``__TEXT__text``).
-* Restructure thunk generation algorithm to be more efficiently create thunks
- (`#193367 <https://github.com/llvm/llvm-project/pull/193367>`_)
-* Alphabetically sort LC_LINKER_OPTIONS before processing to match Apple linker behavior
- (`#201604 https://github.com/llvm/llvm-project/pull/201604`)
-
WebAssembly Improvements
------------------------
diff --git a/llvm/docs/ReleaseNotes.md b/llvm/docs/ReleaseNotes.md
index b186fbefb9e87..d0c4c1edbf5af 100644
--- a/llvm/docs/ReleaseNotes.md
+++ b/llvm/docs/ReleaseNotes.md
@@ -54,181 +54,22 @@ Makes programs 10x faster by doing Special New Thing.
### Changes to the LLVM IR
-* Removed `llvm.convert.to.fp16` and `llvm.convert.from.fp16`
- intrinsics. These are equivalent to `fptrunc` and `fpext` with half
- with a bitcast.
-
-* "denormal-fp-math" and "denormal-fp-math-f32" string attributes were
- migrated to first-class denormal_fpenv attribute.
-
-* The `"nooutline"` attribute is now writen as `nooutline`. Existing IR and
- bitcode will be automatically updated.
-
-* `ConstantPointerNull` can now represent fixed and scalable vector splats of
- null pointers. Such constants may print as `splat (ptr null)` instead of
- `zeroinitializer`.
-
-* LLVM IR floating-point literals have greatly changed:
-
- * The old hexadecimal bitwise representation is deprecated and will be removed
- in the next revision. It is replaced with a unified `f0x` prefix.
-
- * Hexadecimal literals akin to C99's syntax are supported.
-
- * Special values for infinities and NaNs, including NaN payloads, are added.
-
-* The standard textual output for floating-point literals is changed to take
- advantage of the new floating-point literals formats.
-
-* The resume/destroy functions emitted for the switch-resume ABI (C++20
- coroutines) now use `CallingConv::C` instead of `CallingConv::Fast`. This
- stabilizes the coroutine ABI across LLVM versions and aligns it with other
- vendors. The change is observationally identical on targets where `fastcc`
- and `ccc` agree for `void(ptr)` (x86_64, AArch64, RISC-V, ...) but is an ABI
- break on i686, MIPS O32, PowerPC64 ELFv1, and Lanai.
-
-* Assume bundles now only accept attributes that are actually handled.
- Specifically, they are ``align``, ``cold``, ``dereferenceable``,
- ``dereferenceable_or_null``, ``nonnull``, ``noundef`` and
- ``separate_storage``.
-
-* Fast math flags are now permitted on `uitofp` and `sitofp`.
-
-* The ``modular-format`` attribute now supports the ``fixed`` aspect for C
- ISO 18037 fixed-point ``printf`` specifiers.
-
-* Added `noipa` attribute which disables interprocedural analyses that inspect
- the definition of the function. This attribute does *not* control inlining or
- outlining. Add the `noinline` and `nooutline` attributes as well in cases
- where inlining and outlining should additionally be disabled.
-
-* Added support for ``callgraph`` metadata. The `!callgraph` metadata
- associates a function definition with its type identifier and is used for call
- graph section generation. See the [callgraph Metadata](https://llvm.org/docs/LangRef.html#callgraph-metadata)
- section of the LangRef for details.
-
-* The `dereferenceable` and `dereferenceable_or_null` attributes (and
- corresponding metadata) now apply only at the point of definition, instead of
- for the execution of the function (for arguments) or forever (for returns).
-
-* `alwaysinline` no longer bypasses inlining compatibility checks based on
- target features. Inlining will only be performed if it is safe to do so.
-
-* Module-level inline assembly now accepts optional `target_features` and
- `target_cpu` properties. This resolves errors during LTO on some
- architectures.
-
### Changes to LLVM infrastructure
-* Removed ``Constant::isZeroValue``. It was functionally identical to
- ``Constant::isNullValue`` for all types except floating-point negative
- zero. All callers should use ``isNullValue`` instead. ``isZeroValue``
- will be reintroduced in the future with bitwise-all-zeros semantics
- to support non-zero null pointers.
-
-* Added support for specifying the null pointer bit representation per
- address space in `DataLayout`. Pointer specifications (`p`) accept new
- flags: `z` (null is all-zeros) and `o` (null is all-ones). Address
- spaces without an explicit flag default to all-zeros. See the
- `DataLayout` section of the
- [LangRef](https://llvm.org/docs/LangRef.html#data-layout) for details.
-
-* Removed TypePromoteFloat legalization from SelectionDAG
-
-* Removed `bugpoint`. Usage has been replaced by `llvm-reduce` and
- `llvm/utils/reduce_pipeline.py`.
-
-* The ``Br`` opcode was split into two opcodes separating unconditional
- (``UncondBr``) and conditional (``CondBr``) branches.
-
-* ``BranchInst`` was deprecated in favor of ``UncondBrInst`` and ``CondBrInst``.
-
-* The operand order of ``CondBr`` instructions was adjusted to match the
- successor order. This can cause subtle breakage when using ``getOperand`` or
- ``setOperand`` to access successors.
-
-* The ``llvm::sys::fs`` link creation API has been refactored:
-
- * ``create_link`` now tries to create a symbolic link first, falling back to a
- hard link if that fails (previously it created a symlink on Unix and a hard
- link on Windows).
- * Added ``create_symlink``, which always creates a symbolic link. On windows
- this may fail if symlink permissions are not available.
- * Added ``readlink``, which reads the target of a symbolic link.
-
-* Bitcode libraries can now implement compiler-managed library functions
- (libcalls) without causing incorrect API manipulation or undefined references
- ([#177046](https://github.com/llvm/llvm-project/pull/125687)). Note that
- there are still issues with invalid compiler reasoning about some functions
- in bitcode, e.g. `malloc`. Not yet supported on MachO or when using
- distributed ThinLTO.
-
-* ``ConstantFP`` now supports vector types and is the canonical form returned by
- ``ConstantVector::getSplat(C)`` when ``C`` is a scalar ``ConstantFP``.
-
-* ``DenseMap``, ``DenseSet``, ``StringMap``, and ``StringSet`` ``erase`` now
- invalidates all iterators and references into the container, not just the
- iterator for the erased element. Use the new ``remove_if`` member to erase
- matching elements in a single pass instead of erasing while iterating.
-
-* ``TargetRegisterInfo::getMinimalPhysRegClass`` and related APIs have been
- refactored and no longer take a type. This API is also now precomputed in
- TableGen to improve compile-time.
-
-* ``APInt::sqrt`` (square root rounded to nearest integer) has been replaced
- with ``APInt::sqrtFloor`` (floor of square root).
-
### Changes to building LLVM
### Changes to TableGen
-* Outer let statements use ``ID{n-m}`` instead of ``ID<n-m>`` to be consistent
- with inner let statements.
-
### Changes to Interprocedural Optimizations
### Changes to Vectorizers
### Changes to the AArch64 Backend
-* The `sysp`, `mrrs`, and `msrr` instructions are now accepted without
- requiring the `+d128` feature gating.
-* Added a new internal option `-aarch64-emit-debug-tls-location` to allow the
- emission of `DW_AT_location` for thread-local variables. This is currently
- disabled by default to maintain compatibility with Binutils and LLVM older
- toolchains that do not define the `R_AARCH64_TLS_DTPREL64` static relocation
- type for TLS offsets.
-* A bug was fixed that caused LLVM IR inline assembly clobbers of the x29 and
- x30 registers to be ignored when they were written using their xN names
- instead of the ABI names FP and LR. Note that LLVM IR produced by Clang
- always uses the ABI names, but other frontends may not.
- ([#167783](https://github.com/llvm/llvm-project/pull/167783))
-
### Changes to the AMDGPU Backend
-* Initial support for gfx1310
-
-* The `"amdgpu-num-sgpr"` and `"amdgpu-num-vgpr"` IR function attributes
- (generated by the Clang `amdgpu_num_sgpr` and `amdgpu_num_vgpr` attributes)
- are now deprecated. Use `"amdgpu-waves-per-eu"` instead. The backend still
- honors the attributes; Clang emits a `-Wdeprecated-declarations` warning when
- the source attributes are used.
-* The `relaxed-buffer-oob-mode` subtarget feature has been replaced by two
- module flags, `amdgpu.buffer.oob.mode` and `amdgpu.tbuffer.oob.mode`, which
- control out-of-bounds semantics (see the AMDGPU User Guide). Frontends that
- previously relied on the subtarget feature to enable misaligned buffer merging
- must now set the corresponding module flag to `1` (relaxed). An absent flag is
- treated as strict by the backend.
-
-* Changed triple naming system from "amdgcn" to "amdgpu" plus a subarch suffix.
-
### Changes to the ARM Backend
-* The `r14` register can now be used as an alias for the link register `lr`
- in inline assembly. Clang always canonicalizes the name to `lr`, but other
- frontends may not.
-* `subs pc, lr, #imm` can now be predicated in Thumb2.
-
### Changes to the AVR Backend
### Changes to the DirectX Backend
@@ -237,262 +78,38 @@ Makes programs 10x faster by doing Special New Thing.
### Changes to the LoongArch Backend
-* DWARF fission is now compatible with linker relaxations, allowing `-gsplit-dwarf` and `-mrelax`
- to be used together when building for the LoongArch platform.
-
### Changes to the MIPS Backend
-### Changes to the NVPTX Backend
-
-* The default SM version has been changed from `sm_30` to `sm_75`. `sm_75` is
- the oldest GPU variant compatible with the widest range of recent major CUDA
- Toolkit versions (11/12/13).
-
### Changes to the PowerPC Backend
### Changes to the RISC-V Backend
-* `llvm-objdump` now has support for `--symbolize-operands` with RISC-V.
-* `-mcpu=spacemit-x100` was added.
-* Change P extension version to match the 0.21 draft specification.
-* Mnemonics for MOP/HINT-based instructions (`lpad`, `pause`, `ntl.*`, `c.ntl.*`,
- `sspush`, `sspopchk`, `ssrdp`, `c.sspush`, `c.sspopchk`) are now always
- available in the assembler and disassembler without requiring their respective
- extensions.
-* Adds experimental assembler support for the 'Zvabd` (RISC-V Integer Vector
- Absolute Difference) extension.
-* Adds CodeGen support for the 'Zvabd` extension.
-* `-mcpu=spacemit-a100` was added.
-* Adds assembler support for the `XSMTVDotII` (SpacemiT Vector Extension for Matrix 2.0) extension.
-* The opt-in `-riscv-enable-p-ext-simd-codegen` flag has been removed. P extension SIMD code generation is now enabled automatically if the P extension is supported.
-* `-mcpu=xt-c910v2` and `-mcpu=xt-c920v2` were added.
-* Adds experimental assembler support for the 'Zvzip` (RISC-V Vector
- Reordering Structured Data) extension.
-* `-mcpu=sifive-x160` and `-mcpu=sifive-x180` were added.
-* Support for the experimental `XRivosVisni` vendor extension has been removed.
-* Support for the experimental `XRivosVizip` vendor extension has been removed.
-* Adds experimental assembler support for the 'Zvvmm` (RISC-V Integer Matrix Multiply-Accumulate) extension.
-* Adds experimental assembler support for the 'Zvvfmm` (RISC-V Floating-Point Matrix Multiply-Accumulate) extension.
-* Adds experimental assembler support for the 'Zvvmtls` and 'Zvvmttls` (RISC-V
- Matrix Tile Load/Store) extensions.
-* Adds support for 'Ziccid' (Instruction/Data Coherence and Consistency) extension.
-* Adds experimental assembler support for the `Xqccmt` (Qualcomm 16-bit Table Jump) vendor extension.
-* `-mcpu=sifive-870` has been renamed `-mcpu=sifive-p870-d`.
-* Adds experimental assembler support for batched dot-product extensions(Zvqwbdota8i, Zvqwbdota16i, Zvfwbdota16bf, Zvfqwbdota8f and Zvfbdota32f).
-* Adds experimental assembler support for dot-product extensions(Zvqwdota8i, Zvqwdota16i, Zvfwdota16bf and Zvfqwdota8f).
-* `-mtune=generic` now uses the scheduling model from SpacemiT X60 instead of an empty scheduling model.
-* The Xqcilo pseudos now emit sequences that can be relaxed.
-
### Changes to the WebAssembly Backend
-* WebAssembly reference types are now represented in LLVM IR as the target
- extension types `target("wasm.externref")` and `target("wasm.funcref")`,
- rather than as pointers in address spaces 10 and 20 (`ptr addrspace(10)` /
- `ptr addrspace(20)`).
-* As a consequence of the representation change, reference types are no longer
- treated as vectorizable pointers. This fixes a crash in the SLP vectorizer,
- which previously would attempt to gather `externref`/`funcref` values into a
- vector and then crash.
-
### Changes to the Windows Target
-* The `.seh_startchained` and `.seh_endchained` assembly instructions have been removed and replaced
- with a new `.seh_splitchained` instruction.
-
### Changes to the X86 Backend
-* `.att_syntax` directive is now emitted for assembly files when AT&T syntax is
- in use. This matches the behaviour of Intel syntax and aids with
- compatibility when changing the default Clang syntax to the Intel syntax.
-
-* EGPR (R16-R31) now requires V3 unwind info on Windows x64. Using EGPR
- without V3 unwind produces a fatal error.
-* Implemented Win64 APX ABI callee-saved registers: R30 and R31 are now
- treated as non-volatile in the Win64 calling convention when APX is
- available, per the Microsoft x64 calling convention specification.
-
-* Functions using setjmp with Win64 APX ABI now reserve R30/R31 from
- register allocation, as the unwinder cannot restore APX extended
- registers across longjmp. A warning is emitted for large functions
- where this reservation may impact performance.
-
-* Added ``.seh_push2regs`` assembly directive for explicitly encoding a
- two-register push in Windows x64 V3 unwind info. The directive takes two
- register operands: ``.seh_push2regs %r12, %r13``.
-
-* The `fp128` type is now returned via sret instead of XMM0 for some calling
- conventions to match GCC. The C and Win64 calling conventions now use
- sret, other calling conventions do not need to be compatible with
- GCC and still return via XMM0.
-
### Changes to the OCaml bindings
### Changes to the Python bindings
### Changes to the C API
-* Replaced opcode ``LLVMBr`` with ``LLVMUncondBr`` and ``LLVMCondBr``.
-
-* The operand order of ``CondBr`` instructions was adjusted to match the
- successor order. This can cause subtle breakage when using ``LLVMGetOperand``
- or ``LLVMSetOperand`` to access successors.
-
### Changes to the CodeGen infrastructure
-* Renamed ISD::CTLZ_ZERO_UNDEF to ISD::CTLZ_ZERO_POISON opcode to make it clear that
- a zero input results in poison.
-
-* Renamed ISD::CTTZ_ZERO_UNDEF to ISD::CTTZ_ZERO_POISON opcode to make it clear that
- a zero input results in poison.
-
-* LLVM intrinsics can now declare required target features using the
- ``TargetFeatures`` TableGen field. SelectionDAG and GlobalISel use this
- metadata to reject unsupported target intrinsics generically, so targets do
- not need custom lowering checks for each annotated intrinsic.
-
-### Changes to the GlobalISel infrastructure
-
-* Renamed G_CTLZ_ZERO_UNDEF to G_CTLZ_ZERO_POISON opcode to make it clear that
- a zero input results in poison.
-
-* Renamed G_CTTZ_ZERO_UNDEF to G_CTTZ_ZERO_POISON opcode to make it clear that
- a zero input results in poison.
-
-* GlobalISel's IRTranslator now supports the LLVM IR byte type (`bN`). Byte
- values are translated as the equi-sized integer scalar (`sN`), `ConstantByte`
- is materialised via `G_CONSTANT`, and `bitcast` between a byte type and a
- pointer is lowered to `G_INTTOPTR` / `G_PTRTOINT` rather than the
- verifier-illegal `G_BITCAST`.
-
### Changes to the Metadata Info
### Changes to the Debug Info
### Changes to the LLVM tools
-* llvm-ml now supports the `/unwindv3` flag to enable V3 unwind information
- format for x64 exception handling.
-* llvm-ml now supports the `@UnwindVersion` built-in symbol, which returns the
- current unwind version (1 by default, 3 when `/unwindv3` is specified).
-* llvm-ml now supports the `.push2reg`, `.pop2reg`, `.beginepilog`, and
- `.endepilog` MASM directives for V3 unwind information.
-* llvm-ml now supports the `.popreg`, `.freestack`, `.restorereg`,
- `.restorexmm128`, and `.unsetframe` MASM epilog directives. These are the
- epilog counterparts of `.pushreg`, `.allocstack`, `.savereg`,
- `.savexmm128`, and `.setframe` respectively, and are valid only inside
- `.beginepilog`/`.endepilog` blocks and only for V3 unwind information.
-* llvm-ml now supports `.pushframe code` syntax (without the `@` prefix)
- for interrupt handlers with error codes.
-* llvm-ml now diagnoses:
- - Prolog directives (including `.allocstack`) used outside of prologs (after `.endprolog`).
- - Epilog directives used outside of epilogs (outside of `.beginepilog` + `.endepilog` blocks).
- - Beginning an epilog (`.beginepilog`) inside another epilog.
-
-* `llvm-profgen` now supports ETM trace decoding using the OpenCSD library for Cortex-M targets. OpenCSD version 1.5.4 or higher is required.
-
-* `llvm-objcopy` no longer corrupts the symbol table when `--update-section` is called for ELF files.
-* `llvm-objcopy` now reports an error when `--compress-sections` requests unavailable zlib or zstd support.
- The diagnostic is emitted while parsing the option, matching `--compress-debug-sections`.
- Such commands may now fail even if the input file contains no sections that would be compressed.
-* `FileCheck` option `-check-prefix` now accepts a comma-separated list of
- prefixes, making it an alias of the existing `-check-prefixes` option.
-* Add `-mtune` option to `llc`.
-* Add `-mtune` option to `opt`.
-* Fixed `llvm-ar` to correctly handle the `N` count modifier on Windows for archive members whose names differ only
- in case (e.g. `FOO.OBJ` and `foo.obj`). Previously, `-N 2` would fail with "not found" even when two matching members existed.
-* `llvm-readobj` and `llvm-readelf` now support the `--call-graph-section` option to dump the contents of the experimental [call graph section](CallGraphSection.md).
-* Added support for hybrid ARM64X object files to `llvm-ar` and `llvm-lib`. When these files are added to
- an archive, they are automatically split into separate native and EC members. Because the resulting members
- are no longer hybrid object files, consumers of these archives do not need to support the hybrid format themselves.
-
### Changes to LLDB
-* A new ``webinspector-wasm`` platform was added to list and attach to WebAssembly processes in Safari.
-* The default for `load-script-from-symbol-file` was changed from `warn` to `trusted`. This means that scripts from
- code signed dSYM bundles are now loaded automatically, while untrusted bundles continue to produce a warning.
-* Pressing enter after `frame variable` repeats the command with an incremented `--depth` option, allowing quick
- expansion of nested data.
-* Breakpoint commands now accept `.` to refer to the location(s) at which the current thread is stopped. For
- example, `breakpoint disable .` disables the just-hit breakpoint location. Another usage is to automate a
- command to run at the current location: `breakpoint command add -o 'p my_var' .`.
-* The `apropos` command now:
- * Highlights matching keywords in its output when color is enabled.
- * Searches the components of settings paths. For example `apropos qemu-user` will now
- show `platform.plugin.qemu-user` as one of the results.
-* Reading global and static variables on WebAssembly targets now works correctly. Previously their
- values could not be read because data sections were mapped to the wrong address space.
-* A new `diagnostics report` command (aliased `bugreport`) assembles a diagnostics bundle and files
- a pre-filled GitHub issue, pointing at the bundle to attach. The GitHub reporter is built by
- default and can be disabled with the `LLDB_ENABLE_GITHUB_BUG_REPORTER=OFF` CMake option.
-
-#### Deprecated APIs
-
-* ``SBTarget::GetDataByteSize()``, ``SBTarget::GetCodeByteSize()``, and ``SBSection::GetTargetByteSize()``
- have been deprecated. They always return `1`, as before.
-
-#### FreeBSD
-
-##### Userspace Debugging
-
-* Support for MIPS64 has been removed.
-* The minimum assumed FreeBSD version is now 14. The effect of which is that watchpoints are
- assumed to be supported.
-
-##### Kernel Debugging
-
-* The plugin that analyzes FreeBSD kernel core dump and live core has been renamed from `freebsd-kernel` to
- `freebsd-kernel-core`. Remote kernel debugging is still handled by the `gdb-remote` plugin.
-* Support for libfbsdvmcore has been removed. As a result, FreeBSD kernel dump debugging is now only
- available on FreeBSD hosts. Live kernel debugging through the GDB remote protocol is still available
- from any platform.
-* Support for ARM, PPC64le, and RISCV64 has been added.
-* The crashed thread is now automatically selected on start.
-* Threads are listed in incrmental order by pid then by tid.
-* Unread kernel messages saved in `msgbufp` are now printed when LLDB starts.
-* Writing to the core is now supported. For safety reasons, this feature is off by default. To enable it,
- `plugin.process.freebsd-kernel-core.read-only` must be set to `false`. This setting is available when
- using `/dev/mem` or a kernel dump. However, since `kvm_write()` does not support writing to kernel dumps,
- writes to a kernel dump will still fail when the setting is false.
-* Added a command `process plugin refresh-threads`, enabling on-demand thread-list reconstruction from `/dev/mem`
- so users can resync live kernel thread state without restarting LLDB. Note that this has no impact on full dump
- and minidump files.
-
-#### Linux
-
-* On Arm Linux, the `tpidruro` register can now be read. Writing to this register is not supported.
-* Thread local variables are now supported on Arm and RISC-V Linux if the program being debugged is using glibc.
-* LLDB now supports AArch64 Linux systems that only have SME (as opposed to
- SVE and SME). See the AArch64 Linux [documentation](https://lldb.llvm.org/use/aarch64-linux.html#sme-only-systems)
- for more details.
-
- Prior to this version of LLDB, there was a bug that caused LLDB to crash on
- startup on these systems ([#138717](https://github.com/llvm/llvm-project/issues/138717)).
- This affected LLDB versions from 18 up to and including 22. 17 and below are not affected.
- If you are using such a system and cannot change LLDB version, or want to package
- an affected version in a way that is compatible with these systems, the issue
- contains details of backports that could be done to fix the affected versions.
-* When an ELF core file is loaded, LLDB now shows the command line that created the core file.
- If you need to see it again, use the command `process status -v`.
-* LLDB now supports debugging Linux [Memory Protection Keys](https://docs.kernel.org/core-api/protection-keys.html)
- on AArch64 systems that have the Permission Overlay Extension (POE / FEAT_S1POE).
- See the [LLDB on AArch64 Linux](https://lldb.llvm.org/use/aarch64-linux.html#permission-overlay-extension-poe)
- guide for more information.
-
-#### Windows
-
-* Python 3.11 or later is now recommended for building LLDB 23 on Windows. From LLDB 24, Python 3.11 or later will be required.
-* Messages from `OutputDebugString[A|W]` are now shown inline when using LLDB
- from the command-line and in the output window when using lldb-dap.
-* LLDB now uses `lldb-server.exe` to launch and manage the program being debugged,
- instead of running it within LLDB's own process. To revert to the previous behavior, set the environment variable `LLDB_USE_LLDB_SERVER=0`.
-
-
### Changes to BOLT
### Changes to Sanitizers
-* Add a random delay into ThreadSanitizer to help find rare thread interleavings.
-
### Other Changes
## External Open Source Projects Using LLVM {{env.config.release}}
diff --git a/llvm/utils/gn/secondary/llvm/version.gni b/llvm/utils/gn/secondary/llvm/version.gni
index d772c1ec3f0b8..5b4867355b18f 100644
--- a/llvm/utils/gn/secondary/llvm/version.gni
+++ b/llvm/utils/gn/secondary/llvm/version.gni
@@ -1,4 +1,4 @@
-llvm_version_major = 23
+llvm_version_major = 24
llvm_version_minor = 0
llvm_version_patch = 0
llvm_version = "$llvm_version_major.$llvm_version_minor.$llvm_version_patch"
diff --git a/llvm/utils/lit/lit/__init__.py b/llvm/utils/lit/lit/__init__.py
index 8356da6ef9502..cd4338a9dbdcb 100644
--- a/llvm/utils/lit/lit/__init__.py
+++ b/llvm/utils/lit/lit/__init__.py
@@ -2,7 +2,7 @@
__author__ = "Daniel Dunbar"
__email__ = "daniel at minormatter.com"
-__versioninfo__ = (23, 0, 0)
+__versioninfo__ = (24, 0, 0)
__version__ = ".".join(str(v) for v in __versioninfo__) + "dev"
__all__ = []
diff --git a/llvm/utils/mlgo-utils/mlgo/__init__.py b/llvm/utils/mlgo-utils/mlgo/__init__.py
index 6ed46bc3aa56a..60fd600df3c79 100644
--- a/llvm/utils/mlgo-utils/mlgo/__init__.py
+++ b/llvm/utils/mlgo-utils/mlgo/__init__.py
@@ -4,7 +4,7 @@
from datetime import timezone, datetime
-__versioninfo__ = (23, 0, 0)
+__versioninfo__ = (24, 0, 0)
__version__ = (
".".join(str(v) for v in __versioninfo__)
+ "dev"
More information about the flang-commits
mailing list